0x60c06040525f195f5534801562000014575f80fd5b50604051620020f1380380620020f1833981016040819052620000379162000067565b6001600160a01b0391821660a05216608052620000a4565b6001600160a01b038116811462000064575f80fd5b50565b5f806040838503121562000079575f80fd5b825162000086816200004f565b602084015190925062000099816200004f565b809150509250929050565b60805160a051612009620000e85f395f818160c70152818161078a0152610ef601525f818161014501528181610d2101528181610d670152610df801526120095ff3fe608060405260043610610079575f3560e01c8063ac9650d81161004c578063ac9650d814610114578063ad5c464814610134578063b018aff114610167578063e8a27b731461017a575f80fd5b806317bf8f0b1461007d57806339df77c7146100a35780633c3bfcd0146100b6578063522ee44314610101575b5f80fd5b61009061008b3660046117dd565b61019b565b6040519081526020015b60405180910390f35b6100906100b136600461186d565b6102e5565b3480156100c1575f80fd5b506100e97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161009a565b61009061010f366004611883565b6103cf565b6101276101223660046118ba565b61048e565b60405161009a9190611976565b34801561013f575f80fd5b506100e97f000000000000000000000000000000000000000000000000000000000000000081565b610090610175366004611a4f565b6105e9565b348015610185575f80fd5b50610199610194366004611aee565b610764565b005b5f8160400151428110156101c2576040516378ef33c160e01b815260040160405180910390fd5b60808301515f9061023e575082516040516370a0823160e01b81523060048201526001916001600160a01b0316906370a0823190602401602060405180830381865afa158015610214573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102389190611b67565b60808501525b608084015160608086015160408051808201909152875160208901516bffffffffffffffffffffffff1991851b82168386015290931b90921660748301526102b7929180608881016040516020818303038152906040528152602001856102a557336102a7565b305b6001600160a01b0316905261085a565b92508360a001518310156102de576040516342301c2360e01b815260040160405180910390fd5b5050919050565b5f81604001354281101561030c576040516378ef33c160e01b815260040160405180910390fd5b61039e608084018035906103239060608701611b7e565b60405180604001604052808760200160208101906103419190611b7e565b61034e60208a018a611b7e565b6040516bffffffffffffffffffffffff19606093841b811660208301529190921b1660348201526048016040516020818303038152906040528152602001336001600160a01b0316815250610a42565b91508260a001358211156103c55760405163e1b0da4f60e01b815260040160405180910390fd5b505f195f55919050565b5f8160200135428110156103f6576040516378ef33c160e01b815260040160405180910390fd5b6104646060840180359061040d9060408701611b7e565b60408051808201909152806104228880611b99565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525033602090910152610a42565b505f54915082608001358211156103c55760405163e1b0da4f60e01b815260040160405180910390fd5b60608167ffffffffffffffff8111156104a9576104a961175b565b6040519080825280602002602001820160405280156104dc57816020015b60608152602001906001900390816104c75790505b5090505f5b828110156105e2575f80308686858181106104fe576104fe611be3565b90506020028101906105109190611b99565b60405161051e929190611bf7565b5f60405180830381855af49150503d805f8114610556576040519150601f19603f3d011682016040523d82523d5f602084013e61055b565b606091505b5091509150816105af57604481511015610573575f80fd5b6004810190508080602001905181019061058d9190611c06565b60405162461bcd60e51b81526004016105a69190611c78565b60405180910390fd5b808484815181106105c2576105c2611be3565b6020026020010181905250505080806105da90611c9e565b9150506104e1565b5092915050565b5f816020015142811015610610576040516378ef33c160e01b815260040160405180910390fd5b60608301515f9061069d57600190505f61062c855f0151610c13565b506040516370a0823160e01b81523060048201529091506001600160a01b038216906370a0823190602401602060405180830381865afa158015610672573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106969190611b67565b6060860152505b5f816106a957336106ab565b305b90505b5f6106bb865f0151610c33565b90506107048660600151826106d45787604001516106d6565b305b60405180604001604052806106ed8b5f0151610c55565b8152602001866001600160a01b031681525061085a565b6060870152801561072457855130925061071d90610c74565b8652610731565b8560600151945050610737565b506106ae565b846080015184101561075c576040516342301c2360e01b815260040160405180910390fd5b505050919050565b5f61077182840184611cb6565b90505f80610781835f0151610c13565b915091506107b17f000000000000000000000000000000000000000000000000000000000000000083835f610c88565b5f805f89136107d557836001600160a01b0316836001600160a01b031610886107ec565b826001600160a01b0316846001600160a01b031610895b91509150811561080b576108068486602001513384610d1f565b61084f565b845161081690610c33565b1561083957845161082690610c74565b8552610833813387610a42565b5061084f565b805f8190555061084f8386602001513384610d1f565b505050505050505050565b5f5f196001600160a01b038416016108745733925061088a565b6001196001600160a01b0384160161088a573092505b5f80610898845f0151610c13565b915091505f816001600160a01b0316836001600160a01b03161090505f610928846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109189190611d4b565b61092390600a611e4b565b610e9e565b90505f60405180608001604052806109486109428c610e9e565b85610ea8565b6001600160801b0319168152841560208201526f7fff000000000000000000000000000160801b6040820181905260609091015290505f8061098a8787610ecd565b6001600160a01b031663e9664e3a848c8c6040516020016109ab9190611e59565b6040516020818303038152906040526040518463ffffffff1660e01b81526004016109d893929190611e93565b60408051808303815f875af11580156109f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a179190611ef4565b9150915084610a265781610a28565b805b610a3190611f16565b9750505050505050505b9392505050565b5f5f196001600160a01b03841601610a5c57339250610a72565b6001196001600160a01b03841601610a72573092505b5f80610a80845f0151610c13565b915091505f826001600160a01b0316826001600160a01b03161090505f610adc846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f4573d5f803e3d5ffd5b90505f6040518060800160405280610b0f610942610b008d60016109239190611f30565b6001600160801b031916610f61565b6001600160801b031916815284151560208201526f7fff000000000000000000000000000160801b6040820181905260609091015290505f80610b528688610ecd565b6001600160a01b031663e9664e3a848c8c604051602001610b739190611e59565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610ba093929190611e93565b60408051808303815f875af1158015610bbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdf9190611ef4565b915091505f85610bf85781610bf384611f16565b610c02565b82610c0283611f16565b509c9b505050505050505050505050565b5f80610c1f8382610f78565b9150610c2c836014610f78565b9050915091565b5f6014610c408180611f30565b610c4a9190611f30565b825110159050919050565b6060610c6e5f610c66601480611f30565b84919061103c565b92915050565b6060610c6e6014808451610c669190611f43565b604051632f52289560e11b81526001600160a01b0384811660048301528381166024830152604482018390525f9190861690635ea4512a90606401602060405180830381865afa158015610cde573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d029190611f56565b9050336001600160a01b03821614610d18575f80fd5b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015610d605750804710155b15610e6c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015610dbe575f80fd5b505af1158015610dd0573d5f803e3d5ffd5b505060405163a9059cbb60e01b81526001600160a01b038681166004830152602482018690527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303815f875af1158015610e42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e669190611f71565b50610e98565b306001600160a01b03841603610e8c57610e87848383611192565b610e98565b610e98848484846111f6565b50505050565b5f610c6e8261122f565b5f610a3b610eca6001600160801b031985166001600160801b03198516611292565b90565b60405163298d501f60e11b81526001600160a01b03838116600483015282811660248301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063531aa03e90604401602060405180830381865afa158015610f3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3b9190611f56565b5f6001600160801b03198216600160ff1b18610c6e565b5f81610f85816014611f30565b1015610fc85760405162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b60448201526064016105a6565b610fd3826014611f30565b835110156110235760405162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e6473000000000000000000000060448201526064016105a6565b5001602001516c01000000000000000000000000900490565b60608161104a81601f611f30565b10156110895760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016105a6565b826110948382611f30565b10156110d35760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016105a6565b6110dd8284611f30565b845110156111215760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016105a6565b60608215801561113f5760405191505f825260208201604052611189565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611178578051835260209283019201611160565b5050858452601f01601f1916604052505b50949350505050565b6040516001600160a01b038381166024830152604482018390526111f191859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611555565b505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610e989186918216906323b872dd906084016111bf565b5f815f0361123e57505f919050565b815f611249826115b6565b90506070811015611262578060700382901b9150611275565b6070811115611275576070810382901c91505b613fff0160701b6001600160701b03919091161760801b92915050565b5f617fff60f084811c8216919084901c8116908290036112d65780617fff036112c5575061ffff60ef1b9150610c6e9050565b505050600160ff1b81168218610c6e565b80617fff03611319576dffffffffffffffffffffffffffff60801b841615611308575061ffff60ef1b9150610c6e9050565b505050808218600160ff1b16610c6e565b600160801b600160ff1b0384165f0361136757600160801b600160ff1b0385165f0361134f575061ffff60ef1b9150610c6e9050565b505050808218600160ff1b16617fff60f01b17610c6e565b6001600160701b03608085901c165f829003611386576001915061138d565b600160701b175b6001600160701b03608087901c165f8490036113ce5780156113c9575f6113b3826115b6565b6001955060e20393840160711901939190911b90505b6113d8565b600160701b1760721b5b8181816113e7576113e7611f90565b049050805f0361141557600160ff1b87871816611404575f61140a565b600160ff1b5b945050505050610c6e565b6001606c1b81101561142957611429611fa4565b5f600160731b82101561146757600160721b82101561145c57600160711b82101561145557607061145f565b607161145f565b60725b60ff16611470565b611470826115b6565b90508361407101818601111561148d57617fff94505f915061151d565b83818601613ffc0110156114a6575f94505f915061151d565b83818601613f8c0110156114f2578385613ffc0111156114d1578385613ffc010382901b91506114ea565b8385613ffc0110156114ea57613ffc8585030382901c91505b5f945061151d565b6070811115611505576070810382901c91505b6001600160701b038216915083818601613f8d010394505b81607086901b888a186001607f1b60801b1660801c6fffffffffffffffffffffffffffffffff16171760801b95505050505050610c6e565b5f6115696001600160a01b03841683611656565b905080515f1415801561158d57508080602001905181019061158b9190611f71565b155b156111f157604051635274afe760e01b81526001600160a01b03841660048201526024016105a6565b5f8082116115c2575f80fd5b5f600160801b83106115d657608092831c92015b6801000000000000000083106115ee57604092831c92015b640100000000831061160257602092831c92015b62010000831061161457601092831c92015b610100831061162557600892831c92015b6010831061163557600492831c92015b6004831061164557600292831c92015b60028310610c6e5760010192915050565b6060610a3b83835f845f80856001600160a01b0316848660405161167a9190611fb8565b5f6040518083038185875af1925050503d805f81146116b4576040519150601f19603f3d011682016040523d82523d5f602084013e6116b9565b606091505b50915091506116c98683836116d3565b9695505050505050565b6060826116e8576116e38261172f565b610a3b565b81511580156116ff57506001600160a01b0384163b155b1561172857604051639996b31560e01b81526001600160a01b03851660048201526024016105a6565b5080610a3b565b80511561173f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b634e487b7160e01b5f52604160045260245ffd5b60405160a0810167ffffffffffffffff811182821017156117925761179261175b565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156117c1576117c161175b565b604052919050565b6001600160a01b0381168114611758575f80fd5b5f60c082840312156117ed575f80fd5b60405160c0810181811067ffffffffffffffff821117156118105761181061175b565b604052823561181e816117c9565b8152602083013561182e816117c9565b602082015260408381013590820152606083013561184b816117c9565b60608201526080838101359082015260a0928301359281019290925250919050565b5f60c0828403121561187d575f80fd5b50919050565b5f60208284031215611893575f80fd5b813567ffffffffffffffff8111156118a9575f80fd5b820160a08185031215610a3b575f80fd5b5f80602083850312156118cb575f80fd5b823567ffffffffffffffff808211156118e2575f80fd5b818501915085601f8301126118f5575f80fd5b813581811115611903575f80fd5b8660208260051b8501011115611917575f80fd5b60209290920196919550909350505050565b5f5b8381101561194357818101518382015260200161192b565b50505f910152565b5f8151808452611962816020860160208601611929565b601f01601f19169290920160200192915050565b5f602080830181845280855180835260408601915060408160051b87010192508387015f5b828110156119c957603f198886030184526119b785835161194b565b9450928501929085019060010161199b565b5092979650505050505050565b5f67ffffffffffffffff8211156119ef576119ef61175b565b50601f01601f191660200190565b5f82601f830112611a0c575f80fd5b8135611a1f611a1a826119d6565b611798565b818152846020838601011115611a33575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611a5f575f80fd5b813567ffffffffffffffff80821115611a76575f80fd5b9083019060a08286031215611a89575f80fd5b611a9161176f565b823582811115611a9f575f80fd5b611aab878286016119fd565b8252506020830135602082015260408301359150611ac8826117c9565b816040820152606083013560608201526080830135608082015280935050505092915050565b5f805f8060608587031215611b01575f80fd5b8435935060208501359250604085013567ffffffffffffffff80821115611b26575f80fd5b818701915087601f830112611b39575f80fd5b813581811115611b47575f80fd5b886020828501011115611b58575f80fd5b95989497505060200194505050565b5f60208284031215611b77575f80fd5b5051919050565b5f60208284031215611b8e575f80fd5b8135610a3b816117c9565b5f808335601e19843603018112611bae575f80fd5b83018035915067ffffffffffffffff821115611bc8575f80fd5b602001915036819003821315611bdc575f80fd5b9250929050565b634e487b7160e01b5f52603260045260245ffd5b818382375f9101908152919050565b5f60208284031215611c16575f80fd5b815167ffffffffffffffff811115611c2c575f80fd5b8201601f81018413611c3c575f80fd5b8051611c4a611a1a826119d6565b818152856020838501011115611c5e575f80fd5b611c6f826020830160208601611929565b95945050505050565b602081525f610a3b602083018461194b565b634e487b7160e01b5f52601160045260245ffd5b5f60018201611caf57611caf611c8a565b5060010190565b5f60208284031215611cc6575f80fd5b813567ffffffffffffffff80821115611cdd575f80fd5b9083019060408286031215611cf0575f80fd5b604051604081018181108382111715611d0b57611d0b61175b565b604052823582811115611d1c575f80fd5b611d28878286016119fd565b82525060208301359250611d3b836117c9565b6020810192909252509392505050565b5f60208284031215611d5b575f80fd5b815160ff81168114610a3b575f80fd5b600181815b80851115611da557815f1904821115611d8b57611d8b611c8a565b80851615611d9857918102915b93841c9390800290611d70565b509250929050565b5f82611dbb57506001610c6e565b81611dc757505f610c6e565b8160018114611ddd5760028114611de757611e03565b6001915050610c6e565b60ff841115611df857611df8611c8a565b50506001821b610c6e565b5060208310610133831016604e8410600b8410161715611e26575081810a610c6e565b611e308383611d6b565b805f1904821115611e4357611e43611c8a565b029392505050565b5f610a3b60ff841683611dad565b602081525f825160406020840152611e74606084018261194b565b90506001600160a01b0360208501511660408401528091505092915050565b5f6fffffffffffffffffffffffffffffffff19808651168352602086015115156020840152806040870151166040840152806060870151166060840152506001600160a01b038416608083015260c060a0830152611c6f60c083018461194b565b5f8060408385031215611f05575f80fd5b505080516020909101519092909150565b5f600160ff1b8201611f2a57611f2a611c8a565b505f0390565b80820180821115610c6e57610c6e611c8a565b81810381811115610c6e57610c6e611c8a565b5f60208284031215611f66575f80fd5b8151610a3b816117c9565b5f60208284031215611f81575f80fd5b81518015158114610a3b575f80fd5b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52600160045260245ffd5b5f8251611fc9818460208701611929565b919091019291505056fea26469706673582212207aa0f6572e8d5a4eb40572c087f755f6228f628561eae93913739cd31185f47a64736f6c63430008140033000000000000000000000000dcda21af55fd9499be8fc5222d39614f370a7b840000000000000000000000004200000000000000000000000000000000000006