0x60806040523480156200001157600080fd5b5060405162001569380380620015698339810160408190526200003491620001a2565b6200003f3362000135565b604080516001600160a01b038316602082015201604051602081830303815290604052600490816200007291906200027f565b50604080518082019091526009815268466c616d6520496e7560b81b6020820152600590620000a290826200027f565b5060408051808201909152600481526346494e5560e01b6020820152600690620000cd90826200027f565b50670de0b6b3a764000060038190556001600160a01b038316600081815260016020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200034b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200019d57600080fd5b919050565b60008060408385031215620001b657600080fd5b620001c18362000185565b9150620001d16020840162000185565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020557607f821691505b6020821081036200022657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027a57600081815260208120601f850160051c81016020861015620002555750805b601f850160051c820191505b81811015620002765782815560010162000261565b5050505b505050565b81516001600160401b038111156200029b576200029b620001da565b620002b381620002ac8454620001f0565b846200022c565b602080601f831160018114620002eb5760008415620002d25750858301515b600019600386901b1c1916600185901b17855562000276565b600085815260208120601f198616915b828110156200031c57888601518255948401946001909101908401620002fb565b50858210156200033b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61120e806200035b6000396000f3fe6080604052600436106100f35760003560e01c80638da5cb5b1161008a578063d5edec2111610059578063d5edec21146102a2578063dd62ed3e146102b5578063e5c5e9a3146102fb578063f2fde38b1461031b57600080fd5b80638da5cb5b1461021b57806395d89b411461024d578063a457c2d714610262578063a9059cbb1461028257600080fd5b8063313ce567116100c6578063313ce5671461019257806339509351146101ae57806370a08231146101ce578063715018a61461020457600080fd5b806306fdde03146100f8578063095ea7b31461012357806318160ddd1461015357806323b872dd14610172575b600080fd5b34801561010457600080fd5b5061010d61033b565b60405161011a9190610e3a565b60405180910390f35b34801561012f57600080fd5b5061014361013e366004610e9d565b6103cd565b604051901515815260200161011a565b34801561015f57600080fd5b506003545b60405190815260200161011a565b34801561017e57600080fd5b5061014361018d366004610ec9565b6103e4565b34801561019e57600080fd5b506040516009815260200161011a565b3480156101ba57600080fd5b506101436101c9366004610e9d565b61049a565b3480156101da57600080fd5b506101646101e9366004610f0a565b6001600160a01b031660009081526001602052604090205490565b34801561021057600080fd5b506102196104d1565b005b34801561022757600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161011a565b34801561025957600080fd5b5061010d610537565b34801561026e57600080fd5b5061014361027d366004610e9d565b610546565b34801561028e57600080fd5b5061014361029d366004610e9d565b6105e1565b6102196102b0366004610f2e565b6105ee565b3480156102c157600080fd5b506101646102d0366004610f79565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561030757600080fd5b50610235610316366004610fc8565b610940565b34801561032757600080fd5b50610219610336366004610f0a565b610956565b60606005805461034a90611079565b80601f016020809104026020016040519081016040528092919081815260200182805461037690611079565b80156103c35780601f10610398576101008083540402835291602001916103c3565b820191906000526020600020905b8154815290600101906020018083116103a657829003601f168201915b5050505050905090565b60006103da338484610a21565b5060015b92915050565b60006103f1848484610b45565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561047b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61048f853361048a86856110c9565b610a21565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916103da91859061048a9086906110dc565b6000546001600160a01b0316331461052b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610472565b6105356000610dea565b565b60606006805461034a90611079565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156105c85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610472565b6105d7338561048a86856110c9565b5060019392505050565b60006103da338484610b45565b6001600160a01b0381166000908152600160205260408120546064906106159060506110ef565b61061f9190611106565b6001600160a01b03831660009081526001602052604081208054929350839290919061064c9084906110c9565b90915550503060008181526001602052604090819020839055516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906106a09085815260200190565b60405180910390a360008490506106ba3082600354610a21565b6000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071e9190611128565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561076b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078f9190611128565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108009190611128565b9050816001600160a01b031663f305d7193430610832306001600160a01b031660009081526001602052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b0392831660048201526024810191909152600060448201819052606482015290891660848201524260a482015260c40160606040518083038185885af115801561089b573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108c09190611145565b505060405163095ea7b360e01b81526001600160a01b03848116600483015260001960248301528316915063095ea7b3906044016020604051808303816000875af1158015610913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109379190611188565b50505050505050565b6000818060200190518101906103de9190611128565b6000546001600160a01b031633146109b05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610472565b6001600160a01b038116610a155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610472565b610a1e81610dea565b50565b6001600160a01b038316610a835760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610472565b6001600160a01b038216610ae45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610472565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610ba95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610472565b6001600160a01b038216610c0b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610472565b6001600160a01b0383166000908152600160205260408120546004805491929182918291610cc09190610c3d90611079565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6990611079565b8015610cb65780601f10610c8b57610100808354040283529160200191610cb6565b820191906000526020600020905b815481529060010190602001808311610c9957829003601f168201915b5050505050610940565b604051633a5b109160e11b81526001600160a01b03898116600483015288811660248301526044820188905291909116906374b62122906064016060604051808303816000875af1158015610d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d91906111a3565b92509250925082610d4d57600080fd5b610d5782856110c9565b6001600160a01b038089166000908152600160205260408082209390935590881681529081208054839290610d8d9084906110dc565b92505081905550856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051610dd991815260200190565b60405180910390a350505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b81811015610e6757858101830151858201604001528201610e4b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a1e57600080fd5b60008060408385031215610eb057600080fd5b8235610ebb81610e88565b946020939093013593505050565b600080600060608486031215610ede57600080fd5b8335610ee981610e88565b92506020840135610ef981610e88565b929592945050506040919091013590565b600060208284031215610f1c57600080fd5b8135610f2781610e88565b9392505050565b600080600060608486031215610f4357600080fd5b8335610f4e81610e88565b92506020840135610f5e81610e88565b91506040840135610f6e81610e88565b809150509250925092565b60008060408385031215610f8c57600080fd5b8235610f9781610e88565b91506020830135610fa781610e88565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610fda57600080fd5b813567ffffffffffffffff80821115610ff257600080fd5b818401915084601f83011261100657600080fd5b81358181111561101857611018610fb2565b604051601f8201601f19908116603f0116810190838211818310171561104057611040610fb2565b8160405282815287602084870101111561105957600080fd5b826020860160208301376000928101602001929092525095945050505050565b600181811c9082168061108d57607f821691505b6020821081036110ad57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103de576103de6110b3565b808201808211156103de576103de6110b3565b80820281158282048414176103de576103de6110b3565b60008261112357634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561113a57600080fd5b8151610f2781610e88565b60008060006060848603121561115a57600080fd5b8351925060208401519150604084015190509250925092565b8051801515811461118357600080fd5b919050565b60006020828403121561119a57600080fd5b610f2782611173565b6000806000606084860312156111b857600080fd5b6111c184611173565b92506020840151915060408401519050925092509256fea2646970667358221220d7396d26155ddc42f52e2e795bad52b8b179d46e3106c27b102125bc3ef9e1e964736f6c63430008110033000000000000000000000000f1a85886c7ce185f7578da3b72cf9167b7c27d5d000000000000000000000000bd21422d8ddd57cffae72587169a22b2462dc761