0x60e06040523480156200001157600080fd5b50604051620023e1380380620023e18339810160408190526200003491620002cd565b8383836003620000458382620003ee565b506004620000548282620003ee565b5050506000806200006b83620000ab60201b60201c565b91509150816200007d5760126200007f565b805b60ff1660a05250506001600160a01b03166080526200009e3362000190565b60c05250620004f2915050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b03871691620000f491620004ba565b600060405180830381855afa9150503d806000811462000131576040519150601f19603f3d011682016040523d82523d6000602084013e62000136565b606091505b50915091508180156200014b57506020815110155b156200018357600081806020019051810190620001699190620004d8565b905060ff811162000181576001969095509350505050565b505b5060009485945092505050565b600680546001600160a01b0319169055620001ab81620001ae565b50565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200023357818101518382015260200162000219565b50506000910152565b600082601f8301126200024e57600080fd5b81516001600160401b03808211156200026b576200026b62000200565b604051601f8301601f19908116603f0116810190828211818310171562000296576200029662000200565b81604052838152866020858801011115620002b057600080fd5b620002c384602083016020890162000216565b9695505050505050565b60008060008060808587031215620002e457600080fd5b84516001600160a01b0381168114620002fc57600080fd5b60208601519094506001600160401b03808211156200031a57600080fd5b62000328888389016200023c565b945060408701519150808211156200033f57600080fd5b506200034e878288016200023c565b606096909601519497939650505050565b600181811c908216806200037457607f821691505b6020821081036200039557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003e957600081815260208120601f850160051c81016020861015620003c45750805b601f850160051c820191505b81811015620003e557828155600101620003d0565b5050505b505050565b81516001600160401b038111156200040a576200040a62000200565b62000422816200041b84546200035f565b846200039b565b602080601f8311600181146200045a5760008415620004415750858301515b600019600386901b1c1916600185901b178555620003e5565b600085815260208120601f198616915b828110156200048b578886015182559484019460019091019084016200046a565b5085821015620004aa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251620004ce81846020870162000216565b9190910192915050565b600060208284031215620004eb57600080fd5b5051919050565b60805160a05160c051611e9c62000545600039600081816108850152610b6f0152600061081001526000818161036b015281816105a101528181610a7a0152818161125201526114060152611e9c6000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c806379ba509711610145578063ba087652116100bd578063d905777e1161008c578063e30c397811610071578063e30c39781461054c578063ef8b30f7146104da578063f2fde38b1461055d57600080fd5b8063d905777e14610500578063dd62ed3e1461051357600080fd5b8063ba087652146104c7578063c63d75b6146103b6578063c6e6f592146104da578063ce96cb77146104ed57600080fd5b806395d89b4111610114578063a9059cbb116100f9578063a9059cbb1461048e578063b3d7f6b9146104a1578063b460af94146104b457600080fd5b806395d89b4114610473578063a457c2d71461047b57600080fd5b806379ba50971461040f57806385dc927d146104175780638da5cb5b1461044f57806394bf804d1461046057600080fd5b80632797cf30116101d8578063402d267d116101a75780636e553f651161018c5780636e553f65146103cb57806370a08231146103de578063715018a61461040757600080fd5b8063402d267d146103b65780634cdad5061461027657600080fd5b80632797cf301461033a578063313ce5671461034f57806338d52e0f1461036957806339509351146103a357600080fd5b80630a28a477116102145780630a28a477146102ac57806318160ddd146102bf5780631e81dee3146102c757806323b872dd1461032757600080fd5b806301e1d1141461024657806306fdde031461026157806307a2d13a14610276578063095ea7b314610289575b600080fd5b61024e610570565b6040519081526020015b60405180910390f35b610269610619565b6040516102589190611bc2565b61024e610284366004611bf5565b6106ab565b61029c610297366004611c2a565b6106be565b6040519015158152602001610258565b61024e6102ba366004611bf5565b6106d6565b60025461024e565b6007546102f7906001600160801b0381169067ffffffffffffffff600160801b8204811691600160c01b90041683565b604080516001600160801b03909416845267ffffffffffffffff9283166020850152911690820152606001610258565b61029c610335366004611c54565b6106e3565b61034d610348366004611c90565b610709565b005b610357610808565b60405160ff9091168152602001610258565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610258565b61029c6103b1366004611c2a565b610834565b61024e6103c4366004611cba565b5060001990565b61024e6103d9366004611cd5565b610873565b61024e6103ec366004611cba565b6001600160a01b031660009081526020819052604090205490565b61034d6108cf565b61034d6108e3565b61042a610425366004611c90565b610976565b604080516001600160801b039094168452602084019290925290820152606001610258565b6005546001600160a01b031661038b565b61024e61046e366004611cd5565b610b5d565b610269610bb9565b61029c610489366004611c2a565b610bc8565b61029c61049c366004611c2a565b610c7d565b61024e6104af366004611bf5565b610c8b565b61024e6104c2366004611d01565b610c98565b61024e6104d5366004611d01565b610cbd565b61024e6104e8366004611bf5565b610cda565b61024e6104fb366004611cba565b610ce7565b61024e61050e366004611cba565b610d0b565b61024e610521366004611d3d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546001600160a01b031661038b565b61034d61056b366004611cba565b610d29565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156105f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106149190611d67565b905090565b60606003805461062890611d80565b80601f016020809104026020016040519081016040528092919081815260200182805461065490611d80565b80156106a15780601f10610676576101008083540402835291602001916106a1565b820191906000526020600020905b81548152906001019060200180831161068457829003601f168201915b5050505050905090565b60006106b8826000610da7565b92915050565b6000336106cc818585610dd6565b5060019392505050565b60006106b8826001610f2e565b6000336106f1858285610f54565b6106fc858585610fe6565b60019150505b9392505050565b6107116111d3565b6040805160608082018352600780546001600160801b03808216855267ffffffffffffffff600160801b80840482166020808901918252600160c01b80870485168a8c019081528b51998a018c528a51909616808a52925185168983018190528c8616998c018a905290890277ffffffffffffffffffffffffffffffffffffffffffffffff919094027fffffffffffffffff0000000000000000000000000000000000000000000000009097169092179590951716179093555185519384529091169082015290917f5a4cb74462b6efe221cdabefd064212eab0af7e571d871d47786da88cd909467910160405180910390a15050565b6000610614817f0000000000000000000000000000000000000000000000000000000000000000611dd0565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906106cc908290869061086e908790611de9565b610dd6565b60008061088184600061122d565b90507f000000000000000000000000000000000000000000000000000000000000000084116108c357604051632b7786bd60e21b815260040160405180910390fd5b6107023384868461124d565b6108d76111d3565b6108e160006112df565b565b60065433906001600160a01b0316811461096a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610973816112df565b50565b600080600061098460025490565b905061098e610570565b604080516060810182526007546001600160801b038116825267ffffffffffffffff600160801b820481166020840152600160c01b9091048116928201929092529193508516156109df57846109e5565b80604001515b94506109fb67ffffffffffffffff861683611de9565b831115610b5557602081015167ffffffffffffffff4281169116108015610b53578151838503906001600160801b0390811690821611610a3b5780610a3e565b82515b95508667ffffffffffffffff16866001600160801b03161115610aaf57610aaa610a706005546001600160a01b031690565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906001600160801b038916611305565b610ab4565b600095505b60408051606081018252918790036001600160801b0316808352426203f4800167ffffffffffffffff908116602085018190528684015190911693909201839052600780547fffffffffffffffff00000000000000000000000000000000000000000000000016909117600160801b9092029190911777ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b9092029190911790555b505b509193909250565b600080610b6b8460016113b3565b90507f00000000000000000000000000000000000000000000000000000000000000008111610bad57604051632b7786bd60e21b815260040160405180910390fd5b6107023384838761124d565b60606004805461062890611d80565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610c655760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610961565b610c728286868403610dd6565b506001949350505050565b6000336106cc818585610fe6565b60006106b8826001610da7565b600080610ca685600161122d565b9050610cb533858588856113d3565b949350505050565b600080610ccb8560006113b3565b9050610cb533858584896113d3565b60006106b8826000610f2e565b6001600160a01b0381166000908152602081905260408120546106b8906000610da7565b6001600160a01b0381166000908152602081905260408120546106b8565b610d316111d3565b600680546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff199091168117909155610d6f6005546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600080610db2610570565b90506000610dbf60025490565b9050610dcd85858484611493565b95945050505050565b6001600160a01b038316610e515760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610961565b6001600160a01b038216610ecd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610961565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080610f39610570565b90506000610f4660025490565b9050610dcd858584846114cf565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610fe05781811015610fd35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610961565b610fe08484848403610dd6565b50505050565b6001600160a01b0383166110625760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610961565b6001600160a01b0382166110de5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610961565b6001600160a01b0383166000908152602081905260409020548181101561116d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610961565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610fe0565b6005546001600160a01b031633146108e15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610961565b600080600061123c6000610976565b9250925050610dcd858584846114cf565b6112797f00000000000000000000000000000000000000000000000000000000000000008530856114f2565b6112838382611543565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516112d1929190918252602082015260400190565b60405180910390a350505050565b6006805473ffffffffffffffffffffffffffffffffffffffff1916905561097381611602565b6040516001600160a01b0383166024820152604481018290526113ae9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611661565b505050565b60008060006113c26000610976565b9250925050610dcd85858484611493565b826001600160a01b0316856001600160a01b0316146113f7576113f7838683610f54565b6114018382611749565b61142c7f00000000000000000000000000000000000000000000000000000000000000008584611305565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611484929190918252602082015260400190565b60405180910390a45050505050565b6000818310156114c6576114bf6114ab846001611de9565b6114b6846001611de9565b879190876118b2565b9050610cb5565b50929392505050565b6000818310156114c6576114bf6114e7836001611de9565b6114b6856001611de9565b6040516001600160a01b0380851660248301528316604482015260648101829052610fe09085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161134a565b6001600160a01b0382166115995760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610961565b80600260008282546115ab9190611de9565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006116b6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661190d9092919063ffffffff16565b90508051600014806116d75750808060200190518101906116d79190611dfc565b6113ae5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610961565b6001600160a01b0382166117c55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610961565b6001600160a01b038216600090815260208190526040902054818110156118545760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610961565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6000806118c086868661191c565b905060018360028111156118d6576118d6611e1e565b1480156118f35750600084806118ee576118ee611e34565b868809115b15610dcd57611903600182611de9565b9695505050505050565b6060610cb58484600085611a0e565b60008080600019858709858702925082811083820303915050806000036119565783828161194c5761194c611e34565b0492505050610702565b8084116119a55760405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152606401610961565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b606082471015611a865760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610961565b600080866001600160a01b03168587604051611aa29190611e4a565b60006040518083038185875af1925050503d8060008114611adf576040519150601f19603f3d011682016040523d82523d6000602084013e611ae4565b606091505b5091509150611af587838387611b00565b979650505050505050565b60608315611b6f578251600003611b68576001600160a01b0385163b611b685760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610961565b5081610cb5565b610cb58383815115611b845781518083602001fd5b8060405162461bcd60e51b81526004016109619190611bc2565b60005b83811015611bb9578181015183820152602001611ba1565b50506000910152565b6020815260008251806020840152611be1816040850160208701611b9e565b601f01601f19169190910160400192915050565b600060208284031215611c0757600080fd5b5035919050565b80356001600160a01b0381168114611c2557600080fd5b919050565b60008060408385031215611c3d57600080fd5b611c4683611c0e565b946020939093013593505050565b600080600060608486031215611c6957600080fd5b611c7284611c0e565b9250611c8060208501611c0e565b9150604084013590509250925092565b600060208284031215611ca257600080fd5b813567ffffffffffffffff8116811461070257600080fd5b600060208284031215611ccc57600080fd5b61070282611c0e565b60008060408385031215611ce857600080fd5b82359150611cf860208401611c0e565b90509250929050565b600080600060608486031215611d1657600080fd5b83359250611d2660208501611c0e565b9150611d3460408501611c0e565b90509250925092565b60008060408385031215611d5057600080fd5b611d5983611c0e565b9150611cf860208401611c0e565b600060208284031215611d7957600080fd5b5051919050565b600181811c90821680611d9457607f821691505b602082108103611db457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156106b8576106b8611dba565b808201808211156106b8576106b8611dba565b600060208284031215611e0e57600080fd5b8151801515811461070257600080fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008251611e5c818460208701611b9e565b919091019291505056fea2646970667358221220aea27a78bbfb6673e387d1eb8e6afb1843e506d602ef775d6533f026cc6c27fd64736f6c634300081300330000000000000000000000004c308843f865fbaa89e8a6df1733b15319ff4dde000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000000104d5346205374616b65642045746865720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066d73664554480000000000000000000000000000000000000000000000000000