60806040523480156200001157600080fd5b5060405162001c8f38038062001c8f83398101604081905262000034916200056f565b8282600362000044838262000682565b50600462000053828262000682565b50506006805460ff191660ff8416179055506200007360008033620000b1565b6200009060015b6040805160008082526020820190925262000201565b6200009c60026200007a565b620000a860036200007a565b505050620007a2565b826000808281526005602052604090206001015460ff166002811115620000dc57620000dc6200074e565b146200012f5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207573652061207072652d6578697374696e6720726f6c65000060448201526064015b60405180910390fd5b60008481526005602052604090206001808201805460ff1916828002179055508381556200016d600282018462000347602090811b62000ac417901c565b60008481526005602052604081206001015460ff1660028111156200019657620001966200074e565b03620001fa5760405162461bcd60e51b815260206004820152603c602482015260008051602062001c6f83398151915260448201527f20746f206d616e61676520616e206578636c757369766520726f6c6500000000606482015260840162000126565b5050505050565b826000808281526005602052604090206001015460ff1660028111156200022c576200022c6200074e565b146200027b5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74207573652061207072652d6578697374696e6720726f6c650000604482015260640162000126565b600084815260056020908152604090912060018101805460ff1916600217905584815590620002ba906003830190859062000ace62000357821b17901c565b60008481526005602052604081206001015460ff166002811115620002e357620002e36200074e565b03620001fa5760405162461bcd60e51b8152602060048201526038602482015260008051602062001c6f83398151915260448201527f20746f206d616e61676520612073686172656420726f6c650000000000000000606482015260840162000126565b620003538282620003ac565b5050565b60005b8151811015620003a75762000392838383815181106200037e576200037e62000764565b60200260200101516200042d60201b60201c565b806200039e816200077a565b9150506200035a565b505050565b6001600160a01b038116620004105760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742073657420616e206578636c757369766520726f6c6520746f2060448201526203078360ec1b606482015260840162000126565b81546001600160a01b0319166001600160a01b0391909116179055565b6001600160a01b038116620004855760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f74206164642030783020746f20612073686172656420726f6c6500604482015260640162000126565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620004d257600080fd5b81516001600160401b0380821115620004ef57620004ef620004aa565b604051601f8301601f19908116603f011681019082821181831017156200051a576200051a620004aa565b816040528381526020925086838588010111156200053757600080fd5b600091505b838210156200055b57858201830151818301840152908201906200053c565b600093810190920192909252949350505050565b6000806000606084860312156200058557600080fd5b83516001600160401b03808211156200059d57600080fd5b620005ab87838801620004c0565b94506020860151915080821115620005c257600080fd5b50620005d186828701620004c0565b925050604084015160ff81168114620005e957600080fd5b809150509250925092565b600181811c908216806200060957607f821691505b6020821081036200062a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a757600081815260208120601f850160051c81016020861015620006595750805b601f850160051c820191505b818110156200067a5782815560010162000665565b505050505050565b81516001600160401b038111156200069e576200069e620004aa565b620006b681620006af8454620005f4565b8462000630565b602080601f831160018114620006ee5760008415620006d55750858301515b600019600386901b1c1916600185901b1785556200067a565b600085815260208120601f198616915b828110156200071f57888601518255948401946001909101908401620006fe565b50858210156200073e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016200079b57634e487b7160e01b600052601160045260246000fd5b5060010190565b6114bd80620007b26000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806374d0a676116100de578063a9059cbb11610097578063b646c19411610071578063b646c19414610348578063d97c05be1461035b578063dd62ed3e1461036e578063f44637ba1461038157600080fd5b8063a9059cbb146102f7578063aaa14ca31461030a578063ab3545e51461031d57600080fd5b806374d0a6761461029057806379cc6790146102a35780637cdc1cb9146102b657806395d89b41146102c9578063983b2d56146102d1578063a457c2d7146102e457600080fd5b806340c10f191161013057806340c10f191461020657806342966c68146102195780635873b41a1461022e5780636be7658b1461024157806370a082311461025457806373cc802a1461027d57600080fd5b806306fdde0314610178578063095ea7b31461019657806318160ddd146101b957806323b872dd146101cb578063313ce567146101de57806339509351146101f3575b600080fd5b610180610394565b60405161018d9190611163565b60405180910390f35b6101a96101a43660046111cd565b610426565b604051901515815260200161018d565b6002545b60405190815260200161018d565b6101a96101d93660046111f7565b610440565b60065460405160ff909116815260200161018d565b6101a96102013660046111cd565b610464565b6101a96102143660046111cd565b610486565b61022c610227366004611233565b6104c3565b005b6101a961023c36600461124c565b6104f9565b61022c61024f36600461127f565b610530565b6101bd6102623660046112a2565b6001600160a01b031660009081526020819052604090205490565b61022c61028b3660046112a2565b610606565b61022c61029e36600461127f565b610614565b6101a96102b13660046111cd565b6106ea565b6101a96102c436600461127f565b61071e565b6101806107e3565b61022c6102df3660046112a2565b6107f2565b6101a96102f23660046111cd565b6107fe565b6101a96103053660046111cd565b610879565b61022c610318366004611233565b610887565b61033061032b366004611233565b610943565b6040516001600160a01b03909116815260200161018d565b61022c6103563660046112a2565b6109af565b61022c61036936600461127f565b6109b9565b6101bd61037c36600461124c565b610a8f565b61022c61038f3660046112a2565b610aba565b6060600380546103a3906112c4565b80601f01602080910402602001604051908101604052809291908181526020018280546103cf906112c4565b801561041c5780601f106103f15761010080835404028352916020019161041c565b820191906000526020600020905b8154815290600101906020018083116103ff57829003601f168201915b5050505050905090565b600033610434818585610b14565b60019150505b92915050565b60003361044e858285610c38565b610459858585610cb2565b506001949350505050565b6000336104348185856104778383610a8f565b610481919061130e565b610b14565b60006001610494813361071e565b6104b95760405162461bcd60e51b81526004016104b090611337565b60405180910390fd5b6104348484610e56565b60026104cf813361071e565b6104eb5760405162461bcd60e51b81526004016104b090611337565b6104f53383610f15565b5050565b60006003610507813361071e565b6105235760405162461bcd60e51b81526004016104b090611337565b6104348484600019610b14565b81600260008281526005602052604090206001015460ff16600281111561055957610559611321565b146105765760405162461bcd60e51b81526004016104b090611379565b6000838152600560205260409020548390610591903361071e565b6105ad5760405162461bcd60e51b81526004016104b0906113c5565b60008481526005602052604090206105c89060030184611047565b60405133906001600160a01b0385169086907feb3e33034c392e69263b04ec0fa376dc12784a41b6676c7f31b936cbc0fbb5af90600090a450505050565b6106116000826109b9565b50565b81600260008281526005602052604090206001015460ff16600281111561063d5761063d611321565b1461065a5760405162461bcd60e51b81526004016104b090611379565b6000838152600560205260409020548390610675903361071e565b6106915760405162461bcd60e51b81526004016104b0906113c5565b60008481526005602052604090206106ac9060030184611069565b60405133906001600160a01b0385169086907f63502af7324ff6db91ab38f8236a648727d9385ea6c782073dd4882d8a61a48f90600090a450505050565b600060026106f8813361071e565b6107145760405162461bcd60e51b81526004016104b090611337565b6104348484610f15565b600082815260056020526040812060018082015460ff16600281111561074657610746611321565b036107675760028101546001600160a01b038481169116145b91505061043a565b6002600182015460ff16600281111561078257610782611321565b036107aa576001600160a01b038316600090815260038201602052604090205460ff1661075f565b60405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081c9bdb19525960921b60448201526064016104b0565b6060600480546103a3906112c4565b61061160015b82610614565b6000338161080c8286610a8f565b90508381101561086c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104b0565b6104598286868403610b14565b600033610434818585610cb2565b80600260008281526005602052604090206001015460ff1660028111156108b0576108b0611321565b146108cd5760405162461bcd60e51b81526004016104b090611379565b816108d8813361071e565b6108f45760405162461bcd60e51b81526004016104b090611337565b600083815260056020526040902061090f9060030133611047565b6040513390819085907feb3e33034c392e69263b04ec0fa376dc12784a41b6676c7f31b936cbc0fbb5af90600090a4505050565b600081600160008281526005602052604090206001015460ff16600281111561096e5761096e611321565b1461098b5760405162461bcd60e51b81526004016104b090611409565b6000838152600560205260409020600201546001600160a01b031691505b50919050565b61061160036107f8565b81600160008281526005602052604090206001015460ff1660028111156109e2576109e2611321565b146109ff5760405162461bcd60e51b81526004016104b090611409565b6000838152600560205260409020548390610a1a903361071e565b610a365760405162461bcd60e51b81526004016104b0906113c5565b6000848152600560205260409020610a5190600201846110e4565b60405133906001600160a01b0385169086907f3b855c56b409b671c7112789d022675eb639d0bcb8896f1b6197c132f799e74690600090a450505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61061160026107f8565b6104f582826110e4565b60005b8151811015610b0f57610afd83838381518110610af057610af0611458565b6020026020010151611069565b80610b078161146e565b915050610ad1565b505050565b6001600160a01b038316610b765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b0565b6001600160a01b038216610bd75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610c448484610a8f565b90506000198114610cac5781811015610c9f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104b0565b610cac8484848403610b14565b50505050565b6001600160a01b038316610d165760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b0565b6001600160a01b038216610d785760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b0565b6001600160a01b03831660009081526020819052604090205481811015610df05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104b0565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610cac565b6001600160a01b038216610eac5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104b0565b8060026000828254610ebe919061130e565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610f755760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104b0565b6001600160a01b03821660009081526020819052604090205481811015610fe95760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104b0565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6001600160a01b0381166110bf5760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f74206164642030783020746f20612073686172656420726f6c650060448201526064016104b0565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b0381166111465760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742073657420616e206578636c757369766520726f6c6520746f2060448201526203078360ec1b60648201526084016104b0565b81546001600160a01b0319166001600160a01b0391909116179055565b600060208083528351808285015260005b8181101561119057858101830151858201604001528201611174565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146111c857600080fd5b919050565b600080604083850312156111e057600080fd5b6111e9836111b1565b946020939093013593505050565b60008060006060848603121561120c57600080fd5b611215846111b1565b9250611223602085016111b1565b9150604084013590509250925092565b60006020828403121561124557600080fd5b5035919050565b6000806040838503121561125f57600080fd5b611268836111b1565b9150611276602084016111b1565b90509250929050565b6000806040838503121561129257600080fd5b82359150611276602084016111b1565b6000602082840312156112b457600080fd5b6112bd826111b1565b9392505050565b600181811c908216806112d857607f821691505b6020821081036109a957634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561043a5761043a6112f8565b634e487b7160e01b600052602160045260246000fd5b60208082526022908201527f53656e64657220646f6573206e6f7420686f6c6420726571756972656420726f6040820152616c6560f01b606082015260800190565b6020808252602c908201527f4d7573742062652063616c6c6564206f6e20616e20696e697469616c697a656460408201526b2053686172656420726f6c6560a01b606082015260800190565b60208082526024908201527f43616e206f6e6c792062652063616c6c6564206279206120726f6c65206d616e60408201526330b3b2b960e11b606082015260800190565b6020808252602f908201527f4d7573742062652063616c6c6564206f6e20616e20696e697469616c697a656460408201526e204578636c757369766520726f6c6560881b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060018201611480576114806112f8565b506001019056fea26469706673582212206cac4068ea5d043cea775769f89b7aa033bf30899af3e779ae5419e3d5bb6dd464736f6c63430008100033417474656d7074656420746f2075736520616e20696e76616c696420726f6c65000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024e4f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024e4f000000000000000000000000000000000000000000000000000000000000