60606040526001601460006101000a81548160ff0219169083151502179055506040805190810160405280600981526020017f5374616b65506f6f6c0000000000000000000000000000000000000000000000815250601890805190602001906200006c9291906200050e565b506040805190810160405280600481526020017f504f4f4c0000000000000000000000000000000000000000000000000000000081525060199080519060200190620000ba9291906200050e565b5066470de4df820000601a556305f5e100601b556008601c60006101000a81548160ff021916908360ff1602179055503415620000f657600080fd5b60188054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015620001905780601f10620001645761010080835404028352916020019162000190565b820191906000526020600020905b8154815290600101906020018083116200017257829003601f168201915b505050505060198054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156200022f5780601f1062000203576101008083540402835291602001916200022f565b820191906000526020600020905b8154815290600101906020018083116200021157829003601f168201915b5050505050601c60009054906101000a900460ff16601b54601a54336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460019080519060200190620002a29291906200050e565b508360029080519060200190620002bb9291906200050e565b508260ff1660038190555081600681905550806004819055506004546005819055505050505050601a54600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601a546040518082815260200191505060405180910390a333600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550666a94d74f430000601081905550620003ea610bb86200048f6401000000000262001846176401000000009004565b50652d79883d2000600b81905550600260128162000409919062000595565b5060026013816200041b919062000595565b5033601360018154811015156200042e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008154809291906001019190505550620005ec565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515620004ed57600080fd5b600082111515620004fd57600080fd5b816011819055506011549050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200055157805160ff191683800117855562000582565b8280016001018555821562000582579182015b828111156200058157825182559160200191906001019062000564565b5b509050620005919190620005c4565b5090565b815481835581811511620005bf57818360005260206000209182019101620005be9190620005c4565b5b505050565b620005e991905b80821115620005e5576000816000905550600101620005cb565b5090565b90565b61212480620005fc6000396000f3006060604052361561019f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303ff5e731461046f57806306fdde0314610498578063095ea7b3146105265780630b5982f014610580578063178ef307146105ad57806318160ddd146105d65780631e27ae4d146105ff57806323b872dd14610662578063268b0459146106db578063313ce56714610728578063378dc3dc146107515780634b8feb4f1461077a57806370a08231146107cf57806378e979251461081c57806379c65068146108455780637b3e5e7b1461089f5780638da5cb5b146108c8578063908ccc5e1461091d57806391b7f5ed1461094657806395d89b411461097d57806398d5fdca14610a0b578063a035b1fe14610a34578063a9059cbb14610a5d578063ab74731d14610ab7578063b071cbe614610ae0578063ca55954c14610b09578063da49808414610b6c578063dd62ed3e14610bbd578063e36b0b3714610c29578063efb98bcf14610c56578063f03b0c0b14610c7f578063f2fde38b14610cd0578063f4f3122e14610d09575b600080601460009054906101000a900460ff161580156101c05750600f5442105b80156102295750601054610226610215670de0b6b3a7640000610207601b546101f96101ea610d4d565b34610d5790919063ffffffff16565b610d5790919063ffffffff16565b610d8a90919063ffffffff16565b600554610da590919063ffffffff16565b11155b151561023457600080fd5b339150610266610255670de0b6b3a764000034610d8a90919063ffffffff16565b600a54610da590919063ffffffff16565b600a819055506102b4670de0b6b3a76400006102a6601b54610298610289610d4d565b34610d5790919063ffffffff16565b610d5790919063ffffffff16565b610d8a90919063ffffffff16565b90506102cb81600554610da590919063ffffffff16565b60058190555061032381600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da590919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156103c857600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36000601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561046b5761046982610dc3565b505b5050005b341561047a57600080fd5b610482610f02565b6040518082815260200191505060405180910390f35b34156104a357600080fd5b6104ab610f08565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104eb5780820151818401526020810190506104d0565b50505050905090810190601f1680156105185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561053157600080fd5b610566600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fa6565b604051808215151515815260200191505060405180910390f35b341561058b57600080fd5b610593611098565b604051808215151515815260200191505060405180910390f35b34156105b857600080fd5b6105c06112ae565b6040518082815260200191505060405180910390f35b34156105e157600080fd5b6105e96112b4565b6040518082815260200191505060405180910390f35b341561060a57600080fd5b61062060048080359060200190919050506112ba565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561066d57600080fd5b6106c1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611311565b604051808215151515815260200191505060405180910390f35b34156106e657600080fd5b610712600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611623565b6040518082815260200191505060405180910390f35b341561073357600080fd5b61073b61166c565b6040518082815260200191505060405180910390f35b341561075c57600080fd5b610764611672565b6040518082815260200191505060405180910390f35b341561078557600080fd5b61078d611678565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107da57600080fd5b610806600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061169e565b6040518082815260200191505060405180910390f35b341561082757600080fd5b61082f6116e7565b6040518082815260200191505060405180910390f35b341561085057600080fd5b610885600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506116ed565b604051808215151515815260200191505060405180910390f35b34156108aa57600080fd5b6108b2611815565b6040518082815260200191505060405180910390f35b34156108d357600080fd5b6108db61181b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561092857600080fd5b610930611840565b6040518082815260200191505060405180910390f35b341561095157600080fd5b6109676004808035906020019091905050611846565b6040518082815260200191505060405180910390f35b341561098857600080fd5b6109906118c3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156109d05780820151818401526020810190506109b5565b50505050905090810190601f1680156109fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610a1657600080fd5b610a1e610d4d565b6040518082815260200191505060405180910390f35b3415610a3f57600080fd5b610a47611961565b6040518082815260200191505060405180910390f35b3415610a6857600080fd5b610a9d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611967565b604051808215151515815260200191505060405180910390f35b3415610ac257600080fd5b610aca611b66565b6040518082815260200191505060405180910390f35b3415610aeb57600080fd5b610af3611b6c565b6040518082815260200191505060405180910390f35b3415610b1457600080fd5b610b2a6004808035906020019091905050611b72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b7757600080fd5b610ba3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610dc3565b604051808215151515815260200191505060405180910390f35b3415610bc857600080fd5b610c13600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611bc9565b6040518082815260200191505060405180910390f35b3415610c3457600080fd5b610c3c611c50565b604051808215151515815260200191505060405180910390f35b3415610c6157600080fd5b610c69611cd6565b6040518082815260200191505060405180910390f35b3415610c8a57600080fd5b610cb6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611ce0565b604051808215151515815260200191505060405180910390f35b3415610cdb57600080fd5b610d07600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d87565b005b3415610d1457600080fd5b610d336004808035906020019091908035906020019091905050611e25565b604051808215151515815260200191505060405180910390f35b6000601154905090565b60008082840290506000841480610d785750828482811515610d7557fe5b04145b1515610d8057fe5b8091505092915050565b6000808284811515610d9857fe5b0490508091505092915050565b6000808284019050838110151515610db957fe5b8091505092915050565b600080600090506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141515610ef957601380549050601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060138054809190600101610e7091906120a7565b50826013610e8d6001601380549050611ec390919063ffffffff16565b815481101515610e9957fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008154809291906001019190505550600190505b80915050919050565b600f5481565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f9e5780601f10610f7357610100808354040283529160200191610f9e565b820191906000526020600020905b815481529060010190602001808311610f8157829003601f168201915b505050505081565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110fc57600080fd5b611104611edc565b6005549450600093505b6111276001601380549050611ec390919063ffffffff16565b8410156112a25761113784611b72565b9250611162611153601b54600b54610d8a90919063ffffffff16565b86610d8a90919063ffffffff16565b9150611193601b54611185846111778761169e565b610d8a90919063ffffffff16565b610d5790919063ffffffff16565b90506111e781600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da590919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061123f81600554610da590919063ffffffff16565b6005819055508273ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3838060010194505061110e565b60019550505050505090565b600d5481565b60055481565b600060126112d2600184610da590919063ffffffff16565b8154811015156112de57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006060600481016000369050101561132957600080fd5b82600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101580156113f4575082600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561147f5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401115b156116165782600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555082600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a36001915061161b565b600091505b509392505050565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60035481565b60045481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e5481565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561174b57600080fd5b60008311151561175a57600080fd5b82905080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550806005600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600191505092915050565b600a5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118a357600080fd5b6000821115156118b257600080fd5b816011819055506011549050919050565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119595780601f1061192e57610100808354040283529160200191611959565b820191906000526020600020905b81548152906001019060200180831161193c57829003601f168201915b505050505081565b60115481565b60006040600481016000369050101561197f57600080fd5b82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410158015611a4d5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205401115b15611b5a5782600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150611b5f565b600091505b5092915050565b600b5481565b60105481565b60006013611b8a600184610da590919063ffffffff16565b815481101515611b9657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cad57600080fd5b42600f819055506001601460006101000a81548160ff0219169083151502179055506001905090565b6000600f54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d3d57600080fd5b81600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611de257600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8257600080fd5b4282111515611e9057600080fd5b82600e8190555081600f819055506000601460006101000a81548160ff0219169083151502179055506001905092915050565b6000828211151515611ed157fe5b818303905092915050565b60008060008092505b611efe6001601380549050611ec390919063ffffffff16565b831015611f7557611f0e83611b72565b9150611f198261169e565b9050611f2482611f7a565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508280600101935050611ee5565b505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156120a457601280549050601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506012805480919060010161201f91906120a7565b5080601261203c6001601280549050611ec390919063ffffffff16565b81548110151561204857fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c600081548092919060010191905055505b50565b8154818355818115116120ce578183600052602060002091820191016120cd91906120d3565b5b505050565b6120f591905b808211156120f15760008160009055506001016120d9565b5090565b905600a165627a7a723058205188ab103b0dfc4cb6f633cf74eaf23dc71b06a8b9b8f6df6bf6e786144fb07f0029