0x60806040523480156200001157600080fd5b506040516200223a3803806200223a833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001519150829050816001600160a01b038116620001265760405162461bcd60e51b81526004016200011d9062000212565b60405180910390fd5b81516200013b90600190602085019062000166565b50600080546001600160a01b0319166001600160a01b03929092169190911790555062000249915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200019e5760008555620001e9565b82601f10620001b957805160ff1916838001178555620001e9565b82800160010185558215620001e9579182015b82811115620001e9578251825591602001919060010190620001cc565b50620001f7929150620001fb565b5090565b5b80821115620001f75760008155600101620001fc565b6020808252601a908201527f436f6e74726f6c6c6572206d75737420626520646566696e6564000000000000604082015260600190565b611fe180620002596000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a24258ad1161005b578063a24258ad146101d2578063bdd7a79c1461026c578063cdea203414610311578063f77c47911461039c5761007d565b806306fdde031461008257806317d7de7c146100ff57806387033f6114610107575b600080fd5b61008a6103c0565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61008a61044d565b6101a7600480360360c081101561011d57600080fd5b6001600160a01b038235169160208101359160ff604083013516919081019060808101606082013564010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184600183028401116401000000008311171561018b57600080fd5b91935091506001600160a01b03813581169160200135166104e2565b604080516001600160a01b039094168452602084019290925260ff1682820152519081900360600190f35b610253600480360360608110156101e857600080fd5b81019060208101813564010000000081111561020357600080fd5b82018360208201111561021557600080fd5b8035906020019184600183028401116401000000008311171561023757600080fd5b91935091506001600160a01b0381358116916020013516610a48565b6040805192835290151560208301528051918290030190f35b6101a7600480360360e081101561028257600080fd5b6001600160a01b038235169160208101359160ff6040830135169160608101359181019060a0810160808201356401000000008111156102c157600080fd5b8201836020820111156102d357600080fd5b803590602001918460018302840111640100000000831117156102f557600080fd5b91935091506001600160a01b0381358116916020013516610bbd565b61039a6004803603608081101561032757600080fd5b81019060208101813564010000000081111561034257600080fd5b82018360208201111561035457600080fd5b8035906020019184600183028401116401000000008311171561037657600080fd5b91935091506001600160a01b0381358116916020810135909116906040013561129f565b005b6103a46114bd565b604080516001600160a01b039092168252519081900360200190f35b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104455780601f1061041a57610100808354040283529160200191610445565b820191906000526020600020905b81548152906001019060200180831161042857829003601f168201915b505050505081565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b5050505050905090565b6000806000803390506000816001600160a01b03166356ba88b86040518163ffffffff1660e01b815260040160206040518083038186803b15801561052657600080fd5b505afa15801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e9190611ea3565b6000546040516313bc6d4b60e01b81529192506001600160a01b0316906313bc6d4b9061058f908490600401611ef7565b60206040518083038186803b1580156105a757600080fd5b505afa1580156105bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105df9190611ebf565b6106045760405162461bcd60e51b81526004016105fb90611f25565b60405180910390fd5b604051633a82192560e01b81526001600160a01b03821690633a82192590610630903390600401611ef7565b60206040518083038186803b15801561064857600080fd5b505afa15801561065c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106809190611ebf565b61069c5760405162461bcd60e51b81526004016105fb90611f5c565b60006106a88a8a6114cc565b90506000876001600160a01b031663f337f630836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156106f957600080fd5b505afa15801561070d573d6000803e3d6000fd5b505050506040513d602081101561072357600080fd5b505190506001600160a01b03808216908f161461092c576001600160a01b038116610897576001600160a01b038e1673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21461081557336001600160a01b0316630e32db528f8f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518463ffffffff1660e01b815260040180846001600160a01b03168152602001838152602001826001600160a01b031681526020019350505050602060405180830381600087803b1580156107e857600080fd5b505af11580156107fc573d6000803e3d6000fd5b505050506040513d602081101561081257600080fd5b50505b33631a5cfcb7600061083b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2846114f2565b6040518363ffffffff1660e01b815260040180831515815260200182815260200192505050600060405180830381600087803b15801561087a57600080fd5b505af115801561088e573d6000803e3d6000fd5b5050505061092c565b336001600160a01b0316630e32db528f8f846040518463ffffffff1660e01b815260040180846001600160a01b03168152602001838152602001826001600160a01b031681526020019350505050602060405180830381600087803b1580156108ff57600080fd5b505af1158015610913573d6000803e3d6000fd5b505050506040513d602081101561092957600080fd5b50505b60006109418f61093c8b86611593565b611619565b905061094d818f61178d565b905061096181670dbd2fc137a3000061178d565b9050886001600160a01b031663976a99be3385848661099233896001600160a01b03166114f290919063ffffffff16565b6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001836001600160a01b0316815260200182815260200195505050505050600060405180830381600087803b1580156109ff57600080fd5b505af1158015610a13573d6000803e3d6000fd5b50505050610a218984611593565b915081610a2e8a846117b2565b600097509750975050505050509750975097945050505050565b6000806000610a5787876114cc565b9050336001600160a01b031663e4df5e1a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9257600080fd5b505afa158015610aa6573d6000803e3d6000fd5b505050506040513d6020811015610abc57600080fd5b5051610ad057600060019250925050610bb4565b6000610add858388611858565b9050610b58610b518684896001600160a01b031663f85cb5c86040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2057600080fd5b505afa158015610b34573d6000803e3d6000fd5b505050506040513d6020811015610b4a57600080fd5b5051611ae0565b8290611be6565b905080610bac576040805162461bcd60e51b815260206004820152601860248201527f4e41562068617320746f20626520626967676572207620300000000000000000604482015290519081900360640190fd5b925060019150505b94509492505050565b6000806000803390506000816001600160a01b03166356ba88b86040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0157600080fd5b505afa158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190611ea3565b6000546040516313bc6d4b60e01b81529192506001600160a01b0316906313bc6d4b90610c6a908490600401611ef7565b60206040518083038186803b158015610c8257600080fd5b505afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba9190611ebf565b610cd65760405162461bcd60e51b81526004016105fb90611f25565b604051633a82192560e01b81526001600160a01b03821690633a82192590610d02903390600401611ef7565b60206040518083038186803b158015610d1a57600080fd5b505afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d529190611ebf565b610d6e5760405162461bcd60e51b81526004016105fb90611f5c565b670de0b6b3a76400008a1115610dcb576040805162461bcd60e51b815260206004820152601960248201527f556e77696e642050657263656e74616765203c3d203130302500000000000000604482015290519081900360640190fd5b6000610dd78a8a6114cc565b905060008890506000886001600160a01b031663f337f630846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e2d57600080fd5b505afa158015610e41573d6000803e3d6000fd5b505050506040513d6020811015610e5757600080fd5b505190506000610e7a8e610e748c610e6f8189611593565b6117b2565b9061178d565b9050801561125a576000610f57610f36610f1a6001600160a01b03861615610f0657856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed557600080fd5b505afa158015610ee9573d6000803e3d6000fd5b505050506040513d6020811015610eff57600080fd5b5051610f09565b60125b60ff16610f14611bf6565b90611bfb565b600a0a610f30610f2a8f8a611593565b87611619565b90611c0b565b610f51610f4a85662386f26fc1000061178d565b8590611bfb565b90611c2f565b604080517f871be9110000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038881166024830152604482018690528681166064830152608482018490529151929350908d169163871be9119160a48082019260009290919082900301818387803b158015610fda57600080fd5b505af1158015610fee573d6000803e3d6000fd5b505050506001600160a01b03831661107857604080517f1a5cfcb70000000000000000000000000000000000000000000000000000000081526001600482015233803160248301529151631a5cfcb79160448082019260009290919082900301818387803b15801561105f57600080fd5b505af1158015611073573d6000803e3d6000fd5b505050505b670de0b6b3a76400008f1415611258576040805163779bcb9b60e01b81523360048201526001600160a01b0387811660248301528251908e169263779bcb9b9260448082019391829003018186803b1580156110d357600080fd5b505afa9250505080156110ff57506040513d60408110156110f357600080fd5b50805160209091015160015b61110857611258565b6001600160a01b038216156112555761112a6001600160a01b038316336114f2565b90506103e881111561125557336001600160a01b031663bb39a9608383896001600160a01b031663f85cb5c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d60208110156111aa57600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526001600160a01b03948516600482015260248101939093529216604482015266f8b0a10e4700006064820152905160848083019260209291908290030181600087803b15801561122857600080fd5b505af115801561123c573d6000803e3d6000fd5b505050506040513d602081101561125257600080fd5b50505b50505b505b816001600160a01b038116611270573331611283565b6112836001600160a01b038416336114f2565b6000985098509850505050505050985098509895505050505050565b60003390506000816001600160a01b03166356ba88b86040518163ffffffff1660e01b815260040160206040518083038186803b1580156112df57600080fd5b505afa1580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113179190611ea3565b6000546040516313bc6d4b60e01b81529192506001600160a01b0316906313bc6d4b90611348908490600401611ef7565b60206040518083038186803b15801561136057600080fd5b505afa158015611374573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113989190611ebf565b6113b45760405162461bcd60e51b81526004016105fb90611f25565b604051633a82192560e01b81526001600160a01b03821690633a821925906113e0903390600401611ef7565b60206040518083038186803b1580156113f857600080fd5b505afa15801561140c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114309190611ebf565b61144c5760405162461bcd60e51b81526004016105fb90611f5c565b600061145888886114cc565b6001600160a01b031614156114b4576040805162461bcd60e51b815260206004820152601860248201527f496e636f7272656374207661756c742061646472657373210000000000000000604482015290519081900360640190fd5b50505050505050565b6000546001600160a01b031681565b6000828260208110156114de57600080fd5b50356001600160a01b031690505b92915050565b60006114fd83611c47565b1561151357506001600160a01b038116316114ec565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561156057600080fd5b505afa158015611574573d6000803e3d6000fd5b505050506040513d602081101561158a57600080fd5b505190506114ec565b6000826001600160a01b0316637b082a74836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115e257600080fd5b505afa92505050801561160757506040513d602081101561160257600080fd5b505160015b6116125750806114ec565b90506114ec565b60008054604080517f2630c12f000000000000000000000000000000000000000000000000000000008152905183926001600160a01b031691632630c12f916004808301926020929190829003018186803b15801561167757600080fd5b505afa15801561168b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116af9190611ea3565b90506001600160a01b038082169063ac41865a908616156116d057856116e6565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25b6001600160a01b038616156116fb5785611711565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25b6040518363ffffffff1660e01b815260040161172e929190611f0b565b60206040518083038186803b15801561174657600080fd5b505afa925050508015611776575060408051601f3d908101601f1916820190925261177391810190611edf565b60015b6117845760009150506114ec565b91506114ec9050565b60006117ab670de0b6b3a76400006117a58585611c0b565b90611c83565b9392505050565b604080517fd6e5acb00000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038381166024830152915160009285169163d6e5acb0916044808301926020929190829003018186803b15801561181c57600080fd5b505afa92505050801561184157506040513d602081101561183c57600080fd5b505160015b611612576116126001600160a01b038316336114f2565b6000806118658585611593565b9050600061187386836117b2565b905060006118e583866001600160a01b031663f85cb5c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156118b457600080fd5b505afa1580156118c8573d6000803e3d6000fd5b505050506040513d60208110156118de57600080fd5b5051611619565b9050600061196184876001600160a01b031663f85cb5c86040518163ffffffff1660e01b815260040160206040518083038186803b15801561192657600080fd5b505afa15801561193a573d6000803e3d6000fd5b505050506040513d602081101561195057600080fd5b505161195c868661178d565b611cea565b90506000886001600160a01b031663f337f630896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156119b257600080fd5b505afa1580156119c6573d6000803e3d6000fd5b505050506040513d60208110156119dc57600080fd5b505190506119f36001600160a01b038216336114f2565b93508315611ad457846001600160a01b0316816001600160a01b031614611a5457611a5181886001600160a01b031663f85cb5c86040518163ffffffff1660e01b815260040160206040518083038186803b1580156118b457600080fd5b92505b611ad1611aca82896001600160a01b031663f85cb5c86040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9457600080fd5b505afa158015611aa8573d6000803e3d6000fd5b505050506040513d6020811015611abe57600080fd5b505161195c888861178d565b8390611be6565b91505b50979650505050505050565b6040805163779bcb9b60e01b81523360048201526001600160a01b03848116602483015282516000939187169263779bcb9b926044808301939192829003018186803b158015611b2f57600080fd5b505afa925050508015611b5b57506040513d6040811015611b4f57600080fd5b50805160209091015160015b611b67575060006117ab565b6001600160a01b03821615801590611b7f5750600081115b15611bdb576000611b91838684611cea565b90506000611b9f8487611619565b905080611bc657611bc182610e74611bb78a8a611619565b610e74888c611619565b611bd0565b611bd0818361178d565b9450505050506117ab565b6000925050506117ab565b808201828110156114ec57600080fd5b601290565b808203828111156114ec57600080fd5b6000821580611c2657505081810281838281611c2357fe5b04145b6114ec57600080fd5b60006117ab826117a585670de0b6b3a7640000611c0b565b60006001600160a01b0382161580611c7b57506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b90505b919050565b6000808211611cd9576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611ce257fe5b049392505050565b600080611cff856001600160a01b0316611d62565b90506000611d15856001600160a01b0316611d62565b905080821415611d295783925050506117ab565b81811115611d4957611d4084838303600a0a611c0b565b925050506117ab565b611d5884828403600a0a611c83565b9695505050505050565b6000611d6d82611c47565b15611d7a57506012611c7e565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce567000000000000000000000000000000000000000000000000000000001781529151815160009384936001600160a01b038816939092909182918083835b60208310611e0d5780518252601f199092019160209182019101611dee565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611e6d576040519150601f19603f3d011682016040523d82523d6000602084013e611e72565b606091505b509150915081611e83576012611e9b565b808060200190516020811015611e9857600080fd5b50515b949350505050565b600060208284031215611eb4578081fd5b81516117ab81611f93565b600060208284031215611ed0578081fd5b815180151581146117ab578182fd5b600060208284031215611ef0578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252601b908201527f4f6e6c7920612067617264656e2063616e2063616c6c20746869730000000000604082015260600190565b60208082526019908201527f53656e646572206d757374206265206120737472617465677900000000000000604082015260600190565b6001600160a01b0381168114611fa857600080fd5b5056fea2646970667358221220d2211509a8dba04b88c7be2ce0b990fdbaaa646e1974a1b1efc39d17ec5d5f4b64736f6c634300070600330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000d4a5b5fcb561daf3adf86f8477555b92fba43b5f00000000000000000000000000000000000000000000000000000000000000057661756c74000000000000000000000000000000000000000000000000000000