0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638980d9e41161005b5780638980d9e4146100db578063c4d66de8146100ee578063f0f67dee14610101578063f77c47911461011457610088565b80631d9f11e61461008d5780633fc8cef3146100a25780635f470192146100c0578063847ef08d146100d3575b600080fd5b6100a061009b366004611bbc565b61011c565b005b6100aa610226565b6040516100b79190611c71565b60405180910390f35b6100a06100ce366004611b39565b610235565b6100a061032a565b6100a06100e9366004611bbc565b61032c565b6100a06100fc366004611b1d565b610417565b6100a061010f366004611b39565b610558565b6100aa610636565b600260015414156101485760405162461bcd60e51b815260040161013f90611fd1565b60405180910390fd5b6002600155846101588133610645565b6101745760405162461bcd60e51b815260040161013f90611f9a565b61017d816106d5565b6101995760405162461bcd60e51b815260040161013f90611d68565b60025460009081906101bd90869086908b906001600160a01b03168b8b60016107d9565b6002546040519294509092506001600160a01b03808a169291811691908b16907f0e631fe8e26e2b6c2ce8c4c55eca1d769c98bb4b5539068aec9ada0a3b429afe9061021090879087908c908c90612011565b60405180910390a4505060018055505050505050565b6002546001600160a01b031681565b600260015414156102585760405162461bcd60e51b815260040161013f90611fd1565b6002600155856102688133610645565b6102845760405162461bcd60e51b815260040161013f90611f9a565b61028d816106d5565b6102a95760405162461bcd60e51b815260040161013f90611d68565b6000806102bc85858b8b8b8b60006107d9565b91509150866001600160a01b0316886001600160a01b03168a6001600160a01b03167f0e631fe8e26e2b6c2ce8c4c55eca1d769c98bb4b5539068aec9ada0a3b429afe85858a8a6040516103139493929190612011565b60405180910390a450506001805550505050505050565b565b6002600154141561034f5760405162461bcd60e51b815260040161013f90611fd1565b60026001558461035f8133610645565b61037b5760405162461bcd60e51b815260040161013f90611f9a565b610384816106d5565b6103a05760405162461bcd60e51b815260040161013f90611d68565b60025460009081906103c490869086908b906001600160a01b03168b8b60016109d0565b6002546040519294509092506001600160a01b03808a169291811691908b16907f266efe8e5e4e2e7e407c4814a2818ef8e990768c61e67315ac34a8d3555b438e9061021090879087908c908c90612011565b80336104238282610645565b61043f5760405162461bcd60e51b815260040161013f90611f9a565b600054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec9061046f908690600401611c71565b60206040518083038186803b15801561048757600080fd5b505afa15801561049b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bf9190611ac2565b6104db5760405162461bcd60e51b815260040161013f90611f57565b6104e483610c11565b6105005760405162461bcd60e51b815260040161013f90611db0565b826001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50505050505050565b6002600154141561057b5760405162461bcd60e51b815260040161013f90611fd1565b60026001558561058b8133610645565b6105a75760405162461bcd60e51b815260040161013f90611f9a565b6105b0816106d5565b6105cc5760405162461bcd60e51b815260040161013f90611d68565b6000806105df85858b8b8b8b60006109d0565b91509150866001600160a01b0316886001600160a01b03168a6001600160a01b03167f266efe8e5e4e2e7e407c4814a2818ef8e990768c61e67315ac34a8d3555b438e85858a8a6040516103139493929190612011565b6000546001600160a01b031681565b6000816001600160a01b0316836001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561068a57600080fd5b505afa15801561069e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c291906119a3565b6001600160a01b03161490505b92915050565b60008054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec90610706908590600401611c71565b60206040518083038186803b15801561071e57600080fd5b505afa158015610732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107569190611ac2565b80156106cf57506040516335fc6c9f60e21b81526001600160a01b0383169063d7f1b27c90610789903090600401611c71565b60206040518083038186803b1580156107a157600080fd5b505afa1580156107b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf9190611ac2565b6000806107e7878686610c40565b6000806107f5898989610cd0565b91509150600061087c878b6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561083857600080fd5b505afa15801561084c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108709190611c2d565b9063ffffffff610ddf16565b905060006108bf8d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610df892505050565b90506109498b82896108d1578c610942565b836001600160a01b0316631878d1f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561090a57600080fd5b505afa15801561091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094291906119a3565b8c86610e0f565b861561097057600254610970906001600160a01b038d81169116813163ffffffff610f2f16565b60008061097e8d8d8d610cd0565b9150915061098e8d8d8885610fe4565b61099a8d8c8784610fe4565b6109aa828763ffffffff61110a16565b6109ba868363ffffffff61110a16565b9750975050505050505097509795505050505050565b6000806109de878786610c40565b6000806109ec898989610cd0565b915091506000610a2f878b6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561083857600080fd5b90506000610a728d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610df892505050565b90508615610a9f57600254610a9a906001600160a01b038d811691168463ffffffff61114c16565b610b3f565b604051636f3451ed60e11b81526000906001600160a01b0383169063de68a3da90610ad0908e908e90600401611c85565b60206040518083038186803b158015610ae857600080fd5b505afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2091906119a3565b9050610b3d6001600160a01b038d168c838663ffffffff6111bb16565b505b610bc78b8289610b4f578c610bc0565b836001600160a01b0316631878d1f16040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8857600080fd5b505afa158015610b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc091906119a3565b8c8661128a565b600080610bd58d8d8d610cd0565b91509150610be58d8d8885610fe4565b610bf18d8c8784610fe4565b610c01868363ffffffff61110a16565b6109ba828763ffffffff61110a16565b6040516353bae5f760e01b81526000906001600160a01b038316906353bae5f790610789903090600401611c71565b60008111610c605760405162461bcd60e51b815260040161013f90611e16565b610c796001600160a01b0384168363ffffffff6112bf16565b610c955760405162461bcd60e51b815260040161013f90611d1f565b610caf6001600160a01b038416838363ffffffff61134616565b610ccb5760405162461bcd60e51b815260040161013f90611ecd565b505050565b6000806000846001600160a01b03166370a08231876040518263ffffffff1660e01b8152600401610d019190611c71565b60206040518083038186803b158015610d1957600080fd5b505afa158015610d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d519190611c2d565b90506000846001600160a01b03166370a08231886040518263ffffffff1660e01b8152600401610d819190611c71565b60206040518083038186803b158015610d9957600080fd5b505afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd19190611c2d565b919791965090945050505050565b6000610df1838363ffffffff6113d716565b9392505050565b600080610e0483611401565b9050610df18161140c565b6000806060866001600160a01b031663a22fe98e8787876040518463ffffffff1660e01b8152600401610e4493929190611c9f565b60006040518083038186803b158015610e5c57600080fd5b505afa158015610e70573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e9891908101906119bf565b925092509250876001600160a01b0316638f6f03328484846040518463ffffffff1660e01b8152600401610ece93929190611cdc565b600060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f249190810190611ae2565b505050505050505050565b6040805160048082526024820183526020820180516001600160e01b0316630d0e30db60e41b17905291516347b7819960e11b815290916001600160a01b03861691638f6f033291610f879187918791879101611cdc565b600060405180830381600087803b158015610fa157600080fd5b505af1158015610fb5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fdd9190810190611ae2565b5050505050565b60006110ee838361106f886001600160a01b03166366cb8d2f896040518263ffffffff1660e01b815260040161101a9190611c71565b60206040518083038186803b15801561103257600080fd5b505afa158015611046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106a9190611c2d565b6114c9565b886001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110a857600080fd5b505afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e09190611c2d565b92919063ffffffff6114ef16565b9050610fdd6001600160a01b038616858363ffffffff61153e16565b6000610df183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116bc565b60608160405160240161115f9190612008565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b179052516347b7819960e11b81529091506001600160a01b03851690638f6f033290610f879086906000908690600401611cdc565b606082826040516024016111d0929190611cc3565b60408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516347b7819960e11b81529091506001600160a01b03861690638f6f03329061122c9087906000908690600401611cdc565b600060405180830381600087803b15801561124657600080fd5b505af115801561125a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112829190810190611ae2565b505050505050565b6000806060866001600160a01b03166377b1aaf88787876040518463ffffffff1660e01b8152600401610e4493929190611c9f565b600080836001600160a01b03166366cb8d2f846040518263ffffffff1660e01b81526004016112ee9190611c71565b60206040518083038186803b15801561130657600080fd5b505afa15801561131a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133e9190611c2d565b139392505050565b6000611351826116e8565b6040516366cb8d2f60e01b81526001600160a01b038616906366cb8d2f9061137d908790600401611c71565b60206040518083038186803b15801561139557600080fd5b505afa1580156113a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cd9190611c2d565b1215949350505050565b6000610df1670de0b6b3a76400006113f5858563ffffffff61170d16565b9063ffffffff61174716565b805160209091012090565b600080548190611424906001600160a01b0316611789565b6001600160a01b031663e6d642c530856040518363ffffffff1660e01b8152600401611451929190611cc3565b60206040518083038186803b15801561146957600080fd5b505afa15801561147d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a191906119a3565b90506001600160a01b0381166106cf5760405162461bcd60e51b815260040161013f90611de7565b6000808212156114eb5760405162461bcd60e51b815260040161013f90611e57565b5090565b600080611512611505848863ffffffff6113d716565b869063ffffffff61110a16565b905061153486611528868463ffffffff61110a16565b9063ffffffff61180816565b9695505050505050565b600061154a84846112bf565b90508015801561155a5750600082115b156115d1576115698484611826565b6115cc576040516304e3532760e41b81526001600160a01b03851690634e35327090611599908690600401611c71565b600060405180830381600087803b1580156115b357600080fd5b505af11580156115c7573d6000803e3d6000fd5b505050505b61164e565b8080156115dc575081155b1561164e576115eb8484611826565b61164e57604051636f86c89760e01b81526001600160a01b03851690636f86c8979061161b908690600401611c71565b600060405180830381600087803b15801561163557600080fd5b505af1158015611649573d6000803e3d6000fd5b505050505b836001600160a01b0316632ba57d1784611667856116e8565b6040518363ffffffff1660e01b8152600401611684929190611cc3565b600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b5050505050505050565b600081848411156116e05760405162461bcd60e51b815260040161013f9190611d0c565b505050900390565b6000600160ff1b82106114eb5760405162461bcd60e51b815260040161013f90611f0f565b60008261171c575060006106cf565b8282028284828161172957fe5b0414610df15760405162461bcd60e51b815260040161013f90611e8c565b6000610df183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118b2565b6040516373b2e76b60e11b81526000906001600160a01b0383169063e765ced6906117b8908490600401612008565b60206040518083038186803b1580156117d057600080fd5b505afa1580156117e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf91906119a3565b6000610df1826113f585670de0b6b3a764000063ffffffff61170d16565b600080836001600160a01b031663a7bdad03846040518263ffffffff1660e01b81526004016118559190611c71565b60006040518083038186803b15801561186d57600080fd5b505afa158015611881573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118a99190810190611a17565b51119392505050565b600081836118d35760405162461bcd60e51b815260040161013f9190611d0c565b5060008385816118df57fe5b0495945050505050565b80516106cf816120a5565b600082601f830112611904578081fd5b815167ffffffffffffffff81111561191a578182fd5b61192d601f8201601f191660200161204e565b915080825283602082850101111561194457600080fd5b611955816020840160208601612075565b5092915050565b60008083601f84011261196d578182fd5b50813567ffffffffffffffff811115611984578182fd5b60208301915083602082850101111561199c57600080fd5b9250929050565b6000602082840312156119b4578081fd5b8151610df1816120a5565b6000806000606084860312156119d3578182fd5b83516119de816120a5565b60208501516040860151919450925067ffffffffffffffff811115611a01578182fd5b611a0d868287016118f4565b9150509250925092565b60006020808385031215611a29578182fd5b825167ffffffffffffffff80821115611a40578384fd5b81850186601f820112611a51578485fd5b8051925081831115611a61578485fd5b8383029150611a7184830161204e565b8381528481019082860184840187018a1015611a8b578788fd5b8794505b85851015611ab557611aa18a826118e9565b835260019490940193918601918601611a8f565b5098975050505050505050565b600060208284031215611ad3578081fd5b81518015158114610df1578182fd5b600060208284031215611af3578081fd5b815167ffffffffffffffff811115611b09578182fd5b611b15848285016118f4565b949350505050565b600060208284031215611b2e578081fd5b8135610df1816120a5565b60008060008060008060a08789031215611b51578182fd5b8635611b5c816120a5565b95506020870135611b6c816120a5565b94506040870135611b7c816120a5565b935060608701359250608087013567ffffffffffffffff811115611b9e578283fd5b611baa89828a0161195c565b979a9699509497509295939492505050565b600080600080600060808688031215611bd3578081fd5b8535611bde816120a5565b94506020860135611bee816120a5565b935060408601359250606086013567ffffffffffffffff811115611c10578182fd5b611c1c8882890161195c565b969995985093965092949392505050565b600060208284031215611c3e578081fd5b5051919050565b60008151808452611c5d816020860160208601612075565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b600060018060a01b038516825283602083015260606040830152611d036060830184611c45565b95945050505050565b600060208252610df16020830184611c45565b60208082526029908201527f5461726765742064656661756c7420706f736974696f6e206d7573742062652060408201526818dbdb5c1bdb995b9d60ba1b606082015260800190565b60208082526028908201527f4d75737420626520612076616c696420616e6420696e697469616c697a65642060408201526729b2ba2a37b5b2b760c11b606082015260800190565b6020808252601e908201527f4d7573742062652070656e64696e6720696e697469616c697a6174696f6e0000604082015260600190565b60208082526015908201527426bab9ba103132903b30b634b21030b230b83a32b960591b604082015260600190565b60208082526021908201527f54617267657420706f736974696f6e20756e697473206d757374206265203e206040820152600360fc1b606082015260800190565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526022908201527f556e69742063616e742062652067726561746572207468616e206578697374696040820152616e6760f01b606082015260800190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526023908201527f4d75737420626520636f6e74726f6c6c65722d656e61626c656420536574546f60408201526235b2b760e91b606082015260800190565b6020808252601c908201527f4d7573742062652074686520536574546f6b656e206d616e6167657200000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b60405181810167ffffffffffffffff8111828210171561206d57600080fd5b604052919050565b60005b83811015612090578181015183820152602001612078565b8381111561209f576000848401525b50505050565b6001600160a01b03811681146120ba57600080fd5b5056fea2646970667358221220255c2fae213b55754560b0b6487624671b0f6556fce8450b77fdd0857de6822564736f6c634300060a0033
0x60806040523480156200001157600080fd5b50604051620021c4380380620021c483398101604081905262000034916200006a565b600080546001600160a01b039384166001600160a01b0319918216179091556001805560028054929093169116179055620000c1565b600080604083850312156200007d578182fd5b82516200008a81620000a8565b60208401519092506200009d81620000a8565b809150509250929050565b6001600160a01b0381168114620000be57600080fd5b50565b6120f380620000d16000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638980d9e41161005b5780638980d9e4146100db578063c4d66de8146100ee578063f0f67dee14610101578063f77c47911461011457610088565b80631d9f11e61461008d5780633fc8cef3146100a25780635f470192146100c0578063847ef08d146100d3575b600080fd5b6100a061009b366004611bbc565b61011c565b005b6100aa610226565b6040516100b79190611c71565b60405180910390f35b6100a06100ce366004611b39565b610235565b6100a061032a565b6100a06100e9366004611bbc565b61032c565b6100a06100fc366004611b1d565b610417565b6100a061010f366004611b39565b610558565b6100aa610636565b600260015414156101485760405162461bcd60e51b815260040161013f90611fd1565b60405180910390fd5b6002600155846101588133610645565b6101745760405162461bcd60e51b815260040161013f90611f9a565b61017d816106d5565b6101995760405162461bcd60e51b815260040161013f90611d68565b60025460009081906101bd90869086908b906001600160a01b03168b8b60016107d9565b6002546040519294509092506001600160a01b03808a169291811691908b16907f0e631fe8e26e2b6c2ce8c4c55eca1d769c98bb4b5539068aec9ada0a3b429afe9061021090879087908c908c90612011565b60405180910390a4505060018055505050505050565b6002546001600160a01b031681565b600260015414156102585760405162461bcd60e51b815260040161013f90611fd1565b6002600155856102688133610645565b6102845760405162461bcd60e51b815260040161013f90611f9a565b61028d816106d5565b6102a95760405162461bcd60e51b815260040161013f90611d68565b6000806102bc85858b8b8b8b60006107d9565b91509150866001600160a01b0316886001600160a01b03168a6001600160a01b03167f0e631fe8e26e2b6c2ce8c4c55eca1d769c98bb4b5539068aec9ada0a3b429afe85858a8a6040516103139493929190612011565b60405180910390a450506001805550505050505050565b565b6002600154141561034f5760405162461bcd60e51b815260040161013f90611fd1565b60026001558461035f8133610645565b61037b5760405162461bcd60e51b815260040161013f90611f9a565b610384816106d5565b6103a05760405162461bcd60e51b815260040161013f90611d68565b60025460009081906103c490869086908b906001600160a01b03168b8b60016109d0565b6002546040519294509092506001600160a01b03808a169291811691908b16907f266efe8e5e4e2e7e407c4814a2818ef8e990768c61e67315ac34a8d3555b438e9061021090879087908c908c90612011565b80336104238282610645565b61043f5760405162461bcd60e51b815260040161013f90611f9a565b600054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec9061046f908690600401611c71565b60206040518083038186803b15801561048757600080fd5b505afa15801561049b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104bf9190611ac2565b6104db5760405162461bcd60e51b815260040161013f90611f57565b6104e483610c11565b6105005760405162461bcd60e51b815260040161013f90611db0565b826001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b50505050505050565b6002600154141561057b5760405162461bcd60e51b815260040161013f90611fd1565b60026001558561058b8133610645565b6105a75760405162461bcd60e51b815260040161013f90611f9a565b6105b0816106d5565b6105cc5760405162461bcd60e51b815260040161013f90611d68565b6000806105df85858b8b8b8b60006109d0565b91509150866001600160a01b0316886001600160a01b03168a6001600160a01b03167f266efe8e5e4e2e7e407c4814a2818ef8e990768c61e67315ac34a8d3555b438e85858a8a6040516103139493929190612011565b6000546001600160a01b031681565b6000816001600160a01b0316836001600160a01b031663481c6a756040518163ffffffff1660e01b815260040160206040518083038186803b15801561068a57600080fd5b505afa15801561069e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c291906119a3565b6001600160a01b03161490505b92915050565b60008054604051631d3af8fb60e21b81526001600160a01b03909116906374ebe3ec90610706908590600401611c71565b60206040518083038186803b15801561071e57600080fd5b505afa158015610732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107569190611ac2565b80156106cf57506040516335fc6c9f60e21b81526001600160a01b0383169063d7f1b27c90610789903090600401611c71565b60206040518083038186803b1580156107a157600080fd5b505afa1580156107b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf9190611ac2565b6000806107e7878686610c40565b6000806107f5898989610cd0565b91509150600061087c878b6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561083857600080fd5b505afa15801561084c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108709190611c2d565b9063ffffffff610ddf16565b905060006108bf8d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610df892505050565b90506109498b82896108d1578c610942565b836001600160a01b0316631878d1f16040518163ffffffff1660e01b815260040160206040518083038186803b15801561090a57600080fd5b505afa15801561091e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094291906119a3565b8c86610e0f565b861561097057600254610970906001600160a01b038d81169116813163ffffffff610f2f16565b60008061097e8d8d8d610cd0565b9150915061098e8d8d8885610fe4565b61099a8d8c8784610fe4565b6109aa828763ffffffff61110a16565b6109ba868363ffffffff61110a16565b9750975050505050505097509795505050505050565b6000806109de878786610c40565b6000806109ec898989610cd0565b915091506000610a2f878b6001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561083857600080fd5b90506000610a728d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610df892505050565b90508615610a9f57600254610a9a906001600160a01b038d811691168463ffffffff61114c16565b610b3f565b604051636f3451ed60e11b81526000906001600160a01b0383169063de68a3da90610ad0908e908e90600401611c85565b60206040518083038186803b158015610ae857600080fd5b505afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2091906119a3565b9050610b3d6001600160a01b038d168c838663ffffffff6111bb16565b505b610bc78b8289610b4f578c610bc0565b836001600160a01b0316631878d1f16040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8857600080fd5b505afa158015610b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc091906119a3565b8c8661128a565b600080610bd58d8d8d610cd0565b91509150610be58d8d8885610fe4565b610bf18d8c8784610fe4565b610c01868363ffffffff61110a16565b6109ba828763ffffffff61110a16565b6040516353bae5f760e01b81526000906001600160a01b038316906353bae5f790610789903090600401611c71565b60008111610c605760405162461bcd60e51b815260040161013f90611e16565b610c796001600160a01b0384168363ffffffff6112bf16565b610c955760405162461bcd60e51b815260040161013f90611d1f565b610caf6001600160a01b038416838363ffffffff61134616565b610ccb5760405162461bcd60e51b815260040161013f90611ecd565b505050565b6000806000846001600160a01b03166370a08231876040518263ffffffff1660e01b8152600401610d019190611c71565b60206040518083038186803b158015610d1957600080fd5b505afa158015610d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d519190611c2d565b90506000846001600160a01b03166370a08231886040518263ffffffff1660e01b8152600401610d819190611c71565b60206040518083038186803b158015610d9957600080fd5b505afa158015610dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd19190611c2d565b919791965090945050505050565b6000610df1838363ffffffff6113d716565b9392505050565b600080610e0483611401565b9050610df18161140c565b6000806060866001600160a01b031663a22fe98e8787876040518463ffffffff1660e01b8152600401610e4493929190611c9f565b60006040518083038186803b158015610e5c57600080fd5b505afa158015610e70573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e9891908101906119bf565b925092509250876001600160a01b0316638f6f03328484846040518463ffffffff1660e01b8152600401610ece93929190611cdc565b600060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f249190810190611ae2565b505050505050505050565b6040805160048082526024820183526020820180516001600160e01b0316630d0e30db60e41b17905291516347b7819960e11b815290916001600160a01b03861691638f6f033291610f879187918791879101611cdc565b600060405180830381600087803b158015610fa157600080fd5b505af1158015610fb5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fdd9190810190611ae2565b5050505050565b60006110ee838361106f886001600160a01b03166366cb8d2f896040518263ffffffff1660e01b815260040161101a9190611c71565b60206040518083038186803b15801561103257600080fd5b505afa158015611046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106a9190611c2d565b6114c9565b886001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110a857600080fd5b505afa1580156110bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e09190611c2d565b92919063ffffffff6114ef16565b9050610fdd6001600160a01b038616858363ffffffff61153e16565b6000610df183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116bc565b60608160405160240161115f9190612008565b60408051601f198184030181529181526020820180516001600160e01b0316632e1a7d4d60e01b179052516347b7819960e11b81529091506001600160a01b03851690638f6f033290610f879086906000908690600401611cdc565b606082826040516024016111d0929190611cc3565b60408051601f198184030181529181526020820180516001600160e01b031663095ea7b360e01b179052516347b7819960e11b81529091506001600160a01b03861690638f6f03329061122c9087906000908690600401611cdc565b600060405180830381600087803b15801561124657600080fd5b505af115801561125a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112829190810190611ae2565b505050505050565b6000806060866001600160a01b03166377b1aaf88787876040518463ffffffff1660e01b8152600401610e4493929190611c9f565b600080836001600160a01b03166366cb8d2f846040518263ffffffff1660e01b81526004016112ee9190611c71565b60206040518083038186803b15801561130657600080fd5b505afa15801561131a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133e9190611c2d565b139392505050565b6000611351826116e8565b6040516366cb8d2f60e01b81526001600160a01b038616906366cb8d2f9061137d908790600401611c71565b60206040518083038186803b15801561139557600080fd5b505afa1580156113a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cd9190611c2d565b1215949350505050565b6000610df1670de0b6b3a76400006113f5858563ffffffff61170d16565b9063ffffffff61174716565b805160209091012090565b600080548190611424906001600160a01b0316611789565b6001600160a01b031663e6d642c530856040518363ffffffff1660e01b8152600401611451929190611cc3565b60206040518083038186803b15801561146957600080fd5b505afa15801561147d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a191906119a3565b90506001600160a01b0381166106cf5760405162461bcd60e51b815260040161013f90611de7565b6000808212156114eb5760405162461bcd60e51b815260040161013f90611e57565b5090565b600080611512611505848863ffffffff6113d716565b869063ffffffff61110a16565b905061153486611528868463ffffffff61110a16565b9063ffffffff61180816565b9695505050505050565b600061154a84846112bf565b90508015801561155a5750600082115b156115d1576115698484611826565b6115cc576040516304e3532760e41b81526001600160a01b03851690634e35327090611599908690600401611c71565b600060405180830381600087803b1580156115b357600080fd5b505af11580156115c7573d6000803e3d6000fd5b505050505b61164e565b8080156115dc575081155b1561164e576115eb8484611826565b61164e57604051636f86c89760e01b81526001600160a01b03851690636f86c8979061161b908690600401611c71565b600060405180830381600087803b15801561163557600080fd5b505af1158015611649573d6000803e3d6000fd5b505050505b836001600160a01b0316632ba57d1784611667856116e8565b6040518363ffffffff1660e01b8152600401611684929190611cc3565b600060405180830381600087803b15801561169e57600080fd5b505af11580156116b2573d6000803e3d6000fd5b5050505050505050565b600081848411156116e05760405162461bcd60e51b815260040161013f9190611d0c565b505050900390565b6000600160ff1b82106114eb5760405162461bcd60e51b815260040161013f90611f0f565b60008261171c575060006106cf565b8282028284828161172957fe5b0414610df15760405162461bcd60e51b815260040161013f90611e8c565b6000610df183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118b2565b6040516373b2e76b60e11b81526000906001600160a01b0383169063e765ced6906117b8908490600401612008565b60206040518083038186803b1580156117d057600080fd5b505afa1580156117e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cf91906119a3565b6000610df1826113f585670de0b6b3a764000063ffffffff61170d16565b600080836001600160a01b031663a7bdad03846040518263ffffffff1660e01b81526004016118559190611c71565b60006040518083038186803b15801561186d57600080fd5b505afa158015611881573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118a99190810190611a17565b51119392505050565b600081836118d35760405162461bcd60e51b815260040161013f9190611d0c565b5060008385816118df57fe5b0495945050505050565b80516106cf816120a5565b600082601f830112611904578081fd5b815167ffffffffffffffff81111561191a578182fd5b61192d601f8201601f191660200161204e565b915080825283602082850101111561194457600080fd5b611955816020840160208601612075565b5092915050565b60008083601f84011261196d578182fd5b50813567ffffffffffffffff811115611984578182fd5b60208301915083602082850101111561199c57600080fd5b9250929050565b6000602082840312156119b4578081fd5b8151610df1816120a5565b6000806000606084860312156119d3578182fd5b83516119de816120a5565b60208501516040860151919450925067ffffffffffffffff811115611a01578182fd5b611a0d868287016118f4565b9150509250925092565b60006020808385031215611a29578182fd5b825167ffffffffffffffff80821115611a40578384fd5b81850186601f820112611a51578485fd5b8051925081831115611a61578485fd5b8383029150611a7184830161204e565b8381528481019082860184840187018a1015611a8b578788fd5b8794505b85851015611ab557611aa18a826118e9565b835260019490940193918601918601611a8f565b5098975050505050505050565b600060208284031215611ad3578081fd5b81518015158114610df1578182fd5b600060208284031215611af3578081fd5b815167ffffffffffffffff811115611b09578182fd5b611b15848285016118f4565b949350505050565b600060208284031215611b2e578081fd5b8135610df1816120a5565b60008060008060008060a08789031215611b51578182fd5b8635611b5c816120a5565b95506020870135611b6c816120a5565b94506040870135611b7c816120a5565b935060608701359250608087013567ffffffffffffffff811115611b9e578283fd5b611baa89828a0161195c565b979a9699509497509295939492505050565b600080600080600060808688031215611bd3578081fd5b8535611bde816120a5565b94506020860135611bee816120a5565b935060408601359250606086013567ffffffffffffffff811115611c10578182fd5b611c1c8882890161195c565b969995985093965092949392505050565b600060208284031215611c3e578081fd5b5051919050565b60008151808452611c5d816020860160208601612075565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b600060018060a01b038516825283602083015260606040830152611d036060830184611c45565b95945050505050565b600060208252610df16020830184611c45565b60208082526029908201527f5461726765742064656661756c7420706f736974696f6e206d7573742062652060408201526818dbdb5c1bdb995b9d60ba1b606082015260800190565b60208082526028908201527f4d75737420626520612076616c696420616e6420696e697469616c697a65642060408201526729b2ba2a37b5b2b760c11b606082015260800190565b6020808252601e908201527f4d7573742062652070656e64696e6720696e697469616c697a6174696f6e0000604082015260600190565b60208082526015908201527426bab9ba103132903b30b634b21030b230b83a32b960591b604082015260600190565b60208082526021908201527f54617267657420706f736974696f6e20756e697473206d757374206265203e206040820152600360fc1b606082015260800190565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526022908201527f556e69742063616e742062652067726561746572207468616e206578697374696040820152616e6760f01b606082015260800190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b60208082526023908201527f4d75737420626520636f6e74726f6c6c65722d656e61626c656420536574546f60408201526235b2b760e91b606082015260800190565b6020808252601c908201527f4d7573742062652074686520536574546f6b656e206d616e6167657200000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b90815260200190565b60008582528460208301526060604083015282606083015282846080840137818301608090810191909152601f909201601f191601019392505050565b60405181810167ffffffffffffffff8111828210171561206d57600080fd5b604052919050565b60005b83811015612090578181015183820152602001612078565b8381111561209f576000848401525b50505050565b6001600160a01b03811681146120ba57600080fd5b5056fea2646970667358221220255c2fae213b55754560b0b6487624671b0f6556fce8450b77fdd0857de6822564736f6c634300060a0033000000000000000000000000a4c8d221d8bb851f83aadd0223a8900a6921a349000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2