608060405260046006556103e86007556103e860085534801562000021575f80fd5b503360405180602001604052805f81525062000043816200016360201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b7575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000ae91906200027e565b60405180910390fd5b620000c8816200017860201b60201c565b50732a26889d8e65b698cc3b9c4920fd278651f773f660045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005e1565b8060029081620001749190620004fd565b5050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000266826200023b565b9050919050565b62000278816200025a565b82525050565b5f602082019050620002935f8301846200026d565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200031557607f821691505b6020821081036200032b576200032a620002d0565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200038f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000352565b6200039b868362000352565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620003e5620003df620003d984620003b3565b620003bc565b620003b3565b9050919050565b5f819050919050565b6200040083620003c5565b620004186200040f82620003ec565b8484546200035e565b825550505050565b5f90565b6200042e62000420565b6200043b818484620003f5565b505050565b5b818110156200046257620004565f8262000424565b60018101905062000441565b5050565b601f821115620004b1576200047b8162000331565b620004868462000343565b8101602085101562000496578190505b620004ae620004a58562000343565b83018262000440565b50505b505050565b5f82821c905092915050565b5f620004d35f1984600802620004b6565b1980831691505092915050565b5f620004ed8383620004c2565b9150826002028217905092915050565b620005088262000299565b67ffffffffffffffff811115620005245762000523620002a3565b5b620005308254620002fd565b6200053d82828562000466565b5f60209050601f83116001811462000573575f84156200055e578287015190505b6200056a8582620004e0565b865550620005d9565b601f198416620005838662000331565b5f5b82811015620005ac5784890151825560018201915060208501945060208101905062000585565b86831015620005cc5784890151620005c8601f891682620004c2565b8355505b6001600288020188555050505b505050505050565b613f2c80620005ef5f395ff3fe608060405234801561000f575f80fd5b50600436106101cb575f3560e01c80636d36b91511610102578063b32eb66e116100a0578063f242432a1161006f578063f242432a1461054b578063f2fde38b14610567578063f5298aca14610583578063f851a4401461059f576101cb565b8063b32eb66e146104b1578063bf7430c7146104e1578063d469ef13146104fd578063e985e9c51461051b576101cb565b80638a13eea7116100dc5780638a13eea71461043d5780638da5cb5b1461045b578063a22cb46514610479578063a5bd209114610495576101cb565b80636d36b915146103f9578063715018a61461041557806372fce6831461041f576101cb565b80632eb2c2d61161016f5780634e1273f4116101495780634e1273f41461035f5780635742cf961461038f57806368ca6456146103ad5780636b20c454146103dd576101cb565b80632eb2c2d6146102f75780633b4d10301461031357806341b193ad1461032f576101cb565b806309acd8b7116101ab57806309acd8b71461025f5780630e89341c1461028f578063204e2132146102bf57806327f676c9146102db576101cb565b806239e619146101cf578062fdd58e146101ff57806301ffc9a71461022f575b5f80fd5b6101e960048036038101906101e49190612c40565b6105bd565b6040516101f69190612c7a565b60405180910390f35b61021960048036038101906102149190612ced565b6105d2565b6040516102269190612c7a565b60405180910390f35b61024960048036038101906102449190612d80565b610627565b6040516102569190612dc5565b60405180910390f35b61027960048036038101906102749190612ced565b610708565b6040516102869190612c7a565b60405180910390f35b6102a960048036038101906102a49190612c40565b610728565b6040516102b69190612e68565b60405180910390f35b6102d960048036038101906102d49190612fb4565b6107ba565b005b6102f560048036038101906102f09190613047565b610cc4565b005b610311600480360381019061030c91906131e7565b610ce6565b005b61032d60048036038101906103289190612c40565b610d8d565b005b61034960048036038101906103449190612c40565b610d9f565b6040516103569190612c7a565b60405180910390f35b61037960048036038101906103749190613372565b610db4565b604051610386919061349f565b60405180910390f35b610397610ec1565b6040516103a49190612c7a565b60405180910390f35b6103c760048036038101906103c29190612c40565b610ec7565b6040516103d49190612c7a565b60405180910390f35b6103f760048036038101906103f291906134bf565b610edc565b005b610413600480360381019061040e9190612fb4565b610f88565b005b61041d61122d565b005b610427611240565b6040516104349190612c7a565b60405180910390f35b610445611246565b60405161045291906135a2565b60405180910390f35b61046361126b565b60405161047091906135ca565b60405180910390f35b610493600480360381019061048e919061360d565b611293565b005b6104af60048036038101906104aa9190612c40565b6112a9565b005b6104cb60048036038101906104c69190612c40565b6112bb565b6040516104d89190613702565b60405180910390f35b6104fb60048036038101906104f69190613722565b611357565b005b6105056117d9565b6040516105129190612c7a565b60405180910390f35b61053560048036038101906105309190613786565b6117df565b6040516105429190612dc5565b60405180910390f35b610565600480360381019061056091906137c4565b61186d565b005b610581600480360381019061057c9190613857565b611914565b005b61059d60048036038101906105989190613882565b611998565b005b6105a7611a44565b6040516105b491906135ca565b60405180910390f35b600f602052805f5260405f205f915090505481565b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106f157507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610701575061070082611a69565b5b9050919050565b6009602052815f5260405f20602052805f5260405f205f91509150505481565b606060028054610737906138ff565b80601f0160208091040260200160405190810160405280929190818152602001828054610763906138ff565b80156107ae5780601f10610785576101008083540402835291602001916107ae565b820191905f5260205f20905b81548152906001019060200180831161079157829003601f168201915b50505050509050919050565b6107c2611ad2565b5f8460095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8881526020019081526020015f205461081b919061395c565b9050600e5f8781526020019081526020015f2054811115610871576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610868906139ff565b60405180910390fd5b5f600c5f8881526020019081526020015f205490505f620186a0826108969190613a1d565b90506108d76040518060400160405280600a81526020017f686f75736550726963650000000000000000000000000000000000000000000081525082611b59565b5f600e5f8a81526020019081526020015f2054905061092b6040518060400160405280600e81526020017f746f74616c4672616374696f6e7300000000000000000000000000000000000081525082611b59565b5f81620186a08461093c9190613a1d565b6109469190613a8b565b90506109876040518060400160405280601381526020017f73696e676c654672616374696f6e56616c75650000000000000000000000000081525082611b59565b5f88826109949190613a8b565b90506109d56040518060400160405280601281526020017f7472794567656d4f6653696e676c654e6674000000000000000000000000000081525082611b59565b5f8a826109e29190613a1d565b9050610a236040518060400160405280601381526020017f70726963654f66546f74616c4275726e4e66740000000000000000000000000081525082611b59565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166379cc67908a836040518363ffffffff1660e01b8152600401610a7f929190613abb565b5f604051808303815f87803b158015610a96575f80fd5b505af1158015610aa8573d5f803e3d5ffd5b50505050610ab8898d8d8b611bf5565b8a60095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8e81526020019081526020015f205f828254610b13919061395c565b925050819055508a600f5f8e81526020019081526020015f205f828254610b3a9190613ae2565b92505081905550600d5f8d81526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610c7257600a5f8d81526020019081526020015f2089908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d5f8e81526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b8b8973ffffffffffffffffffffffffffffffffffffffff167fa75cbdb46caa6deaf0f28b5b77582cc8fe199976f689b3854bf7380f88018f7a60405160405180910390a3505050505050505050505050565b610ccc611ad2565b80600c5f8481526020019081526020015f20819055505050565b5f610cef611c8a565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610d345750610d3286826117df565b155b15610d785780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610d6f929190613b15565b60405180910390fd5b610d858686868686611c91565b505050505050565b610d95611ad2565b8060078190555050565b600c602052805f5260405f205f915090505481565b60608151835114610e0057815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610df7929190613b3c565b60405180910390fd5b5f835167ffffffffffffffff811115610e1c57610e1b612e90565b5b604051908082528060200260200182016040528015610e4a5781602001602082028036833780820191505090505b5090505f5b8451811015610eb657610e86610e6e8287611d8590919063ffffffff16565b610e818387611d9890919063ffffffff16565b6105d2565b828281518110610e9957610e98613b63565b5b60200260200101818152505080610eaf90613b90565b9050610e4f565b508091505092915050565b60085481565b600e602052805f5260405f205f915090505481565b610ee4611c8a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610f2d5750610f2b83610f26611c8a565b6117df565b155b15610f7857610f3a611c8a565b836040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610f6f929190613b15565b60405180910390fd5b610f83838383611dab565b505050565b610f90611ad2565b60105f8681526020019081526020015f205f9054906101000a900460ff1615610fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe590613c21565b60405180910390fd5b83600e5f8781526020019081526020015f208190555061101082868684611bf5565b8360095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8781526020019081526020015f205f82825461106b919061395c565b92505081905550600d5f8681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166111a357600a5f8681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d5f8781526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b600160105f8781526020019081526020015f205f6101000a81548160ff02191690831515021790555082600c5f8781526020019081526020015f2081905550848273ffffffffffffffffffffffffffffffffffffffff167fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a860405160405180910390a35050505050565b611235611ad2565b61123e5f611e3b565b565b60075481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112a561129e611c8a565b8383611efe565b5050565b6112b1611ad2565b8060088190555050565b6060600a5f8381526020019081526020015f2080548060200260200160405190810160405280929190818152602001828054801561134b57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611302575b50505050509050919050565b61135f611ad2565b8260095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f205410156113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590613c89565b60405180910390fd5b8260095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f205f8282546114499190613ae2565b9250508190555082600f5f8681526020019081526020015f205f828254611470919061395c565b92505081905550611482828585612067565b5f600c5f8681526020019081526020015f205490505f620186a0826114a79190613a1d565b90506114e86040518060400160405280600a81526020017f686f75736550726963650000000000000000000000000000000000000000000081525082611b59565b5f600e5f8881526020019081526020015f2054905061153c6040518060400160405280600e81526020017f746f74616c4672616374696f6e7300000000000000000000000000000000000081525082611b59565b5f81836115499190613a8b565b905061158a6040518060400160405280601381526020017f73696e676c654672616374696f6e56616c75650000000000000000000000000081525082611b59565b5f85620186a08361159b9190613a1d565b6115a59190613a8b565b90506115e66040518060400160405280601281526020017f7472794567656d4f6653696e676c654e6674000000000000000000000000000081525082611b59565b5f88826115f39190613a1d565b90506116346040518060400160405280601381526020017f70726963654f66546f74616c4275726e4e66740000000000000000000000000081525082611b59565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1989836040518363ffffffff1660e01b8152600401611690929190613abb565b5f604051808303815f87803b1580156116a7575f80fd5b505af11580156116b9573d5f803e3d5ffd5b505050505f60095f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8c81526020019081526020015f20540361177e5761171a8a89612109565b5f600d5f8c81526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b898873ffffffffffffffffffffffffffffffffffffffff167fde3ca466246b0da455138dbea78dacd91d3c40dc98d5846ff0193bf67c24b0e78b6040516117c59190612c7a565b60405180910390a350505050505050505050565b60065481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f611876611c8a565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156118bb57506118b986826117df565b155b156118ff5780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016118f6929190613b15565b60405180910390fd5b61190c86868686866122d8565b505050505050565b61191c611ad2565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361198c575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161198391906135ca565b60405180910390fd5b61199581611e3b565b50565b6119a0611c8a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119e957506119e7836119e2611c8a565b6117df565b155b15611a34576119f6611c8a565b836040517fe237d922000000000000000000000000000000000000000000000000000000008152600401611a2b929190613b15565b60405180910390fd5b611a3f838383612067565b505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611ada611c8a565b73ffffffffffffffffffffffffffffffffffffffff16611af861126b565b73ffffffffffffffffffffffffffffffffffffffff1614611b5757611b1b611c8a565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611b4e91906135ca565b60405180910390fd5b565b611bf18282604051602401611b6f929190613ca7565b6040516020818303038152906040527fb60e72cc000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506123de565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c65575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611c5c91906135ca565b60405180910390fd5b5f80611c7185856123f8565b91509150611c825f87848487612428565b505050505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d01575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611cf891906135ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611d71575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611d6891906135ca565b60405180910390fd5b611d7e8585858585612428565b5050505050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1b575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611e1291906135ca565b60405180910390fd5b611e36835f848460405180602001604052805f815250612428565b505050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f6e575f6040517fced3e100000000000000000000000000000000000000000000000000000000008152600401611f6591906135ca565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161205a9190612dc5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120d7575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016120ce91906135ca565b60405180910390fd5b5f806120e384846123f8565b91509150612102855f848460405180602001604052805f815250612428565b5050505050565b5f600a5f8481526020019081526020015f208054905090505f5b818110156122d2578273ffffffffffffffffffffffffffffffffffffffff16600a5f8681526020019081526020015f20828154811061216557612164613b63565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036122bf57600a5f8581526020019081526020015f206001836121c69190613ae2565b815481106121d7576121d6613b63565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a5f8681526020019081526020015f20828154811061222257612221613b63565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f8581526020019081526020015f2080548061228857612287613cd5565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556122d2565b80806122ca90613b90565b915050612123565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612348575f6040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161233f91906135ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123b8575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016123af91906135ca565b60405180910390fd5b5f806123c485856123f8565b915091506123d58787848487612428565b50505050505050565b6123f5816123ed6124d46124f3565b63ffffffff16565b50565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b612434858585856124fe565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146124cd575f612470611c8a565b905060018451036124bc575f61248f5f86611d9890919063ffffffff16565b90505f6124a55f86611d9890919063ffffffff16565b90506124b5838989858589612894565b50506124cb565b6124ca818787878787612a43565b5b505b5050505050565b5f6a636f6e736f6c652e6c6f6790505f80835160208501845afa505050565b612bf2819050919050565b805182511461254857815181516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161253f929190613b3c565b60405180910390fd5b5f612551611c8a565b90505f5b8351811015612753575f6125728286611d9890919063ffffffff16565b90505f6125888386611d9890919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146126ab575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561265757888183856040517f03dee4c500000000000000000000000000000000000000000000000000000000815260040161264e9493929190613d02565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461274057805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612738919061395c565b925050819055505b50508061274c90613b90565b9050612555565b50600183510361280e575f6127715f85611d9890919063ffffffff16565b90505f6127875f85611d9890919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516127ff929190613b3c565b60405180910390a4505061288d565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051612884929190613d45565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115612a3b578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016128f4959493929190613dcc565b6020604051808303815f875af192505050801561292f57506040513d601f19601f8201168201806040525081019061292c9190613e38565b60015b6129b0573d805f811461295d576040519150601f19603f3d011682016040523d82523d5f602084013e612962565b606091505b505f8151036129a857846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161299f91906135ca565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612a3957846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401612a3091906135ca565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115612bea578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401612aa3959493929190613e63565b6020604051808303815f875af1925050508015612ade57506040513d601f19601f82011682018060405250810190612adb9190613e38565b60015b612b5f573d805f8114612b0c576040519150601f19603f3d011682016040523d82523d5f602084013e612b11565b606091505b505f815103612b5757846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401612b4e91906135ca565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612be857846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401612bdf91906135ca565b60405180910390fd5b505b505050505050565b612bfa613ec9565b565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612c1f81612c0d565b8114612c29575f80fd5b50565b5f81359050612c3a81612c16565b92915050565b5f60208284031215612c5557612c54612c05565b5b5f612c6284828501612c2c565b91505092915050565b612c7481612c0d565b82525050565b5f602082019050612c8d5f830184612c6b565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612cbc82612c93565b9050919050565b612ccc81612cb2565b8114612cd6575f80fd5b50565b5f81359050612ce781612cc3565b92915050565b5f8060408385031215612d0357612d02612c05565b5b5f612d1085828601612cd9565b9250506020612d2185828601612c2c565b9150509250929050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d5f81612d2b565b8114612d69575f80fd5b50565b5f81359050612d7a81612d56565b92915050565b5f60208284031215612d9557612d94612c05565b5b5f612da284828501612d6c565b91505092915050565b5f8115159050919050565b612dbf81612dab565b82525050565b5f602082019050612dd85f830184612db6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e15578082015181840152602081019050612dfa565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e3a82612dde565b612e448185612de8565b9350612e54818560208601612df8565b612e5d81612e20565b840191505092915050565b5f6020820190508181035f830152612e808184612e30565b905092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ec682612e20565b810181811067ffffffffffffffff82111715612ee557612ee4612e90565b5b80604052505050565b5f612ef7612bfc565b9050612f038282612ebd565b919050565b5f67ffffffffffffffff821115612f2257612f21612e90565b5b612f2b82612e20565b9050602081019050919050565b828183375f83830152505050565b5f612f58612f5384612f08565b612eee565b905082815260208101848484011115612f7457612f73612e8c565b5b612f7f848285612f38565b509392505050565b5f82601f830112612f9b57612f9a612e88565b5b8135612fab848260208601612f46565b91505092915050565b5f805f805f60a08688031215612fcd57612fcc612c05565b5b5f612fda88828901612c2c565b9550506020612feb88828901612c2c565b9450506040612ffc88828901612c2c565b935050606061300d88828901612cd9565b925050608086013567ffffffffffffffff81111561302e5761302d612c09565b5b61303a88828901612f87565b9150509295509295909350565b5f806040838503121561305d5761305c612c05565b5b5f61306a85828601612c2c565b925050602061307b85828601612c2c565b9150509250929050565b5f67ffffffffffffffff82111561309f5761309e612e90565b5b602082029050602081019050919050565b5f80fd5b5f6130c66130c184613085565b612eee565b905080838252602082019050602084028301858111156130e9576130e86130b0565b5b835b8181101561311257806130fe8882612c2c565b8452602084019350506020810190506130eb565b5050509392505050565b5f82601f8301126131305761312f612e88565b5b81356131408482602086016130b4565b91505092915050565b5f67ffffffffffffffff82111561316357613162612e90565b5b61316c82612e20565b9050602081019050919050565b5f61318b61318684613149565b612eee565b9050828152602081018484840111156131a7576131a6612e8c565b5b6131b2848285612f38565b509392505050565b5f82601f8301126131ce576131cd612e88565b5b81356131de848260208601613179565b91505092915050565b5f805f805f60a08688031215613200576131ff612c05565b5b5f61320d88828901612cd9565b955050602061321e88828901612cd9565b945050604086013567ffffffffffffffff81111561323f5761323e612c09565b5b61324b8882890161311c565b935050606086013567ffffffffffffffff81111561326c5761326b612c09565b5b6132788882890161311c565b925050608086013567ffffffffffffffff81111561329957613298612c09565b5b6132a5888289016131ba565b9150509295509295909350565b5f67ffffffffffffffff8211156132cc576132cb612e90565b5b602082029050602081019050919050565b5f6132ef6132ea846132b2565b612eee565b90508083825260208201905060208402830185811115613312576133116130b0565b5b835b8181101561333b57806133278882612cd9565b845260208401935050602081019050613314565b5050509392505050565b5f82601f83011261335957613358612e88565b5b81356133698482602086016132dd565b91505092915050565b5f806040838503121561338857613387612c05565b5b5f83013567ffffffffffffffff8111156133a5576133a4612c09565b5b6133b185828601613345565b925050602083013567ffffffffffffffff8111156133d2576133d1612c09565b5b6133de8582860161311c565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61341a81612c0d565b82525050565b5f61342b8383613411565b60208301905092915050565b5f602082019050919050565b5f61344d826133e8565b61345781856133f2565b935061346283613402565b805f5b838110156134925781516134798882613420565b975061348483613437565b925050600181019050613465565b5085935050505092915050565b5f6020820190508181035f8301526134b78184613443565b905092915050565b5f805f606084860312156134d6576134d5612c05565b5b5f6134e386828701612cd9565b935050602084013567ffffffffffffffff81111561350457613503612c09565b5b6135108682870161311c565b925050604084013567ffffffffffffffff81111561353157613530612c09565b5b61353d8682870161311c565b9150509250925092565b5f819050919050565b5f61356a61356561356084612c93565b613547565b612c93565b9050919050565b5f61357b82613550565b9050919050565b5f61358c82613571565b9050919050565b61359c81613582565b82525050565b5f6020820190506135b55f830184613593565b92915050565b6135c481612cb2565b82525050565b5f6020820190506135dd5f8301846135bb565b92915050565b6135ec81612dab565b81146135f6575f80fd5b50565b5f81359050613607816135e3565b92915050565b5f806040838503121561362357613622612c05565b5b5f61363085828601612cd9565b9250506020613641858286016135f9565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61367d81612cb2565b82525050565b5f61368e8383613674565b60208301905092915050565b5f602082019050919050565b5f6136b08261364b565b6136ba8185613655565b93506136c583613665565b805f5b838110156136f55781516136dc8882613683565b97506136e78361369a565b9250506001810190506136c8565b5085935050505092915050565b5f6020820190508181035f83015261371a81846136a6565b905092915050565b5f805f806080858703121561373a57613739612c05565b5b5f61374787828801612c2c565b945050602061375887828801612c2c565b935050604061376987828801612cd9565b925050606061377a87828801612c2c565b91505092959194509250565b5f806040838503121561379c5761379b612c05565b5b5f6137a985828601612cd9565b92505060206137ba85828601612cd9565b9150509250929050565b5f805f805f60a086880312156137dd576137dc612c05565b5b5f6137ea88828901612cd9565b95505060206137fb88828901612cd9565b945050604061380c88828901612c2c565b935050606061381d88828901612c2c565b925050608086013567ffffffffffffffff81111561383e5761383d612c09565b5b61384a888289016131ba565b9150509295509295909350565b5f6020828403121561386c5761386b612c05565b5b5f61387984828501612cd9565b91505092915050565b5f805f6060848603121561389957613898612c05565b5b5f6138a686828701612cd9565b93505060206138b786828701612c2c565b92505060406138c886828701612c2c565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061391657607f821691505b602082108103613929576139286138d2565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61396682612c0d565b915061397183612c0d565b92508282019050808211156139895761398861392f565b5b92915050565b7f45786365656473206d6178206672616374696f6e20616c6c6f776564206475655f8201527f20746f206275726e000000000000000000000000000000000000000000000000602082015250565b5f6139e9602883612de8565b91506139f48261398f565b604082019050919050565b5f6020820190508181035f830152613a16816139dd565b9050919050565b5f613a2782612c0d565b9150613a3283612c0d565b9250828202613a4081612c0d565b91508282048414831517613a5757613a5661392f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a9582612c0d565b9150613aa083612c0d565b925082613ab057613aaf613a5e565b5b828204905092915050565b5f604082019050613ace5f8301856135bb565b613adb6020830184612c6b565b9392505050565b5f613aec82612c0d565b9150613af783612c0d565b9250828203905081811115613b0f57613b0e61392f565b5b92915050565b5f604082019050613b285f8301856135bb565b613b3560208301846135bb565b9392505050565b5f604082019050613b4f5f830185612c6b565b613b5c6020830184612c6b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613b9a82612c0d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613bcc57613bcb61392f565b5b600182019050919050565b7f546f6b656e20616c7265616479206d696e746564206f6e2074686973204944005f82015250565b5f613c0b601f83612de8565b9150613c1682613bd7565b602082019050919050565b5f6020820190508181035f830152613c3881613bff565b9050919050565b7f496e73756666696369656e742062616c616e636520746f206275726e000000005f82015250565b5f613c73601c83612de8565b9150613c7e82613c3f565b602082019050919050565b5f6020820190508181035f830152613ca081613c67565b9050919050565b5f6040820190508181035f830152613cbf8185612e30565b9050613cce6020830184612c6b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f608082019050613d155f8301876135bb565b613d226020830186612c6b565b613d2f6040830185612c6b565b613d3c6060830184612c6b565b95945050505050565b5f6040820190508181035f830152613d5d8185613443565b90508181036020830152613d718184613443565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f613d9e82613d7a565b613da88185613d84565b9350613db8818560208601612df8565b613dc181612e20565b840191505092915050565b5f60a082019050613ddf5f8301886135bb565b613dec60208301876135bb565b613df96040830186612c6b565b613e066060830185612c6b565b8181036080830152613e188184613d94565b90509695505050505050565b5f81519050613e3281612d56565b92915050565b5f60208284031215613e4d57613e4c612c05565b5b5f613e5a84828501613e24565b91505092915050565b5f60a082019050613e765f8301886135bb565b613e8360208301876135bb565b8181036040830152613e958186613443565b90508181036060830152613ea98185613443565b90508181036080830152613ebd8184613d94565b90509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffdfea264697066735822122050f8fba17e682380591c3ecaf7442405c9db1f427439e16232e41205fefba3f964736f6c63430008140033