0x608060405234801561001057600080fd5b50611348806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631622dbe41461005c57806332995817146100715780633a2228761461009a57806392cdbac5146100ba578063e09e8b9c146100cd575b600080fd5b61006f61006a366004610c9c565b6100e0565b005b61008461007f366004610bfd565b6101fc565b6040516100919190611111565b60405180910390f35b6100ad6100a8366004610b31565b610268565b604051610091919061115b565b61006f6100c8366004610c9c565b6103ea565b6100846100db366004610c37565b6105a0565b6000846001600160a01b031663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561011b57600080fd5b505afa15801561012f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101539190810190610d23565b905061016e6001600160a01b0382168663ffffffff6105b716565b6101935760405162461bcd60e51b815260040161018a90611169565b60405180910390fd5b60405163204c9d9360e11b81526001600160a01b038616906340993b26906101c3908790879087906004016111b7565b600060405180830381600087803b1580156101dd57600080fd5b505af11580156101f1573d6000803e3d6000fd5b505050505050505050565b60405163701818d360e11b81526000906001600160a01b0384169063e03031a69061022b908590600401611189565b600060405180830381600087803b15801561024557600080fd5b505af1158015610259573d6000803e3d6000fd5b50505050600190505b92915050565b6000866001600160a01b031663d96ee754866020015160008151811061028a57fe5b6020026020010151600001516102a3886000015161065f565b88602001516000815181106102b457fe5b602002602001015160200151516040518463ffffffff1660e01b81526004016102df939291906110ce565b600060405180830381600087803b1580156102f957600080fd5b505af115801561030d573d6000803e3d6000fd5b50506040516365ed7e9960e01b81526001600160a01b038b1692506365ed7e999150610343908a908a908a908a9060040161111f565b602060405180830381600087803b15801561035d57600080fd5b505af1158015610371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506103959190810190610d23565b90506103b06001600160a01b0387168263ffffffff61069916565b6103cc5760405162461bcd60e51b815260040161018a90611179565b82156103df576103dd81848461071e565b505b979650505050505050565b6000846001600160a01b0316635bd9e2996040518163ffffffff1660e01b815260040160206040518083038186803b15801561042557600080fd5b505afa158015610439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061045d9190810190610d23565b90506000856001600160a01b031663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561049a57600080fd5b505afa1580156104ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104d29190810190610d23565b60405163a22cb46560e01b81529091506001600160a01b0383169063a22cb465906105049089906001906004016110b3565b600060405180830381600087803b15801561051e57600080fd5b505af1158015610532573d6000803e3d6000fd5b50506040516334f25c9f60e21b81526001600160a01b038916925063d3c9727c9150610566908890889088906004016111b7565b600060405180830381600087803b15801561058057600080fd5b505af1158015610594573d6000803e3d6000fd5b50505050505050505050565b60006105ad84848461071e565b90505b9392505050565b60006001600160f81b03836001600160a01b031663dd62ed3e33856040518363ffffffff1660e01b81526004016105ef929190611098565b60206040518083038186803b15801561060757600080fd5b505afa15801561061b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061063f9190810190610d41565b10156106565761064f8383610699565b9050610262565b50600192915050565b60008160000151826020015160405160200161067c929190611080565b604051602081830303815290604052805190602001209050919050565b60405163095ea7b360e01b81526000906001600160a01b0384169063095ea7b3906106cc908590600019906004016110f6565b602060405180830381600087803b1580156106e657600080fd5b505af11580156106fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105b09190810190610cfd565b600080846001600160a01b031663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561075a57600080fd5b505afa15801561076e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107929190810190610d23565b90506107ad6001600160a01b0382168663ffffffff6105b716565b6107c95760405162461bcd60e51b815260040161018a90611169565b604051636af8ad2360e11b81526001600160a01b0386169063d5f15a46906107f79087908790600401611197565b600060405180830381600087803b15801561081157600080fd5b505af1158015610825573d6000803e3d6000fd5b50600198975050505050505050565b8035610262816112d3565b600082601f83011261085057600080fd5b813561086361085e826111ec565b6111c5565b81815260209384019390925082018360005b838110156108a1578135860161088b8882610999565b8452506020928301929190910190600101610875565b5050505092915050565b600082601f8301126108bc57600080fd5b81356108ca61085e826111ec565b81815260209384019390925082018360005b838110156108a157813586016108f288826109e8565b84525060209283019291909101906001016108dc565b600082601f83011261091957600080fd5b813561092761085e826111ec565b9150818183526020840193506020810190508385602084028201111561094c57600080fd5b60005b838110156108a157816109628882610b1b565b845250602092830192919091019060010161094f565b8051610262816112ea565b8035610262816112f3565b8051610262816112f3565b600082601f8301126109aa57600080fd5b81356109b861085e8261120d565b915080825260208301602083018583830111156109d457600080fd5b6109df83828461128d565b50505092915050565b6000604082840312156109fa57600080fd5b610a0460406111c5565b90506000610a128484610834565b825250602082013567ffffffffffffffff811115610a2f57600080fd5b610a3b8482850161083f565b60208301525092915050565b600060408284031215610a5957600080fd5b610a6360406111c5565b9050813567ffffffffffffffff811115610a7c57600080fd5b610a8884828501610ab1565b825250602082013567ffffffffffffffff811115610aa557600080fd5b610a3b848285016108ab565b600060408284031215610ac357600080fd5b610acd60406111c5565b9050813567ffffffffffffffff811115610ae657600080fd5b610af284828501610999565b825250602082013567ffffffffffffffff811115610b0f57600080fd5b610a3b84828501610999565b8035610262816112fc565b8051610262816112fc565b600080600080600080600060e0888a031215610b4c57600080fd5b6000610b588a8a610834565b9750506020610b698a828b01610983565b9650506040610b7a8a828b01610983565b955050606088013567ffffffffffffffff811115610b9757600080fd5b610ba38a828b01610a47565b9450506080610bb48a828b01610b1b565b93505060a0610bc58a828b01610b1b565b92505060c088013567ffffffffffffffff811115610be257600080fd5b610bee8a828b01610908565b91505092959891949750929550565b60008060408385031215610c1057600080fd5b6000610c1c8585610834565b9250506020610c2d85828601610b1b565b9150509250929050565b600080600060608486031215610c4c57600080fd5b6000610c588686610834565b9350506020610c6986828701610b1b565b925050604084013567ffffffffffffffff811115610c8657600080fd5b610c9286828701610908565b9150509250925092565b60008060008060808587031215610cb257600080fd5b6000610cbe8787610834565b9450506020610ccf87828801610b1b565b9350506040610ce087828801610b1b565b9250506060610cf187828801610b1b565b91505092959194509250565b600060208284031215610d0f57600080fd5b6000610d1b8484610978565b949350505050565b600060208284031215610d3557600080fd5b6000610d1b848461098e565b600060208284031215610d5357600080fd5b6000610d1b8484610b26565b60006105b08383610eef565b60006105b08383610fe7565b6000610d838383610ed4565b505060200190565b610d9481611277565b82525050565b610d948161124d565b6000610dae8261123b565b610db8818561123f565b935083602082028501610dca85611235565b8060005b85811015610e045784840389528151610de78582610d5f565b9450610df283611235565b60209a909a0199925050600101610dce565b5091979650505050505050565b6000610e1c8261123b565b610e26818561123f565b935083602082028501610e3885611235565b8060005b85811015610e045784840389528151610e558582610d6b565b9450610e6083611235565b60209a909a0199925050600101610e3c565b6000610e7d8261123b565b610e87818561123f565b9350610e9283611235565b8060005b83811015610ec0578151610eaa8882610d77565b9750610eb583611235565b925050600101610e96565b509495945050505050565b610d9481611258565b610d948161125d565b610d9481611260565b610d9481611282565b6000610efa8261123b565b610f04818561123f565b9350610f14818560208601611299565b610f1d816112c9565b9093019392505050565b6000610f328261123b565b610f3c8185611248565b9350610f4c818560208601611299565b9290920192915050565b6000610f63602b8361123f565b7f6661696c656420746f20617070726f76652046504d4d20666f7220636f6c6c6181526a3a32b930b6103a37b5b2b760a91b602082015260400192915050565b6000610fb060228361123f565b7f6661696c656420746f20617070726f766520636f6c6c61746572616c20746f6b81526132b760f11b602082015260400192915050565b80516000906040840190610ffb8582610d9a565b50602083015184820360208601526110138282610da3565b95945050505050565b8051604080845260009190840190611034828261104e565b915050602083015184820360208601526110138282610e11565b80516040808452600091908401906110668282610eef565b915050602083015184820360208601526110138282610eef565b600061108c8285610f27565b9150610d1b8284610f27565b604081016110a68285610d8b565b6105b06020830184610d9a565b604081016110c18285610d9a565b6105b06020830184610ecb565b606081016110dc8286610d9a565b6110e96020830185610ed4565b610d1b6040830184610ed4565b604081016111048285610d9a565b6105b06020830184610ee6565b602081016102628284610ecb565b6080810161112d8287610edd565b61113a6020830186610edd565b818103604083015261114c818561101c565b90506110136060830184610ed4565b602081016102628284610edd565b6020808252810161026281610f56565b6020808252810161026281610fa3565b602081016102628284610ed4565b604081016111a58285610ed4565b81810360208301526105ad8184610e72565b606081016110dc8286610ed4565b60405181810167ffffffffffffffff811182821017156111e457600080fd5b604052919050565b600067ffffffffffffffff82111561120357600080fd5b5060209081020190565b600067ffffffffffffffff82111561122457600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b919050565b60006102628261126b565b151590565b90565b60006102628261124d565b6001600160a01b031690565b600061026282611260565b60006102628261125d565b82818337506000910152565b60005b838110156112b457818101518382015260200161129c565b838111156112c3576000848401525b50505050565b601f01601f191690565b6112dc8161124d565b81146112e757600080fd5b50565b6112dc81611258565b6112dc81611260565b6112dc8161125d56fea365627a7a723058204a30305bfa62ca50093dff66494d519ac79bccf941a9e13da555146f51baecde6c6578706572696d656e74616cf564736f6c634300050a0040