60c06040526000805560006007556361f42f20600a60006101000a81548163ffffffff021916908363ffffffff1602179055506361f44b40600a60046101000a81548163ffffffff021916908363ffffffff16021790555073ab8da4a15424e0a51b31317f3a69f76f1c4033c1600a60086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000b957600080fd5b506040518060400160405280601181526020017f5370617469616c204672657175656e63790000000000000000000000000000008152506040518060400160405280600381526020017f5350460000000000000000000000000000000000000000000000000000000000815250600360ff166103e76000811162000174576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200016b9062000433565b60405180910390fd5b60008211620001ba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b190620004cb565b60405180910390fd5b8360019080519060200190620001d2929190620002fc565b508260029080519060200190620001eb929190620002fc565b508160a0818152505080608081815250505050505062000220620002146200022e60201b60201c565b6200023660201b60201c565b600160098190555062000552565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200030a906200051c565b90600052602060002090601f0160209004810192826200032e57600085556200037a565b82601f106200034957805160ff19168380011785556200037a565b828001600101855582156200037a579182015b82811115620003795782518255916020019190600101906200035c565b5b5090506200038991906200038d565b5090565b5b80821115620003a85760008160009055506001016200038e565b5090565b600082825260208201905092915050565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60006200041b602e83620003ac565b91506200042882620003bd565b604082019050919050565b600060208201905081810360008301526200044e816200040c565b9050919050565b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b6000620004b3602783620003ac565b9150620004c08262000455565b604082019050919050565b60006020820190508181036000830152620004e681620004a4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200053557607f821691505b602082108114156200054c576200054b620004ed565b5b50919050565b60805160a0516151b562000586600039600081816126a9015281816126d20152612e6d0152600061155c01526151b56000f3fe6080604052600436106102255760003560e01c80637de8690911610123578063ac5227cf116100ab578063d7aed2451161006f578063d7aed24514610820578063dc33e6811461085d578063e985e9c51461089a578063f2fde38b146108d7578063fd0daa571461090057610225565b8063ac5227cf14610739578063b88d4fde14610764578063c87b56dd1461078d578063d2d8cb67146107ca578063d7224ba0146107f557610225565b80639231ab2a116100f25780639231ab2a1461065457806395d89b41146106915780639737e730146106bc578063a22cb465146106f9578063ac4460021461072257610225565b80637de86909146105bb5780637f649783146105e45780638ca887ca1461060d5780638da5cb5b1461062957610225565b80633f5e4741116101b15780635fd84c28116101755780635fd84c28146104d65780636352211e146104ff5780636bb7b1d91461053c57806370a0823114610567578063715018a6146105a457610225565b80633f5e4741146103f157806342842e0e1461041c5780634f6ccce71461044557806355f804b3146104825780635f31c7fb146104ab57610225565b806317bb0556116101f857806317bb0556146102f857806318160ddd14610335578063230b43f41461036057806323b872dd1461038b5780632f745c59146103b457610225565b806301ffc9a71461022a57806306fdde0314610267578063081812fc14610292578063095ea7b3146102cf575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906133e7565b61092b565b60405161025e919061342f565b60405180910390f35b34801561027357600080fd5b5061027c610a75565b60405161028991906134e3565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b4919061353b565b610b07565b6040516102c691906135a9565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f191906135f0565b610b8c565b005b34801561030457600080fd5b5061031f600480360381019061031a9190613630565b610ca5565b60405161032c919061366c565b60405180910390f35b34801561034157600080fd5b5061034a610d1c565b604051610357919061366c565b60405180910390f35b34801561036c57600080fd5b50610375610d25565b60405161038291906136a6565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad91906136c1565b610d3b565b005b3480156103c057600080fd5b506103db60048036038101906103d691906135f0565b610d4b565b6040516103e8919061366c565b60405180910390f35b3480156103fd57600080fd5b50610406610f49565b604051610413919061342f565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906136c1565b610f6c565b005b34801561045157600080fd5b5061046c6004803603810190610467919061353b565b610f8c565b604051610479919061366c565b60405180910390f35b34801561048e57600080fd5b506104a960048036038101906104a49190613779565b610fdf565b005b3480156104b757600080fd5b506104c0611071565b6040516104cd91906137e2565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f89190613829565b611076565b005b34801561050b57600080fd5b506105266004803603810190610521919061353b565b611116565b60405161053391906135a9565b60405180910390f35b34801561054857600080fd5b5061055161112c565b60405161055e91906136a6565b60405180910390f35b34801561057357600080fd5b5061058e60048036038101906105899190613630565b611142565b60405161059b919061366c565b60405180910390f35b3480156105b057600080fd5b506105b961122b565b005b3480156105c757600080fd5b506105e260048036038101906105dd9190613829565b6112b3565b005b3480156105f057600080fd5b5061060b60048036038101906106069190613994565b611353565b005b6106276004803603810190610622919061353b565b6114a9565b005b34801561063557600080fd5b5061063e611825565b60405161064b91906135a9565b60405180910390f35b34801561066057600080fd5b5061067b6004803603810190610676919061353b565b61184f565b6040516106889190613a3e565b60405180910390f35b34801561069d57600080fd5b506106a6611867565b6040516106b391906134e3565b60405180910390f35b3480156106c857600080fd5b506106e360048036038101906106de9190613630565b6118f9565b6040516106f0919061366c565b60405180910390f35b34801561070557600080fd5b50610720600480360381019061071b9190613a85565b611970565b005b34801561072e57600080fd5b50610737611af1565b005b34801561074557600080fd5b5061074e611c2e565b60405161075b919061342f565b60405180910390f35b34801561077057600080fd5b5061078b60048036038101906107869190613b7a565b611c51565b005b34801561079957600080fd5b506107b460048036038101906107af919061353b565b611cad565b6040516107c191906134e3565b60405180910390f35b3480156107d657600080fd5b506107df611d60565b6040516107ec919061366c565b60405180910390f35b34801561080157600080fd5b5061080a611d6c565b604051610817919061366c565b60405180910390f35b34801561082c57600080fd5b5061084760048036038101906108429190613630565b611d72565b604051610854919061342f565b60405180910390f35b34801561086957600080fd5b50610884600480360381019061087f9190613630565b611dc8565b604051610891919061366c565b60405180910390f35b3480156108a657600080fd5b506108c160048036038101906108bc9190613bfd565b611dda565b6040516108ce919061342f565b60405180910390f35b3480156108e357600080fd5b506108fe60048036038101906108f99190613630565b611e6e565b005b34801561090c57600080fd5b50610915611f66565b60405161092291906137e2565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109f657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a5e57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a6e5750610a6d82611f6b565b5b9050919050565b606060018054610a8490613c6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab090613c6c565b8015610afd5780601f10610ad257610100808354040283529160200191610afd565b820191906000526020600020905b815481529060010190602001808311610ae057829003601f168201915b5050505050905090565b6000610b1282611fd5565b610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890613d10565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b9782611116565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90613da2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c27611fe2565b73ffffffffffffffffffffffffffffffffffffffff161480610c565750610c5581610c50611fe2565b611dda565b5b610c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8c90613e34565b60405180910390fd5b610ca0838383611fea565b505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60008054905090565b600a60009054906101000a900463ffffffff1681565b610d4683838361209c565b505050565b6000610d5683611142565b8210610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8e90613ec6565b60405180910390fd5b6000610da1610d1c565b905060008060005b83811015610f07576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e9b57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ef35786841415610ee4578195505050505050610f43565b8380610eef90613f15565b9450505b508080610eff90613f15565b915050610da9565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90613fd0565b60405180910390fd5b92915050565b6000600a60049054906101000a900463ffffffff1663ffffffff16421015905090565b610f8783838360405180602001604052806000815250611c51565b505050565b6000610f96610d1c565b8210610fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fce90614062565b60405180910390fd5b819050919050565b610fe7611fe2565b73ffffffffffffffffffffffffffffffffffffffff16611005611825565b73ffffffffffffffffffffffffffffffffffffffff161461105b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611052906140ce565b60405180910390fd5b8181600d919061106c92919061329e565b505050565b600381565b61107e611fe2565b73ffffffffffffffffffffffffffffffffffffffff1661109c611825565b73ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e9906140ce565b60405180910390fd5b80600a60046101000a81548163ffffffff021916908363ffffffff16021790555050565b600061112182612655565b600001519050919050565b600a60049054906101000a900463ffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90614160565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611233611fe2565b73ffffffffffffffffffffffffffffffffffffffff16611251611825565b73ffffffffffffffffffffffffffffffffffffffff16146112a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129e906140ce565b60405180910390fd5b6112b16000612858565b565b6112bb611fe2565b73ffffffffffffffffffffffffffffffffffffffff166112d9611825565b73ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611326906140ce565b60405180910390fd5b80600a60006101000a81548163ffffffff021916908363ffffffff16021790555050565b61135b611fe2565b73ffffffffffffffffffffffffffffffffffffffff16611379611825565b73ffffffffffffffffffffffffffffffffffffffff16146113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c6906140ce565b60405180910390fd5b60fa81511115611414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140b906141f2565b60405180910390fd5b60005b81518110156114a5576001600b600084848151811061143957611438614212565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061149d90613f15565b915050611417565b5050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e9061428d565b60405180910390fd5b6000811161155a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611551906142f9565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081611584610d1c565b61158e9190614319565b11156115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c6906143bb565b60405180910390fd5b8067013fbe85edc900006115e391906143db565b3414611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161b90614481565b60405180910390fd5b61162c610f49565b156116815761163a336118f9565b81111561167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390614513565b60405180910390fd5b611769565b611689611c2e565b156117265761169733611d72565b6116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd9061457f565b60405180910390fd5b6116df336118f9565b811115611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171890614611565b60405180910390fd5b611768565b6000611767576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175e9061467d565b60405180910390fd5b5b5b611773338261291e565b61177b610f49565b61182257600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081819054906101000a90046fffffffffffffffffffffffffffffffff16809291906117ea906146b9565b91906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505b50565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611857613324565b61186082612655565b9050919050565b60606002805461187690613c6c565b80601f01602080910402602001604051908101604052809291908181526020018280546118a290613c6c565b80156118ef5780601f106118c4576101008083540402835291602001916118ef565b820191906000526020600020905b8154815290600101906020018083116118d257829003601f168201915b5050505050905090565b6000611903610f49565b1561193a5761191182611dc8565b61191a83610ca5565b600260ff166119299190614319565b61193391906146f2565b905061196b565b611942611c2e565b156119665761195082611dc8565b600360ff1661195f91906146f2565b905061196b565b600090505b919050565b611978611fe2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119dd90614772565b60405180910390fd5b80600660006119f3611fe2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611aa0611fe2565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ae5919061342f565b60405180910390a35050565b611af9611fe2565b73ffffffffffffffffffffffffffffffffffffffff16611b17611825565b73ffffffffffffffffffffffffffffffffffffffff1614611b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b64906140ce565b60405180910390fd5b60026009541415611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa906147de565b60405180910390fd5b6002600981905550600a60089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611c23573d6000803e3d6000fd5b506001600981905550565b6000600a60009054906101000a900463ffffffff1663ffffffff16421015905090565b611c5c84848461209c565b611c688484848461293c565b611ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9e90614870565b60405180910390fd5b50505050565b6060611cb882611fd5565b611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee90614902565b60405180910390fd5b6000611d01612ac4565b90506000815111611d215760405180602001604052806000815250611d58565b80611d37600185611d329190614319565b612b56565b604051602001611d489291906149aa565b6040516020818303038152906040525b915050919050565b67013fbe85edc9000081565b60075481565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611dd382612cb7565b9050919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e76611fe2565b73ffffffffffffffffffffffffffffffffffffffff16611e94611825565b73ffffffffffffffffffffffffffffffffffffffff1614611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee1906140ce565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5190614a4b565b60405180910390fd5b611f6381612858565b50565b600281565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006120a782612655565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff166120ce611fe2565b73ffffffffffffffffffffffffffffffffffffffff16148061212a57506120f3611fe2565b73ffffffffffffffffffffffffffffffffffffffff1661211284610b07565b73ffffffffffffffffffffffffffffffffffffffff16145b8061214657506121458260000151612140611fe2565b611dda565b5b905080612188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217f90614add565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146121fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f190614b6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561226a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226190614c01565b60405180910390fd5b6122778585856001612da0565b6122876000848460000151611fea565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166122f59190614c21565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166123999190614c55565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461249f9190614319565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156125e55761251581611fd5565b156125e4576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461264d8686866001612da6565b505050505050565b61265d613324565b61266682611fd5565b6126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c90614d0d565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000083106127095760017f0000000000000000000000000000000000000000000000000000000000000000846126fc91906146f2565b6127069190614319565b90505b60008390505b818110612817576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461280357809350505050612853565b50808061280f90614d2d565b91505061270f565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284a90614dc9565b60405180910390fd5b919050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612938828260405180602001604052806000815250612dac565b5050565b600061295d8473ffffffffffffffffffffffffffffffffffffffff1661328b565b15612ab7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612986611fe2565b8786866040518563ffffffff1660e01b81526004016129a89493929190614e3e565b6020604051808303816000875af19250505080156129e457506040513d601f19601f820116820180604052508101906129e19190614e9f565b60015b612a67573d8060008114612a14576040519150601f19603f3d011682016040523d82523d6000602084013e612a19565b606091505b50600081511415612a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5690614870565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612abc565b600190505b949350505050565b6060600d8054612ad390613c6c565b80601f0160208091040260200160405190810160405280929190818152602001828054612aff90613c6c565b8015612b4c5780601f10612b2157610100808354040283529160200191612b4c565b820191906000526020600020905b815481529060010190602001808311612b2f57829003601f168201915b5050505050905090565b60606000821415612b9e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612cb2565b600082905060005b60008214612bd0578080612bb990613f15565b915050600a82612bc99190614efb565b9150612ba6565b60008167ffffffffffffffff811115612bec57612beb613856565b5b6040519080825280601f01601f191660200182016040528015612c1e5781602001600182028036833780820191505090505b5090505b60008514612cab57600182612c3791906146f2565b9150600a85612c469190614f2c565b6030612c529190614319565b60f81b818381518110612c6857612c67614212565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612ca49190614efb565b9450612c22565b8093505050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1f90614fcf565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1990615061565b60405180910390fd5b612e2b81611fd5565b15612e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e62906150cd565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115612ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec59061515f565b60405180910390fd5b612edb6000858386612da0565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612fd89190614c55565b6fffffffffffffffffffffffffffffffff168152602001858360200151612fff9190614c55565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561326e57818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461320e600088848861293c565b61324d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324490614870565b60405180910390fd5b818061325890613f15565b925050808061326690613f15565b91505061319d565b50806000819055506132836000878588612da6565b505050505050565b600080823b905060008111915050919050565b8280546132aa90613c6c565b90600052602060002090601f0160209004810192826132cc5760008555613313565b82601f106132e557803560ff1916838001178555613313565b82800160010185558215613313579182015b828111156133125782358255916020019190600101906132f7565b5b509050613320919061335e565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b8082111561337757600081600090555060010161335f565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6133c48161338f565b81146133cf57600080fd5b50565b6000813590506133e1816133bb565b92915050565b6000602082840312156133fd576133fc613385565b5b600061340b848285016133d2565b91505092915050565b60008115159050919050565b61342981613414565b82525050565b60006020820190506134446000830184613420565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613484578082015181840152602081019050613469565b83811115613493576000848401525b50505050565b6000601f19601f8301169050919050565b60006134b58261344a565b6134bf8185613455565b93506134cf818560208601613466565b6134d881613499565b840191505092915050565b600060208201905081810360008301526134fd81846134aa565b905092915050565b6000819050919050565b61351881613505565b811461352357600080fd5b50565b6000813590506135358161350f565b92915050565b60006020828403121561355157613550613385565b5b600061355f84828501613526565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061359382613568565b9050919050565b6135a381613588565b82525050565b60006020820190506135be600083018461359a565b92915050565b6135cd81613588565b81146135d857600080fd5b50565b6000813590506135ea816135c4565b92915050565b6000806040838503121561360757613606613385565b5b6000613615858286016135db565b925050602061362685828601613526565b9150509250929050565b60006020828403121561364657613645613385565b5b6000613654848285016135db565b91505092915050565b61366681613505565b82525050565b6000602082019050613681600083018461365d565b92915050565b600063ffffffff82169050919050565b6136a081613687565b82525050565b60006020820190506136bb6000830184613697565b92915050565b6000806000606084860312156136da576136d9613385565b5b60006136e8868287016135db565b93505060206136f9868287016135db565b925050604061370a86828701613526565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f84011261373957613738613714565b5b8235905067ffffffffffffffff81111561375657613755613719565b5b6020830191508360018202830111156137725761377161371e565b5b9250929050565b600080602083850312156137905761378f613385565b5b600083013567ffffffffffffffff8111156137ae576137ad61338a565b5b6137ba85828601613723565b92509250509250929050565b600060ff82169050919050565b6137dc816137c6565b82525050565b60006020820190506137f760008301846137d3565b92915050565b61380681613687565b811461381157600080fd5b50565b600081359050613823816137fd565b92915050565b60006020828403121561383f5761383e613385565b5b600061384d84828501613814565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61388e82613499565b810181811067ffffffffffffffff821117156138ad576138ac613856565b5b80604052505050565b60006138c061337b565b90506138cc8282613885565b919050565b600067ffffffffffffffff8211156138ec576138eb613856565b5b602082029050602081019050919050565b600061391061390b846138d1565b6138b6565b905080838252602082019050602084028301858111156139335761393261371e565b5b835b8181101561395c578061394888826135db565b845260208401935050602081019050613935565b5050509392505050565b600082601f83011261397b5761397a613714565b5b813561398b8482602086016138fd565b91505092915050565b6000602082840312156139aa576139a9613385565b5b600082013567ffffffffffffffff8111156139c8576139c761338a565b5b6139d484828501613966565b91505092915050565b6139e681613588565b82525050565b600067ffffffffffffffff82169050919050565b613a09816139ec565b82525050565b604082016000820151613a2560008501826139dd565b506020820151613a386020850182613a00565b50505050565b6000604082019050613a536000830184613a0f565b92915050565b613a6281613414565b8114613a6d57600080fd5b50565b600081359050613a7f81613a59565b92915050565b60008060408385031215613a9c57613a9b613385565b5b6000613aaa858286016135db565b9250506020613abb85828601613a70565b9150509250929050565b600080fd5b600067ffffffffffffffff821115613ae557613ae4613856565b5b613aee82613499565b9050602081019050919050565b82818337600083830152505050565b6000613b1d613b1884613aca565b6138b6565b905082815260208101848484011115613b3957613b38613ac5565b5b613b44848285613afb565b509392505050565b600082601f830112613b6157613b60613714565b5b8135613b71848260208601613b0a565b91505092915050565b60008060008060808587031215613b9457613b93613385565b5b6000613ba2878288016135db565b9450506020613bb3878288016135db565b9350506040613bc487828801613526565b925050606085013567ffffffffffffffff811115613be557613be461338a565b5b613bf187828801613b4c565b91505092959194509250565b60008060408385031215613c1457613c13613385565b5b6000613c22858286016135db565b9250506020613c33858286016135db565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613c8457607f821691505b60208210811415613c9857613c97613c3d565b5b50919050565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b6000613cfa602d83613455565b9150613d0582613c9e565b604082019050919050565b60006020820190508181036000830152613d2981613ced565b9050919050565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d8c602283613455565b9150613d9782613d30565b604082019050919050565b60006020820190508181036000830152613dbb81613d7f565b9050919050565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b6000613e1e603983613455565b9150613e2982613dc2565b604082019050919050565b60006020820190508181036000830152613e4d81613e11565b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b6000613eb0602283613455565b9150613ebb82613e54565b604082019050919050565b60006020820190508181036000830152613edf81613ea3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613f2082613505565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f5357613f52613ee6565b5b600182019050919050565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b6000613fba602e83613455565b9150613fc582613f5e565b604082019050919050565b60006020820190508181036000830152613fe981613fad565b9050919050565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b600061404c602383613455565b915061405782613ff0565b604082019050919050565b6000602082019050818103600083015261407b8161403f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140b8602083613455565b91506140c382614082565b602082019050919050565b600060208201905081810360008301526140e7816140ab565b9050919050565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b600061414a602b83613455565b9150614155826140ee565b604082019050919050565b600060208201905081810360008301526141798161413d565b9050919050565b7f457863656564696e67206c696d6974206f66203235302061646472657373657360008201527f20706572206f7065726174696f6e000000000000000000000000000000000000602082015250565b60006141dc602e83613455565b91506141e782614180565b604082019050919050565b6000602082019050818103600083015261420b816141cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b6000614277601e83613455565b915061428282614241565b602082019050919050565b600060208201905081810360008301526142a68161426a565b9050919050565b7f43616e2774206d696e74206c657373207468656e203120746f6b656e00000000600082015250565b60006142e3601c83613455565b91506142ee826142ad565b602082019050919050565b60006020820190508181036000830152614312816142d6565b9050919050565b600061432482613505565b915061432f83613505565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561436457614363613ee6565b5b828201905092915050565b7f52656163686564206d617820737570706c790000000000000000000000000000600082015250565b60006143a5601283613455565b91506143b08261436f565b602082019050919050565b600060208201905081810360008301526143d481614398565b9050919050565b60006143e682613505565b91506143f183613505565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561442a57614429613ee6565b5b828202905092915050565b7f496e76616c696420616d6f756e74206f66204554482073656e74000000000000600082015250565b600061446b601a83613455565b915061447682614435565b602082019050919050565b6000602082019050818103600083015261449a8161445e565b9050919050565b7f457863656564696e67206d696e74696e67206c696d697420666f72207468697360008201527f206163636f756e74000000000000000000000000000000000000000000000000602082015250565b60006144fd602883613455565b9150614508826144a1565b604082019050919050565b6000602082019050818103600083015261452c816144f0565b9050919050565b7f4163636f756e74206973206e6f7420696e207468652077686974656c69737400600082015250565b6000614569601f83613455565b915061457482614533565b602082019050919050565b600060208201905081810360008301526145988161455c565b9050919050565b7f457863656564696e67206d696e74696e67206c696d697420666f72207468697360008201527f206163636f756e7420647572696e672077686974656c6973742073616c657300602082015250565b60006145fb603f83613455565b91506146068261459f565b604082019050919050565b6000602082019050818103600083015261462a816145ee565b9050919050565b7f53616c65732068617665206e6f7420626567756e207965740000000000000000600082015250565b6000614667601883613455565b915061467282614631565b602082019050919050565b600060208201905081810360008301526146968161465a565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b60006146c48261469d565b91506fffffffffffffffffffffffffffffffff8214156146e7576146e6613ee6565b5b600182019050919050565b60006146fd82613505565b915061470883613505565b92508282101561471b5761471a613ee6565b5b828203905092915050565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b600061475c601a83613455565b915061476782614726565b602082019050919050565b6000602082019050818103600083015261478b8161474f565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006147c8601f83613455565b91506147d382614792565b602082019050919050565b600060208201905081810360008301526147f7816147bb565b9050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b600061485a603383613455565b9150614865826147fe565b604082019050919050565b600060208201905081810360008301526148898161484d565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006148ec602f83613455565b91506148f782614890565b604082019050919050565b6000602082019050818103600083015261491b816148df565b9050919050565b600081905092915050565b60006149388261344a565b6149428185614922565b9350614952818560208601613466565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b6000614994600583614922565b915061499f8261495e565b600582019050919050565b60006149b6828561492d565b91506149c2828461492d565b91506149cd82614987565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a35602683613455565b9150614a40826149d9565b604082019050919050565b60006020820190508181036000830152614a6481614a28565b9050919050565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b6000614ac7603283613455565b9150614ad282614a6b565b604082019050919050565b60006020820190508181036000830152614af681614aba565b9050919050565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b6000614b59602683613455565b9150614b6482614afd565b604082019050919050565b60006020820190508181036000830152614b8881614b4c565b9050919050565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614beb602583613455565b9150614bf682614b8f565b604082019050919050565b60006020820190508181036000830152614c1a81614bde565b9050919050565b6000614c2c8261469d565b9150614c378361469d565b925082821015614c4a57614c49613ee6565b5b828203905092915050565b6000614c608261469d565b9150614c6b8361469d565b9250826fffffffffffffffffffffffffffffffff03821115614c9057614c8f613ee6565b5b828201905092915050565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b6000614cf7602a83613455565b9150614d0282614c9b565b604082019050919050565b60006020820190508181036000830152614d2681614cea565b9050919050565b6000614d3882613505565b91506000821415614d4c57614d4b613ee6565b5b600182039050919050565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b6000614db3602f83613455565b9150614dbe82614d57565b604082019050919050565b60006020820190508181036000830152614de281614da6565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614e1082614de9565b614e1a8185614df4565b9350614e2a818560208601613466565b614e3381613499565b840191505092915050565b6000608082019050614e53600083018761359a565b614e60602083018661359a565b614e6d604083018561365d565b8181036060830152614e7f8184614e05565b905095945050505050565b600081519050614e99816133bb565b92915050565b600060208284031215614eb557614eb4613385565b5b6000614ec384828501614e8a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f0682613505565b9150614f1183613505565b925082614f2157614f20614ecc565b5b828204905092915050565b6000614f3782613505565b9150614f4283613505565b925082614f5257614f51614ecc565b5b828206905092915050565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b6000614fb9603183613455565b9150614fc482614f5d565b604082019050919050565b60006020820190508181036000830152614fe881614fac565b9050919050565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061504b602183613455565b915061505682614fef565b604082019050919050565b6000602082019050818103600083015261507a8161503e565b9050919050565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b60006150b7601d83613455565b91506150c282615081565b602082019050919050565b600060208201905081810360008301526150e6816150aa565b9050919050565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b6000615149602283613455565b9150615154826150ed565b604082019050919050565b600060208201905081810360008301526151788161513c565b905091905056fea264697066735822122038856c28fbe6e2b326dae57a1e3f9cfb87e3535e810a64747ac8afb1db08550c64736f6c634300080b0033