0x60806040526004361061013f5760003560e01c80638df8b2fe116100b6578063d86619dc1161006f578063d86619dc1461037f578063e6d52b0a1461039f578063e92d98e5146103b5578063f363217e146103d5578063f600ba05146103f5578063f92d62b01461041557600080fd5b80638df8b2fe146102bf578063b56f51a2146102df578063b86fbf8e146102ff578063c81f39991461031f578063ccf4d9661461033f578063d117d00a1461035f57600080fd5b80633d476830116101085780633d476830146102075780634f1ef2861461022757806350a813fa1461023a57806352d1902d1461025a5780635c21c41c1461026f57806385e41b941461028f57600080fd5b8062435da51461014457806307d4f74914610181578063163c36e5146101a357806317de2f1f146101c35780633659cfe6146101e7575b600080fd5b34801561015057600080fd5b50609a54610164906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561018d57600080fd5b506101a161019c366004613008565b610435565b005b3480156101af57600080fd5b506101a16101be366004613025565b610604565b3480156101cf57600080fd5b506101d9609e5481565b604051908152602001610178565b3480156101f357600080fd5b506101a1610202366004613008565b6107d8565b34801561021357600080fd5b506101a1610222366004613008565b6108b8565b6101a161023536600461315a565b610a5f565b34801561024657600080fd5b506101a16102553660046131a9565b610b30565b34801561026657600080fd5b506101d9610df8565b34801561027b57600080fd5b5061016461028a366004613025565b610eac565b34801561029b57600080fd5b506102af6102aa36600461321e565b610ebf565b6040519015158152602001610178565b3480156102cb57600080fd5b50609c54610164906001600160a01b031681565b3480156102eb57600080fd5b506102af6102fa3660046132a7565b6112fd565b34801561030b57600080fd5b506101a161031a366004613306565b611630565b34801561032b57600080fd5b50609b54610164906001600160a01b031681565b34801561034b57600080fd5b506101d961035a36600461333d565b61184d565b34801561036b57600080fd5b506102af61037a366004613385565b6118e8565b34801561038b57600080fd5b506102af61039a366004613412565b611bd0565b3480156103ab57600080fd5b506101d9609d5481565b3480156103c157600080fd5b506102af6103d03660046134a9565b611e3d565b3480156103e157600080fd5b506101a16103f0366004613008565b612220565b34801561040157600080fd5b506101a16104103660046135ef565b6123c2565b34801561042157600080fd5b506102af6104303660046136ce565b612514565b609b5460405163f12c2a6960e01b81526307d4f74960e01b916001600160a01b03169063f12c2a699061046c908490600401613724565b602060405180830381865afa158015610489573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ad9190613739565b6104d557806040516354de5f5360e01b81526004016104cc9190613724565b60405180910390fd5b609a54609d546001600160a01b03909116906391d1485490336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c9190613739565b61058757335b60405163b6579c8960e01b81526001600160a01b0390911660048201526024016104cc565b6001600160a01b0382163b6105e157604080516326cfac4960e11b81526004810191909152600e60448201526d32bc32b1baba32a6b0b730b3b2b960911b60648201526001600160a01b03831660248201526084016104cc565b50609b80546001600160a01b0319166001600160a01b0392909216919091179055565b609c546001600160a01b03166373cf013c30336040518363ffffffff1660e01b8152600401610634929190613756565b602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106759190613739565b156106a157335b60405163d0b3de2160e01b81526001600160a01b0390911660048201526024016104cc565b609b5460405163f12c2a6960e01b815263163c36e560e01b916001600160a01b03169063f12c2a69906106d8908490600401613724565b602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107199190613739565b61073857806040516354de5f5360e01b81526004016104cc9190613724565b609a54609d546001600160a01b03909116906391d1485490336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa15801561079b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bf9190613739565b6107c95733610562565b6107d383836126d0565b505050565b306001600160a01b037f00000000000000000000000018dad59b7e85ecb01b91d5cf0f8c086ee5940c541614156108215760405162461bcd60e51b81526004016104cc90613770565b7f00000000000000000000000018dad59b7e85ecb01b91d5cf0f8c086ee5940c546001600160a01b031661086a600080516020613dd6833981519152546001600160a01b031690565b6001600160a01b0316146108905760405162461bcd60e51b81526004016104cc906137bc565b6108998161273b565b604080516000808252602082019092526108b5918391906127e1565b50565b609b5460405163f12c2a6960e01b81526303d4768360e41b916001600160a01b03169063f12c2a69906108ef908490600401613724565b602060405180830381865afa15801561090c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109309190613739565b61094f57806040516354de5f5360e01b81526004016104cc9190613724565b609a54609d546001600160a01b03909116906391d1485490336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156109b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d69190613739565b6109e05733610562565b6001600160a01b0382163b610a3c57604080516326cfac4960e11b81526004810191909152601060448201526f189b1858dad3dc95da1a5d19531a5cdd60821b60648201526001600160a01b03831660248201526084016104cc565b50609c80546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f00000000000000000000000018dad59b7e85ecb01b91d5cf0f8c086ee5940c54161415610aa85760405162461bcd60e51b81526004016104cc90613770565b7f00000000000000000000000018dad59b7e85ecb01b91d5cf0f8c086ee5940c546001600160a01b0316610af1600080516020613dd6833981519152546001600160a01b031690565b6001600160a01b031614610b175760405162461bcd60e51b81526004016104cc906137bc565b610b208261273b565b610b2c828260016127e1565b5050565b600054610100900460ff1615808015610b505750600054600160ff909116105b80610b6a5750303b158015610b6a575060005460ff166001145b610bcd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104cc565b6000805460ff191660011790558015610bf0576000805461ff0019166101001790555b610c04600160658190556002606655606755565b6001600160a01b0384161580610c2257506001600160a01b0384163b155b15610c6f57604080516326cfac4960e11b81526004810191909152600b60448201526a2937b632a6b0b730b3b2b960a91b60648201526001600160a01b03851660248201526084016104cc565b6001600160a01b0383161580610c8d57506001600160a01b0383163b155b15610cdd57604080516326cfac4960e11b81526004810191909152600e60448201526d22bc32b1baba32a6b0b730b3b2b960911b60648201526001600160a01b03841660248201526084016104cc565b6001600160a01b0382161580610cfb57506001600160a01b0382163b155b15610d5157604080516326cfac4960e11b815260048101919091526014604482015273109b1858dad31a5cdd13dc95da1a5d19531a5cdd60621b60648201526001600160a01b03831660248201526084016104cc565b609a80546001600160a01b038087166001600160a01b031992831617909255609b8054868416908316179055609c8054928516929091169190911790557127232a2730bb34b3b0ba37b929b2ba3a32b960711b609d556000609e558015610df2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000306001600160a01b037f00000000000000000000000018dad59b7e85ecb01b91d5cf0f8c086ee5940c541614610e985760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104cc565b50600080516020613dd68339815191525b90565b6000610eb8838361294c565b9392505050565b6000610ec96129ac565b609c546001600160a01b03166373cf013c30336040518363ffffffff1660e01b8152600401610ef9929190613756565b602060405180830381865afa158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a9190613739565b15610f45573361067c565b609b5460405163f12c2a6960e01b815263217906e560e21b916001600160a01b03169063f12c2a6990610f7c908490600401613724565b602060405180830381865afa158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190613739565b610fdc57806040516354de5f5360e01b81526004016104cc9190613724565b866000610fe9828961294c565b90506000816001600160a01b031663647846a56040518163ffffffff1660e01b81526004016020604051808303816000875af115801561102d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110519190613808565b6040516301ffc9a760e01b81529091506001600160a01b038416906301ffc9a79061108790631ca3019d60e11b90600401613724565b602060405180830381865afa1580156110a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c89190613739565b6110e557604051634851657960e11b815260040160405180910390fd5b86351561110f5761110f6110fc6020880188613008565b6001600160a01b03831690848a35612a08565b60405163742b009760e01b81526001600160a01b0383169063742b00979061113f9033908b908b90600401613901565b6020604051808303816000875af192505050801561117a575060408051601f3d908101601f1916820190925261117791810190613739565b60015b61124557611186613968565b806308c379a014156111c1575061119b613983565b806111a657506111fb565b8060405163754fa69360e01b81526004016104cc9190613a64565b634e487b7114156111fb576111d4613a77565b906111df57506111fb565b60405163ed36b43760e01b8152600481018290526024016104cc565b3d808015611225576040519150601f19603f3d011682016040523d82523d6000602084013e61122a565b606091505b50806040516274e0bd60e61b81526004016104cc9190613a64565b506001600160a01b03831663c49392ee6112626020890189613008565b61126f60408b018b613a97565b61127f60408d0160208e01613add565b8d6040518663ffffffff1660e01b81526004016112a0959493929190613afa565b6020604051808303816000875af11580156112bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e39190613739565b9450505050506112f4606554606755565b95945050505050565b609c54604051631cf3c04f60e21b81526000916001600160a01b0316906373cf013c906113309030903390600401613756565b602060405180830381865afa15801561134d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113719190613739565b1561137c573361067c565b609b5460405163f12c2a6960e01b8152635ab7a8d160e11b916001600160a01b03169063f12c2a69906113b3908490600401613724565b602060405180830381865afa1580156113d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f49190613739565b61141357806040516354de5f5360e01b81526004016104cc9190613724565b600061141f888861294c565b90506000816001600160a01b031663647846a56040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611463573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114879190613808565b90506000826001600160a01b031663fbfa77cf6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156114cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ef9190613808565b90506115048a8a635ab7a8d160e11b89612a62565b506001600160a01b038a16639dc29fac6115216020890189613008565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018b90526044016020604051808303816000875af192505050801561158a575060408051601f3d908101601f1916820190925261158791810190613739565b60015b61159657611186613968565b508615611620576115c0816115ae6020890189613008565b6001600160a01b03851691908a612a08565b7f7a7eaac2b7e34e78faf4d69a93c17f4d9e802a92fb884102aecadba134ff14d06115ee6020880188613008565b604080516001600160a01b03909216825260208281018b90528901359082015243606082015260800160405180910390a15b5060019998505050505050505050565b609c546001600160a01b03166373cf013c30336040518363ffffffff1660e01b8152600401611660929190613756565b602060405180830381865afa15801561167d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a19190613739565b156116ac573361067c565b609b5460405163f12c2a6960e01b8152635c37dfc760e11b916001600160a01b03169063f12c2a69906116e3908490600401613724565b602060405180830381865afa158015611700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117249190613739565b61174357806040516354de5f5360e01b81526004016104cc9190613724565b609a54609d546001600160a01b03909116906391d1485490336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa1580156117a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ca9190613739565b6117d45733610562565b6001600160a01b03821615806117f257506001600160a01b0382163b155b1561184257604080516326cfac4960e11b81526004810191909152600e60448201526d2732bb9037333a26b0b730b3b2b960911b60648201526001600160a01b03831660248201526084016104cc565b610df2848484612ae5565b60008061185a868661294c565b90506001600160a01b038116156118df57604051637cb8fd6360e11b81526001600160a01b0385811660048301526024820185905282169063f971fac690604401602060405180830381865afa1580156118b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190613b33565b91505b50949350505050565b60006118f26129ac565b609c546001600160a01b03166373cf013c30336040518363ffffffff1660e01b8152600401611922929190613756565b602060405180830381865afa15801561193f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119639190613739565b1561196e573361067c565b609b5460405163f12c2a6960e01b815263688be80560e11b916001600160a01b03169063f12c2a69906119a5908490600401613724565b602060405180830381865afa1580156119c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e69190613739565b611a0557806040516354de5f5360e01b81526004016104cc9190613724565b6000611a11878761294c565b90506000816001600160a01b031663647846a56040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a799190613808565b9050853515611aa557611aa5611a926020870187613008565b6001600160a01b03831690848935612a08565b60405163742b009760e01b81526001600160a01b0383169063742b009790611ad59033908a908a90600401613901565b6020604051808303816000875af1925050508015611b10575060408051601f3d908101601f19168201909252611b0d91810190613739565b60015b611b1c57611186613968565b506001600160a01b03881663a230da05611b396020880188613008565b611b4660408a018a613a97565b611b5660408c0160208d01613add565b6040518563ffffffff1660e01b8152600401611b759493929190613b4c565b6020604051808303816000875af1158015611b94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb89190613739565b9350505050611bc8606554606755565b949350505050565b6000611bda6129ac565b609c546001600160a01b03166373cf013c30336040518363ffffffff1660e01b8152600401611c0a929190613756565b602060405180830381865afa158015611c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4b9190613739565b15611c56573361067c565b846000611cc7826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611c9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611cc29190810190613b84565b612b60565b609a549091506001600160a01b03166391d1485482336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4b9190613739565b611d7657335b604051631b0e18f960e11b81526001600160a01b0390911660048201526024016104cc565b609b5460405163f12c2a6960e01b8152633619867760e21b916001600160a01b03169063f12c2a6990611dad908490600401613724565b602060405180830381865afa158015611dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dee9190613739565b611e0d57806040516354de5f5360e01b81526004016104cc9190613724565b60405163a230da0560e01b81526001600160a01b0389169063a230da0590611b75908a908a908a90600401613bfb565b6000611e476129ac565b609c546001600160a01b03166373cf013c30336040518363ffffffff1660e01b8152600401611e77929190613756565b602060405180830381865afa158015611e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb89190613739565b15611ec3573361067c565b836000611f07826001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611c9a573d6000803e3d6000fd5b609a549091506001600160a01b03166391d1485482336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa158015611f67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8b9190613739565b611f955733611d51565b609b5460405163f12c2a6960e01b815263e92d98e560e01b916001600160a01b03169063f12c2a6990611fcc908490600401613724565b602060405180830381865afa158015611fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200d9190613739565b61202c57806040516354de5f5360e01b81526004016104cc9190613724565b6040516301ffc9a760e01b815287906001600160a01b038216906301ffc9a79061206190631ca3019d60e11b90600401613724565b602060405180830381865afa15801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190613739565b1580156120ad575086155b156120cb57604051634851657960e11b815260040160405180910390fd5b60005b865181101561220c5760008782815181106120eb576120eb613c31565b60200260200101519050881561217f5780516060820151602083015160405163a230da0560e01b81526001600160a01b0387169363a230da0593612136939192909190600401613bfb565b6020604051808303816000875af1158015612155573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121799190613739565b50612203565b8051606082015160208301516040808501519051636249c97760e11b81526001600160a01b0388169463c49392ee946121be9491939092600401613c47565b6020604051808303816000875af11580156121dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122019190613739565b505b506001016120ce565b506001945050505050610eb8606554606755565b609b5460405163f12c2a6960e01b81526379b190bf60e11b916001600160a01b03169063f12c2a6990612257908490600401613724565b602060405180830381865afa158015612274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122989190613739565b6122b757806040516354de5f5360e01b81526004016104cc9190613724565b609a54609d546001600160a01b03909116906391d1485490336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa15801561231a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233e9190613739565b6123485733610562565b6001600160a01b0382163b61239f57604080516326cfac4960e11b81526004810191909152600b60448201526a3937b632a6b0b730b3b2b960a91b60648201526001600160a01b03831660248201526084016104cc565b50609a80546001600160a01b0319166001600160a01b0392909216919091179055565b609b5460405163f12c2a6960e01b815263f600ba0560e01b916001600160a01b03169063f12c2a69906123f9908490600401613724565b602060405180830381865afa158015612416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243a9190613739565b61245957806040516354de5f5360e01b81526004016104cc9190613724565b60005b8251811015610df257600083828151811061247957612479613c31565b60200260200101519050846001600160a01b03166323b872dd6124993390565b8351602085015160405160e085901b6001600160e01b03191681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b1580156124ef57600080fd5b505af1158015612503573d6000803e3d6000fd5b50506001909301925061245c915050565b609c54604051631cf3c04f60e21b81526000916001600160a01b0316906373cf013c906125479030903390600401613756565b602060405180830381865afa158015612564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125889190613739565b15612593573361067c565b609b5460405163f12c2a6960e01b8152630f92d62b60e41b916001600160a01b03169063f12c2a69906125ca908490600401613724565b602060405180830381865afa1580156125e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260b9190613739565b61262a57806040516354de5f5360e01b81526004016104cc9190613724565b600061263584613c7e565b9050868561264c8289630f92d62b60e41b89612a62565b5082516040516358f62e6360e11b81526001600160a01b039182166004820152602481018390529083169063b1ec5cc6906044016020604051808303816000875af115801561269f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c39190613739565b9998505050505050505050565b6001600160a01b038216600081815260336020908152604080832085845282529182902080546001600160a01b0319169055815192835282018390527fec28d13eee0f711791c1f4bcc0fa815a8102a6961cf3859e213fc511fa617a75910160405180910390a15050565b609a54609e546001600160a01b03909116906391d1485490336040516001600160e01b031960e085901b16815260048101929092526001600160a01b03166024820152604401602060405180830381865afa15801561279e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c29190613739565b6108b55760405163245aecd360e01b81523360048201526024016104cc565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612814576107d383612b8e565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561286e575060408051601f3d908101601f1916820190925261286b91810190613b33565b60015b6128d15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104cc565b600080516020613dd683398151915281146129405760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104cc565b506107d3838383612c2a565b6001600160a01b038083166000908152603360209081526040808320858452909152902054168282826129a45760405163a35d03ed60e01b81526001600160a01b0383166004820152602481018290526044016104cc565b505092915050565b6066546067541415612a005760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104cc565b606654606755565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610df2908590612c4f565b600080612a6f868661294c565b604051633d7ef89f60e01b81529091506001600160a01b03821690633d7ef89f90612aa290339088908890600401613d0b565b6020604051808303816000875af1158015612ac1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118dc9190613739565b6001600160a01b03838116600081815260336020908152604080832087845282529182902080546001600160a01b0319169486169485179055815192835282018590528101919091527f97b54b9613f572c747be7481c0284b3486182c3b66de97be18fd0764bdd06d7c9060600160405180910390a1505050565b60008082604051602001612b749190613d3f565b6040516020818303038152906040529050610eb881612d21565b6001600160a01b0381163b612bfb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104cc565b600080516020613dd683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612c3383612d91565b600082511180612c405750805b156107d357610df28383612dd1565b6000612ca4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612df69092919063ffffffff16565b8051909150156107d35780806020019051810190612cc29190613739565b6107d35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104cc565b600080602083511015612d35578251612d38565b60205b905060005b81811015612d8a57612d50816008613d7f565b848281518110612d6257612d62613c31565b01602001516001600160f81b031916901c929092179180612d8281613d9e565b915050612d3d565b5050919050565b612d9a81612b8e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610eb88383604051806060016040528060278152602001613df660279139612e05565b6060611bc88484600085612e7d565b6060600080856001600160a01b031685604051612e229190613db9565b600060405180830381855af49150503d8060008114612e5d576040519150601f19603f3d011682016040523d82523d6000602084013e612e62565b606091505b5091509150612e7386838387612f58565b9695505050505050565b606082471015612ede5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016104cc565b600080866001600160a01b03168587604051612efa9190613db9565b60006040518083038185875af1925050503d8060008114612f37576040519150601f19603f3d011682016040523d82523d6000602084013e612f3c565b606091505b5091509150612f4d87838387612f58565b979650505050505050565b60608315612fc4578251612fbd576001600160a01b0385163b612fbd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104cc565b5081611bc8565b611bc88383815115612fd95781518083602001fd5b8060405162461bcd60e51b81526004016104cc9190613a64565b6001600160a01b03811681146108b557600080fd5b60006020828403121561301a57600080fd5b8135610eb881612ff3565b6000806040838503121561303857600080fd5b823561304381612ff3565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b608081018181106001600160401b038211171561308657613086613051565b60405250565b604081018181106001600160401b038211171561308657613086613051565b601f8201601f191681016001600160401b03811182821017156130d0576130d0613051565b6040525050565b60006001600160401b038211156130f0576130f0613051565b50601f01601f191660200190565b600082601f83011261310f57600080fd5b813561311a816130d7565b60405161312782826130ab565b82815285602084870101111561313c57600080fd5b82602086016020830137600092810160200192909252509392505050565b6000806040838503121561316d57600080fd5b823561317881612ff3565b915060208301356001600160401b0381111561319357600080fd5b61319f858286016130fe565b9150509250929050565b6000806000606084860312156131be57600080fd5b83356131c981612ff3565b925060208401356131d981612ff3565b915060408401356131e981612ff3565b809150509250925092565b60006060828403121561320657600080fd5b50919050565b60006080828403121561320657600080fd5b600080600080600060a0868803121561323657600080fd5b853561324181612ff3565b9450602086013593506040860135925060608601356001600160401b038082111561326b57600080fd5b61327789838a016131f4565b9350608088013591508082111561328d57600080fd5b5061329a8882890161320c565b9150509295509295909350565b600080600080600060a086880312156132bf57600080fd5b85356132ca81612ff3565b945060208601359350604086013592506060860135915060808601356001600160401b038111156132fa57600080fd5b61329a8882890161320c565b60008060006060848603121561331b57600080fd5b833561332681612ff3565b92506020840135915060408401356131e981612ff3565b6000806000806080858703121561335357600080fd5b843561335e81612ff3565b935060208501359250604085013561337581612ff3565b9396929550929360600135925050565b6000806000806080858703121561339b57600080fd5b84356133a681612ff3565b93506020850135925060408501356001600160401b03808211156133c957600080fd5b6133d5888389016131f4565b935060608701359150808211156133eb57600080fd5b506133f88782880161320c565b91505092959194509250565b80151581146108b557600080fd5b6000806000806080858703121561342857600080fd5b843561343381612ff3565b9350602085013561344381612ff3565b925060408501356001600160401b0381111561345e57600080fd5b61346a878288016130fe565b925050606085013561347b81613404565b939692955090935050565b60006001600160401b0382111561349f5761349f613051565b5060051b60200190565b6000806000606084860312156134be57600080fd5b83356134c981612ff3565b92506020848101356134da81613404565b925060408501356001600160401b03808211156134f657600080fd5b818701915087601f83011261350a57600080fd5b813561351581613486565b60405161352282826130ab565b82815260059290921b840185019185810191508a83111561354257600080fd5b8585015b838110156135de5780358581111561355d57600080fd5b86016080818e03601f1901121561357357600080fd5b60405161357f81613067565b8882013561358c81612ff3565b8152604082013561359c81613404565b818a0152606082013560408201526080820135878111156135bc57600080fd5b6135ca8f8b838601016130fe565b606083015250845250918601918601613546565b508096505050505050509250925092565b600080604080848603121561360357600080fd5b833561360e81612ff3565b92506020848101356001600160401b0381111561362a57600080fd5b8501601f8101871361363b57600080fd5b803561364681613486565b845161365282826130ab565b82815260069290921b830184019184810191508983111561367257600080fd5b928401925b828410156136be5785848b03121561368f5760008081fd5b855161369a8161308c565b84356136a581612ff3565b8152848601358682015282529285019290840190613677565b8096505050505050509250929050565b600080600080608085870312156136e457600080fd5b84356136ef81612ff3565b9350602085013592506040850135915060608501356001600160401b0381111561371857600080fd5b6133f88782880161320c565b6001600160e01b031991909116815260200190565b60006020828403121561374b57600080fd5b8151610eb881613404565b6001600160a01b0392831681529116602082015260400190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561381a57600080fd5b8151610eb881612ff3565b6000808335601e1984360301811261383c57600080fd5b83016020810192503590506001600160401b0381111561385b57600080fd5b80360383131561386a57600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081356138a781612ff3565b6001600160a01b03168352602082810135908401526138c96040830183613825565b608060408601526138de608086018284613871565b9150506138ee6060840184613825565b8583036060870152612e73838284613871565b60018060a01b038416815260606020820152823560608201526000602084013561392a81613404565b1515608083015261393e6040850185613825565b606060a085015261395360c085018284613871565b91505082810360408401526118dc818561389a565b600060033d1115610ea95760046000803e5060005160e01c90565b600060443d10156139915790565b6040516003193d81016004833e81513d6001600160401b0381602484011181841117156139c057505050505090565b82850191508151818111156139d85750505050505090565b843d87010160208285010111156139f25750505050505090565b613a01602082860101876130ab565b509095945050505050565b60005b83811015613a27578181015183820152602001613a0f565b83811115610df25750506000910152565b60008151808452613a50816020860160208601613a0c565b601f01601f19169290920160200192915050565b602081526000610eb86020830184613a38565b60008060233d1115613a93576020600460003e50506000516001905b9091565b6000808335601e19843603018112613aae57600080fd5b8301803591506001600160401b03821115613ac857600080fd5b60200191503681900382131561386a57600080fd5b600060208284031215613aef57600080fd5b8135610eb881613404565b6001600160a01b0386168152608060208201819052600090613b1f9083018688613871565b931515604083015250606001529392505050565b600060208284031215613b4557600080fd5b5051919050565b6001600160a01b0385168152606060208201819052600090613b719083018587613871565b9050821515604083015295945050505050565b600060208284031215613b9657600080fd5b81516001600160401b03811115613bac57600080fd5b8201601f81018413613bbd57600080fd5b8051613bc8816130d7565b604051613bd582826130ab565b828152866020848601011115613bea57600080fd5b612e73836020830160208701613a0c565b6001600160a01b0384168152606060208201819052600090613c1f90830185613a38565b90508215156040830152949350505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0385168152608060208201819052600090613c6b90830186613a38565b9315156040830152506060015292915050565b600060808236031215613c9057600080fd5b604051613c9c81613067565b8235613ca781612ff3565b81526020838101359082015260408301356001600160401b0380821115613ccd57600080fd5b613cd9368387016130fe565b60408401526060850135915080821115613cf257600080fd5b50613cff368286016130fe565b60608301525092915050565b6001600160a01b03841681526001600160e01b0319831660208201526060604082018190526000906112f49083018461389a565b60008251613d51818460208701613a0c565b6526b4b73a32b960d11b920191825250600601919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613d9957613d99613d69565b500290565b6000600019821415613db257613db2613d69565b5060010190565b60008251613dcb818460208701613a0c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220837c0af29fbfe3d83ba94cd052cbfc63b8da08ec41f350ddc59f55b200c6471164736f6c634300080a0033