//
0x60a060405234801561001057600080fd5b50600060805260805161346361002e600039600050506134636000f3fe608060405234801561001057600080fd5b50600436106103035760003560e01c8063584cb7cf1161019e578063a217fddf116100ef578063d547741f1161009d578063d547741f146107c8578063da5a517b146107db578063de44bb88146107ee578063df4bbd22146107f6578063e178d930146107fe578063f4408e4b14610811578063fa267ddf14610819578063fc0c546a1461082257610303565b8063a217fddf1461074e578063a4c0ed3614610756578063a5b83ce414610769578063acbeddd71461077c578063adc9772e1461078f578063b6cce5e2146107a2578063b9efec95146107b557610303565b80637c6543031161014c5780637c654303146106e85780637c6f3158146106f05780637db18807146106f95780637e11d1c61461070c57806391a113031461071f57806391d1485414610728578063988331301461073b57610303565b8063584cb7cf14610678578063624ca99c1461068b578063625eb6c81461069e5780636e9bb3f7146106b15780636fff860d146106c457806371b906eb146106d7578063759e30d8146106df57610303565b8063357e47fe11610258578063409473691161020657806340947369146105fb5780634562980f1461060457806348611fcd146106175780634a45d2e61461062a5780635499dca51461063d57806354a991b414610652578063572b6c051461066557610303565b8063357e47fe1461056457806336568abe1461058557806338106e4d14610598578063392f37e9146105ab5780633a1c0aa8146105c05780633a82b50d146105e05780633ccfd60b146105f357610303565b80632014e5d1116102b55780632014e5d1146104dd578063248a9ca3146104ea5780632b308a561461050d5780632def6620146105205780632f2ff15d14610528578063303cbe571461053b57806334a0f8811461055b57610303565b806301ffc9a71461042357806304a105911461044b57806311648a4c14610460578063131b9c041461047757806314c948eb1461048a57806319153386146104aa57806319d164f1146104bd575b600036606033301461032857604051634ca8886760e01b815260040160405180910390fd5b8160008482610338601482612d41565b61034492859290612d58565b61034d91612d82565b60601c90506000858186610362602087612d41565b9261036f93929190612d58565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604051949550938493506001600160a01b03871692506103c191508590612dde565b600060405180830381855af49150503d80600081146103fc576040519150601f19603f3d011682016040523d82523d6000602084013e610401565b606091505b50915091508161041357805181602001fd5b8051975060200195505050505050f35b610436610431366004612dfa565b610835565b60405190151581526020015b60405180910390f35b61045e610459366004612e39565b61086c565b005b61046960d95481565b604051908152602001610442565b610469610485366004612e65565b6108ee565b610469610498366004612e65565b60d26020526000908152604090205481565b61045e6104b8366004612e65565b610953565b6104696104cb366004612e65565b60d46020526000908152604090205481565b60d85460d7541015610436565b6104696104f8366004612e82565b60009081526097602052604090206001015490565b61045e61051b366004612e39565b6109a8565b610469610a1f565b61045e610536366004612e9b565b610ac5565b610469610549366004612e65565b60d36020526000908152604090205481565b61046960d65481565b610577610572366004612e65565b610aef565b604051610442929190612ef7565b61045e610593366004612e9b565b610bf7565b6104696105a6366004612e82565b610c85565b6105b3610e3a565b6040516104429190612f18565b60cc546105d3906001600160a01b031681565b6040516104429190612f2b565b6104696105ee366004612e65565b610ec8565b610469610f3a565b61046960d85481565b61045e610612366004612f88565b610fda565b610469610625366004612e65565b611196565b61045e610638366004612e82565b6111de565b33600090815260d26020526040902054610469565b60cd546105d3906001600160a01b031681565b610436610673366004612e65565b6111eb565b60ce546105d3906001600160a01b031681565b61045e610699366004612e65565b61127e565b6105d36106ac366004612e82565b6112bb565b6104696106bf366004612e65565b6112e5565b61045e6106d2366004612e39565b611421565b6104696114bc565b61046960d55481565b6104366114ef565b61046960d75481565b6105b3610707366004612e65565b61150d565b61045e61071a36600461305d565b611526565b61046960da5481565b610436610736366004612e9b565b6115ab565b60c9546105d3906001600160a01b031681565b610469600081565b61045e610764366004613121565b6115d6565b61045e610777366004612e39565b61163e565b61045e61078a366004612e39565b6116b4565b61045e61079d366004612e39565b6116fd565b61045e6107b0366004612e82565b611784565b61045e6107c3366004612e39565b61181c565b61045e6107d6366004612e9b565b611865565b6104696107e9366004612e65565b61188a565b6104696118d2565b61046961191a565b61045e61080c366004612e39565b611930565b6105b36119fc565b61046960db5481565b60ca546105d3906001600160a01b031681565b60006001600160e01b03198216637965db0b60e01b148061086657506301ffc9a760e01b6001600160e01b03198316145b92915050565b600061087781611a09565b60cd80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108e89190632522e97360e11b906044015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611a1a565b50505050565b60cc5460405160009161086691636e9bb3f760e01b9161091c9186916001600160a01b03169060240161317d565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611abb565b61095b611b51565b610963611cbc565b6001600160a01b03821660009081526003919091016020526040812055610988611cbc565b6001600160a01b0390911660009081526002919091016020526040812055565b60006109b381611a09565b60cb80546001810182556000919091527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb0180546001600160a01b0319166001600160a01b038516179055604051602481018390526108e8908490632522e97360e11b906044016108b1565b600080610a2a611d41565b90506000610a378261188a565b90508015610a60576040516301e1d66b60e21b8152600481018290526024015b60405180910390fd5b6001600160a01b038216600090815260d4602052604090205415610ab5576001600160a01b038216600090815260d4602052604090819020549051635df79f0d60e11b81526004810191909152602401610a57565b610abe82611d4b565b9250505090565b600082815260976020526040902060010154610ae081611a09565b610aea8383612127565b505050565b60ce546000906060906001600160a01b0316610b1e5760405163213a65f360e11b815260040160405180910390fd5b60ce54604051610b4b9163c027553560e01b9161091c9187916001600160a01b039091169060240161317d565b6001600160a01b038416600090815260d160205260409020805491935090610b7290613197565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9e90613197565b8015610beb5780601f10610bc057610100808354040283529160200191610beb565b820191906000526020600020905b815481529060010190602001808311610bce57829003601f168201915b50505050509050915091565b610bff611d41565b6001600160a01b0316816001600160a01b031614610c775760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610a57565b610c8182826121ae565b5050565b600080610c90611d41565b6001600160a01b038116600090815260d260205260409020549091508310610ccb5760405163aa4c075760e01b815260040160405180910390fd5b6000610cd682611196565b905080841015610cfc576040516305f48c3560e11b815260048101829052602401610a57565b6001600160a01b038216600090815260d26020526040902054610d2b908390610d26908790612d41565b612233565b60ca5460405163a9059cbb60e01b81529194506001600160a01b03169063a9059cbb90610d5e90859087906004016131cb565b6020604051808303816000875af1158015610d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da191906131e4565b506001600160a01b038216600081815260d260205260409020546000805160206133ee83398151915290610dd4856108ee565b6040805192835260208301919091520160405180910390a260d85460d7541015151560d75463ffffffff1660008051602061340e83398151915260d65460da54604051610e2b929190918252602082015260400190565b60405180910390a35050919050565b60d08054610e4790613197565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7390613197565b8015610ec05780601f10610e9557610100808354040283529160200191610ec0565b820191906000526020600020905b815481529060010190602001808311610ea357829003601f168201915b505050505081565b6000610ed2611b51565b610edb826112e5565b90508060db6000828254610eef9190612d41565b9091555060009050610eff611cbc565b60018101546001600160a01b039094166000908152600282016020908152604080832096909655600390920190915292832092909255919050565b600080610f45611d41565b6001600160a01b038116600090815260d3602052604081205491925003610f7f576040516314625d5d60e21b815260040160405180910390fd5b610f8881612323565b91508115610fd6576001600160a01b038116600081815260d260205260408082205490516000805160206133ee83398151915292610fcd928252602082015260400190565b60405180910390a25b5090565b600054610100900460ff1615808015610ffa5750600054600160ff909116105b806110145750303b158015611014575060005460ff166001145b6110775760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610a57565b6000805460ff19166001179055801561109a576000805461ff0019166101001790555b63ffffffff8335811660d95560208401351660d88190556040840135906000036110d75760405163309f1b0d60e21b815260040160405180910390fd5b60ca80546001600160a01b0319166001600160a01b0387161790556110fe60cf8b8b612c22565b5061110b60d08989612c22565b5060c980546001600160a01b0319166001600160a01b03881617905561112f6123f8565b61113a600033612465565b611144838261181c565b50801561118b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b60ce546000906001600160a01b03166111b157506000919050565b60ce54604051610866916304f9acdf60e11b9161091c9186916001600160a01b039091169060240161317d565b806111e7611cbc565b5550565b6000816001600160a01b031660c960009054906101000a90046001600160a01b03166001600160a01b0316637da0a8776040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e919061321c565b6001600160a01b03161492915050565b611286611b51565b61128e611cbc565b6001015461129a611cbc565b6001600160a01b039092166000908152600292909201602052604090912055565b60cb81815481106112cb57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038116600090815260d26020526040812054810361130c57506000919050565b6000611316611cbc565b9050600061132261246f565b50905060008260070154826a0c097ce7bc90715b34b9f160241b6113469190613239565b6113509190613258565b836001015461135f919061327a565b9050600061136b611cbc565b6001600160a01b038716600090815260029190910160205260409020546113929083612d41565b6001600160a01b038716600090815260d260205260409020549091506a0c097ce7bc90715b34b9f160241b906113c9908390613239565b6113d1611cbc565b6001600160a01b038916600090815260039190910160205260409020546113f8919061327a565b61140d906a084595161401484a00000061327a565b6114179190613258565b9695505050505050565b8060000361142d575050565b611435611b51565b600061143f611cbc565b600481015490915015610aea577f9d584a7e1b19f15c4a9b3fc12662146f10b5739603ce9aaab30d80bab7d8ea2a42670de0b6b3a764000083600501546114869190613258565b60048401546040805193845260208401929092529082015260600160405180910390a16000600582018190556004820155505050565b60cc546040516000916114ea91631bc8977160e31b9161091c916001600160a01b0390911690602401612f2b565b905090565b600060d954426114ff919061327a565b6115076114bc565b11905090565b60d16020526000908152604090208054610e4790613197565b6001600160a01b038216600090815260d160209081526040909120825161154f92840190612ca2565b5060ce546001600160a01b03166115795760405163213a65f360e11b815260040160405180910390fd5b60ce54610aea906001600160a01b031663344763f160e21b8461159a611d41565b6040516024016108b192919061317d565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60ca546001600160a01b031633146116015760405163118d9d7160e11b815260040160405180910390fd5b601481900361161f57813560601c61161981856124ef565b506108e8565b602081900361163457813561161981856124ef565b6108e88484612758565b60ce546001600160a01b03166116675760405163213a65f360e11b815260040160405180910390fd5b60ce54610aea906001600160a01b031663fbbabed960e01b8484611689611d41565b6040516001600160a01b039384166024820152604481019290925290911660648201526084016108b1565b60006116bf81611a09565b60ce80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108e89190632522e97360e11b906044016108b1565b60ca546001600160a01b03166323b872dd611716611d41565b30846040518463ffffffff1660e01b815260040161173693929190613292565b6020604051808303816000875af1158015611755573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177991906131e4565b50610c8182826124ef565b80156118085760ca546001600160a01b03166323b872dd6117a3611d41565b30846040518463ffffffff1660e01b81526004016117c393929190613292565b6020604051808303816000875af11580156117e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180691906131e4565b505b611819611813611d41565b82612758565b50565b600061182781611a09565b60cc80546001600160a01b0319166001600160a01b038516908117909155604051602481018490526108e89190632522e97360e11b906044016108b1565b60008281526097602052604090206001015461188081611a09565b610aea83836121ae565b60cd546000906001600160a01b03166118a557506000919050565b60cd54604051610866916318820b1b60e01b9161091c9186916001600160a01b039091169060240161317d565b6000806118dd611cbc565b80549091506000036118f457600160ff1b91505090565b805460088201546119059190613258565b8160060154611914919061327a565b91505090565b600080611925611d41565b905061191481611d4b565b600061193a611cbc565b9050611944611b51565b6001600160a01b038316600090815260d260205260408120546119689084906132b6565b6001600160a01b0385166000908152600284016020526040812054600185015492935090916119979190612d41565b90506119a38183613239565b6001600160a01b0386166000908152600385016020526040812080549091906119cd90849061327a565b90915550505060018201546001600160a01b039094166000908152600290920160205250604090209190915550565b60cf8054610e4790613197565b61181981611a15611d41565b612915565b6000806000846001600160a01b031684604051611a379190612dde565b600060405180830381855af49150503d8060008114611a72576040519150601f19603f3d011682016040523d82523d6000602084013e611a77565b606091505b509150915081611aaf578051600003611aa757848460405163918623b760e01b8152600401610a579291906132f5565b805181602001fd5b60200151949350505050565b6000806000306001600160a01b031684604051611ad89190612dde565b600060405180830381855afa9150503d8060008114611b13576040519150601f19603f3d011682016040523d82523d6000602084013e611b18565b606091505b509150915081611b46578051600003611aa7578360405163029801d760e41b8152600401610a579190612f18565b602001519392505050565b6000611b5b611cbc565b9050600080611b6861246f565b90925090508015611c13578260040154600003611bba577f6b84b3854e3868de91705a7163cc5cc88f64366b8912900fa377af1f40d6fc1f611ba86118d2565b60405190815260200160405180910390a15b80836004016000828254611bce919061327a565b90915550506007830154611bf0826a0c097ce7bc90715b34b9f160241b613239565b611bfa9190613258565b836005016000828254611c0d919061327a565b90915550505b8115611c89578160db6000828254611c2b919061327a565b925050819055508160da6000828254611c449190612d41565b90915550506007830154611c66836a0c097ce7bc90715b34b9f160241b613239565b611c709190613258565b836001016000828254611c83919061327a565b90915550505b505042600682015560da54600882015560d654600782015560d85460d7546009909201805460ff19169190921015179055565b60008030604051602001611d2391907f73706f6e736f72736869702e73746f726167652e5374616b655765696768746581527064416c6c6f636174696f6e506f6c69637960781b602082015260609190911b6001600160601b031916603182015260450190565b60408051601f19818403018152919052805160209091012092915050565b60006114ea61296e565b6001600160a01b038116600090815260d360205260408120548103611d83576040516314625d5d60e21b815260040160405180910390fd5b6001600160a01b038216600090815260d4602052604090205415611e24576001600160a01b038216600090815260d4602052604081208054919055611dc88382612990565b60d56000828254611dd9919061327a565b909155505060408051600080825260208201526001600160a01b038516917f7785543bdf6fdde3b8486c62fa277837a6032d5819acf53e664ef0c45332fcb2910160405180910390a2505b6000611e2f8361188a565b90508015611f1b5760ca5460c9546040805163675c06f960e11b815290516001600160a01b039384169363a9059cbb93169163ceb80df29160048083019260209291908290030181865afa158015611e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eaf919061321c565b611eb98685612990565b6040518363ffffffff1660e01b8152600401611ed69291906131cb565b6020604051808303816000875af1158015611ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1991906131e4565b505b6000611f2684612323565b6001600160a01b038516600090815260d2602052604081205460d78054939450909260019290611f57908490612d41565b925050819055508060d66000828254611f709190612d41565b90915550506001600160a01b03808616600090815260d26020908152604080832083905560d39091528082209190915560cc549051611fc5929190911690630c8a99c360e11b906108b1908990602401612f2b565b5060408051600080825260208201526001600160a01b038716916000805160206133ee833981519152910160405180910390a260d85460d7541015151560d75463ffffffff1660008051602061340e83398151915260d65460da54604051612037929190918252602082015260400190565b60405180910390a3846001600160a01b03167f14a9c4ce3dc5694e8873bfea05304d57d64ba56ee7ad9ad5fe40b3d8e4e4d3f08260405161207a91815260200190565b60405180910390a260ca54604051630200057560e51b81526001600160a01b038781166004830152602482018490526060604483015260056064830152647374616b6560d81b608483015290911690634000aea09060a4016020604051808303816000875af192505050801561210d575060408051601f3d908101601f1916820190925261210a918101906131e4565b60015b1561211457505b61211e818361327a565b95945050505050565b61213182826115ab565b610c815760008281526097602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561216a611d41565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6121b882826115ab565b15610c815760008281526097602090815260408083206001600160a01b03851684529091529020805460ff191690556121ef611d41565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6001600160a01b038216600090815260d2602090815260408083205460d49092528220541061226457506000610866565b6001600160a01b038316600090815260d4602090815260408083205460d29092529091205461229e9184916122999190612d41565b612a5c565b6001600160a01b038416600090815260d260205260408120805492935083929091906122cb908490612d41565b925050819055508060d660008282546122e49190612d41565b909155505060cc5461231c906001600160a01b0316630e178d9360e41b8561230b85613319565b6040516024016108b19291906131cb565b5092915050565b60cc54604051600091612353916001600160a01b0390911690633a82b50d60e01b906108b1908690602401612f2b565b905080156123f35760ca54604051630200057560e51b81526001600160a01b0384811660048301526024820184905260606044830152600a60648301526930b63637b1b0ba34b7b760b11b608483015290911690634000aea09060a4016020604051808303816000875af19250505080156123eb575060408051601f3d908101601f191682019092526123e8918101906131e4565b60015b156123f3575b505b919050565b600054610100900460ff166124635760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a57565b565b610c818282612127565b600080600061247c611cbc565b600981015490915060ff1661249657506000928392509050565b60008160060154426124a89190612d41565b905060008183600001546124bc9190613239565b6008840154909150818110156124e357806124d78184612d41565b95509550505050509091565b50946000945092505050565b6001600160a01b038216600090815260d260205260408120805480159284929161251a90849061327a565b925050819055508160d66000828254612533919061327a565b909155506000905061254484611196565b6001600160a01b038516600090815260d26020526040902054909150811115612583576040516305f48c3560e11b815260048101829052602401610a57565b811561269257600160d7600082825461259c919061327a565b90915550506001600160a01b038416600090815260d3602052604081204290555b60cb5481101561262c57600060cb82815481106125dc576125dc613206565b6000918252602090912001546040516001600160a01b0390911691506126179082906307b88ea560e01b906108b1908a908a906024016131cb565b5050808061262490613335565b9150506125bd565b5060cc54604051612658916001600160a01b0316906318932a6760e21b906108b1908890602401612f2b565b506040516001600160a01b038516907fa2ab3900cad3f350c9333a5814b4c581dee01f3ca964bbf8cd96e061a00da0d290600090a26126c1565b60cc546040516126bf916001600160a01b031690630e178d9360e41b906108b190889088906024016131cb565b505b6001600160a01b038416600081815260d260205260409020546000805160206133ee833981519152906126f3876108ee565b6040805192835260208301919091520160405180910390a260d85460d7541015151560d75463ffffffff1660008051602061340e83398151915260d65460da5460405161274a929190918252602082015260400190565b60405180910390a350505050565b60da5460d55460d65460db5460ca546040516370a0823160e01b81526001600160a01b03909116906370a0823190612794903090600401612f2b565b602060405180830381865afa1580156127b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d5919061334e565b6127df9190612d41565b6127e99190612d41565b6127f39190612d41565b60da819055600090612806908390612d41565b905060006128148483612d41565b60cc54604051919250612846916001600160a01b0390911690636fff860d60e01b906108b190899087906024016131cb565b50846001600160a01b03167fe3e06f75e3a1529da79c083b1d8dd06fd928c2e268b3e2aaffa6103a14bcbd998560405161288291815260200190565b60405180910390a280156128c7576040518181526000907fe3e06f75e3a1529da79c083b1d8dd06fd928c2e268b3e2aaffa6103a14bcbd999060200160405180910390a25b60d85460d7541015151560d75463ffffffff1660008051602061340e83398151915260d65460da54604051612906929190918252602082015260400190565b60405180910390a35050505050565b61291f82826115ab565b610c815761292c81612a74565b612937836020612a86565b604051602001612948929190613367565b60408051601f198184030181529082905262461bcd60e51b8252610a5791600401612f18565b6000612979336111eb565b1561298b575060131936013560601c90565b503390565b6000816000036129a257506000610866565b6129ac8383612233565b90506001600160a01b0383163b15612a1357604051633dfb89db60e11b8152600481018290526001600160a01b03841690637bf713b690602401600060405180830381600087803b158015612a0057600080fd5b505af1925050508015612a11575060015b505b826001600160a01b03167fa005d3b8f5c8149659f2afc06ed99732d5891377a370a723669418ca1ca29ced82604051612a4e91815260200190565b60405180910390a292915050565b6000818310612a6b5781612a6d565b825b9392505050565b60606108666001600160a01b03831660145b60606000612a95836002613239565b612aa090600261327a565b67ffffffffffffffff811115612ab857612ab8613047565b6040519080825280601f01601f191660200182016040528015612ae2576020820181803683370190505b509050600360fc1b81600081518110612afd57612afd613206565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612b2c57612b2c613206565b60200101906001600160f81b031916908160001a9053506000612b50846002613239565b612b5b90600161327a565b90505b6001811115612bd3576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612b8f57612b8f613206565b1a60f81b828281518110612ba557612ba5613206565b60200101906001600160f81b031916908160001a90535060049490941c93612bcc816133d6565b9050612b5e565b508315612a6d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a57565b828054612c2e90613197565b90600052602060002090601f016020900481019282612c505760008555612c96565b82601f10612c695782800160ff19823516178555612c96565b82800160010185558215612c96579182015b82811115612c96578235825591602001919060010190612c7b565b50610fd6929150612d16565b828054612cae90613197565b90600052602060002090601f016020900481019282612cd05760008555612c96565b82601f10612ce957805160ff1916838001178555612c96565b82800160010185558215612c96579182015b82811115612c96578251825591602001919060010190612cfb565b5b80821115610fd65760008155600101612d17565b634e487b7160e01b600052601160045260246000fd5b600082821015612d5357612d53612d2b565b500390565b60008085851115612d6857600080fd5b83861115612d7557600080fd5b5050820193919092039150565b6001600160601b03198135818116916014851015612daa5780818660140360031b1b83161692505b505092915050565b60005b83811015612dcd578181015183820152602001612db5565b838111156108e85750506000910152565b60008251612df0818460208701612db2565b9190910192915050565b600060208284031215612e0c57600080fd5b81356001600160e01b031981168114612a6d57600080fd5b6001600160a01b038116811461181957600080fd5b60008060408385031215612e4c57600080fd5b8235612e5781612e24565b946020939093013593505050565b600060208284031215612e7757600080fd5b8135612a6d81612e24565b600060208284031215612e9457600080fd5b5035919050565b60008060408385031215612eae57600080fd5b823591506020830135612ec081612e24565b809150509250929050565b60008151808452612ee3816020860160208601612db2565b601f01601f19169290920160200192915050565b828152604060208201526000612f106040830184612ecb565b949350505050565b602081526000612a6d6020830184612ecb565b6001600160a01b0391909116815260200190565b60008083601f840112612f5157600080fd5b50813567ffffffffffffffff811115612f6957600080fd5b602083019150836020828501011115612f8157600080fd5b9250929050565b600080600080600080600080610100898b031215612fa557600080fd5b883567ffffffffffffffff80821115612fbd57600080fd5b612fc98c838d01612f3f565b909a50985060208b0135915080821115612fe257600080fd5b50612fef8b828c01612f3f565b909750955050604089013561300381612e24565b9350606089013561301381612e24565b925060e089018a81111561302657600080fd5b60808a0192503561303681612e24565b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561307057600080fd5b823561307b81612e24565b9150602083013567ffffffffffffffff8082111561309857600080fd5b818501915085601f8301126130ac57600080fd5b8135818111156130be576130be613047565b604051601f8201601f19908116603f011681019083821181831017156130e6576130e6613047565b816040528281528860208487010111156130ff57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000806060858703121561313757600080fd5b843561314281612e24565b935060208501359250604085013567ffffffffffffffff81111561316557600080fd5b61317187828801612f3f565b95989497509550505050565b6001600160a01b0392831681529116602082015260400190565b600181811c908216806131ab57607f821691505b6020821081036123f157634e487b7160e01b600052602260045260246000fd5b6001600160a01b03929092168252602082015260400190565b6000602082840312156131f657600080fd5b81518015158114612a6d57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561322e57600080fd5b8151612a6d81612e24565b600081600019048311821515161561325357613253612d2b565b500290565b60008261327557634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561328d5761328d612d2b565b500190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008083128015600160ff1b8501841216156132d4576132d4612d2b565b6001600160ff1b03840183138116156132ef576132ef612d2b565b50500390565b6001600160a01b0383168152604060208201819052600090612f1090830184612ecb565b6000600160ff1b820161332e5761332e612d2b565b5060000390565b60006001820161334757613347612d2b565b5060010190565b60006020828403121561336057600080fd5b5051919050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613399816017850160208801612db2565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516133ca816028840160208801612db2565b01602801949350505050565b6000816133e5576133e5612d2b565b50600019019056fe5d179bbeed3396160151c93c13d38566dc1643f25a316cca998cd25f45a8bd3f38a9ab06ef5f5ea75fd622f984e03b2393343b6039c656e874e3fa9e3ddcd7b2a2646970667358221220f6595cf7d6fc28d15b34e387f827c1964565eaee8f88f145d707f4696c6f967264736f6c634300080d0033