0x60c060405260c8620000146004600a620005e9565b620000239062e4e1c062000601565b6200002f919062000623565b6003556064620000426004600a620005e9565b620000519062e4e1c062000601565b6200005d919062000623565b6004556007805460ff191660011790556000600c8190556032600d8190556028600e819055600a600f8190556010849055916200009c90849062000646565b620000a8919062000646565b620000b4919062000646565b620000c0919062000646565b6011556064601281905560138190556014556019805463ffffffff60a01b19166201010160a81b179055611388620000fb6004600a620005e9565b6200010a9062e4e1c062000601565b62000116919062000623565b601a553480156200012657600080fd5b5060008054336001600160a01b031991821681178355825260026020908152604092839020805460ff1916600117905560198054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c464892600480830193928290030181865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d2919062000661565b6001600160a01b039081166080526019546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa15801562000223573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000249919062000661565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af11580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c1919062000661565b6001600160a01b0390811660a05230600081815260066020908152604080832060195486168452825280832060001990556015805473b66139c2471092740dcb7a17e2edb642638869396001600160a01b031991821617909155601680547356aa41dda5400859ed9f1bd578f1ccde05e3f86b9083161790556017805473794215eaad1b141402740ae933b600ee31a79441908316179055601880543392168217815581855260098452828520805460ff199081166001908117909255600a80875285882080548316841790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80548316841790557f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3805483168417905583548a1688528588208054831684179055938752600b909552838620805486168217905595855282852080548516871790557f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac34158054851687179055549095168352909120805490911690911790556200045c90600490620005e9565b6200046b9062e4e1c062000601565b33600081815260056020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004ae6004600a620005e9565b620004bd9062e4e1c062000601565b60405190815260200160405180910390a36200068c565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200052b5781600019048211156200050f576200050f620004d4565b808516156200051d57918102915b93841c9390800290620004ef565b509250929050565b6000826200054457506001620005e3565b816200055357506000620005e3565b81600181146200056c5760028114620005775762000597565b6001915050620005e3565b60ff8411156200058b576200058b620004d4565b50506001821b620005e3565b5060208310610133831016604e8410600b8410161715620005bc575081810a620005e3565b620005c88383620004ea565b8060001904821115620005df57620005df620004d4565b0290505b92915050565b6000620005fa60ff84168362000533565b9392505050565b60008160001904831182151516156200061e576200061e620004d4565b500290565b6000826200064157634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156200065c576200065c620004d4565b500190565b6000602082840312156200067457600080fd5b81516001600160a01b0381168114620005fa57600080fd5b60805160a051613cb6620006dc600039600081816108bd0152818161267601528181612721015281816128c501528181612e720152818161329001526132d301526000612f8e0152613cb66000f3fe6080604052600436106103995760003560e01c806378109e54116101dc578063c867d60b11610102578063efa5e347116100a0578063f887ea401161006f578063f887ea4014610ae2578063fe575a8714610b02578063fe9fbb8014610b32578063ffb54a9914610b5257600080fd5b8063efa5e34714610a6c578063f0b37c0414610a8c578063f2fde38b14610aac578063f645496e14610acc57600080fd5b8063dccd8bd2116100dc578063dccd8bd2146109d0578063dd62ed3e146109e6578063df20fd4914610a2c578063e96fada214610a4c57600080fd5b8063c867d60b14610960578063d7c0103214610990578063dab84ee7146109b057600080fd5b806395d89b411161017a578063a9059cbb11610149578063a9059cbb146108df578063b37dd690146108ff578063b6a5d7de14610920578063bd9ab5371461094057600080fd5b806395d89b411461045057806398118cb4146108755780639cd1aef11461088b578063a8aa1b31146108ab57600080fd5b8063893d20e8116101b6578063893d20e8146107ed578063896648c11461080b5780638b42507f146108255780638e2eee841461085557600080fd5b806378109e54146107ac57806379ba5097146107c25780637d1db4a5146107d757600080fd5b806323b872dd116102c15780634be9d8691161025f5780636ce46bc31161022e5780636ce46bc31461071e5780636ddd17131461073e57806370a082311461075f57806377b54bad1461078c57600080fd5b80634be9d869146106b2578063571ac8b0146106d25780636827e764146106f25780636b67c4df1461070857600080fd5b80632f54bf6e1161029b5780632f54bf6e1461060b578063305c4c801461063a578063313ce5671461065b5780633f4218e01461068257600080fd5b806323b872dd146105b65780632b112e49146105d65780632d64dc41146105eb57600080fd5b8063095ea7b3116103395780631ca0a28d116103085780631ca0a28d146105405780631da1db5e146105605780631df4ccfc146105805780631e863ae91461059657600080fd5b8063095ea7b3146104ad578063147284ec146104dd578063180b0d7e1461051557806318160ddd1461052b57600080fd5b8063034fc0b711610375578063034fc0b7146104075780630445b6671461042757806306fdde031461045057806309302dc61461048d57600080fd5b8062108683146103a5578062bff446146103c7578063034c4897146103e757600080fd5b366103a057005b600080fd5b3480156103b157600080fd5b506103c56103c03660046135f5565b610b73565b005b3480156103d357600080fd5b506103c56103e23660046135f5565b610c96565b3480156103f357600080fd5b506103c561040236600461364c565b610daa565b34801561041357600080fd5b506103c5610422366004613685565b610ebd565b34801561043357600080fd5b5061043d601a5481565b6040519081526020015b60405180910390f35b34801561045c57600080fd5b50610480604051806040016040528060048152602001635343524f60e01b81525081565b60405161044791906136a2565b34801561049957600080fd5b506103c56104a83660046136f7565b610fae565b3480156104b957600080fd5b506104cd6104c8366004613725565b61109b565b6040519015158152602001610447565b3480156104e957600080fd5b506018546104fd906001600160a01b031681565b6040516001600160a01b039091168152602001610447565b34801561052157600080fd5b5061043d6103e881565b34801561053757600080fd5b5061043d611108565b34801561054c57600080fd5b506103c561055b366004613751565b611124565b34801561056c57600080fd5b506103c561057b3660046136f7565b611388565b34801561058c57600080fd5b5061043d60115481565b3480156105a257600080fd5b506103c56105b13660046137d4565b611470565b3480156105c257600080fd5b506104cd6105d13660046137f1565b611518565b3480156105e257600080fd5b5061043d6115da565b3480156105f757600080fd5b506016546104fd906001600160a01b031681565b34801561061757600080fd5b506104cd6106263660046137d4565b6000546001600160a01b0391821691161490565b34801561064657600080fd5b506019546104cd90600160b01b900460ff1681565b34801561066757600080fd5b50610670600481565b60405160ff9091168152602001610447565b34801561068e57600080fd5b506104cd61069d3660046137d4565b60096020526000908152604090205460ff1681565b3480156106be57600080fd5b506103c56106cd3660046135f5565b611660565b3480156106de57600080fd5b506104cd6106ed3660046137d4565b611774565b3480156106fe57600080fd5b5061043d600f5481565b34801561071457600080fd5b5061043d600d5481565b34801561072a57600080fd5b506103c5610739366004613832565b611782565b34801561074a57600080fd5b506019546104cd90600160b81b900460ff1681565b34801561076b57600080fd5b5061043d61077a3660046137d4565b60056020526000908152604090205481565b34801561079857600080fd5b506104cd6107a7366004613725565b6117c3565b3480156107b857600080fd5b5061043d60045481565b3480156107ce57600080fd5b506103c561196a565b3480156107e357600080fd5b5061043d60035481565b3480156107f957600080fd5b506000546001600160a01b03166104fd565b34801561081757600080fd5b506007546104cd9060ff1681565b34801561083157600080fd5b506104cd6108403660046137d4565b600a6020526000908152604090205460ff1681565b34801561086157600080fd5b506103c56108703660046135f5565b611aef565b34801561088157600080fd5b5061043d600c5481565b34801561089757600080fd5b506103c56108a63660046136f7565b611c30565b3480156108b757600080fd5b506104fd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156108eb57600080fd5b506104cd6108fa366004613725565b611dde565b34801561090b57600080fd5b506019546104cd90600160a81b900460ff1681565b34801561092c57600080fd5b506103c561093b3660046137d4565b611deb565b34801561094c57600080fd5b506103c561095b3660046136f7565b611e5b565b34801561096c57600080fd5b506104cd61097b3660046137d4565b600b6020526000908152604090205460ff1681565b34801561099c57600080fd5b506103c56109ab36600461385e565b611f4e565b3480156109bc57600080fd5b506017546104fd906001600160a01b031681565b3480156109dc57600080fd5b5061043d60105481565b3480156109f257600080fd5b5061043d610a0136600461389e565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610a3857600080fd5b506103c5610a473660046138cc565b612132565b348015610a5857600080fd5b506015546104fd906001600160a01b031681565b348015610a7857600080fd5b506103c5610a873660046138ea565b612222565b348015610a9857600080fd5b506103c5610aa73660046137d4565b612299565b348015610ab857600080fd5b506103c5610ac73660046137d4565b61235f565b348015610ad857600080fd5b5061043d600e5481565b348015610aee57600080fd5b506019546104fd906001600160a01b031681565b348015610b0e57600080fd5b506104cd610b1d3660046137d4565b60086020526000908152604090205460ff1681565b348015610b3e57600080fd5b506104cd610b4d3660046137d4565b61247f565b348015610b5e57600080fd5b506019546104cd90600160a01b900460ff1681565b610b7c3361247f565b610ba15760405162461bcd60e51b8152600401610b989061391c565b60405180910390fd5b6101f58210610bc25760405162461bcd60e51b8152600401610b9890613941565b60005b82811015610c905781600b6000868685818110610be457610be4613986565b9050602002016020810190610bf991906137d4565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f566c2270277919680152b0734389ae919d95ff7e9024c03fc3c7c209ec8412c7848483818110610c5457610c54613986565b9050602002016020810190610c6991906137d4565b83604051610c7892919061399c565b60405180910390a1610c89816139cd565b9050610bc5565b50505050565b610c9f3361247f565b610cbb5760405162461bcd60e51b8152600401610b989061391c565b6101f58210610cdc5760405162461bcd60e51b8152600401610b9890613941565b60005b82811015610c90578160096000868685818110610cfe57610cfe613986565b9050602002016020810190610d1391906137d4565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f9fbd25f95d342f2efc070b56d2fadd2341d264ef8c915dc268609b2ca1bb25de848483818110610d6e57610d6e613986565b9050602002016020810190610d8391906137d4565b83604051610d9292919061399c565b60405180910390a1610da3816139cd565b9050610cdf565b6000546001600160a01b03163314610dd45760405162461bcd60e51b8152600401610b98906139e8565b811580610dde5750805b15610e4d57601954600160a81b900460ff16610e4d5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f742073746f702074726164696e67206166746572206c61756e636860448201526720697320646f6e6560c01b6064820152608401610b98565b6019805462ff00ff60a01b1916600160a01b841515810260ff60b01b191691909117600160b01b84151502179182905560405160ff9190920416151581527ff865819dcfd8250cfaa23e1ab7129c1ec65c617bae1e716699dfe07dd7c489ee906020015b60405180910390a15050565b6000546001600160a01b03163314610ee75760405162461bcd60e51b8152600401610b98906139e8565b8015610f6057601954600160a81b900460ff16610f605760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f74207475726e206f6e20626c61636b6c6973744d6f6465206166746044820152706572206c61756e636820697320646f6e6560781b6064820152608401610b98565b6007805460ff191682151590811790915560405160ff909116151581527fbfc80669f7e10f5aa92640d0e112e5406570820b9c0f70c213a783aa5edd11d0906020015b60405180910390a150565b6000546001600160a01b03163314610fd85760405162461bcd60e51b8152600401610b98906139e8565b60018110156110355760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015263302e312560e01b6064820152608401610b98565b6103e8816110456004600a613aec565b6110529062e4e1c0613afb565b61105c9190613afb565b6110669190613b1a565b60048190556040519081527fa69fa556bf940aa0c695b9c8e1b229fdb1476830e2025e44da1028e0c1458d4a90602001610fa3565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906110f69086815260200190565b60405180910390a35060015b92915050565b6111146004600a613aec565b6111219062e4e1c0613afb565b81565b61112d3361247f565b6111495760405162461bcd60e51b8152600401610b989061391c565b336001600160a01b0386161480159061117b57506001600160a01b03851660009081526008602052604090205460ff16155b156111ea57601954600160a81b900460ff166111ea5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420657865637574652074686973206166746572206c61756e636860448201526720697320646f6e6560c01b6064820152608401610b98565b6101f5831061120b5760405162461bcd60e51b8152600401610b9890613941565b82811461126b5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e206164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610b98565b6000805b848110156112af5783838281811061128957611289613986565b905060200201358261129b9190613b3c565b9150806112a7816139cd565b91505061126f565b506001600160a01b0386166000908152600560205260409020548111156113185760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610b98565b60005b8481101561137f5761136c8787878481811061133957611339613986565b905060200201602081019061134e91906137d4565b86868581811061136057611360613986565b9050602002013561249d565b5080611377816139cd565b91505061131b565b50505050505050565b6000546001600160a01b031633146113b25760405162461bcd60e51b8152600401610b98906139e8565b606581106113ed5760405162461bcd60e51b81526020600482015260086024820152674d6178203130302560c01b6044820152606401610b98565b47600060646113fc8484613afb565b6114069190613b1a565b604051909150339082156108fc029083906000818181858888f19350505050158015611436573d6000803e3d6000fd5b506040518181527f377153983e64f72f80af47182763316780b9133be808b7082a16710202b8fbda906020015b60405180910390a1505050565b6017546001600160a01b031633146114ca5760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c79206265206368616e676564206279206465760000000000006044820152606401610b98565b601780546001600160a01b0319166001600160a01b0383169081179091556040519081527f5aee26a9aac813cb2437bcac61c8a1e9e01771705699f5cf4dbc1e74cfbe5ca590602001610fa3565b6001600160a01b0383166000908152600660209081526040808320338452909152812054600019146115c5576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546115a0918490612571565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6115d08484846125ab565b90505b9392505050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5490919061163a6004600a613aec565b6116479062e4e1c0613afb565b6116519190613b54565b61165b9190613b54565b905090565b6116693361247f565b6116855760405162461bcd60e51b8152600401610b989061391c565b6101f582106116a65760405162461bcd60e51b8152600401610b9890613941565b60005b82811015610c905781600a60008686858181106116c8576116c8613986565b90506020020160208101906116dd91906137d4565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f3c4f06d74861dea6c152189f2ac8853b6f789feb0e1182101b7ad9d1858f70e384848381811061173857611738613986565b905060200201602081019061174d91906137d4565b8360405161175c92919061399c565b60405180910390a161176d816139cd565b90506116a9565b60006111028260001961109b565b61178b3361247f565b6117a75760405162461bcd60e51b8152600401610b989061391c565b6012829055601383905560148190556117be612b49565b505050565b600080546001600160a01b031633146117ee5760405162461bcd60e51b8152600401610b98906139e8565b6001600160a01b0383163014156118475760405162461bcd60e51b815260206004820181905260248201527f746f6b656e416464726573732063616e206e6f7420626520746865205343524f6044820152606401610b98565b816118b7576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b49190613b6b565b91505b604080516001600160a01b0385168152602081018490527f960427a4fde284dcc8da2c51a43d210cfd7ed6f4328a24ba33eee49910db564b910160405180910390a160405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015611946573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d39190613b84565b6001546001600160a01b031633146119fb5760405162461bcd60e51b815260206004820152604860248201527f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960448201527f616c206f776e6572206265666f726520796f752063616e2061636365707420746064820152673432903937b6329760c11b608482015260a401610b98565b600080546001600160a01b03908116825260026020526040808320805460ff199081169091556001805484168552828520805490921617905582549051600080516020613c6183398151915293611a579392909216919061399c565b60405180910390a160018054604051600080516020613c6183398151915292611a89926001600160a01b03169161399c565b60405180910390a160018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314611b195760405162461bcd60e51b8152600401610b98906139e8565b60c98210611b775760405162461bcd60e51b815260206004820152602560248201527f474153204572726f723a206d6178206c696d6974206973203230302061646472604482015264657373657360d81b6064820152608401610b98565b8015611be557601954600160a81b900460ff16611be55760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f74206d616e75616c6c7920626c61636b6c697374206166746572206044820152650d8c2eadcc6d60d31b6064820152608401610b98565b60005b82811015610c9057611c20848483818110611c0557611c05613986565b9050602002016020810190611c1a91906137d4565b83612db0565b611c29816139cd565b9050611be8565b6000546001600160a01b03163314611c5a5760405162461bcd60e51b8152600401610b98906139e8565b8063365aabe714611ca05760405162461bcd60e51b815260206004820152601060248201526f4163636964656e74616c20507265737360801b6044820152606401610b98565b601954600160a01b900460ff16611d115760405162461bcd60e51b815260206004820152602f60248201527f43616e7420636c6f7365206c61756e6368206d6f6465207768656e207472616460448201526e1a5b99c81a5cc8191a5cd8589b1959608a1b6064820152608401610b98565b601954600160b01b900460ff1615611d915760405162461bcd60e51b815260206004820152603860248201527f416e7469626f74206d7573742062652064697361626c6564206265666f72652060448201527f6c61756e63684d6f6465206973207475726e6564206f666600000000000000006064820152608401610b98565b6019805460ff60a81b1916908190556040517f4b4d10c084e3fa6291b99e9e41e22eadfb3b01ca4bb86ae8d7b9fefe1498f52f91610fa391600160a81b90910460ff161515815260200190565b60006115d33384846125ab565b6000546001600160a01b03163314611e155760405162461bcd60e51b8152600401610b98906139e8565b6001600160a01b03811660009081526002602052604090819020805460ff191660019081179091559051600080516020613c6183398151915291610fa39184919061399c565b6000546001600160a01b03163314611e855760405162461bcd60e51b8152600401610b98906139e8565b6001811015611ee85760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152687468616e20302e312560b81b6064820152608401610b98565b6103e881611ef86004600a613aec565b611f059062e4e1c0613afb565b611f0f9190613afb565b611f199190613b1a565b60038190556040519081527f365a2bb07537fddd750e9ac8d56970e584f83a144bb5225e77491b83bccd118390602001610fa3565b6000546001600160a01b03163314611f785760405162461bcd60e51b8152600401610b98906139e8565b6001600160a01b038316611fe35760405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574696e672066656520616464726573732063616e6e6f742062652060448201526b7a65726f206164647265737360a01b6064820152608401610b98565b6001600160a01b03821661204d5760405162461bcd60e51b815260206004820152602b60248201527f47697665617761792066656520616464726573732063616e6e6f74206265207a60448201526a65726f206164647265737360a81b6064820152608401610b98565b6001600160a01b0381166120b65760405162461bcd60e51b815260206004820152602a60248201527f5574696c6974792066656520616464726573732063616e6e6f74206265207a65604482015269726f206164647265737360b01b6064820152608401610b98565b601580546001600160a01b038581166001600160a01b0319928316811790935560168054868316908416811790915560188054928616929093168217909255604080519384526020840192909252908201527fb93b1ef445620c8661ebddddb575085ede7dfe08ccc6a91b933a6520249c3c7c90606001611463565b6000546001600160a01b0316331461215c5760405162461bcd60e51b8152600401610b98906139e8565b600a612169600482613aec565b6121769062e4e1c0613afb565b6121809190613b1a565b81106121c05760405162461bcd60e51b815260206004820152600f60248201526e082dadeeadce840e8dede40d0d2ced608b1b6044820152606401610b98565b6019805460ff60b81b1916600160b81b84151581029190911791829055601a8390556040805184815260ff9290930491909116151560208301527f34c2d4c263b6f41223c6d30ae2e7bcb18629892587e0a4138f57ba2c523953d09101610eb1565b6000546001600160a01b0316331461224c5760405162461bcd60e51b8152600401610b98906139e8565b600c849055600d839055600e8290556010819055600f548190836122708688613b3c565b61227a9190613b3c565b6122849190613b3c565b61228e9190613b3c565b601155610c90612b49565b6000546001600160a01b031633146122c35760405162461bcd60e51b8152600401610b98906139e8565b6000546001600160a01b03828116911614156123215760405162461bcd60e51b815260206004820152601a60248201527f4f574e45522063616e7420626520756e617574686f72697a65640000000000006044820152606401610b98565b6001600160a01b038116600090815260026020526040808220805460ff1916905551600080516020613c6183398151915291610fa39184919061399c565b6000546001600160a01b031633146123895760405162461bcd60e51b8152600401610b98906139e8565b6000546001600160a01b03828116911614156123db5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903a34329037bbb732b960791b6044820152606401610b98565b6001600160a01b0381166124315760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f74206265207a65726f20616464726573732e00000000000000006044820152606401610b98565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef22290602001610fa3565b6001600160a01b031660009081526002602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526005909152918220546124ee918490612571565b6001600160a01b03808616600090815260056020526040808220939093559085168152205461251d9083612e06565b6001600160a01b038085166000818152600560205260409081902093909355915190861690600080516020613c418339815191529061255f9086815260200190565b60405180910390a35060019392505050565b600081848411156125955760405162461bcd60e51b8152600401610b9891906136a2565b5060006125a28486613b54565b95945050505050565b601b5460009060ff16156125cb576125c484848461249d565b90506115d3565b6001600160a01b03841660009081526002602052604090205460ff1615801561260d57506001600160a01b03831660009081526002602052604090205460ff16155b156127dd57601954600160a01b900460ff166126625760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b98565b601954600160b01b900460ff16156127dd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316141561271f576001600160a01b0383166000908152600560205260409020541561270f5760405162461bcd60e51b81526020600482015260186024820152772bb0b4ba103337b9103a3930b234b733903a379037b832b760411b6044820152606401610b98565b61271a836001612db0565b6127dd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614156127dd576001600160a01b03841660009081526008602052604090205460ff168061279657506001600160a01b038416600090815260056020526040902054155b6127dd5760405162461bcd60e51b81526020600482015260186024820152772bb0b4ba103337b9103a3930b234b733903a379037b832b760411b6044820152606401610b98565b60075460ff1680156127f95750601954600160b01b900460ff16155b15612855576001600160a01b03841660009081526008602052604090205460ff16156128555760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610b98565b6001600160a01b03841660009081526002602052604090205460ff1615801561289757506001600160a01b0384166000908152600b602052604090205460ff16155b80156128bc57506001600160a01b0383166000908152600b602052604090205460ff16155b80156128fa57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b15612974576004546001600160a01b038416600090815260056020526040902054612926908490613b3c565b11156129745760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610b98565b6003548211158061299d57506001600160a01b0384166000908152600a602052604090205460ff165b806129c057506001600160a01b0383166000908152600a602052604090205460ff165b612a045760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b6044820152606401610b98565b612a0c612e65565b15612a1957612a19612ed8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260059091529190912054612a6b918490612571565b6001600160a01b038516600090815260056020908152604080832093909355600990529081205460ff1680612ab857506001600160a01b03841660009081526009602052604090205460ff165b612acc57612ac785848661326c565b612ace565b825b6001600160a01b038516600090815260056020526040902054909150612af49082612e06565b6001600160a01b038086166000818152600560205260409081902093909355915190871690600080516020613c4183398151915290612b369085815260200190565b60405180910390a3506001949350505050565b6000612b6d6064612b6760135460115461346790919063ffffffff16565b906134e6565b90506000612b8d6064612b6760125460115461346790919063ffffffff16565b90506000612b9b8284613b3c565b90506096831115612bee5760405162461bcd60e51b815260206004820152601f60248201527f427579207461782063616e6e6f74206265206d6f7265207468616e20313525006044820152606401610b98565b60c8821115612c3f5760405162461bcd60e51b815260206004820181905260248201527f53656c6c207461782063616e6e6f74206265206d6f7265207468616e203230256044820152606401610b98565b60fa811115612c9f5760405162461bcd60e51b815260206004820152602660248201527f427579202b2053656c6c207461782063616e6e6f74206265206d6f7265207468604482015265616e2032352560d01b6064820152608401610b98565b6096612cbd6064612b6760145460115461346790919063ffffffff16565b1115612d175760405162461bcd60e51b8152602060048201526024808201527f5472616e73666572205461782063616e6e6f74206265206d6f7265207468616e6044820152632031352560e01b6064820152608401610b98565b7f375884ed7f92283ee74d8884b39a803f4aee832b15766fe016b74fc791fc2ada612d546064612b6760135460115461346790919063ffffffff16565b612d706064612b6760125460115461346790919063ffffffff16565b612d8c6064612b6760145460115461346790919063ffffffff16565b6040805160ff94851681529284166020840152921691810191909152606001611463565b6001600160a01b03821660009081526008602052604090819020805460ff1916831515179055517f458b0be340c46c4b677c80ed6f743d5040a52f53c293bb90b68da4cf1177200290610eb1908490849061399c565b600080612e138385613b3c565b9050838110156115d35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b98565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590612ea35750601b5460ff16155b8015612eb85750601954600160b81b900460ff165b801561165b575050601a5430600090815260056020526040902054101590565b601b805460ff19166001179055601054601154600091612ef791613b54565b90506000612f06826002613afb565b600c54601a54612f169190613afb565b612f209190613b1a565b9050600081601a54612f329190613b54565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612f6c57612f6c613986565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612fc057612fc0613986565b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b815291169063791ac94790613006908590600090869030904290600401613ba1565b600060405180830381600087803b15801561302057600080fd5b505af1158015613034573d6000803e3d6000fd5b5050600c544792506130499150600290613b1a565b6130539086613b54565b94506000613062866002613afb565b600c5461306f9084613afb565b6130799190613b1a565b9050600086600d548461308c9190613afb565b6130969190613b1a565b9050600087600e54856130a99190613afb565b6130b39190613b1a565b9050600088600f54866130c69190613afb565b6130d09190613b1a565b6015546040519192506001600160a01b03169084156108fc029085906000818181858888f1935050505015801561310b573d6000803e3d6000fd5b506016546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015613146573d6000803e3d6000fd5b506017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613181573d6000803e3d6000fd5b5087156132575760195460405163f305d71960e01b81523060048201819052602482018b9052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990869060c40160606040518083038185885af11580156131f5573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061321a9190613c12565b505060408051868152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601b805460ff1916905550505050505050565b600082158061327b5750601154155b156132875750816115d3565b600060145490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614156132d15750601254613310565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316141561331057506013545b60006133416133226103e86064613afb565b612b678461333b6011548a61346790919063ffffffff16565b90613467565b90506000613360601154612b676010548561346790919063ffffffff16565b9050600061336e8383613528565b905080156133d857306000908152600560205260409020546133909082612e06565b30600081815260056020526040908190209290925590516001600160a01b038a1690600080516020613c41833981519152906133cf9085815260200190565b60405180910390a35b8115613451576018546001600160a01b03166000908152600560205260409020546134039083612e06565b601880546001600160a01b03908116600090815260056020908152604091829020949094559154915185815291811692908b1691600080516020613c41833981519152910160405180910390a35b61345b8784613528565b98975050505050505050565b60008261347657506000611102565b60006134828385613afb565b90508261348f8583613b1a565b146115d35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b98565b60006115d383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061356a565b60006115d383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612571565b6000818361358b5760405162461bcd60e51b8152600401610b9891906136a2565b5060006125a28486613b1a565b60008083601f8401126135aa57600080fd5b50813567ffffffffffffffff8111156135c257600080fd5b6020830191508360208260051b85010111156135dd57600080fd5b9250929050565b80151581146135f257600080fd5b50565b60008060006040848603121561360a57600080fd5b833567ffffffffffffffff81111561362157600080fd5b61362d86828701613598565b9094509250506020840135613641816135e4565b809150509250925092565b6000806040838503121561365f57600080fd5b823561366a816135e4565b9150602083013561367a816135e4565b809150509250929050565b60006020828403121561369757600080fd5b81356115d3816135e4565b600060208083528351808285015260005b818110156136cf578581018301518582016040015282016136b3565b818111156136e1576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561370957600080fd5b5035919050565b6001600160a01b03811681146135f257600080fd5b6000806040838503121561373857600080fd5b823561374381613710565b946020939093013593505050565b60008060008060006060868803121561376957600080fd5b853561377481613710565b9450602086013567ffffffffffffffff8082111561379157600080fd5b61379d89838a01613598565b909650945060408801359150808211156137b657600080fd5b506137c388828901613598565b969995985093965092949392505050565b6000602082840312156137e657600080fd5b81356115d381613710565b60008060006060848603121561380657600080fd5b833561381181613710565b9250602084013561382181613710565b929592945050506040919091013590565b60008060006060848603121561384757600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561387357600080fd5b833561387e81613710565b9250602084013561388e81613710565b9150604084013561364181613710565b600080604083850312156138b157600080fd5b82356138bc81613710565b9150602083013561367a81613710565b600080604083850312156138df57600080fd5b8235613743816135e4565b6000806000806080858703121561390057600080fd5b5050823594602084013594506040840135936060013592509050565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b039290921682521515602082015260400190565b634e487b7160e01b600052601160045260246000fd5b60006000198214156139e1576139e16139b7565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600181815b80851115613a43578160001904821115613a2957613a296139b7565b80851615613a3657918102915b93841c9390800290613a0d565b509250929050565b600082613a5a57506001611102565b81613a6757506000611102565b8160018114613a7d5760028114613a8757613aa3565b6001915050611102565b60ff841115613a9857613a986139b7565b50506001821b611102565b5060208310610133831016604e8410600b8410161715613ac6575081810a611102565b613ad08383613a08565b8060001904821115613ae457613ae46139b7565b029392505050565b60006115d360ff841683613a4b565b6000816000190483118215151615613b1557613b156139b7565b500290565b600082613b3757634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613b4f57613b4f6139b7565b500190565b600082821015613b6657613b666139b7565b500390565b600060208284031215613b7d57600080fd5b5051919050565b600060208284031215613b9657600080fd5b81516115d3816135e4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613bf15784516001600160a01b031683529383019391830191600101613bcc565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613c2757600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efb6a1709218b158ea8591fc9269b88652f1c908dc68a79faa865c745a770b9505a2646970667358221220a078b6d538facadbbd46fc83f19061cb582039e5aa08a9913a340ea14a5dd94164736f6c634300080c0033