0x608060405234801561001057600080fd5b5061115f806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80639af608c9116100a2578063cd6dc68711610071578063cd6dc68714610217578063cf1046221461022a578063e1bcdad91461024a578063f2fde38b1461025d578063fabc1cbc1461027057600080fd5b80639af608c9146101c7578063a36298c7146101da578063a537633c146101f1578063aced16611461020457600080fd5b80633e55f932116100de5780633e55f93214610174578063715018a614610187578063748747e61461018f5780638da5cb5b146101a257600080fd5b806306fced9a146101105780630fbc399414610139578063136439dd1461014e5780633462a0bc14610161575b600080fd5b61012361011e366004610b4e565b610283565b6040516101309190610bc7565b60405180910390f35b61014c610147366004610ce9565b6102dc565b005b61014c61015c366004610da9565b61037b565b61014c61016f366004610dc2565b6103fd565b61014c610182366004610da9565b610503565b61014c610510565b61014c61019d366004610e7b565b610524565b6033546001600160a01b03165b6040516001600160a01b039091168152602001610130565b6101236101d5366004610e7b565b6105ad565b6101e360665481565b604051908152602001610130565b6101236101ff366004610e96565b6105f8565b6065546101af906001600160a01b031681565b61014c610225366004610eb9565b61075a565b6101e3610238366004610e7b565b60676020526000908152604090205481565b61014c610258366004610eb9565b61088d565b61014c61026b366004610e7b565b6108da565b61014c61027e366004610da9565b610950565b6102b060405180608001604052806000815260200160008152602001606081526020016000151581525090565b6001600160a01b0383166000908152606760205260409020546102d390836105f8565b90505b92915050565b6033546001600160a01b03163314806102ff57506065546001600160a01b031633145b6103245760405162461bcd60e51b815260040161031b90610ee3565b60405180910390fd5b815160005b818110156103755761036d84828151811061034657610346610f05565b602002602001015184838151811061036057610360610f05565b60200260200101516109d5565b600101610329565b50505050565b6033546001600160a01b031633148061039e57506065546001600160a01b031633145b6103ba5760405162461bcd60e51b815260040161031b90610ee3565b600081815260686020526040808220600301805460ff191690555182917f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d91a250565b610405610a1c565b6066548311156104455760405162461bcd60e51b815260206004820152600b60248201526a0f9d1bdd185b131a5b5a5d60aa1b604482015260640161031b565b60408051608081018252848152670de0b6b3a76400006020808301828152838501878152861515606086015260008a81526068909352949091208351815590516001820155925190928291600282019061049f9082610fa5565b50606091909101516003909101805460ff191691151591909117905560405186907f1294af84ce68615c9c51fbbacb86f8822d3569e242a798fd8a1a6a842c920f53906104f3908890869089908990611065565b60405180910390a2505050505050565b61050d33826109d5565b50565b610518610a1c565b6105226000610a76565b565b6033546001600160a01b031633148061054757506065546001600160a01b031633145b6105635760405162461bcd60e51b815260040161031b90610ee3565b606580546001600160a01b0319166001600160a01b0383169081179091556040517fefb5cfa1a8690c124332ab93324539c5c9c4be03f28aeb8be86f2d8a0c9fb99b90600090a250565b6105da60405180608001604052806000815260200160008152602001606081526020016000151581525090565b6001600160a01b0382166000908152606760205260408120546102d6915b61062560405180608001604052806000815260200160008152602001606081526020016000151581525090565b60008381526068602052604081206003015460ff16610645576000610647565b835b905060686000828152602001908152602001600020604051806080016040529081600082015481526020016001820154815260200160028201805461068b90610f1b565b80601f01602080910402602001604051908101604052809291908181526020018280546106b790610f1b565b80156107045780601f106106d957610100808354040283529160200191610704565b820191906000526020600020905b8154815290600101906020018083116106e757829003601f168201915b50505091835250506003919091015460ff161515602090910152915082156107535781516020830151670de0b6b3a764000090610742908390611097565b61074c91906110bc565b6020840152505b5092915050565b600054610100900460ff161580801561077a5750600054600160ff909116105b806107945750303b158015610794575060005460ff166001145b6107f75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161031b565b6000805460ff19166001179055801561081a576000805461ff0019166101001790555b610822610ac8565b606580546001600160a01b0319166001600160a01b03851617905560668290558015610888576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6033546001600160a01b03163314806108b057506065546001600160a01b031633145b6108cc5760405162461bcd60e51b815260040161031b90610ee3565b6108d682826109d5565b5050565b6108e2610a1c565b6001600160a01b0381166109475760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161031b565b61050d81610a76565b6033546001600160a01b031633148061097357506065546001600160a01b031633145b61098f5760405162461bcd60e51b815260040161031b90610ee3565b600081815260686020526040808220600301805460ff191660011790555182917faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab791a250565b6001600160a01b038216600081815260676020526040808220849055518392917f055b48a7f28272213f8d2dea6936149129fe08c4874c4a8e434d82e4f272e84891a35050565b6033546001600160a01b031633146105225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161031b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610aef5760405162461bcd60e51b815260040161031b906110de565b610522600054610100900460ff16610b195760405162461bcd60e51b815260040161031b906110de565b61052233610a76565b80356001600160a01b0381168114610b3957600080fd5b919050565b80358015158114610b3957600080fd5b60008060408385031215610b6157600080fd5b610b6a83610b22565b9150610b7860208401610b3e565b90509250929050565b6000815180845260005b81811015610ba757602081850181015186830182015201610b8b565b506000602082860101526020601f19601f83011685010191505092915050565b6020815281516020820152602082015160408201526000604083015160806060840152610bf760a0840182610b81565b90506060840151151560808401528091505092915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610c4e57610c4e610c0f565b604052919050565b600067ffffffffffffffff821115610c7057610c70610c0f565b5060051b60200190565b600082601f830112610c8b57600080fd5b81356020610ca0610c9b83610c56565b610c25565b8083825260208201915060208460051b870101935086841115610cc257600080fd5b602086015b84811015610cde5780358352918301918301610cc7565b509695505050505050565b60008060408385031215610cfc57600080fd5b823567ffffffffffffffff80821115610d1457600080fd5b818501915085601f830112610d2857600080fd5b81356020610d38610c9b83610c56565b82815260059290921b84018101918181019089841115610d5757600080fd5b948201945b83861015610d7c57610d6d86610b22565b82529482019490820190610d5c565b96505086013592505080821115610d9257600080fd5b50610d9f85828601610c7a565b9150509250929050565b600060208284031215610dbb57600080fd5b5035919050565b60008060008060808587031215610dd857600080fd5b843593506020808601359350604086013567ffffffffffffffff80821115610dff57600080fd5b818801915088601f830112610e1357600080fd5b813581811115610e2557610e25610c0f565b610e37601f8201601f19168501610c25565b91508082528984828501011115610e4d57600080fd5b8084840185840137600084828401015250809450505050610e7060608601610b3e565b905092959194509250565b600060208284031215610e8d57600080fd5b6102d382610b22565b60008060408385031215610ea957600080fd5b82359150610b7860208401610b3e565b60008060408385031215610ecc57600080fd5b610ed583610b22565b946020939093013593505050565b60208082526008908201526710b6b0b730b3b2b960c11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680610f2f57607f821691505b602082108103610f4f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610888576000816000526020600020601f850160051c81016020861015610f7e5750805b601f850160051c820191505b81811015610f9d57828155600101610f8a565b505050505050565b815167ffffffffffffffff811115610fbf57610fbf610c0f565b610fd381610fcd8454610f1b565b84610f55565b602080601f8311600181146110085760008415610ff05750858301515b600019600386901b1c1916600185901b178555610f9d565b600085815260208120601f198616915b8281101561103757888601518255948401946001909101908401611018565b50858210156110555787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8481528360208201526080604082015260006110846080830185610b81565b9050821515606083015295945050505050565b80820281158282048414176102d657634e487b7160e01b600052601160045260246000fd5b6000826110d957634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea264697066735822122055d26f6287321ceaa41831f24d3b1ce03c7d28af183431d2e54a219a91daa72764736f6c63430008180033