60806040526000600b55612ee0600c556001600d60006101000a81548160ff02191690831515021790555073b800d4a8003fcb480e6445832ce4cf5a6259a7c2600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200008c57600080fd5b506040518060400160405280600d81526020017f4c6f6f6b732044414f204e4654000000000000000000000000000000000000008152506040518060400160405280600881526020017f4c6f6f6b7344414f00000000000000000000000000000000000000000000000081525081600090805190602001906200011192919062000221565b5080600190805190602001906200012a92919062000221565b5050506200014d620001416200015360201b60201c565b6200015b60201b60201c565b62000336565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200022f90620002d1565b90600052602060002090601f0160209004810192826200025357600085556200029f565b82601f106200026e57805160ff19168380011785556200029f565b828001600101855582156200029f579182015b828111156200029e57825182559160200191906001019062000281565b5b509050620002ae9190620002b2565b5090565b5b80821115620002cd576000816000905550600101620002b3565b5090565b60006002820490506001821680620002ea57607f821691505b6020821081141562000301576200030062000307565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61438580620003466000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063715018a611610104578063c4912774116100a2578063e25feef111610071578063e25feef11461052f578063e985e9c51461054b578063f2fde38b1461057b578063f47c84c514610597576101da565b8063c4912774146104a7578063c4e41b22146104c5578063c634d032146104e3578063c87b56dd146104ff576101da565b80638da5cb5b116100de5780638da5cb5b1461043357806395d89b4114610451578063a22cb4651461046f578063b88d4fde1461048b576101da565b8063715018a6146103ef5780637d9a7a4c146103f957806382b2e25714610415576101da565b806342842e0e1161017c57806359c74f291161014b57806359c74f29146103695780635ce68fe2146103735780636352211e1461038f57806370a08231146103bf576101da565b806342842e0e146102e3578063471a4294146102ff5780634f6ccce71461031d57806355f804b31461034d576101da565b8063095ea7b3116101b8578063095ea7b31461025d57806318160ddd1461027957806323b872dd146102975780632f745c59146102b3576101da565b806301ffc9a7146101df57806306fdde031461020f578063081812fc1461022d575b600080fd5b6101f960048036038101906101f49190612f9f565b6105b5565b6040516102069190613564565b60405180910390f35b6102176105c7565b604051610224919061357f565b60405180910390f35b61024760048036038101906102429190613042565b610659565b604051610254919061349d565b60405180910390f35b61027760048036038101906102729190612f32565b6106de565b005b6102816107f6565b60405161028e9190613841565b60405180910390f35b6102b160048036038101906102ac9190612e1c565b610803565b005b6102cd60048036038101906102c89190612f32565b610863565b6040516102da9190613841565b60405180910390f35b6102fd60048036038101906102f89190612e1c565b610908565b005b610307610928565b6040516103149190613564565b60405180910390f35b61033760048036038101906103329190613042565b61093b565b6040516103449190613841565b60405180910390f35b61036760048036038101906103629190612ff9565b6109ac565b005b610371610a42565b005b61038d60048036038101906103889190612daf565b610aea565b005b6103a960048036038101906103a49190613042565b610baa565b6040516103b6919061349d565b60405180910390f35b6103d960048036038101906103d49190612daf565b610c5c565b6040516103e69190613841565b60405180910390f35b6103f7610d14565b005b610413600480360381019061040e9190613042565b610d9c565b005b61041d610e35565b60405161042a9190613841565b60405180910390f35b61043b610ee7565b604051610448919061349d565b60405180910390f35b610459610f11565b604051610466919061357f565b60405180910390f35b61048960048036038101906104849190612ef2565b610fa3565b005b6104a560048036038101906104a09190612e6f565b611124565b005b6104af611186565b6040516104bc9190613841565b60405180910390f35b6104cd611190565b6040516104da9190613841565b60405180910390f35b6104fd60048036038101906104f89190613042565b61119f565b005b61051960048036038101906105149190613042565b61148e565b604051610526919061357f565b60405180910390f35b61054960048036038101906105449190612ddc565b611535565b005b61056560048036038101906105609190612ddc565b6118a5565b6040516105729190613564565b60405180910390f35b61059560048036038101906105909190612daf565b611939565b005b61059f611a31565b6040516105ac9190613841565b60405180910390f35b60006105c082611a37565b9050919050565b6060600080546105d690613af1565b80601f016020809104026020016040519081016040528092919081815260200182805461060290613af1565b801561064f5780601f106106245761010080835404028352916020019161064f565b820191906000526020600020905b81548152906001019060200180831161063257829003601f168201915b5050505050905090565b600061066482611ab1565b6106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069a90613761565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006106e982610baa565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561075a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610751906137e1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610779611b1d565b73ffffffffffffffffffffffffffffffffffffffff1614806107a857506107a7816107a2611b1d565b6118a5565b5b6107e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107de906136c1565b60405180910390fd5b6107f18383611b25565b505050565b6000600880549050905090565b61081461080e611b1d565b82611bde565b610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a90613801565b60405180910390fd5b61085e838383611cbc565b505050565b600061086e83610c5c565b82106108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a6906135a1565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61092383838360405180602001604052806000815250611124565b505050565b600d60009054906101000a900460ff1681565b60006109456107f6565b8210610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097d90613821565b60405180910390fd5b6008828154811061099a57610999613c8a565b5b90600052602060002001549050919050565b6109b4611b1d565b73ffffffffffffffffffffffffffffffffffffffff166109d2610ee7565b73ffffffffffffffffffffffffffffffffffffffff1614610a28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1f90613781565b60405180910390fd5b80600e9080519060200190610a3e929190612b99565b5050565b610a4a611b1d565b73ffffffffffffffffffffffffffffffffffffffff16610a68610ee7565b73ffffffffffffffffffffffffffffffffffffffff1614610abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab590613781565b60405180910390fd5b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b610af2611b1d565b73ffffffffffffffffffffffffffffffffffffffff16610b10610ee7565b73ffffffffffffffffffffffffffffffffffffffff1614610b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5d90613781565b60405180910390fd5b80600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a90613701565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc4906136e1565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d1c611b1d565b73ffffffffffffffffffffffffffffffffffffffff16610d3a610ee7565b73ffffffffffffffffffffffffffffffffffffffff1614610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8790613781565b60405180910390fd5b610d9a6000611f18565b565b610da4611b1d565b73ffffffffffffffffffffffffffffffffffffffff16610dc2610ee7565b73ffffffffffffffffffffffffffffffffffffffff1614610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f90613781565b60405180910390fd5b670de0b6b3a764000081610e2c91906139ad565b600b8190555050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610e92919061349d565b60206040518083038186803b158015610eaa57600080fd5b505afa158015610ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee2919061306f565b905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610f2090613af1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f4c90613af1565b8015610f995780601f10610f6e57610100808354040283529160200191610f99565b820191906000526020600020905b815481529060010190602001808311610f7c57829003601f168201915b5050505050905090565b610fab611b1d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611019576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101090613641565b60405180910390fd5b8060056000611026611b1d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166110d3611b1d565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516111189190613564565b60405180910390a35050565b61113561112f611b1d565b83611bde565b611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116b90613801565b60405180910390fd5b61118084848484611fde565b50505050565b6000600b54905090565b600061119a6107f6565b905090565b600d60009054906101000a900460ff166111ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e590613681565b60405180910390fd5b600c54816111fa6107f6565b6112049190613926565b1115611245576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123c90613721565b60405180910390fd5b600081600b5461125591906139ad565b9050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016112b2919061349d565b60206040518083038186803b1580156112ca57600080fd5b505afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611302919061306f565b811115611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b90613661565b60405180910390fd5b60005b82811015611489576000600161135b6107f6565b6113659190613926565b9050611371338261203a565b6000600b54111561143157600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330600b546040518463ffffffff1660e01b81526004016113dd939291906134b8565b602060405180830381600087803b1580156113f757600080fd5b505af115801561140b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142f9190612f72565b505b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050808061148190613b54565b915050611347565b505050565b606061149982611ab1565b6114d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cf906137c1565b60405180910390fd5b60006114e2612058565b90506000815111611502576040518060200160405280600081525061152d565b8061150c846120ea565b60405160200161151d92919061346e565b6040516020818303038152906040525b915050919050565b61153d611b1d565b73ffffffffffffffffffffffffffffffffffffffff1661155b610ee7565b73ffffffffffffffffffffffffffffffffffffffff16146115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890613781565b60405180910390fd5b600060046003600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611612919061349d565b60206040518083038186803b15801561162a57600080fd5b505afa15801561163e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611662919061306f565b61166c91906139ad565b611676919061397c565b9050600060046001600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116d9919061349d565b60206040518083038186803b1580156116f157600080fd5b505afa158015611705573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611729919061306f565b61173391906139ad565b61173d919061397c565b9050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b815260040161179c92919061353b565b602060405180830381600087803b1580156117b657600080fd5b505af11580156117ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ee9190612f72565b50600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b815260040161184c92919061353b565b602060405180830381600087803b15801561186657600080fd5b505af115801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190612f72565b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611941611b1d565b73ffffffffffffffffffffffffffffffffffffffff1661195f610ee7565b73ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613781565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c906135e1565b60405180910390fd5b611a2e81611f18565b50565b600c5481565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611aaa5750611aa98261224b565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611b9883610baa565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611be982611ab1565b611c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1f906136a1565b60405180910390fd5b6000611c3383610baa565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ca257508373ffffffffffffffffffffffffffffffffffffffff16611c8a84610659565b73ffffffffffffffffffffffffffffffffffffffff16145b80611cb35750611cb281856118a5565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611cdc82610baa565b73ffffffffffffffffffffffffffffffffffffffff1614611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d29906137a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9990613621565b60405180910390fd5b611dad83838361232d565b611db8600082611b25565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e089190613a07565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e5f9190613926565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611fe9848484611cbc565b611ff58484848461233d565b612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202b906135c1565b60405180910390fd5b50505050565b6120548282604051806020016040528060008152506124d4565b5050565b6060600e805461206790613af1565b80601f016020809104026020016040519081016040528092919081815260200182805461209390613af1565b80156120e05780601f106120b5576101008083540402835291602001916120e0565b820191906000526020600020905b8154815290600101906020018083116120c357829003601f168201915b5050505050905090565b60606000821415612132576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612246565b600082905060005b6000821461216457808061214d90613b54565b915050600a8261215d919061397c565b915061213a565b60008167ffffffffffffffff8111156121805761217f613cb9565b5b6040519080825280601f01601f1916602001820160405280156121b25781602001600182028036833780820191505090505b5090505b6000851461223f576001826121cb9190613a07565b9150600a856121da9190613b9d565b60306121e69190613926565b60f81b8183815181106121fc576121fb613c8a565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612238919061397c565b94506121b6565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061231657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061232657506123258261252f565b5b9050919050565b612338838383612599565b505050565b600061235e8473ffffffffffffffffffffffffffffffffffffffff166126ad565b156124c7578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612387611b1d565b8786866040518563ffffffff1660e01b81526004016123a994939291906134ef565b602060405180830381600087803b1580156123c357600080fd5b505af19250505080156123f457506040513d601f19601f820116820180604052508101906123f19190612fcc565b60015b612477573d8060008114612424576040519150601f19603f3d011682016040523d82523d6000602084013e612429565b606091505b5060008151141561246f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612466906135c1565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506124cc565b600190505b949350505050565b6124de83836126c0565b6124eb600084848461233d565b61252a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612521906135c1565b60405180910390fd5b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6125a483838361288e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125e7576125e281612893565b612626565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126255761262483826128dc565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126695761266481612a49565b6126a8565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146126a7576126a68282612b1a565b5b5b505050565b600080823b905060008111915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272790613741565b60405180910390fd5b61273981611ab1565b15612779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277090613601565b60405180910390fd5b6127856000838361232d565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127d59190613926565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016128e984610c5c565b6128f39190613a07565b90506000600760008481526020019081526020016000205490508181146129d8576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050612a5d9190613a07565b9050600060096000848152602001908152602001600020549050600060088381548110612a8d57612a8c613c8a565b5b906000526020600020015490508060088381548110612aaf57612aae613c8a565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612afe57612afd613c5b565b5b6001900381819060005260206000200160009055905550505050565b6000612b2583610c5c565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b828054612ba590613af1565b90600052602060002090601f016020900481019282612bc75760008555612c0e565b82601f10612be057805160ff1916838001178555612c0e565b82800160010185558215612c0e579182015b82811115612c0d578251825591602001919060010190612bf2565b5b509050612c1b9190612c1f565b5090565b5b80821115612c38576000816000905550600101612c20565b5090565b6000612c4f612c4a84613881565b61385c565b905082815260208101848484011115612c6b57612c6a613ced565b5b612c76848285613aaf565b509392505050565b6000612c91612c8c846138b2565b61385c565b905082815260208101848484011115612cad57612cac613ced565b5b612cb8848285613aaf565b509392505050565b600081359050612ccf816142f3565b92915050565b600081359050612ce48161430a565b92915050565b600081519050612cf98161430a565b92915050565b600081359050612d0e81614321565b92915050565b600081519050612d2381614321565b92915050565b600082601f830112612d3e57612d3d613ce8565b5b8135612d4e848260208601612c3c565b91505092915050565b600082601f830112612d6c57612d6b613ce8565b5b8135612d7c848260208601612c7e565b91505092915050565b600081359050612d9481614338565b92915050565b600081519050612da981614338565b92915050565b600060208284031215612dc557612dc4613cf7565b5b6000612dd384828501612cc0565b91505092915050565b60008060408385031215612df357612df2613cf7565b5b6000612e0185828601612cc0565b9250506020612e1285828601612cc0565b9150509250929050565b600080600060608486031215612e3557612e34613cf7565b5b6000612e4386828701612cc0565b9350506020612e5486828701612cc0565b9250506040612e6586828701612d85565b9150509250925092565b60008060008060808587031215612e8957612e88613cf7565b5b6000612e9787828801612cc0565b9450506020612ea887828801612cc0565b9350506040612eb987828801612d85565b925050606085013567ffffffffffffffff811115612eda57612ed9613cf2565b5b612ee687828801612d29565b91505092959194509250565b60008060408385031215612f0957612f08613cf7565b5b6000612f1785828601612cc0565b9250506020612f2885828601612cd5565b9150509250929050565b60008060408385031215612f4957612f48613cf7565b5b6000612f5785828601612cc0565b9250506020612f6885828601612d85565b9150509250929050565b600060208284031215612f8857612f87613cf7565b5b6000612f9684828501612cea565b91505092915050565b600060208284031215612fb557612fb4613cf7565b5b6000612fc384828501612cff565b91505092915050565b600060208284031215612fe257612fe1613cf7565b5b6000612ff084828501612d14565b91505092915050565b60006020828403121561300f5761300e613cf7565b5b600082013567ffffffffffffffff81111561302d5761302c613cf2565b5b61303984828501612d57565b91505092915050565b60006020828403121561305857613057613cf7565b5b600061306684828501612d85565b91505092915050565b60006020828403121561308557613084613cf7565b5b600061309384828501612d9a565b91505092915050565b6130a581613a3b565b82525050565b6130b481613a4d565b82525050565b60006130c5826138e3565b6130cf81856138f9565b93506130df818560208601613abe565b6130e881613cfc565b840191505092915050565b60006130fe826138ee565b613108818561390a565b9350613118818560208601613abe565b61312181613cfc565b840191505092915050565b6000613137826138ee565b613141818561391b565b9350613151818560208601613abe565b80840191505092915050565b600061316a602b8361390a565b915061317582613d0d565b604082019050919050565b600061318d60328361390a565b915061319882613d5c565b604082019050919050565b60006131b060268361390a565b91506131bb82613dab565b604082019050919050565b60006131d3601c8361390a565b91506131de82613dfa565b602082019050919050565b60006131f660248361390a565b915061320182613e23565b604082019050919050565b600061321960198361390a565b915061322482613e72565b602082019050919050565b600061323c601a8361390a565b915061324782613e9b565b602082019050919050565b600061325f60228361390a565b915061326a82613ec4565b604082019050919050565b6000613282602c8361390a565b915061328d82613f13565b604082019050919050565b60006132a560388361390a565b91506132b082613f62565b604082019050919050565b60006132c8602a8361390a565b91506132d382613fb1565b604082019050919050565b60006132eb60298361390a565b91506132f682614000565b604082019050919050565b600061330e602a8361390a565b91506133198261404f565b604082019050919050565b600061333160208361390a565b915061333c8261409e565b602082019050919050565b6000613354602c8361390a565b915061335f826140c7565b604082019050919050565b600061337760058361391b565b915061338282614116565b600582019050919050565b600061339a60208361390a565b91506133a58261413f565b602082019050919050565b60006133bd60298361390a565b91506133c882614168565b604082019050919050565b60006133e0602f8361390a565b91506133eb826141b7565b604082019050919050565b600061340360218361390a565b915061340e82614206565b604082019050919050565b600061342660318361390a565b915061343182614255565b604082019050919050565b6000613449602c8361390a565b9150613454826142a4565b604082019050919050565b61346881613aa5565b82525050565b600061347a828561312c565b9150613486828461312c565b91506134918261336a565b91508190509392505050565b60006020820190506134b2600083018461309c565b92915050565b60006060820190506134cd600083018661309c565b6134da602083018561309c565b6134e7604083018461345f565b949350505050565b6000608082019050613504600083018761309c565b613511602083018661309c565b61351e604083018561345f565b818103606083015261353081846130ba565b905095945050505050565b6000604082019050613550600083018561309c565b61355d602083018461345f565b9392505050565b600060208201905061357960008301846130ab565b92915050565b6000602082019050818103600083015261359981846130f3565b905092915050565b600060208201905081810360008301526135ba8161315d565b9050919050565b600060208201905081810360008301526135da81613180565b9050919050565b600060208201905081810360008301526135fa816131a3565b9050919050565b6000602082019050818103600083015261361a816131c6565b9050919050565b6000602082019050818103600083015261363a816131e9565b9050919050565b6000602082019050818103600083015261365a8161320c565b9050919050565b6000602082019050818103600083015261367a8161322f565b9050919050565b6000602082019050818103600083015261369a81613252565b9050919050565b600060208201905081810360008301526136ba81613275565b9050919050565b600060208201905081810360008301526136da81613298565b9050919050565b600060208201905081810360008301526136fa816132bb565b9050919050565b6000602082019050818103600083015261371a816132de565b9050919050565b6000602082019050818103600083015261373a81613301565b9050919050565b6000602082019050818103600083015261375a81613324565b9050919050565b6000602082019050818103600083015261377a81613347565b9050919050565b6000602082019050818103600083015261379a8161338d565b9050919050565b600060208201905081810360008301526137ba816133b0565b9050919050565b600060208201905081810360008301526137da816133d3565b9050919050565b600060208201905081810360008301526137fa816133f6565b9050919050565b6000602082019050818103600083015261381a81613419565b9050919050565b6000602082019050818103600083015261383a8161343c565b9050919050565b6000602082019050613856600083018461345f565b92915050565b6000613866613877565b90506138728282613b23565b919050565b6000604051905090565b600067ffffffffffffffff82111561389c5761389b613cb9565b5b6138a582613cfc565b9050602081019050919050565b600067ffffffffffffffff8211156138cd576138cc613cb9565b5b6138d682613cfc565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061393182613aa5565b915061393c83613aa5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561397157613970613bce565b5b828201905092915050565b600061398782613aa5565b915061399283613aa5565b9250826139a2576139a1613bfd565b5b828204905092915050565b60006139b882613aa5565b91506139c383613aa5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139fc576139fb613bce565b5b828202905092915050565b6000613a1282613aa5565b9150613a1d83613aa5565b925082821015613a3057613a2f613bce565b5b828203905092915050565b6000613a4682613a85565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613adc578082015181840152602081019050613ac1565b83811115613aeb576000848401525b50505050565b60006002820490506001821680613b0957607f821691505b60208210811415613b1d57613b1c613c2c565b5b50919050565b613b2c82613cfc565b810181811067ffffffffffffffff82111715613b4b57613b4a613cb9565b5b80604052505050565b6000613b5f82613aa5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b9257613b91613bce565b5b600182019050919050565b6000613ba882613aa5565b9150613bb383613aa5565b925082613bc357613bc2613bfd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f596f75722062616c616e6365206973206e6f7420656e6f756768000000000000600082015250565b7f53616c65206d7573742062652061637469766520746f206d696e7420546f6b6560008201527f6e73000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f507572636861736520776f756c6420657863656564206d617820737570706c7960008201527f206f6620746f6b656e7300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6142fc81613a3b565b811461430757600080fd5b50565b61431381613a4d565b811461431e57600080fd5b50565b61432a81613a59565b811461433557600080fd5b50565b61434181613aa5565b811461434c57600080fd5b5056fea2646970667358221220388e36916e9e035497c80ad2b3246e5afbbe8d7e1dee24817d14bd7f304f989064736f6c63430008070033