60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525034801561004357600080fd5b506080516153b661007b60003960008181610b4d01528181610bdb01528181610d0c01528181610d9a0152610e4a01526153b66000f3fe6080604052600436106101f95760003560e01c8063798d82381161010d578063a9059cbb116100a0578063c58096881161006f578063c580968814610776578063d505accf1461079f578063d5391393146107c8578063d547741f146107f3578063dd62ed3e1461081c576101f9565b8063a9059cbb146106be578063bcf64e05146106fb578063c4d66de814610724578063c53e839e1461074d576101f9565b806395b809bd116100dc57806395b809bd1461060257806395d89b411461062b578063a217fddf14610656578063a457c2d714610681576101f9565b8063798d82381461052e5780637ecebe001461055757806384b0196e1461059457806391d14854146105c5576101f9565b80632f2ff15d116101905780633659cfe61161015f5780633659cfe614610444578063395093511461046d5780634f1ef286146104aa57806352d1902d146104c657806370a08231146104f1576101f9565b80632f2ff15d1461039c578063313ce567146103c55780633644e515146103f057806336568abe1461041b576101f9565b80631e458bee116101cc5780631e458bee146102ce57806323b872dd146102f7578063248a9ca314610334578063282c51f314610371576101f9565b806301ffc9a7146101fe57806306fdde031461023b578063095ea7b31461026657806318160ddd146102a3575b600080fd5b34801561020a57600080fd5b50610225600480360381019061022091906134a2565b610859565b60405161023291906134ea565b60405180910390f35b34801561024757600080fd5b506102506108d3565b60405161025d9190613595565b60405180910390f35b34801561027257600080fd5b5061028d6004803603810190610288919061364b565b610965565b60405161029a91906134ea565b60405180910390f35b3480156102af57600080fd5b506102b8610988565b6040516102c5919061369a565b60405180910390f35b3480156102da57600080fd5b506102f560048036038101906102f091906136eb565b610992565b005b34801561030357600080fd5b5061031e6004803603810190610319919061373e565b610a1c565b60405161032b91906134ea565b60405180910390f35b34801561034057600080fd5b5061035b60048036038101906103569190613791565b610a4b565b60405161036891906137cd565b60405180910390f35b34801561037d57600080fd5b50610386610a6b565b60405161039391906137cd565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906137e8565b610a8f565b005b3480156103d157600080fd5b506103da610ab0565b6040516103e79190613844565b60405180910390f35b3480156103fc57600080fd5b50610405610ab9565b60405161041291906137cd565b60405180910390f35b34801561042757600080fd5b50610442600480360381019061043d91906137e8565b610ac8565b005b34801561045057600080fd5b5061046b6004803603810190610466919061385f565b610b4b565b005b34801561047957600080fd5b50610494600480360381019061048f919061364b565b610cd3565b6040516104a191906134ea565b60405180910390f35b6104c460048036038101906104bf91906139c1565b610d0a565b005b3480156104d257600080fd5b506104db610e46565b6040516104e891906137cd565b60405180910390f35b3480156104fd57600080fd5b506105186004803603810190610513919061385f565b610eff565b604051610525919061369a565b60405180910390f35b34801561053a57600080fd5b506105556004803603810190610550919061385f565b610f48565b005b34801561056357600080fd5b5061057e6004803603810190610579919061385f565b610f9b565b60405161058b919061369a565b60405180910390f35b3480156105a057600080fd5b506105a9610feb565b6040516105bc9796959493929190613b25565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e791906137e8565b6110ec565b6040516105f991906134ea565b60405180910390f35b34801561060e57600080fd5b50610629600480360381019061062491906136eb565b611157565b005b34801561063757600080fd5b50610640611234565b60405161064d9190613595565b60405180910390f35b34801561066257600080fd5b5061066b6112c6565b60405161067891906137cd565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a3919061364b565b6112cd565b6040516106b591906134ea565b60405180910390f35b3480156106ca57600080fd5b506106e560048036038101906106e0919061364b565b611344565b6040516106f291906134ea565b60405180910390f35b34801561070757600080fd5b50610722600480360381019061071d9190613ba9565b611367565b005b34801561073057600080fd5b5061074b6004803603810190610746919061385f565b6113fe565b005b34801561075957600080fd5b50610774600480360381019061076f919061385f565b6116a7565b005b34801561078257600080fd5b5061079d6004803603810190610798919061385f565b61170c565b005b3480156107ab57600080fd5b506107c660048036038101906107c19190613c15565b611771565b005b3480156107d457600080fd5b506107dd6118b3565b6040516107ea91906137cd565b60405180910390f35b3480156107ff57600080fd5b5061081a600480360381019061081591906137e8565b6118d7565b005b34801561082857600080fd5b50610843600480360381019061083e9190613cb7565b6118f8565b604051610850919061369a565b60405180910390f35b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806108cc57506108cb8261197f565b5b9050919050565b6060609a80546108e290613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461090e90613d26565b801561095b5780601f106109305761010080835404028352916020019161095b565b820191906000526020600020905b81548152906001019060200180831161093e57829003601f168201915b5050505050905090565b6000806109706119e9565b905061097d8185856119f1565b600191505092915050565b6000609954905090565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66109bc81611bba565b6109c68484611bce565b8373ffffffffffffffffffffffffffffffffffffffff167f9877440d7ddf063af1c444e6c7782f876d1970b9b97d98b6df4f2ce1f7fe573c8484604051610a0e929190613d57565b60405180910390a250505050565b600080610a276119e9565b9050610a34858285611d25565b610a3f858585611db1565b60019150509392505050565b600060656000838152602001908152602001600020600101549050919050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b610a9882610a4b565b610aa181611bba565b610aab838361202a565b505050565b60006002905090565b6000610ac361210b565b905090565b610ad06119e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3490613df2565b60405180910390fd5b610b47828261211a565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd090613e84565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610c186121fc565b73ffffffffffffffffffffffffffffffffffffffff1614610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590613f16565b60405180910390fd5b610c7781612253565b610cd081600067ffffffffffffffff811115610c9657610c95613896565b5b6040519080825280601f01601f191660200182016040528015610cc85781602001600182028036833780820191505090505b506000612264565b50565b600080610cde6119e9565b9050610cff818585610cf085896118f8565b610cfa9190613f65565b6119f1565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603610d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8f90613e84565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610dd76121fc565b73ffffffffffffffffffffffffffffffffffffffff1614610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490613f16565b60405180910390fd5b610e3682612253565b610e4282826001612264565b5050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd9061400b565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b6000609760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000801b610f5581611bba565b8161019460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000610fe460fd60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206123d2565b9050919050565b6000606080600080600060606000801b60c95414801561100f57506000801b60ca54145b61104e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104590614077565b60405180910390fd5b6110566123e0565b61105e612472565b46306000801b600067ffffffffffffffff81111561107f5761107e613896565b5b6040519080825280602002602001820160405280156110ad5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84861118181611bba565b826111938561118e6119e9565b6118f8565b10156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90614109565b60405180910390fd5b6111de8484612504565b8373ffffffffffffffffffffffffffffffffffffffff167f8552b41233ac685787ad1a35f036ec28ab5c6e7c6da55cf3cd520f2103b37bcb8484604051611226929190613d57565b60405180910390a250505050565b6060609b805461124390613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461126f90613d26565b80156112bc5780601f10611291576101008083540402835291602001916112bc565b820191906000526020600020905b81548152906001019060200180831161129f57829003601f168201915b5050505050905090565b6000801b81565b6000806112d86119e9565b905060006112e682866118f8565b90508381101561132b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113229061419b565b60405180910390fd5b61133882868684036119f1565b60019250505092915050565b60008061134f6119e9565b905061135c818585611db1565b600191505092915050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84861139181611bba565b6113a261139c6119e9565b84612504565b6113aa6119e9565b73ffffffffffffffffffffffffffffffffffffffff167f8552b41233ac685787ad1a35f036ec28ab5c6e7c6da55cf3cd520f2103b37bcb84846040516113f1929190613d57565b60405180910390a2505050565b60008060019054906101000a900460ff1615905080801561142f5750600160008054906101000a900460ff1660ff16105b8061145c575061143e306126d3565b15801561145b5750600160008054906101000a900460ff1660ff16145b5b61149b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114929061422d565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156114d8576001600060016101000a81548160ff0219169083151502179055505b6114e06126f6565b6115546040518060400160405280601181526020017f537769737320537461626c6520436f696e0000000000000000000000000000008152506040518060400160405280600481526020017f4348464400000000000000000000000000000000000000000000000000000000815250612747565b6115926040518060400160405280600481526020017f43484644000000000000000000000000000000000000000000000000000000008152506127a4565b6115a66000801b6115a16119e9565b61202a565b6115d77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66115d26119e9565b61202a565b6116087f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8486116036119e9565b61202a565b8161019460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080156116a35760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161169a9190614292565b60405180910390a15b5050565b6000801b6116b481611bba565b6116de7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68361211a565b6117087f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8488361211a565b5050565b6000801b61171981611bba565b6117437f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68361202a565b61176d7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8488361202a565b5050565b834211156117b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ab906142f9565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886117e38c612835565b896040516020016117f996959493929190614319565b604051602081830303815290604052805190602001209050600061181c82612893565b9050600061182c828787876128ad565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461189c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611893906143c6565b60405180910390fd5b6118a78a8a8a6119f1565b50505050505050505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6118e082610a4b565b6118e981611bba565b6118f3838361211a565b505050565b6000609860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5790614458565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac6906144ea565b60405180910390fd5b80609860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bad919061369a565b60405180910390a3505050565b611bcb81611bc66119e9565b6128d8565b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490614556565b60405180910390fd5b611c496000838361295d565b8060996000828254611c5b9190613f65565b9250508190555080609760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d0d919061369a565b60405180910390a3611d2160008383612a30565b5050565b6000611d3184846118f8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611dab5781811015611d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d94906145c2565b60405180910390fd5b611daa84848484036119f1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1790614654565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e86906146e6565b60405180910390fd5b611e9a83838361295d565b6000609760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1890614778565b60405180910390fd5b818103609760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081609760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612011919061369a565b60405180910390a3612024848484612a30565b50505050565b61203482826110ec565b6121075760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506120ac6119e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000612115612a35565b905090565b61212482826110ec565b156121f85760006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061219d6119e9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600061222a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612a99565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000801b61226081611bba565b5050565b6122907f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b612aa3565b60000160009054906101000a900460ff16156122b4576122af83612aad565b6123cd565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561231c57506040513d601f19601f8201168201806040525081019061231991906147ad565b60015b61235b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123529061484c565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b7906148de565b60405180910390fd5b506123cc838383612b66565b5b505050565b600081600001549050919050565b606060cb80546123ef90613d26565b80601f016020809104026020016040519081016040528092919081815260200182805461241b90613d26565b80156124685780601f1061243d57610100808354040283529160200191612468565b820191906000526020600020905b81548152906001019060200180831161244b57829003601f168201915b5050505050905090565b606060cc805461248190613d26565b80601f01602080910402602001604051908101604052809291908181526020018280546124ad90613d26565b80156124fa5780601f106124cf576101008083540402835291602001916124fa565b820191906000526020600020905b8154815290600101906020018083116124dd57829003601f168201915b5050505050905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256a90614970565b60405180910390fd5b61257f8260008361295d565b6000609760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd90614a02565b60405180910390fd5b818103609760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081609960008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126ba919061369a565b60405180910390a36126ce83600084612a30565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c90614a94565b60405180910390fd5b565b600060019054906101000a900460ff16612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d90614a94565b60405180910390fd5b6127a08282612b92565b5050565b600060019054906101000a900460ff166127f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ea90614a94565b60405180910390fd5b612832816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612c05565b50565b60008060fd60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050612882816123d2565b915061288d81612c8c565b50919050565b60006128a66128a061210b565b83612ca2565b9050919050565b60008060006128be87878787612ce3565b915091506128cb81612dc5565b8192505050949350505050565b6128e282826110ec565b612959576128ef81612f2b565b6128fd8360001c6020612f58565b60405160200161290e929190614b88565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129509190613595565b60405180910390fd5b5050565b600061019460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c6946a128585856129ad88610eff565b6129b79190613f65565b6040518463ffffffff1660e01b81526004016129d593929190614bc2565b602060405180830381865afa1580156129f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a169190614c25565b612a1f57600080fd5b612a2a848484613194565b50505050565b505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612a60613199565b612a68613204565b4630604051602001612a7e959493929190614c52565b60405160208183030381529060405280519060200120905090565b6000819050919050565b6000819050919050565b612ab6816126d3565b612af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aec90614d17565b60405180910390fd5b80612b227f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b612a99565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612b6f8361326f565b600082511180612b7c5750805b15612b8d57612b8b83836132be565b505b505050565b600060019054906101000a900460ff16612be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd890614a94565b60405180910390fd5b81609a9081612bf09190614ed9565b5080609b9081612c009190614ed9565b505050565b600060019054906101000a900460ff16612c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4b90614a94565b60405180910390fd5b8160cb9081612c639190614ed9565b508060cc9081612c739190614ed9565b506000801b60c9819055506000801b60ca819055505050565b6001816000016000828254019250508190555050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612d1e576000600391509150612dbc565b600060018787878760405160008152602001604052604051612d439493929190614fab565b6020604051602081039080840390855afa158015612d65573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612db357600060019250925050612dbc565b80600092509250505b94509492505050565b60006004811115612dd957612dd8614ff0565b5b816004811115612dec57612deb614ff0565b5b0315612f285760016004811115612e0657612e05614ff0565b5b816004811115612e1957612e18614ff0565b5b03612e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e509061506b565b60405180910390fd5b60026004811115612e6d57612e6c614ff0565b5b816004811115612e8057612e7f614ff0565b5b03612ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb7906150d7565b60405180910390fd5b60036004811115612ed457612ed3614ff0565b5b816004811115612ee757612ee6614ff0565b5b03612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e90615169565b60405180910390fd5b5b50565b6060612f518273ffffffffffffffffffffffffffffffffffffffff16601460ff16612f58565b9050919050565b606060006002836002612f6b9190615189565b612f759190613f65565b67ffffffffffffffff811115612f8e57612f8d613896565b5b6040519080825280601f01601f191660200182016040528015612fc05781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612ff857612ff76151cb565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061305c5761305b6151cb565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261309c9190615189565b6130a69190613f65565b90505b6001811115613146577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106130e8576130e76151cb565b5b1a60f81b8282815181106130ff576130fe6151cb565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061313f906151fa565b90506130a9565b506000841461318a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131819061526f565b60405180910390fd5b8091505092915050565b505050565b6000806131a46123e0565b90506000815111156131c0578080519060200120915050613201565b600060c95490506000801b81146131db578092505050613201565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470925050505b90565b60008061320f612472565b905060008151111561322b57808051906020012091505061326c565b600060ca5490506000801b811461324657809250505061326c565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470925050505b90565b61327881612aad565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606132e3838360405180606001604052806027815260200161535a602791396132eb565b905092915050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161331591906152d6565b600060405180830381855af49150503d8060008114613350576040519150601f19603f3d011682016040523d82523d6000602084013e613355565b606091505b509150915061336686838387613371565b925050509392505050565b606083156133d35760008351036133cb5761338b856126d3565b6133ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c190615339565b60405180910390fd5b5b8290506133de565b6133dd83836133e6565b5b949350505050565b6000825111156133f95781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342d9190613595565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61347f8161344a565b811461348a57600080fd5b50565b60008135905061349c81613476565b92915050565b6000602082840312156134b8576134b7613440565b5b60006134c68482850161348d565b91505092915050565b60008115159050919050565b6134e4816134cf565b82525050565b60006020820190506134ff60008301846134db565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561353f578082015181840152602081019050613524565b60008484015250505050565b6000601f19601f8301169050919050565b600061356782613505565b6135718185613510565b9350613581818560208601613521565b61358a8161354b565b840191505092915050565b600060208201905081810360008301526135af818461355c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135e2826135b7565b9050919050565b6135f2816135d7565b81146135fd57600080fd5b50565b60008135905061360f816135e9565b92915050565b6000819050919050565b61362881613615565b811461363357600080fd5b50565b6000813590506136458161361f565b92915050565b6000806040838503121561366257613661613440565b5b600061367085828601613600565b925050602061368185828601613636565b9150509250929050565b61369481613615565b82525050565b60006020820190506136af600083018461368b565b92915050565b6000819050919050565b6136c8816136b5565b81146136d357600080fd5b50565b6000813590506136e5816136bf565b92915050565b60008060006060848603121561370457613703613440565b5b600061371286828701613600565b935050602061372386828701613636565b9250506040613734868287016136d6565b9150509250925092565b60008060006060848603121561375757613756613440565b5b600061376586828701613600565b935050602061377686828701613600565b925050604061378786828701613636565b9150509250925092565b6000602082840312156137a7576137a6613440565b5b60006137b5848285016136d6565b91505092915050565b6137c7816136b5565b82525050565b60006020820190506137e260008301846137be565b92915050565b600080604083850312156137ff576137fe613440565b5b600061380d858286016136d6565b925050602061381e85828601613600565b9150509250929050565b600060ff82169050919050565b61383e81613828565b82525050565b60006020820190506138596000830184613835565b92915050565b60006020828403121561387557613874613440565b5b600061388384828501613600565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6138ce8261354b565b810181811067ffffffffffffffff821117156138ed576138ec613896565b5b80604052505050565b6000613900613436565b905061390c82826138c5565b919050565b600067ffffffffffffffff82111561392c5761392b613896565b5b6139358261354b565b9050602081019050919050565b82818337600083830152505050565b600061396461395f84613911565b6138f6565b9050828152602081018484840111156139805761397f613891565b5b61398b848285613942565b509392505050565b600082601f8301126139a8576139a761388c565b5b81356139b8848260208601613951565b91505092915050565b600080604083850312156139d8576139d7613440565b5b60006139e685828601613600565b925050602083013567ffffffffffffffff811115613a0757613a06613445565b5b613a1385828601613993565b9150509250929050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b613a5281613a1d565b82525050565b613a61816135d7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9c81613615565b82525050565b6000613aae8383613a93565b60208301905092915050565b6000602082019050919050565b6000613ad282613a67565b613adc8185613a72565b9350613ae783613a83565b8060005b83811015613b18578151613aff8882613aa2565b9750613b0a83613aba565b925050600181019050613aeb565b5085935050505092915050565b600060e082019050613b3a600083018a613a49565b8181036020830152613b4c818961355c565b90508181036040830152613b60818861355c565b9050613b6f606083018761368b565b613b7c6080830186613a58565b613b8960a08301856137be565b81810360c0830152613b9b8184613ac7565b905098975050505050505050565b60008060408385031215613bc057613bbf613440565b5b6000613bce85828601613636565b9250506020613bdf858286016136d6565b9150509250929050565b613bf281613828565b8114613bfd57600080fd5b50565b600081359050613c0f81613be9565b92915050565b600080600080600080600060e0888a031215613c3457613c33613440565b5b6000613c428a828b01613600565b9750506020613c538a828b01613600565b9650506040613c648a828b01613636565b9550506060613c758a828b01613636565b9450506080613c868a828b01613c00565b93505060a0613c978a828b016136d6565b92505060c0613ca88a828b016136d6565b91505092959891949750929550565b60008060408385031215613cce57613ccd613440565b5b6000613cdc85828601613600565b9250506020613ced85828601613600565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d3e57607f821691505b602082108103613d5157613d50613cf7565b5b50919050565b6000604082019050613d6c600083018561368b565b613d7960208301846137be565b9392505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000613ddc602f83613510565b9150613de782613d80565b604082019050919050565b60006020820190508181036000830152613e0b81613dcf565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b6000613e6e602c83613510565b9150613e7982613e12565b604082019050919050565b60006020820190508181036000830152613e9d81613e61565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b6000613f00602c83613510565b9150613f0b82613ea4565b604082019050919050565b60006020820190508181036000830152613f2f81613ef3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613f7082613615565b9150613f7b83613615565b9250828201905080821115613f9357613f92613f36565b5b92915050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b6000613ff5603883613510565b915061400082613f99565b604082019050919050565b6000602082019050818103600083015261402481613fe8565b9050919050565b7f4549503731323a20556e696e697469616c697a65640000000000000000000000600082015250565b6000614061601583613510565b915061406c8261402b565b602082019050919050565b6000602082019050818103600083015261409081614054565b9050919050565b7f434846443a206275726e20616d6f756e74206578636565647320616c6c6f776160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b60006140f3602383613510565b91506140fe82614097565b604082019050919050565b60006020820190508181036000830152614122816140e6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614185602583613510565b915061419082614129565b604082019050919050565b600060208201905081810360008301526141b481614178565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000614217602e83613510565b9150614222826141bb565b604082019050919050565b600060208201905081810360008301526142468161420a565b9050919050565b6000819050919050565b6000819050919050565b600061427c6142776142728461424d565b614257565b613828565b9050919050565b61428c81614261565b82525050565b60006020820190506142a76000830184614283565b92915050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b60006142e3601d83613510565b91506142ee826142ad565b602082019050919050565b60006020820190508181036000830152614312816142d6565b9050919050565b600060c08201905061432e60008301896137be565b61433b6020830188613a58565b6143486040830187613a58565b614355606083018661368b565b614362608083018561368b565b61436f60a083018461368b565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b60006143b0601e83613510565b91506143bb8261437a565b602082019050919050565b600060208201905081810360008301526143df816143a3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614442602483613510565b915061444d826143e6565b604082019050919050565b6000602082019050818103600083015261447181614435565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006144d4602283613510565b91506144df82614478565b604082019050919050565b60006020820190508181036000830152614503816144c7565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000614540601f83613510565b915061454b8261450a565b602082019050919050565b6000602082019050818103600083015261456f81614533565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006145ac601d83613510565b91506145b782614576565b602082019050919050565b600060208201905081810360008301526145db8161459f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061463e602583613510565b9150614649826145e2565b604082019050919050565b6000602082019050818103600083015261466d81614631565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146d0602383613510565b91506146db82614674565b604082019050919050565b600060208201905081810360008301526146ff816146c3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614762602683613510565b915061476d82614706565b604082019050919050565b6000602082019050818103600083015261479181614755565b9050919050565b6000815190506147a7816136bf565b92915050565b6000602082840312156147c3576147c2613440565b5b60006147d184828501614798565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b6000614836602e83613510565b9150614841826147da565b604082019050919050565b6000602082019050818103600083015261486581614829565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b60006148c8602983613510565b91506148d38261486c565b604082019050919050565b600060208201905081810360008301526148f7816148bb565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061495a602183613510565b9150614965826148fe565b604082019050919050565b600060208201905081810360008301526149898161494d565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006149ec602283613510565b91506149f782614990565b604082019050919050565b60006020820190508181036000830152614a1b816149df565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000614a7e602b83613510565b9150614a8982614a22565b604082019050919050565b60006020820190508181036000830152614aad81614a71565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000614af5601783614ab4565b9150614b0082614abf565b601782019050919050565b6000614b1682613505565b614b208185614ab4565b9350614b30818560208601613521565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000614b72601183614ab4565b9150614b7d82614b3c565b601182019050919050565b6000614b9382614ae8565b9150614b9f8285614b0b565b9150614baa82614b65565b9150614bb68284614b0b565b91508190509392505050565b6000606082019050614bd76000830186613a58565b614be46020830185613a58565b614bf1604083018461368b565b949350505050565b614c02816134cf565b8114614c0d57600080fd5b50565b600081519050614c1f81614bf9565b92915050565b600060208284031215614c3b57614c3a613440565b5b6000614c4984828501614c10565b91505092915050565b600060a082019050614c6760008301886137be565b614c7460208301876137be565b614c8160408301866137be565b614c8e606083018561368b565b614c9b6080830184613a58565b9695505050505050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000614d01602d83613510565b9150614d0c82614ca5565b604082019050919050565b60006020820190508181036000830152614d3081614cf4565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302614d997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614d5c565b614da38683614d5c565b95508019841693508086168417925050509392505050565b6000614dd6614dd1614dcc84613615565b614257565b613615565b9050919050565b6000819050919050565b614df083614dbb565b614e04614dfc82614ddd565b848454614d69565b825550505050565b600090565b614e19614e0c565b614e24818484614de7565b505050565b5b81811015614e4857614e3d600082614e11565b600181019050614e2a565b5050565b601f821115614e8d57614e5e81614d37565b614e6784614d4c565b81016020851015614e76578190505b614e8a614e8285614d4c565b830182614e29565b50505b505050565b600082821c905092915050565b6000614eb060001984600802614e92565b1980831691505092915050565b6000614ec98383614e9f565b9150826002028217905092915050565b614ee282613505565b67ffffffffffffffff811115614efb57614efa613896565b5b614f058254613d26565b614f10828285614e4c565b600060209050601f831160018114614f435760008415614f31578287015190505b614f3b8582614ebd565b865550614fa3565b601f198416614f5186614d37565b60005b82811015614f7957848901518255600182019150602085019450602081019050614f54565b86831015614f965784890151614f92601f891682614e9f565b8355505b6001600288020188555050505b505050505050565b6000608082019050614fc060008301876137be565b614fcd6020830186613835565b614fda60408301856137be565b614fe760608301846137be565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000615055601883613510565b91506150608261501f565b602082019050919050565b6000602082019050818103600083015261508481615048565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b60006150c1601f83613510565b91506150cc8261508b565b602082019050919050565b600060208201905081810360008301526150f0816150b4565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000615153602283613510565b915061515e826150f7565b604082019050919050565b6000602082019050818103600083015261518281615146565b9050919050565b600061519482613615565b915061519f83613615565b92508282026151ad81613615565b915082820484148315176151c4576151c3613f36565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061520582613615565b91506000820361521857615217613f36565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615259602083613510565b915061526482615223565b602082019050919050565b600060208201905081810360008301526152888161524c565b9050919050565b600081519050919050565b600081905092915050565b60006152b08261528f565b6152ba818561529a565b93506152ca818560208601613521565b80840191505092915050565b60006152e282846152a5565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000615323601d83613510565b915061532e826152ed565b602082019050919050565b6000602082019050818103600083015261535281615316565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204a4334c50c911dfb0b70e14103833247cd33190bcf93ba7643def8271843c80864736f6c63430008140033