60806040526003805460ff191690553480156200001b57600080fd5b506000805433600160a060020a031991821681178355600180549092168255825260026020908152604092839020805460ff1916909217909155815180830190925260068083527f546f6b65646f000000000000000000000000000000000000000000000000000092909101918252620000989160049162000119565b506040805180820190915260038082527f544b4400000000000000000000000000000000000000000000000000000000006020909201918252620000df9160059162000119565b506006805460ff191660121790556a41241c81485710fd71963e6007819055336000908152600860205260409020819055600a55620001be565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015c57805160ff19168380011785556200018c565b828001600101855582156200018c579182015b828111156200018c5782518255916020019190600101906200016f565b506200019a9291506200019e565b5090565b620001bb91905b808211156200019a5760008155600101620001a5565b90565b61207980620001ce6000396000f30060806040526004361061013a5763ffffffff60e060020a60003504166306fdde03811461013f578063095ea7b3146101c957806318160ddd146102015780631f2698ab1461022857806323b872dd1461023d578063313ce56714610267578063378dc3dc1461029257806342966c68146102a757806366188463146102bf57806370a08231146102e3578063711bf9b21461030457806379ba50971461032c57806379cc6790146103415780637e3da027146103655780638da5cb5b146103f257806395d89b4114610423578063a9059cbb14610438578063b91816111461045c578063be45fd621461047d578063be9a6555146104e6578063cae9ca51146104fb578063d4ee1d9014610564578063d73dd62314610579578063dd62ed3e1461059d578063f2fde38b146105c4578063f6368f8a146105e5575b600080fd5b34801561014b57600080fd5b5061015461068c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018e578181015183820152602001610176565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d557600080fd5b506101ed600160a060020a036004351660243561071a565b604080519115158252519081900360200190f35b34801561020d57600080fd5b5061021661079f565b60408051918252519081900360200190f35b34801561023457600080fd5b506101ed6107a5565b34801561024957600080fd5b506101ed600160a060020a03600435811690602435166044356107ae565b34801561027357600080fd5b5061027c610835565b6040805160ff9092168252519081900360200190f35b34801561029e57600080fd5b5061021661083e565b3480156102b357600080fd5b506101ed600435610844565b3480156102cb57600080fd5b506101ed600160a060020a0360043516602435610856565b3480156102ef57600080fd5b50610216600160a060020a03600435166108d4565b34801561031057600080fd5b5061032a600160a060020a036004351660243515156108ef565b005b34801561033857600080fd5b5061032a6109b4565b34801561034d57600080fd5b506101ed600160a060020a0360043516602435610a7b565b34801561037157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101ed948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750505092357fffffffff00000000000000000000000000000000000000000000000000000000169350610b8792505050565b3480156103fe57600080fd5b50610407610ccf565b60408051600160a060020a039092168252519081900360200190f35b34801561042f57600080fd5b50610154610cde565b34801561044457600080fd5b506101ed600160a060020a0360043516602435610d39565b34801561046857600080fd5b506101ed600160a060020a0360043516610db7565b34801561048957600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101ed948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610dcc9650505050505050565b3480156104f257600080fd5b5061032a610e4b565b34801561050757600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101ed948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610ee59650505050505050565b34801561057057600080fd5b506104076110d3565b34801561058557600080fd5b506101ed600160a060020a03600435166024356110e2565b3480156105a957600080fd5b50610216600160a060020a0360043581169060243516611160565b3480156105d057600080fd5b5061032a600160a060020a036004351661118b565b3480156105f157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101ed948235600160a060020a031694602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975061127c9650505050505050565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107125780601f106106e757610100808354040283529160200191610712565b820191906000526020600020905b8154815290600101906020018083116106f557829003601f168201915b505050505081565b60035460009060ff168061073d57503360009081526002602052604090205460ff165b151561078e576040805160e560020a62461bcd028152602060048201526021602482015260008051602061202e833981519152604482015260f860020a605d02606482015290519081900360840190fd5b6107988383611305565b9392505050565b60075481565b60035460ff1681565b60035460009060ff16806107d157503360009081526002602052604090205460ff165b1515610822576040805160e560020a62461bcd028152602060048201526021602482015260008051602061202e833981519152604482015260f860020a605d02606482015290519081900360840190fd5b61082d84848461136b565b949350505050565b60065460ff1681565b600a5481565b6000610850338361164b565b92915050565b60035460009060ff168061087957503360009081526002602052604090205460ff165b15156108ca576040805160e560020a62461bcd028152602060048201526021602482015260008051602061202e833981519152604482015260f860020a605d02606482015290519081900360840190fd5b61079883836117b4565b600160a060020a031660009081526008602052604090205490565b600054600160a060020a03163314610951576040805160e560020a62461bcd02815260206004820152601360248201527f6d73672e73656e646572203d3d206f776e657200000000000000000000000000604482015290519081900360640190fd5b60405181151590600160a060020a038416907f5056a36abc1db1625034fdf114a164a0345b3ccf992fc1d51055e017375f473290600090a3600160a060020a03919091166000908152600260205260409020805460ff1916911515919091179055565b600154600160a060020a03163314610a16576040805160e560020a62461bcd02815260206004820152601660248201527f6d73672e73656e646572203d3d206e65774f776e657200000000000000000000604482015290519081900360640190fd5b600080546040513392600160a060020a03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff199081163317909155600180549091169055565b600160a060020a0382166000908152600960209081526040808320338452909152812054821115610b1b576040805160e560020a62461bcd028152602060048201526024808201527f5f76616c7565203c3d20616c6c6f7765645b5f66726f6d5d5b6d73672e73656e60448201527f6465725d00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610b25838361164b565b50600160a060020a0383166000908152600960209081526040808320338452909152902054610b5a908363ffffffff6118a416565b600160a060020a038416600090815260096020908152604080832033845290915290205550600192915050565b6000610b93858561071a565b5084600160a060020a03168260e060020a90043386866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015610c03578181015183820152602001610beb565b50505050905090810190601f168015610c305780820380516001836020036101000a031916815260200191505b5093505050506000604051808303816000875af1925050501515610cc4576040805160e560020a62461bcd02815260206004820152603e60248201527f5f7370656e6465722e63616c6c285f637573746f6d46756e6374696f6e2c206d60448201527f73672e73656e6465722c205f76616c75652c205f657874726144617461290000606482015290519081900360840190fd5b506001949350505050565b600054600160a060020a031681565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107125780601f106106e757610100808354040283529160200191610712565b60035460009060ff1680610d5c57503360009081526002602052604090205460ff165b1515610dad576040805160e560020a62461bcd028152602060048201526021602482015260008051602061202e833981519152604482015260f860020a605d02606482015290519081900360840190fd5b61079883836118b6565b60026020526000908152604090205460ff1681565b60035460009060ff1680610def57503360009081526002602052604090205460ff165b1515610e40576040805160e560020a62461bcd028152602060048201526021602482015260008051602061202e833981519152604482015260f860020a605d02606482015290519081900360840190fd5b61082d8484846118c3565b600054600160a060020a03163314610ead576040805160e560020a62461bcd02815260206004820152601360248201527f6d73672e73656e646572203d3d206f776e657200000000000000000000000000604482015290519081900360640190fd5b6003805460ff191660011790556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b6000610ef1848461071a565b5083600160a060020a031660405180807f72656365697665417070726f76616c28616464726573732c75696e743235362c81526020017f62797465732900000000000000000000000000000000000000000000000000008152506026019050604051809103902060e060020a90043385856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015610fbc578181015183820152602001610fa4565b50505050905090810190601f168015610fe95780820380516001836020036101000a031916815260200191505b5093505050506000604051808303816000875af19250505015156110c9576040805160e560020a62461bcd02815260206004820152606a60248201527f5f7370656e6465722e63616c6c28627974657334286b656363616b323536282260448201527f72656365697665417070726f76616c28616464726573732c75696e743235362c60648201527f6279746573292229292c206d73672e73656e6465722c205f76616c75652c205f60848201527f657874726144617461290000000000000000000000000000000000000000000060a482015290519081900360c40190fd5b5060019392505050565b600154600160a060020a031681565b60035460009060ff168061110557503360009081526002602052604090205460ff165b1515611156576040805160e560020a62461bcd028152602060048201526021602482015260008051602061202e833981519152604482015260f860020a605d02606482015290519081900360840190fd5b610798838361192d565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b600054600160a060020a031633146111ed576040805160e560020a62461bcd02815260206004820152601360248201527f6d73672e73656e646572203d3d206f776e657200000000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561124d576040805160e560020a62461bcd02815260206004820152601760248201527f6164647265737328302920213d205f6e65774f776e6572000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035460009060ff168061129f57503360009081526002602052604090205460ff165b15156112f0576040805160e560020a62461bcd028152602060048201526021602482015260008051602061202e833981519152604482015260f860020a605d02606482015290519081900360840190fd5b6112fc858585856119c6565b95945050505050565b336000818152600960209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6000600160a060020a03831615156113cd576040805160e560020a62461bcd02815260206004820152601160248201527f5f746f20213d2061646472657373283029000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831630141561142e576040805160e560020a62461bcd02815260206004820152601460248201527f5f746f20213d2061646472657373287468697329000000000000000000000000604482015290519081900360640190fd5b600160a060020a03841660009081526008602052604090205482111561149e576040805160e560020a62461bcd02815260206004820152601960248201527f5f76616c7565203c3d2062616c616e6365735b5f66726f6d5d00000000000000604482015290519081900360640190fd5b600160a060020a038416600090815260096020908152604080832033845290915290205482111561153e576040805160e560020a62461bcd028152602060048201526024808201527f5f76616c7565203c3d20616c6c6f7765645b5f66726f6d5d5b6d73672e73656e60448201527f6465725d00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038416600090815260086020526040902054611567908363ffffffff6118a416565b600160a060020a03808616600090815260086020526040808220939093559085168152205461159c908363ffffffff611e2616565b600160a060020a0380851660009081526008602090815260408083209490945591871681526009825282812033825290915220546115e0908363ffffffff6118a416565b600160a060020a03808616600081815260096020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b60008082116116a4576040805160e560020a62461bcd02815260206004820152600a60248201527f5f76616c7565203e203000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038316600090815260086020526040902054821115611714576040805160e560020a62461bcd02815260206004820152601b60248201527f5f76616c7565203c3d2062616c616e6365735b5f6275726e65725d0000000000604482015290519081900360640190fd5b600160a060020a03831660009081526008602052604090205461173d908363ffffffff6118a416565b600160a060020a038416600090815260086020526040902055600754611769908363ffffffff6118a416565b600755604080518381529051600160a060020a038516917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250600192915050565b336000908152600960209081526040808320600160a060020a03861684529091528120548083111561180957336000908152600960209081526040808320600160a060020a038816845290915281205561183e565b611819818463ffffffff6118a416565b336000908152600960209081526040808320600160a060020a03891684529091529020555b336000818152600960209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000828211156118b057fe5b50900390565b6000610798338484611e33565b600061082d848484606060405190810160405280602481526020017f746f6b656e46616c6c6261636b28616464726573732c75696e743235362c627981526020017f746573290000000000000000000000000000000000000000000000000000000081525061127c565b336000908152600960209081526040808320600160a060020a0386168452909152812054611961908363ffffffff611e2616565b336000818152600960209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a0385161515611a28576040805160e560020a62461bcd02815260206004820152601160248201527f5f746f20213d2061646472657373283029000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038516301415611a89576040805160e560020a62461bcd02815260206004820152601460248201527f5f746f20213d2061646472657373287468697329000000000000000000000000604482015290519081900360640190fd5b33600090815260086020526040902054841115611af0576040805160e560020a62461bcd02815260206004820152601e60248201527f5f76616c7565203c3d2062616c616e6365735b6d73672e73656e6465725d0000604482015290519081900360640190fd5b33600090815260086020526040902054611b10908563ffffffff6118a416565b3360009081526008602052604080822092909255600160a060020a03871681522054611b42908563ffffffff611e2616565b600160a060020a038616600090815260086020526040902055611b6485612025565b15611d845784600160a060020a03166000836040516020018082805190602001908083835b60208310611ba85780518252601f199092019160209182019101611b89565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310611c0b5780518252601f199092019160209182019101611bec565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060e060020a9004903387876040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015611c9d578181015183820152602001611c85565b50505050905090810190601f168015611cca5780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af193505050501515611d84576040805160e560020a62461bcd02815260206004820152605160248201527f5f746f2e63616c6c2e76616c756528302928627974657334286b656363616b3260448201527f3536285f637573746f6d5f66616c6c6261636b29292c206d73672e73656e646560648201527f722c205f76616c75652c205f6461746129000000000000000000000000000000608482015290519081900360a40190fd5b826040518082805190602001908083835b60208310611db45780518252601f199092019160209182019101611d95565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208a83529351939550600160a060020a038b16945033937fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c169350918290030190a4506001949350505050565b8181018281101561085057fe5b6000600160a060020a0383161515611e95576040805160e560020a62461bcd02815260206004820152601160248201527f5f746f20213d2061646472657373283029000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038316301415611ef6576040805160e560020a62461bcd02815260206004820152601460248201527f5f746f20213d2061646472657373287468697329000000000000000000000000604482015290519081900360640190fd5b600160a060020a038416600090815260086020526040902054821115611f66576040805160e560020a62461bcd02815260206004820152601b60248201527f5f76616c7565203c3d2062616c616e6365735b5f73656e6465725d0000000000604482015290519081900360640190fd5b600160a060020a038416600090815260086020526040902054611f8f908363ffffffff6118a416565b600160a060020a038086166000908152600860205260408082209390935590851681522054611fc4908363ffffffff611e2616565b600160a060020a0380851660008181526008602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b6000903b1190560073746172746564207c7c20617574686f72697a65645b6d73672e73656e646572a165627a7a723058201a62a9d7eff72278b29f371e847ffa030ddb18af42b80e8d21b7db38aa6894740029