608060405234801561001057600080fd5b5060405162001f6a38038062001f6a833981016040819052610031916100a2565b6001600160a01b03811660008181526001602052604080822080546001600160601b031916692a5a058fc295ed00000090811790915590517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91610094916100d0565b60405180910390a3506100d9565b6000602082840312156100b3578081fd5b81516001600160a01b03811681146100c9578182fd5b9392505050565b90815260200190565b611e8180620000e96000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806370a08231116100c3578063b4b5ea571161007c578063b4b5ea57146102b9578063c3cda520146102cc578063d505accf146102df578063dd62ed3e146102f2578063e7a324dc14610305578063f1127ed81461030d5761014d565b806370a0823114610245578063782d6fe1146102585780637ecebe001461027857806395d89b411461028b578063a457c2d714610293578063a9059cbb146102a65761014d565b806330adf81f1161011557806330adf81f146101c0578063313ce567146101c857806339509351146101dd578063587cde1e146101f05780635c19a95c146102105780636fcfff45146102255761014d565b806306fdde0314610152578063095ea7b31461017057806318160ddd1461019057806320606b70146101a557806323b872dd146101ad575b600080fd5b61015a61032e565b60405161016791906118eb565b60405180910390f35b61018361017e36600461174c565b610353565b604051610167919061183d565b6101986103fe565b6040516101679190611848565b61019861040c565b6101836101bb3660046116a0565b610430565b610198610561565b6101d0610585565b6040516101679190611bde565b6101836101eb36600461174c565b61058a565b6102036101fe366004611651565b610672565b6040516101679190611829565b61022361021e366004611651565b61068d565b005b610238610233366004611651565b61069a565b6040516101679190611bae565b610198610253366004611651565b6106b2565b61026b61026636600461174c565b6106d6565b6040516101679190611bec565b610198610286366004611651565b6108ed565b61015a6108ff565b6101836102a136600461174c565b61091e565b6101836102b436600461174c565b610996565b61026b6102c7366004611651565b6109d2565b6102236102da366004611776565b610a43565b6102236102ed3660046116e0565b610c4a565b61019861030036600461166c565b610f3a565b610198610f6c565b61032061031b3660046117cf565b610f90565b604051610167929190611bbf565b60405180604001604052806009815260200168426f72696e6744414f60b81b81525081565b600080600019831415610369575060001961038e565b61038b83604051806060016040528060248152602001611df260249139610fc5565b90505b336000818152602081815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b0386161790559051909190600080516020611dd2833981519152906103ea908590611bec565b60405180910390a360019150505b92915050565b692a5a058fc295ed00000081565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6001600160a01b0383166000908152602081815260408083203380855290835281842054825160608101909352602480845291936001600160601b039091169285926104869288929190611df290830139610fc5565b9050866001600160a01b0316836001600160a01b0316141580156104b357506001600160601b0382811614155b156105495760006104dd83836040518060600160405280603c8152602001611cb6603c9139610ff4565b6001600160a01b03898116600081815260208181526040808320948a16808452949091529081902080546001600160601b0319166001600160601b038616179055519293509091600080516020611dd28339815191529061053f908590611bec565b60405180910390a3505b610554878783611033565b5060019695505050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b6000806105af83604051806060016040528060248152602001611df260249139610fc5565b336000908152602081815260408083206001600160a01b0389168452825280832054815160608101909252603a8083529495509293610602936001600160601b03169286929190611c57908301396111de565b336000818152602081815260408083206001600160a01b038b1680855292529182902080546001600160601b0319166001600160601b038616179055905192935091600080516020611dd28339815191529061065f908590611bec565b60405180910390a3506001949350505050565b6002602052600090815260409020546001600160a01b031681565b610697338261121a565b50565b60046020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600160205260409020546001600160601b031690565b60004382106107005760405162461bcd60e51b81526004016106f7906119b6565b60405180910390fd5b6001600160a01b03831660009081526004602052604090205463ffffffff168061072e5760009150506103f8565b6001600160a01b038416600090815260036020908152604080832063ffffffff6000198601811685529252909120541683106107aa576001600160a01b03841660009081526003602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b031690506103f8565b6001600160a01b038416600090815260036020908152604080832083805290915290205463ffffffff168310156107e55760009150506103f8565b600060001982015b8163ffffffff168163ffffffff1611156108a857600282820363ffffffff16048103610817611612565b506001600160a01b038716600090815260036020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b03169181019190915290871415610883576020015194506103f89350505050565b805163ffffffff1687111561089a578193506108a1565b6001820392505b50506107ed565b506001600160a01b038516600090815260036020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60056020526000908152604090205481565b604051806040016040528060038152602001622127a960e91b81525081565b60008061094383604051806060016040528060248152602001611df260249139610fc5565b336000908152602081815260408083206001600160a01b038916845282528083205481516060810190925260368083529495509293610602936001600160601b03169286929190611e1690830139610ff4565b6000806109bb83604051806060016040528060258152602001611c9160259139610fc5565b90506109c8338583611033565b5060019392505050565b6001600160a01b03811660009081526004602052604081205463ffffffff16806109fd576000610a3c565b6001600160a01b0383166000908152600360209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03165b9392505050565b604080518082019091526009815268426f72696e6744414f60b81b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f34154ed6ef0b63636b364e64c74e8c31ae80a48abd61c40c2e8f0fa3ac223719610ab06112a4565b30604051602001610ac494939291906118a9565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001610b159493929190611885565b60405160208183030381529060405280519060200120905060008282604051602001610b4292919061180e565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610b7f94939291906118cd565b6020604051602081039080840390855afa158015610ba1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bd45760405162461bcd60e51b81526004016106f790611b69565b6001600160a01b03811660009081526005602052604090208054600181019091558914610c135760405162461bcd60e51b81526004016106f79061193e565b87421115610c335760405162461bcd60e51b81526004016106f790611a33565b610c3d818b61121a565b505050505b505050505050565b6000600019861415610c5f5750600019610c84565b610c8186604051806060016040528060238152602001611cf260239139610fc5565b90505b604080518082019091526009815268426f72696e6744414f60b81b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f34154ed6ef0b63636b364e64c74e8c31ae80a48abd61c40c2e8f0fa3ac223719610cf16112a4565b30604051602001610d0594939291906118a9565b60408051601f1981840301815282825280516020918201206001600160a01b038d166000908152600583529283208054600181019091559094509192610d77927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e9290918e9101611851565b60405160208183030381529060405280519060200120905060008282604051602001610da492919061180e565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051610de194939291906118cd565b6020604051602081039080840390855afa158015610e03573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e365760405162461bcd60e51b81526004016106f79061197f565b8b6001600160a01b0316816001600160a01b031614610e675760405162461bcd60e51b81526004016106f7906119fc565b88421115610e875760405162461bcd60e51b81526004016106f790611a78565b846000808e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160601b0302191690836001600160601b031602179055508a6001600160a01b03168c6001600160a01b0316600080516020611dd283398151915287604051610f249190611bec565b60405180910390a3505050505050505050505050565b6001600160a01b039182166000908152602081815260408083209390941682529190915220546001600160601b031690565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600360209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b600081600160601b8410610fec5760405162461bcd60e51b81526004016106f791906118eb565b509192915050565b6000836001600160601b0316836001600160601b03161115829061102b5760405162461bcd60e51b81526004016106f791906118eb565b505050900390565b6001600160a01b0383166110595760405162461bcd60e51b81526004016106f790611aaf565b6001600160a01b03821661107f5760405162461bcd60e51b81526004016106f790611b0c565b6001600160a01b0383166000908152600160209081526040918290205482516060810190935260358084526110ca936001600160601b039092169285929190611d4890830139610ff4565b6001600160a01b03848116600090815260016020908152604080832080546001600160601b0319166001600160601b0396871617905592861682529082902054825160608101909352602f8084526111329491909116928592909190611d7d908301396111de565b6001600160a01b038381166000818152600160205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061119f908590611bec565b60405180910390a36001600160a01b038084166000908152600260205260408082205485841683529120546111d9929182169116836112a8565b505050565b6000838301826001600160601b0380871690831610156112115760405162461bcd60e51b81526004016106f791906118eb565b50949350505050565b6001600160a01b03808316600081815260026020818152604080842080546001845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461129e8284836112a8565b50505050565b4690565b816001600160a01b0316836001600160a01b0316141580156112d357506000816001600160601b0316115b156111d9576001600160a01b0383161561138b576001600160a01b03831660009081526004602052604081205463ffffffff169081611313576000611352565b6001600160a01b0385166000908152600360209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006113798285604051806060016040528060278152602001611c3060279139610ff4565b905061138786848484611436565b5050505b6001600160a01b038216156111d9576001600160a01b03821660009081526004602052604081205463ffffffff1690816113c6576000611405565b6001600160a01b0384166000908152600360209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061142c8285604051806060016040528060268152602001611dac602691396111de565b9050610c42858484845b600061145a43604051806060016040528060338152602001611d15603391396115eb565b905060008463ffffffff161180156114a357506001600160a01b038516600090815260036020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611502576001600160a01b0385166000908152600360209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b038516021790556115a1565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600383528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600490935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516115dc929190611c00565b60405180910390a25050505050565b600081600160201b8410610fec5760405162461bcd60e51b81526004016106f791906118eb565b604080518082019091526000808252602082015290565b80356001600160a01b03811681146103f857600080fd5b803560ff811681146103f857600080fd5b600060208284031215611662578081fd5b610a3c8383611629565b6000806040838503121561167e578081fd5b6116888484611629565b91506116978460208501611629565b90509250929050565b6000806000606084860312156116b4578081fd5b83356116bf81611c1a565b925060208401356116cf81611c1a565b929592945050506040919091013590565b600080600080600080600060e0888a0312156116fa578283fd5b6117048989611629565b96506117138960208a01611629565b955060408801359450606088013593506117308960808a01611640565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561175e578182fd5b6117688484611629565b946020939093013593505050565b60008060008060008060c0878903121561178e578182fd5b6117988888611629565b955060208701359450604087013593506117b58860608901611640565b92506080870135915060a087013590509295509295509295565b600080604083850312156117e1578182fd5b6117eb8484611629565b9150602083013563ffffffff81168114611803578182fd5b809150509250929050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b81811015611917578581018301518582016040015282016118fb565b818111156119285783604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f424f523a3a64656c656761746542795369673a20696e76616c6964206e6f6e636040820152606560f81b606082015260800190565b6020808252601e908201527f424f523a3a7065726d69743a20696e76616c6964207369676e61747572650000604082015260600190565b60208082526026908201527f424f523a3a6765745072696f72566f7465733a206e6f742079657420646574656040820152651c9b5a5b995960d21b606082015260800190565b60208082526019908201527f424f523a3a7065726d69743a20756e617574686f72697a656400000000000000604082015260600190565b60208082526025908201527f424f523a3a64656c656761746542795369673a207369676e61747572652065786040820152641c1a5c995960da1b606082015260800190565b6020808252601e908201527f424f523a3a7065726d69743a207369676e617475726520657870697265640000604082015260600190565b6020808252603b908201527f424f523a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160408201527f6e736665722066726f6d20746865207a65726f20616464726573730000000000606082015260800190565b60208082526039908201527f424f523a3a5f7472616e73666572546f6b656e733a2063616e6e6f742074726160408201527f6e7366657220746f20746865207a65726f206164647265737300000000000000606082015260800190565b60208082526025908201527f424f523a3a64656c656761746542795369673a20696e76616c6964207369676e604082015264617475726560d81b606082015260800190565b63ffffffff91909116815260200190565b63ffffffff9290921682526001600160601b0316602082015260400190565b60ff91909116815260200190565b6001600160601b0391909116815260200190565b6001600160601b0392831681529116602082015260400190565b6001600160a01b038116811461069757600080fdfe424f523a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773424f523a3a696e637265617365416c6c6f77616e63653a20696e63726561736520616c6c6f77616e636520657863656564732039362062697473424f523a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473424f523a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365424f523a3a7065726d69743a20616d6f756e7420657863656564732039362062697473424f523a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473424f523a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365424f523a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773424f523a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f77738c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925424f523a3a617070726f76653a20616d6f756e7420657863656564732039362062697473424f523a3a6465637265617365416c6c6f77616e63653a20646563726561736520737562416d6f756e74203e20616c6c6f77616e6365a2646970667358221220fdb68e3782213f40ed5775159e7af31233328489be4d90bc6f5064dcc6cf779e64736f6c634300060c003300000000000000000000000067ee188ee1319cdac271553e7b8faaed2fbc52cc