From dbce59d4e1cd49f468c83c17753f356175a30074 Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Fri, 22 Nov 2019 10:44:05 +0100 Subject: [PATCH 01/10] fundingmanager: do not calculate unused policy values --- fundingmanager.go | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/fundingmanager.go b/fundingmanager.go index ac89aeaa9..3c4538e2e 100644 --- a/fundingmanager.go +++ b/fundingmanager.go @@ -2375,30 +2375,13 @@ func (f *fundingManager) annAfterSixConfs(completeChan *channeldb.OpenChannel, fndgLog.Infof("Announcing ChannelPoint(%v), short_chan_id=%v", &fundingPoint, shortChanID) - // We'll obtain the min HTLC value we can forward in our - // direction, as we'll use this value within our ChannelUpdate. - // This constraint is originally set by the remote node, as it - // will be the one that will need to determine the smallest - // HTLC it deems economically relevant. - fwdMinHTLC := completeChan.LocalChanCfg.MinHTLC - - // We'll obtain the max HTLC value we can forward in our - // direction, as we'll use this value within our ChannelUpdate. - // This value must be <= channel capacity and <= the maximum - // in-flight msats set by the peer. - fwdMaxHTLC := completeChan.LocalChanCfg.MaxPendingAmount - capacityMSat := lnwire.NewMSatFromSatoshis(completeChan.Capacity) - if fwdMaxHTLC > capacityMSat { - fwdMaxHTLC = capacityMSat - } - // Create and broadcast the proofs required to make this channel // public and usable for other nodes for routing. err = f.announceChannel( f.cfg.IDKey, completeChan.IdentityPub, completeChan.LocalChanCfg.MultiSigKey.PubKey, completeChan.RemoteChanCfg.MultiSigKey.PubKey, - *shortChanID, chanID, fwdMinHTLC, fwdMaxHTLC, + *shortChanID, chanID, ) if err != nil { return fmt.Errorf("channel announcement failed: %v", err) @@ -2690,15 +2673,18 @@ func (f *fundingManager) newChanAnnouncement(localPubKey, remotePubKey, // finish, either successfully or with an error. func (f *fundingManager) announceChannel(localIDKey, remoteIDKey, localFundingKey, remoteFundingKey *btcec.PublicKey, shortChanID lnwire.ShortChannelID, - chanID lnwire.ChannelID, fwdMinHTLC, fwdMaxHTLC lnwire.MilliSatoshi) error { + chanID lnwire.ChannelID) error { // First, we'll create the batch of announcements to be sent upon // initial channel creation. This includes the channel announcement // itself, the channel update announcement, and our half of the channel // proof needed to fully authenticate the channel. + // + // We can pass in zeroes for the min and max htlc policy, because we + // only use the channel announcement message from the returned struct. ann, err := f.newChanAnnouncement(localIDKey, remoteIDKey, localFundingKey, remoteFundingKey, shortChanID, chanID, - fwdMinHTLC, fwdMaxHTLC, + 0, 0, ) if err != nil { fndgLog.Errorf("can't generate channel announcement: %v", err) From d8fd6fae2338629015d7f35cab1f352483d50307 Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Fri, 15 Nov 2019 09:41:01 +0100 Subject: [PATCH 02/10] config+channeldb: describe min_htlc fields more accurately --- channeldb/graph.go | 4 ++-- config.go | 2 +- server.go | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/channeldb/graph.go b/channeldb/graph.go index 275d6858b..c38876557 100644 --- a/channeldb/graph.go +++ b/channeldb/graph.go @@ -2767,11 +2767,11 @@ type ChannelEdgePolicy struct { // the node would like to HTLC exchanges. TimeLockDelta uint16 - // MinHTLC is the smallest value HTLC this node will accept, expressed + // MinHTLC is the smallest value HTLC this node will forward, expressed // in millisatoshi. MinHTLC lnwire.MilliSatoshi - // MaxHTLC is the largest value HTLC this node will accept, expressed + // MaxHTLC is the largest value HTLC this node will forward, expressed // in millisatoshi. MaxHTLC lnwire.MilliSatoshi diff --git a/config.go b/config.go index 35f02d686..e9e0fb59b 100644 --- a/config.go +++ b/config.go @@ -166,7 +166,7 @@ type chainConfig struct { DefaultNumChanConfs int `long:"defaultchanconfs" description:"The default number of confirmations a channel must have before it's considered open. If this is not set, we will scale the value according to the channel size."` DefaultRemoteDelay int `long:"defaultremotedelay" description:"The default number of blocks we will require our channel counterparty to wait before accessing its funds in case of unilateral close. If this is not set, we will scale the value according to the channel size."` - MinHTLC lnwire.MilliSatoshi `long:"minhtlc" description:"The smallest HTLC we are willing to forward on our channels, in millisatoshi"` + MinHTLC lnwire.MilliSatoshi `long:"minhtlc" description:"The smallest HTLC we are willing to accept on our channels, in millisatoshi"` BaseFee lnwire.MilliSatoshi `long:"basefee" description:"The base fee in millisatoshi we will charge for forwarding payments on our channels"` FeeRate lnwire.MilliSatoshi `long:"feerate" description:"The fee rate used when forwarding payments on our channels. The total fee charged is basefee + (amount * feerate / 1000000), where amount is the forwarded amount."` TimeLockDelta uint32 `long:"timelockdelta" description:"The CLTV delta we will subtract from a forwarded HTLC's timelock value"` diff --git a/server.go b/server.go index dd8fadc2b..74888bc40 100644 --- a/server.go +++ b/server.go @@ -3084,6 +3084,7 @@ type openChanReq struct { private bool + // minHtlc is the minimum incoming htlc that we accept. minHtlc lnwire.MilliSatoshi remoteCsvDelay uint16 From ddb98fcc41081fcb2dd09b63806dce42a19edf20 Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Fri, 15 Nov 2019 10:09:27 +0100 Subject: [PATCH 03/10] multi: distinguish between htlc in and out constraints --- chainregistry.go | 8 ++++++-- fundingmanager.go | 16 ++++++++++------ fundingmanager_test.go | 22 ++++++++++++---------- htlcswitch/link.go | 10 ++++------ htlcswitch/link_test.go | 6 +++--- htlcswitch/test_utils.go | 2 +- peer.go | 4 ++-- pilot.go | 4 ++-- routing/localchans/manager.go | 2 +- rpcserver.go | 8 ++++---- server.go | 5 +++-- 11 files changed, 48 insertions(+), 39 deletions(-) diff --git a/chainregistry.go b/chainregistry.go index ee07caaa4..49805f19f 100644 --- a/chainregistry.go +++ b/chainregistry.go @@ -130,6 +130,8 @@ type chainControl struct { wallet *lnwallet.LightningWallet routingPolicy htlcswitch.ForwardingPolicy + + minHtlcIn lnwire.MilliSatoshi } // newChainControlFromConfig attempts to create a chainControl instance @@ -157,21 +159,23 @@ func newChainControlFromConfig(cfg *config, chanDB *channeldb.DB, switch registeredChains.PrimaryChain() { case bitcoinChain: cc.routingPolicy = htlcswitch.ForwardingPolicy{ - MinHTLC: cfg.Bitcoin.MinHTLC, + MinHTLCOut: cfg.Bitcoin.MinHTLC, BaseFee: cfg.Bitcoin.BaseFee, FeeRate: cfg.Bitcoin.FeeRate, TimeLockDelta: cfg.Bitcoin.TimeLockDelta, } + cc.minHtlcIn = cfg.Bitcoin.MinHTLC cc.feeEstimator = chainfee.NewStaticEstimator( defaultBitcoinStaticFeePerKW, 0, ) case litecoinChain: cc.routingPolicy = htlcswitch.ForwardingPolicy{ - MinHTLC: cfg.Litecoin.MinHTLC, + MinHTLCOut: cfg.Litecoin.MinHTLC, BaseFee: cfg.Litecoin.BaseFee, FeeRate: cfg.Litecoin.FeeRate, TimeLockDelta: cfg.Litecoin.TimeLockDelta, } + cc.minHtlcIn = cfg.Litecoin.MinHTLC cc.feeEstimator = chainfee.NewStaticEstimator( defaultLitecoinStaticFeePerKW, 0, ) diff --git a/fundingmanager.go b/fundingmanager.go index 3c4538e2e..77b3f24f5 100644 --- a/fundingmanager.go +++ b/fundingmanager.go @@ -285,6 +285,10 @@ type fundingConfig struct { // initially announcing channels. DefaultRoutingPolicy htlcswitch.ForwardingPolicy + // DefaultMinHtlcIn is the default minimum incoming htlc value that is + // set as a channel parameter. + DefaultMinHtlcIn lnwire.MilliSatoshi + // NumRequiredConfs is a function closure that helps the funding // manager decide how many confirmations it should require for a // channel extended to it. The function is able to take into account @@ -1300,7 +1304,7 @@ func (f *fundingManager) handleFundingOpen(fmsg *fundingOpenMsg) { chanReserve := f.cfg.RequiredRemoteChanReserve(amt, msg.DustLimit) maxValue := f.cfg.RequiredRemoteMaxValue(amt) maxHtlcs := f.cfg.RequiredRemoteMaxHTLCs(amt) - minHtlc := f.cfg.DefaultRoutingPolicy.MinHTLC + minHtlc := f.cfg.DefaultMinHtlcIn // Once the reservation has been created successfully, we add it to // this peer's map of pending reservations to track this particular @@ -2806,7 +2810,7 @@ func (f *fundingManager) handleInitFundingMsg(msg *initFundingMsg) { var ( peerKey = msg.peer.IdentityKey() localAmt = msg.localFundingAmt - minHtlc = msg.minHtlc + minHtlcIn = msg.minHtlcIn remoteCsvDelay = msg.remoteCsvDelay ) @@ -2922,8 +2926,8 @@ func (f *fundingManager) handleInitFundingMsg(msg *initFundingMsg) { } // If no minimum HTLC value was specified, use the default one. - if minHtlc == 0 { - minHtlc = f.cfg.DefaultRoutingPolicy.MinHTLC + if minHtlcIn == 0 { + minHtlcIn = f.cfg.DefaultMinHtlcIn } // If a pending channel map for this peer isn't already created, then @@ -2938,7 +2942,7 @@ func (f *fundingManager) handleInitFundingMsg(msg *initFundingMsg) { resCtx := &reservationWithCtx{ chanAmt: capacity, remoteCsvDelay: remoteCsvDelay, - remoteMinHtlc: minHtlc, + remoteMinHtlc: minHtlcIn, reservation: reservation, peer: msg.peer, updates: msg.updates, @@ -2972,7 +2976,7 @@ func (f *fundingManager) handleInitFundingMsg(msg *initFundingMsg) { DustLimit: ourContribution.DustLimit, MaxValueInFlight: maxValue, ChannelReserve: chanReserve, - HtlcMinimum: minHtlc, + HtlcMinimum: minHtlcIn, FeePerKiloWeight: uint32(commitFeePerKw), CsvDelay: remoteCsvDelay, MaxAcceptedHTLCs: maxHtlcs, diff --git a/fundingmanager_test.go b/fundingmanager_test.go index 77bfbaa65..3221f20d5 100644 --- a/fundingmanager_test.go +++ b/fundingmanager_test.go @@ -336,11 +336,12 @@ func createTestFundingManager(t *testing.T, privKey *btcec.PrivateKey, return nil, fmt.Errorf("unable to find channel") }, DefaultRoutingPolicy: htlcswitch.ForwardingPolicy{ - MinHTLC: 5, + MinHTLCOut: 5, BaseFee: 100, FeeRate: 1000, TimeLockDelta: 10, }, + DefaultMinHtlcIn: 5, NumRequiredConfs: func(chanAmt btcutil.Amount, pushAmt lnwire.MilliSatoshi) uint16 { return 3 @@ -464,11 +465,12 @@ func recreateAliceFundingManager(t *testing.T, alice *testNode) { TempChanIDSeed: oldCfg.TempChanIDSeed, FindChannel: oldCfg.FindChannel, DefaultRoutingPolicy: htlcswitch.ForwardingPolicy{ - MinHTLC: 5, + MinHTLCOut: 5, BaseFee: 100, FeeRate: 1000, TimeLockDelta: 10, }, + DefaultMinHtlcIn: 5, RequiredRemoteMaxValue: oldCfg.RequiredRemoteMaxValue, PublishTransaction: func(txn *wire.MsgTx) error { publishChan <- txn @@ -926,7 +928,7 @@ func assertChannelAnnouncements(t *testing.T, alice, bob *testNode, // _other_ node. other := (j + 1) % 2 minHtlc := nodes[other].fundingMgr.cfg. - DefaultRoutingPolicy.MinHTLC + DefaultMinHtlcIn // We might expect a custom MinHTLC value. if len(customMinHtlc) > 0 { @@ -2325,7 +2327,7 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) { // This is the custom parameters we'll use. const csvDelay = 67 - const minHtlc = 1234 + const minHtlcIn = 1234 // We will consume the channel updates as we go, so no buffering is // needed. @@ -2344,7 +2346,7 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) { localFundingAmt: localAmt, pushAmt: lnwire.NewMSatFromSatoshis(pushAmt), private: false, - minHtlc: minHtlc, + minHtlcIn: minHtlcIn, remoteCsvDelay: csvDelay, updates: updateChan, err: errChan, @@ -2381,9 +2383,9 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) { } // Check that the custom minHTLC value is sent. - if openChannelReq.HtlcMinimum != minHtlc { + if openChannelReq.HtlcMinimum != minHtlcIn { t.Fatalf("expected OpenChannel to have minHtlc %v, got %v", - minHtlc, openChannelReq.HtlcMinimum) + minHtlcIn, openChannelReq.HtlcMinimum) } chanID := openChannelReq.PendingChannelID @@ -2468,7 +2470,7 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) { // The minimum HTLC value Alice can offer should be 5, and the minimum // Bob can offer should be 1234. - if err := assertMinHtlc(resCtx, 5, minHtlc); err != nil { + if err := assertMinHtlc(resCtx, 5, minHtlcIn); err != nil { t.Fatal(err) } @@ -2482,7 +2484,7 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) { t.Fatal(err) } - if err := assertMinHtlc(resCtx, minHtlc, 5); err != nil { + if err := assertMinHtlc(resCtx, minHtlcIn, 5); err != nil { t.Fatal(err) } @@ -2543,7 +2545,7 @@ func TestFundingManagerCustomChannelParameters(t *testing.T) { // announcements. Alice should advertise the default MinHTLC value of // 5, while bob should advertise the value minHtlc, since Alice // required him to use it. - assertChannelAnnouncements(t, alice, bob, capacity, 5, minHtlc) + assertChannelAnnouncements(t, alice, bob, capacity, 5, minHtlcIn) // The funding transaction is now confirmed, wait for the // OpenStatusUpdate_ChanOpen update diff --git a/htlcswitch/link.go b/htlcswitch/link.go index 4a68172b6..ce4d0073f 100644 --- a/htlcswitch/link.go +++ b/htlcswitch/link.go @@ -71,10 +71,8 @@ const ( // the error possibly carrying along a ChannelUpdate message that includes the // latest policy. type ForwardingPolicy struct { - // MinHTLC is the smallest HTLC that is to be forwarded. This is - // set when a channel is first opened, and will be static for the - // lifetime of the channel. - MinHTLC lnwire.MilliSatoshi + // MinHTLC is the smallest HTLC that is to be forwarded. + MinHTLCOut lnwire.MilliSatoshi // MaxHTLC is the largest HTLC that is to be forwarded. MaxHTLC lnwire.MilliSatoshi @@ -2218,9 +2216,9 @@ func (l *channelLink) canSendHtlc(policy ForwardingPolicy, // As our first sanity check, we'll ensure that the passed HTLC isn't // too small for the next hop. If so, then we'll cancel the HTLC // directly. - if amt < policy.MinHTLC { + if amt < policy.MinHTLCOut { l.log.Errorf("outgoing htlc(%x) is too small: min_htlc=%v, "+ - "htlc_value=%v", payHash[:], policy.MinHTLC, + "htlc_value=%v", payHash[:], policy.MinHTLCOut, amt) // As part of the returned error, we'll send our latest routing diff --git a/htlcswitch/link_test.go b/htlcswitch/link_test.go index 810b58317..dc796ba31 100644 --- a/htlcswitch/link_test.go +++ b/htlcswitch/link_test.go @@ -1694,7 +1694,7 @@ func newSingleLinkTestHarness(chanAmt, chanReserve btcutil.Amount) ( quit: make(chan struct{}), } globalPolicy = ForwardingPolicy{ - MinHTLC: lnwire.NewMSatFromSatoshis(5), + MinHTLCOut: lnwire.NewMSatFromSatoshis(5), MaxHTLC: lnwire.NewMSatFromSatoshis(chanAmt), BaseFee: lnwire.NewMSatFromSatoshis(1), TimeLockDelta: 6, @@ -4253,7 +4253,7 @@ func (h *persistentLinkHarness) restartLink( } globalPolicy = ForwardingPolicy{ - MinHTLC: lnwire.NewMSatFromSatoshis(5), + MinHTLCOut: lnwire.NewMSatFromSatoshis(5), BaseFee: lnwire.NewMSatFromSatoshis(1), TimeLockDelta: 6, } @@ -5512,7 +5512,7 @@ func TestCheckHtlcForward(t *testing.T) { cfg: ChannelLinkConfig{ FwrdingPolicy: ForwardingPolicy{ TimeLockDelta: 20, - MinHTLC: 500, + MinHTLCOut: 500, MaxHTLC: 1000, BaseFee: 10, }, diff --git a/htlcswitch/test_utils.go b/htlcswitch/test_utils.go index 1308bf790..9ed8179a8 100644 --- a/htlcswitch/test_utils.go +++ b/htlcswitch/test_utils.go @@ -1078,7 +1078,7 @@ func newHopNetwork() *hopNetwork { defaultDelta := uint32(6) globalPolicy := ForwardingPolicy{ - MinHTLC: lnwire.NewMSatFromSatoshis(5), + MinHTLCOut: lnwire.NewMSatFromSatoshis(5), BaseFee: lnwire.NewMSatFromSatoshis(1), TimeLockDelta: defaultDelta, } diff --git a/peer.go b/peer.go index 93f079eff..be8a1d26b 100644 --- a/peer.go +++ b/peer.go @@ -531,7 +531,7 @@ func (p *peer) loadActiveChannels(chans []*channeldb.OpenChannel) ( var forwardingPolicy *htlcswitch.ForwardingPolicy if selfPolicy != nil { forwardingPolicy = &htlcswitch.ForwardingPolicy{ - MinHTLC: selfPolicy.MinHTLC, + MinHTLCOut: selfPolicy.MinHTLC, MaxHTLC: selfPolicy.MaxHTLC, BaseFee: selfPolicy.FeeBaseMSat, FeeRate: selfPolicy.FeeProportionalMillionths, @@ -1862,7 +1862,7 @@ out: fwdMinHtlc := lnChan.FwdMinHtlc() defaultPolicy := p.server.cc.routingPolicy forwardingPolicy := &htlcswitch.ForwardingPolicy{ - MinHTLC: fwdMinHtlc, + MinHTLCOut: fwdMinHtlc, MaxHTLC: newChan.LocalChanCfg.MaxPendingAmount, BaseFee: defaultPolicy.BaseFee, FeeRate: defaultPolicy.FeeRate, diff --git a/pilot.go b/pilot.go index 6fa3a6c60..cc6650735 100644 --- a/pilot.go +++ b/pilot.go @@ -92,7 +92,7 @@ func (c *chanController) OpenChannel(target *btcec.PublicKey, } // TODO(halseth): make configurable? - minHtlc := lnwire.NewMSatFromSatoshis(1) + minHtlcIn := lnwire.NewMSatFromSatoshis(1) // Construct the open channel request and send it to the server to begin // the funding workflow. @@ -102,7 +102,7 @@ func (c *chanController) OpenChannel(target *btcec.PublicKey, subtractFees: true, localFundingAmt: amt, pushAmt: 0, - minHtlc: minHtlc, + minHtlcIn: minHtlcIn, fundingFeePerKw: feePerKw, private: c.private, remoteCsvDelay: 0, diff --git a/routing/localchans/manager.go b/routing/localchans/manager.go index 9d1c3e49d..e99a5a352 100644 --- a/routing/localchans/manager.go +++ b/routing/localchans/manager.go @@ -93,7 +93,7 @@ func (r *Manager) UpdatePolicy(newSchema routing.ChannelPolicy, BaseFee: edge.FeeBaseMSat, FeeRate: edge.FeeProportionalMillionths, TimeLockDelta: uint32(edge.TimeLockDelta), - MinHTLC: edge.MinHTLC, + MinHTLCOut: edge.MinHTLC, MaxHTLC: edge.MaxHTLC, } diff --git a/rpcserver.go b/rpcserver.go index d5461a6e6..9e501232a 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -1449,7 +1449,7 @@ func (r *rpcServer) OpenChannel(in *lnrpc.OpenChannelRequest, localFundingAmt := btcutil.Amount(in.LocalFundingAmount) remoteInitialBalance := btcutil.Amount(in.PushSat) - minHtlc := lnwire.MilliSatoshi(in.MinHtlcMsat) + minHtlcIn := lnwire.MilliSatoshi(in.MinHtlcMsat) remoteCsvDelay := uint16(in.RemoteCsvDelay) // Ensure that the initial balance of the remote party (if pushing @@ -1537,7 +1537,7 @@ func (r *rpcServer) OpenChannel(in *lnrpc.OpenChannelRequest, chainHash: *activeNetParams.GenesisHash, localFundingAmt: localFundingAmt, pushAmt: lnwire.NewMSatFromSatoshis(remoteInitialBalance), - minHtlc: minHtlc, + minHtlcIn: minHtlcIn, fundingFeePerKw: feeRate, private: in.Private, remoteCsvDelay: remoteCsvDelay, @@ -1631,7 +1631,7 @@ func (r *rpcServer) OpenChannelSync(ctx context.Context, localFundingAmt := btcutil.Amount(in.LocalFundingAmount) remoteInitialBalance := btcutil.Amount(in.PushSat) - minHtlc := lnwire.MilliSatoshi(in.MinHtlcMsat) + minHtlcIn := lnwire.MilliSatoshi(in.MinHtlcMsat) remoteCsvDelay := uint16(in.RemoteCsvDelay) // Ensure that the initial balance of the remote party (if pushing @@ -1679,7 +1679,7 @@ func (r *rpcServer) OpenChannelSync(ctx context.Context, chainHash: *activeNetParams.GenesisHash, localFundingAmt: localFundingAmt, pushAmt: lnwire.NewMSatFromSatoshis(remoteInitialBalance), - minHtlc: minHtlc, + minHtlcIn: minHtlcIn, fundingFeePerKw: feeRate, private: in.Private, remoteCsvDelay: remoteCsvDelay, diff --git a/server.go b/server.go index 74888bc40..bb9493f84 100644 --- a/server.go +++ b/server.go @@ -985,6 +985,7 @@ func newServer(listenAddrs []net.Addr, chanDB *channeldb.DB, return nil, fmt.Errorf("unable to find channel") }, DefaultRoutingPolicy: cc.routingPolicy, + DefaultMinHtlcIn: cc.minHtlcIn, NumRequiredConfs: func(chanAmt btcutil.Amount, pushAmt lnwire.MilliSatoshi) uint16 { // For large channels we increase the number @@ -3084,8 +3085,8 @@ type openChanReq struct { private bool - // minHtlc is the minimum incoming htlc that we accept. - minHtlc lnwire.MilliSatoshi + // minHtlcIn is the minimum incoming htlc that we accept. + minHtlcIn lnwire.MilliSatoshi remoteCsvDelay uint16 From 55ff1131de32aea9f6c6efb737e6416ae97c7c40 Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Fri, 15 Nov 2019 10:36:10 +0100 Subject: [PATCH 04/10] fundingmanager: check remote min htlc against our defaults --- fundingmanager.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fundingmanager.go b/fundingmanager.go index 77b3f24f5..b11bf9387 100644 --- a/fundingmanager.go +++ b/fundingmanager.go @@ -2209,6 +2209,12 @@ func (f *fundingManager) addToRouterGraph(completeChan *channeldb.OpenChannel, // need to determine the smallest HTLC it deems economically relevant. fwdMinHTLC := completeChan.LocalChanCfg.MinHTLC + // We don't necessarily want to go as low as the remote party + // allows. Check it against our default forwarding policy. + if fwdMinHTLC < f.cfg.DefaultRoutingPolicy.MinHTLCOut { + fwdMinHTLC = f.cfg.DefaultRoutingPolicy.MinHTLCOut + } + // We'll obtain the max HTLC value we can forward in our direction, as // we'll use this value within our ChannelUpdate. This value must be <= // channel capacity and <= the maximum in-flight msats set by the peer. From b826858a50dde739707808c9be90136e5af5283b Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Fri, 15 Nov 2019 10:46:51 +0100 Subject: [PATCH 05/10] config: expose minhtlcout as a config parameter --- chainregistry.go | 34 ++++++++++++++++++++++++---------- config.go | 9 ++++++--- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/chainregistry.go b/chainregistry.go index 49805f19f..e27678311 100644 --- a/chainregistry.go +++ b/chainregistry.go @@ -36,7 +36,20 @@ import ( ) const ( - defaultBitcoinMinHTLCMSat = lnwire.MilliSatoshi(1000) + // defaultBitcoinMinHTLCMSat is the default smallest value htlc this + // node will accept. This value is proposed in the channel open sequence + // and cannot be changed during the life of the channel. + // + // All forwarded payments are subjected to the min htlc constraint of + // the routing policy of the outgoing channel. This implicitly controls + // the minimum htlc value on the incoming channel too. + defaultBitcoinMinHTLCInMSat = lnwire.MilliSatoshi(1000) + + // defaultBitcoinMinHTLCOutMSat is the default minimum htlc value that + // we require for sending out htlcs. Our channel peer may have a lower + // min htlc channel parameter, but we - by default - don't forward + // anything under the value defined here. + defaultBitcoinMinHTLCOutMSat = lnwire.MilliSatoshi(1000) // DefaultBitcoinBaseFeeMSat is the default forwarding base fee. DefaultBitcoinBaseFeeMSat = lnwire.MilliSatoshi(1000) @@ -48,11 +61,12 @@ const ( // delta. DefaultBitcoinTimeLockDelta = 40 - defaultLitecoinMinHTLCMSat = lnwire.MilliSatoshi(1000) - defaultLitecoinBaseFeeMSat = lnwire.MilliSatoshi(1000) - defaultLitecoinFeeRate = lnwire.MilliSatoshi(1) - defaultLitecoinTimeLockDelta = 576 - defaultLitecoinDustLimit = btcutil.Amount(54600) + defaultLitecoinMinHTLCInMSat = lnwire.MilliSatoshi(1000) + defaultLitecoinMinHTLCOutMSat = lnwire.MilliSatoshi(1000) + defaultLitecoinBaseFeeMSat = lnwire.MilliSatoshi(1000) + defaultLitecoinFeeRate = lnwire.MilliSatoshi(1) + defaultLitecoinTimeLockDelta = 576 + defaultLitecoinDustLimit = btcutil.Amount(54600) // defaultBitcoinStaticFeePerKW is the fee rate of 50 sat/vbyte // expressed in sat/kw. @@ -159,23 +173,23 @@ func newChainControlFromConfig(cfg *config, chanDB *channeldb.DB, switch registeredChains.PrimaryChain() { case bitcoinChain: cc.routingPolicy = htlcswitch.ForwardingPolicy{ - MinHTLCOut: cfg.Bitcoin.MinHTLC, + MinHTLCOut: cfg.Bitcoin.MinHTLCOut, BaseFee: cfg.Bitcoin.BaseFee, FeeRate: cfg.Bitcoin.FeeRate, TimeLockDelta: cfg.Bitcoin.TimeLockDelta, } - cc.minHtlcIn = cfg.Bitcoin.MinHTLC + cc.minHtlcIn = cfg.Bitcoin.MinHTLCIn cc.feeEstimator = chainfee.NewStaticEstimator( defaultBitcoinStaticFeePerKW, 0, ) case litecoinChain: cc.routingPolicy = htlcswitch.ForwardingPolicy{ - MinHTLCOut: cfg.Litecoin.MinHTLC, + MinHTLCOut: cfg.Litecoin.MinHTLCOut, BaseFee: cfg.Litecoin.BaseFee, FeeRate: cfg.Litecoin.FeeRate, TimeLockDelta: cfg.Litecoin.TimeLockDelta, } - cc.minHtlcIn = cfg.Litecoin.MinHTLC + cc.minHtlcIn = cfg.Litecoin.MinHTLCIn cc.feeEstimator = chainfee.NewStaticEstimator( defaultLitecoinStaticFeePerKW, 0, ) diff --git a/config.go b/config.go index e9e0fb59b..00c29c521 100644 --- a/config.go +++ b/config.go @@ -166,7 +166,8 @@ type chainConfig struct { DefaultNumChanConfs int `long:"defaultchanconfs" description:"The default number of confirmations a channel must have before it's considered open. If this is not set, we will scale the value according to the channel size."` DefaultRemoteDelay int `long:"defaultremotedelay" description:"The default number of blocks we will require our channel counterparty to wait before accessing its funds in case of unilateral close. If this is not set, we will scale the value according to the channel size."` - MinHTLC lnwire.MilliSatoshi `long:"minhtlc" description:"The smallest HTLC we are willing to accept on our channels, in millisatoshi"` + MinHTLCIn lnwire.MilliSatoshi `long:"minhtlc" description:"The smallest HTLC we are willing to accept on our channels, in millisatoshi"` + MinHTLCOut lnwire.MilliSatoshi `long:"minhtlcout" description:"The smallest HTLC we are willing to send out on our channels, in millisatoshi"` BaseFee lnwire.MilliSatoshi `long:"basefee" description:"The base fee in millisatoshi we will charge for forwarding payments on our channels"` FeeRate lnwire.MilliSatoshi `long:"feerate" description:"The fee rate used when forwarding payments on our channels. The total fee charged is basefee + (amount * feerate / 1000000), where amount is the forwarded amount."` TimeLockDelta uint32 `long:"timelockdelta" description:"The CLTV delta we will subtract from a forwarded HTLC's timelock value"` @@ -360,7 +361,8 @@ func loadConfig() (*config, error) { MaxLogFiles: defaultMaxLogFiles, MaxLogFileSize: defaultMaxLogFileSize, Bitcoin: &chainConfig{ - MinHTLC: defaultBitcoinMinHTLCMSat, + MinHTLCIn: defaultBitcoinMinHTLCInMSat, + MinHTLCOut: defaultBitcoinMinHTLCOutMSat, BaseFee: DefaultBitcoinBaseFeeMSat, FeeRate: DefaultBitcoinFeeRate, TimeLockDelta: DefaultBitcoinTimeLockDelta, @@ -376,7 +378,8 @@ func loadConfig() (*config, error) { RPCHost: defaultRPCHost, }, Litecoin: &chainConfig{ - MinHTLC: defaultLitecoinMinHTLCMSat, + MinHTLCIn: defaultLitecoinMinHTLCInMSat, + MinHTLCOut: defaultLitecoinMinHTLCOutMSat, BaseFee: defaultLitecoinBaseFeeMSat, FeeRate: defaultLitecoinFeeRate, TimeLockDelta: defaultLitecoinTimeLockDelta, From 16ca36985e9a52d829cc34efda33af540363d58a Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Fri, 15 Nov 2019 10:47:49 +0100 Subject: [PATCH 06/10] chainregistry: lower incoming htlc amount default --- chainregistry.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/chainregistry.go b/chainregistry.go index e27678311..4810b24d6 100644 --- a/chainregistry.go +++ b/chainregistry.go @@ -38,12 +38,14 @@ import ( const ( // defaultBitcoinMinHTLCMSat is the default smallest value htlc this // node will accept. This value is proposed in the channel open sequence - // and cannot be changed during the life of the channel. + // and cannot be changed during the life of the channel. It is zero by + // default to allow maximum flexibility in deciding what size payments + // to forward. // // All forwarded payments are subjected to the min htlc constraint of // the routing policy of the outgoing channel. This implicitly controls // the minimum htlc value on the incoming channel too. - defaultBitcoinMinHTLCInMSat = lnwire.MilliSatoshi(1000) + defaultBitcoinMinHTLCInMSat = lnwire.MilliSatoshi(1) // defaultBitcoinMinHTLCOutMSat is the default minimum htlc value that // we require for sending out htlcs. Our channel peer may have a lower @@ -61,7 +63,7 @@ const ( // delta. DefaultBitcoinTimeLockDelta = 40 - defaultLitecoinMinHTLCInMSat = lnwire.MilliSatoshi(1000) + defaultLitecoinMinHTLCInMSat = lnwire.MilliSatoshi(1) defaultLitecoinMinHTLCOutMSat = lnwire.MilliSatoshi(1000) defaultLitecoinBaseFeeMSat = lnwire.MilliSatoshi(1000) defaultLitecoinFeeRate = lnwire.MilliSatoshi(1) From f289dbd82606f8f67774d4cf08d286d2a7d2caaf Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Sat, 9 Nov 2019 14:22:40 +0100 Subject: [PATCH 07/10] routing: define subsystem constant --- log.go | 2 +- routing/log.go | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/log.go b/log.go index 0ad511f4c..23b1699d3 100644 --- a/log.go +++ b/log.go @@ -79,7 +79,6 @@ func init() { addSubLogger("CHDB", channeldb.UseLogger) addSubLogger("HSWC", htlcswitch.UseLogger) addSubLogger("CMGR", connmgr.UseLogger) - addSubLogger("CRTR", routing.UseLogger) addSubLogger("BTCN", neutrino.UseLogger) addSubLogger("CNCT", contractcourt.UseLogger) addSubLogger("SPHX", sphinx.UseLogger) @@ -99,6 +98,7 @@ func init() { addSubLogger("PRNF", peernotifier.UseLogger) addSubLogger("CHFD", chanfunding.UseLogger) + addSubLogger(routing.Subsystem, routing.UseLogger) addSubLogger(routerrpc.Subsystem, routerrpc.UseLogger) addSubLogger(wtclientrpc.Subsystem, wtclientrpc.UseLogger) addSubLogger(chanfitness.Subsystem, chanfitness.UseLogger) diff --git a/routing/log.go b/routing/log.go index ce550812a..e5c2e7a07 100644 --- a/routing/log.go +++ b/routing/log.go @@ -11,9 +11,11 @@ import ( // it. var log btclog.Logger +const Subsystem = "CRTR" + // The default amount of logging is none. func init() { - UseLogger(build.NewSubLogger("CRTR", nil)) + UseLogger(build.NewSubLogger(Subsystem, nil)) } // DisableLog disables all library log output. Logging output is disabled by From 74c2df658e7254c40eedc57f2b4c86a4629816ea Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Fri, 15 Nov 2019 11:15:22 +0100 Subject: [PATCH 08/10] localchans: log policy update error --- log.go | 2 ++ routing/localchans/log.go | 16 ++++++++++++++++ routing/localchans/manager.go | 3 +++ 3 files changed, 21 insertions(+) create mode 100644 routing/localchans/log.go diff --git a/log.go b/log.go index 23b1699d3..f7ba8e105 100644 --- a/log.go +++ b/log.go @@ -31,6 +31,7 @@ import ( "github.com/lightningnetwork/lnd/netann" "github.com/lightningnetwork/lnd/peernotifier" "github.com/lightningnetwork/lnd/routing" + "github.com/lightningnetwork/lnd/routing/localchans" "github.com/lightningnetwork/lnd/signal" "github.com/lightningnetwork/lnd/sweep" "github.com/lightningnetwork/lnd/watchtower" @@ -99,6 +100,7 @@ func init() { addSubLogger("CHFD", chanfunding.UseLogger) addSubLogger(routing.Subsystem, routing.UseLogger) + addSubLogger(routing.Subsystem, localchans.UseLogger) addSubLogger(routerrpc.Subsystem, routerrpc.UseLogger) addSubLogger(wtclientrpc.Subsystem, wtclientrpc.UseLogger) addSubLogger(chanfitness.Subsystem, chanfitness.UseLogger) diff --git a/routing/localchans/log.go b/routing/localchans/log.go new file mode 100644 index 000000000..9ebcf4d0f --- /dev/null +++ b/routing/localchans/log.go @@ -0,0 +1,16 @@ +package localchans + +import ( + "github.com/btcsuite/btclog" +) + +// log is a logger that is initialized with no output filters. This +// means the package will not perform any logging by default until the caller +// requests it. +var log btclog.Logger + +// UseLogger uses a specified Logger to output package logging info. This +// function is called from the parent package htlcswitch logger initialization. +func UseLogger(logger btclog.Logger) { + log = logger +} diff --git a/routing/localchans/manager.go b/routing/localchans/manager.go index e99a5a352..19fdbe5e5 100644 --- a/routing/localchans/manager.go +++ b/routing/localchans/manager.go @@ -79,6 +79,9 @@ func (r *Manager) UpdatePolicy(newSchema routing.ChannelPolicy, // Apply the new policy to the edge. err := r.updateEdge(info.ChannelPoint, edge, newSchema) if err != nil { + log.Warnf("Cannot update policy for %v: %v\n", + info.ChannelPoint, err, + ) return nil } From b6eb3a69ba6c87a77dec0c74c4fa8d4d0d24a9bc Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Fri, 15 Nov 2019 11:24:58 +0100 Subject: [PATCH 09/10] routing+lnrpc+lncli: allow setting min htlc policy --- cmd/lncli/commands.go | 11 + lnrpc/rpc.pb.go | 1150 +++++++++++++++++---------------- lnrpc/rpc.proto | 6 + lnrpc/rpc.swagger.json | 10 + routing/localchans/manager.go | 5 + routing/router.go | 4 + rpcserver.go | 14 +- 7 files changed, 633 insertions(+), 567 deletions(-) diff --git a/cmd/lncli/commands.go b/cmd/lncli/commands.go index 9311f531f..8d346ec05 100644 --- a/cmd/lncli/commands.go +++ b/cmd/lncli/commands.go @@ -3459,6 +3459,12 @@ var updateChannelPolicyCommand = cli.Command{ Usage: "the CLTV delta that will be applied to all " + "forwarded HTLCs", }, + cli.Uint64Flag{ + Name: "min_htlc_msat", + Usage: "if set, the min HTLC size that will be applied " + + "to all forwarded HTLCs. If unset, the min HTLC " + + "is left unchanged.", + }, cli.Uint64Flag{ Name: "max_htlc_msat", Usage: "if set, the max HTLC size that will be applied " + @@ -3581,6 +3587,11 @@ func updateChannelPolicy(ctx *cli.Context) error { MaxHtlcMsat: ctx.Uint64("max_htlc_msat"), } + if ctx.IsSet("min_htlc_msat") { + req.MinHtlcMsat = ctx.Uint64("min_htlc_msat") + req.MinHtlcMsatSpecified = true + } + if chanPoint != nil { req.Scope = &lnrpc.PolicyUpdateRequest_ChanPoint{ ChanPoint: chanPoint, diff --git a/lnrpc/rpc.pb.go b/lnrpc/rpc.pb.go index 33e3bb08d..40534db58 100644 --- a/lnrpc/rpc.pb.go +++ b/lnrpc/rpc.pb.go @@ -8675,7 +8675,11 @@ type PolicyUpdateRequest struct { /// The required timelock delta for HTLCs forwarded over the channel. TimeLockDelta uint32 `protobuf:"varint,5,opt,name=time_lock_delta,proto3" json:"time_lock_delta,omitempty"` /// If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged. - MaxHtlcMsat uint64 `protobuf:"varint,6,opt,name=max_htlc_msat,proto3" json:"max_htlc_msat,omitempty"` + MaxHtlcMsat uint64 `protobuf:"varint,6,opt,name=max_htlc_msat,proto3" json:"max_htlc_msat,omitempty"` + /// The minimum HTLC size in milli-satoshis. Only applied if min_htlc_msat_specified is true. + MinHtlcMsat uint64 `protobuf:"varint,7,opt,name=min_htlc_msat,proto3" json:"min_htlc_msat,omitempty"` + /// If true, min_htlc_msat is applied. + MinHtlcMsatSpecified bool `protobuf:"varint,8,opt,name=min_htlc_msat_specified,json=set_min_htlc_msat,proto3" json:"min_htlc_msat_specified,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -8771,6 +8775,20 @@ func (m *PolicyUpdateRequest) GetMaxHtlcMsat() uint64 { return 0 } +func (m *PolicyUpdateRequest) GetMinHtlcMsat() uint64 { + if m != nil { + return m.MinHtlcMsat + } + return 0 +} + +func (m *PolicyUpdateRequest) GetMinHtlcMsatSpecified() bool { + if m != nil { + return m.MinHtlcMsatSpecified + } + return false +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*PolicyUpdateRequest) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -9775,571 +9793,573 @@ func init() { func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) } var fileDescriptor_77a6da22d6a3feb1 = []byte{ - // 9021 bytes of a gzipped FileDescriptorProto + // 9047 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0xbd, 0x4d, 0x6c, 0x1c, 0x49, - 0x96, 0x1f, 0xce, 0xfa, 0x20, 0x59, 0xf5, 0xaa, 0x58, 0x2c, 0x06, 0x29, 0xb2, 0x54, 0x2d, 0xa9, - 0xd9, 0x39, 0x1a, 0x49, 0xad, 0xe9, 0xa1, 0xd4, 0x9c, 0x99, 0xfe, 0xf7, 0x76, 0xff, 0xd7, 0xbb, - 0x14, 0x49, 0x89, 0xea, 0xa6, 0x28, 0x4e, 0x52, 0x1a, 0x79, 0x66, 0x76, 0x51, 0x93, 0xac, 0x0a, - 0x92, 0x39, 0xaa, 0xca, 0xac, 0xce, 0xcc, 0x22, 0xc5, 0x69, 0xb7, 0x01, 0x1b, 0x86, 0x61, 0xf8, - 0xb2, 0x18, 0x1b, 0x06, 0x6c, 0xc3, 0xc6, 0x02, 0xb3, 0x06, 0x8c, 0x85, 0x0f, 0xf6, 0xc5, 0x80, - 0xd7, 0x58, 0x9f, 0x7c, 0x58, 0xc0, 0x80, 0xe1, 0x83, 0x0d, 0x18, 0xf0, 0x61, 0x0d, 0xc3, 0x06, - 0xec, 0x85, 0xe1, 0x9b, 0x7d, 0x37, 0xde, 0x8b, 0x8f, 0x8c, 0xc8, 0xcc, 0x92, 0xd4, 0x33, 0xe3, - 0x3d, 0xb1, 0xe2, 0x17, 0x91, 0xf1, 0xf9, 0xde, 0x8b, 0x17, 0xef, 0xbd, 0x08, 0x42, 0x3d, 0x1a, - 0xf7, 0x37, 0xc6, 0x51, 0x98, 0x84, 0x6c, 0x76, 0x18, 0x44, 0xe3, 0x7e, 0xf7, 0xda, 0x69, 0x18, - 0x9e, 0x0e, 0xf9, 0x3d, 0x6f, 0xec, 0xdf, 0xf3, 0x82, 0x20, 0x4c, 0xbc, 0xc4, 0x0f, 0x83, 0x58, - 0x14, 0x72, 0x7e, 0x02, 0xad, 0x47, 0x3c, 0x38, 0xe2, 0x7c, 0xe0, 0xf2, 0x2f, 0x26, 0x3c, 0x4e, - 0xd8, 0xb7, 0x60, 0xc9, 0xe3, 0x3f, 0xe3, 0x7c, 0xd0, 0x1b, 0x7b, 0x71, 0x3c, 0x3e, 0x8b, 0xbc, - 0x98, 0x77, 0x4a, 0xeb, 0xa5, 0x3b, 0x4d, 0xb7, 0x2d, 0x32, 0x0e, 0x35, 0xce, 0xde, 0x83, 0x66, - 0x8c, 0x45, 0x79, 0x90, 0x44, 0xe1, 0xf8, 0xb2, 0x53, 0xa6, 0x72, 0x0d, 0xc4, 0x76, 0x05, 0xe4, - 0x0c, 0x61, 0x51, 0xb7, 0x10, 0x8f, 0xc3, 0x20, 0xe6, 0xec, 0x3e, 0xac, 0xf4, 0xfd, 0xf1, 0x19, - 0x8f, 0x7a, 0xf4, 0xf1, 0x28, 0xe0, 0xa3, 0x30, 0xf0, 0xfb, 0x9d, 0xd2, 0x7a, 0xe5, 0x4e, 0xdd, - 0x65, 0x22, 0x0f, 0xbf, 0x78, 0x22, 0x73, 0xd8, 0x6d, 0x58, 0xe4, 0x81, 0xc0, 0xf9, 0x80, 0xbe, - 0x92, 0x4d, 0xb5, 0x52, 0x18, 0x3f, 0x70, 0xfe, 0x46, 0x19, 0x96, 0x1e, 0x07, 0x7e, 0xf2, 0xc2, - 0x1b, 0x0e, 0x79, 0xa2, 0xc6, 0x74, 0x1b, 0x16, 0x2f, 0x08, 0xa0, 0x31, 0x5d, 0x84, 0xd1, 0x40, - 0x8e, 0xa8, 0x25, 0xe0, 0x43, 0x89, 0x4e, 0xed, 0x59, 0x79, 0x6a, 0xcf, 0x0a, 0xa7, 0xab, 0x32, - 0x65, 0xba, 0x6e, 0xc3, 0x62, 0xc4, 0xfb, 0xe1, 0x39, 0x8f, 0x2e, 0x7b, 0x17, 0x7e, 0x30, 0x08, - 0x2f, 0x3a, 0xd5, 0xf5, 0xd2, 0x9d, 0x59, 0xb7, 0xa5, 0xe0, 0x17, 0x84, 0xb2, 0x07, 0xb0, 0xd8, - 0x3f, 0xf3, 0x82, 0x80, 0x0f, 0x7b, 0xc7, 0x5e, 0xff, 0xe5, 0x64, 0x1c, 0x77, 0x66, 0xd7, 0x4b, - 0x77, 0x1a, 0x9b, 0x57, 0x37, 0x68, 0x55, 0x37, 0xb6, 0xcf, 0xbc, 0xe0, 0x01, 0xe5, 0x1c, 0x05, - 0xde, 0x38, 0x3e, 0x0b, 0x13, 0xb7, 0x25, 0xbf, 0x10, 0x70, 0xec, 0xac, 0x00, 0x33, 0x67, 0x42, - 0xcc, 0xbd, 0xf3, 0x4f, 0x4a, 0xb0, 0xfc, 0x3c, 0x18, 0x86, 0xfd, 0x97, 0xbf, 0xe4, 0x14, 0x15, - 0x8c, 0xa1, 0xfc, 0xb6, 0x63, 0xa8, 0x7c, 0xdd, 0x31, 0xac, 0xc2, 0x8a, 0xdd, 0x59, 0x39, 0x0a, - 0x0e, 0x57, 0xf0, 0xeb, 0x53, 0xae, 0xba, 0xa5, 0x86, 0xf1, 0x3e, 0xb4, 0xfb, 0x93, 0x28, 0xe2, - 0x41, 0x6e, 0x1c, 0x8b, 0x12, 0xd7, 0x03, 0x79, 0x0f, 0x9a, 0x01, 0xbf, 0x48, 0x8b, 0x49, 0xda, - 0x0d, 0xf8, 0x85, 0x2a, 0xe2, 0x74, 0x60, 0x35, 0xdb, 0x8c, 0xec, 0xc0, 0x7f, 0x29, 0x41, 0xf5, - 0x79, 0xf2, 0x2a, 0x64, 0x1b, 0x50, 0x4d, 0x2e, 0xc7, 0x82, 0x43, 0x5a, 0x9b, 0x4c, 0x0e, 0x6d, - 0x6b, 0x30, 0x88, 0x78, 0x1c, 0x3f, 0xbb, 0x1c, 0x73, 0xb7, 0xe9, 0x89, 0x44, 0x0f, 0xcb, 0xb1, - 0x0e, 0xcc, 0xcb, 0x34, 0x35, 0x58, 0x77, 0x55, 0x92, 0xdd, 0x00, 0xf0, 0x46, 0xe1, 0x24, 0x48, - 0x7a, 0xb1, 0x97, 0xd0, 0x54, 0x55, 0x5c, 0x03, 0x61, 0xd7, 0xa0, 0x3e, 0x7e, 0xd9, 0x8b, 0xfb, - 0x91, 0x3f, 0x4e, 0x88, 0x6c, 0xea, 0x6e, 0x0a, 0xb0, 0x6f, 0x41, 0x2d, 0x9c, 0x24, 0xe3, 0xd0, - 0x0f, 0x12, 0x49, 0x2a, 0x8b, 0xb2, 0x2f, 0x4f, 0x27, 0xc9, 0x21, 0xc2, 0xae, 0x2e, 0xc0, 0x6e, - 0xc2, 0x42, 0x3f, 0x0c, 0x4e, 0xfc, 0x68, 0x24, 0x84, 0x41, 0x67, 0x8e, 0x5a, 0xb3, 0x41, 0xe7, - 0x8f, 0xca, 0xd0, 0x78, 0x16, 0x79, 0x41, 0xec, 0xf5, 0x11, 0xc0, 0xae, 0x27, 0xaf, 0x7a, 0x67, - 0x5e, 0x7c, 0x46, 0xa3, 0xad, 0xbb, 0x2a, 0xc9, 0x56, 0x61, 0x4e, 0x74, 0x94, 0xc6, 0x54, 0x71, - 0x65, 0x8a, 0x7d, 0x00, 0x4b, 0xc1, 0x64, 0xd4, 0xb3, 0xdb, 0xaa, 0x10, 0xb5, 0xe4, 0x33, 0x70, - 0x02, 0x8e, 0x71, 0xad, 0x45, 0x13, 0x62, 0x84, 0x06, 0xc2, 0x1c, 0x68, 0xca, 0x14, 0xf7, 0x4f, - 0xcf, 0xc4, 0x30, 0x67, 0x5d, 0x0b, 0xc3, 0x3a, 0x12, 0x7f, 0xc4, 0x7b, 0x71, 0xe2, 0x8d, 0xc6, - 0x72, 0x58, 0x06, 0x42, 0xf9, 0x61, 0xe2, 0x0d, 0x7b, 0x27, 0x9c, 0xc7, 0x9d, 0x79, 0x99, 0xaf, - 0x11, 0x76, 0x0b, 0x5a, 0x03, 0x1e, 0x27, 0x3d, 0xb9, 0x28, 0x3c, 0xee, 0xd4, 0x88, 0xf5, 0x33, - 0x28, 0xd6, 0x13, 0x79, 0x17, 0x3d, 0x9c, 0x00, 0xfe, 0xaa, 0x53, 0x17, 0x7d, 0x4d, 0x11, 0xa4, - 0x9c, 0x47, 0x3c, 0x31, 0x66, 0x2f, 0x96, 0x14, 0xea, 0xec, 0x03, 0x33, 0xe0, 0x1d, 0x9e, 0x78, - 0xfe, 0x30, 0x66, 0x1f, 0x41, 0x33, 0x31, 0x0a, 0x93, 0x28, 0x6c, 0x68, 0x72, 0x32, 0x3e, 0x70, - 0xad, 0x72, 0xce, 0x19, 0xd4, 0x1e, 0x72, 0xbe, 0xef, 0x8f, 0xfc, 0x84, 0xad, 0xc2, 0xec, 0x89, - 0xff, 0x8a, 0x0b, 0x82, 0xaf, 0xec, 0xcd, 0xb8, 0x22, 0xc9, 0xde, 0x05, 0xa0, 0x1f, 0xbd, 0x91, - 0x26, 0xac, 0xbd, 0x19, 0xb7, 0x4e, 0xd8, 0x13, 0xa4, 0xac, 0x2e, 0xcc, 0x8f, 0x79, 0xd4, 0xe7, - 0x6a, 0xfd, 0xf6, 0x66, 0x5c, 0x05, 0x3c, 0x98, 0x87, 0xd9, 0x21, 0xd6, 0xee, 0xfc, 0xde, 0x2c, - 0x34, 0x8e, 0x78, 0xa0, 0x39, 0x8d, 0x41, 0x15, 0xe7, 0x44, 0x72, 0x17, 0xfd, 0x66, 0xdf, 0x80, - 0x06, 0xcd, 0x53, 0x9c, 0x44, 0x7e, 0x70, 0x2a, 0x08, 0xfc, 0x41, 0xb9, 0x53, 0x72, 0x01, 0xe1, - 0x23, 0x42, 0x59, 0x1b, 0x2a, 0xde, 0x48, 0x11, 0x38, 0xfe, 0x64, 0x57, 0xa1, 0xe6, 0x8d, 0x12, - 0xd1, 0xbd, 0x26, 0xc1, 0xf3, 0xde, 0x28, 0xa1, 0xae, 0xbd, 0x07, 0xcd, 0xb1, 0x77, 0x39, 0x42, - 0x7e, 0xd6, 0x54, 0xd1, 0x74, 0x1b, 0x12, 0xdb, 0x43, 0xb2, 0xd8, 0x84, 0x65, 0xb3, 0x88, 0x6a, - 0x7c, 0x56, 0x37, 0xbe, 0x64, 0x94, 0x96, 0x7d, 0xb8, 0x0d, 0x8b, 0xea, 0x9b, 0x48, 0x8c, 0x87, - 0x68, 0xa5, 0xee, 0xb6, 0x24, 0xac, 0x46, 0x79, 0x07, 0xda, 0x27, 0x7e, 0xe0, 0x0d, 0x7b, 0xfd, - 0x61, 0x72, 0xde, 0x1b, 0xf0, 0x61, 0xe2, 0x11, 0xd5, 0xcc, 0xba, 0x2d, 0xc2, 0xb7, 0x87, 0xc9, - 0xf9, 0x0e, 0xa2, 0xec, 0x03, 0xa8, 0x9f, 0x70, 0xde, 0xa3, 0xc9, 0xea, 0xd4, 0x2c, 0x0e, 0x54, - 0x2b, 0xe4, 0xd6, 0x4e, 0xd4, 0x5a, 0x7d, 0x00, 0xed, 0x70, 0x92, 0x9c, 0x86, 0x7e, 0x70, 0xda, - 0x43, 0x99, 0xd7, 0xf3, 0x07, 0x44, 0x45, 0xd5, 0x07, 0xe5, 0xfb, 0x25, 0xb7, 0xa5, 0xf2, 0x50, - 0xfa, 0x3c, 0x1e, 0xb0, 0x5b, 0xb0, 0x38, 0xf4, 0xe2, 0xa4, 0x77, 0x16, 0x8e, 0x7b, 0xe3, 0xc9, - 0xf1, 0x4b, 0x7e, 0xd9, 0x59, 0xa0, 0x89, 0x58, 0x40, 0x78, 0x2f, 0x1c, 0x1f, 0x12, 0xc8, 0xae, - 0x03, 0x50, 0x3f, 0x45, 0x27, 0x60, 0xbd, 0x74, 0x67, 0xc1, 0xad, 0x23, 0x22, 0x1a, 0xfd, 0x21, - 0x2c, 0xd3, 0xf2, 0xf4, 0x27, 0x71, 0x12, 0x8e, 0x7a, 0x28, 0xaf, 0xa3, 0x41, 0xdc, 0x69, 0x10, - 0xad, 0xbd, 0x2f, 0x3b, 0x6b, 0xac, 0xf1, 0xc6, 0x0e, 0x8f, 0x93, 0x6d, 0x2a, 0xec, 0x8a, 0xb2, - 0xb8, 0xa9, 0x5f, 0xba, 0x4b, 0x83, 0x2c, 0xce, 0x3e, 0x00, 0xe6, 0x0d, 0x87, 0xe1, 0x45, 0x2f, - 0xe6, 0xc3, 0x93, 0x9e, 0x9c, 0xc4, 0x4e, 0x6b, 0xbd, 0x74, 0xa7, 0xe6, 0xb6, 0x29, 0xe7, 0x88, - 0x0f, 0x4f, 0x0e, 0x05, 0xde, 0xdd, 0x81, 0xd5, 0xe2, 0xaa, 0x91, 0x38, 0x70, 0x74, 0x48, 0x54, - 0x55, 0x17, 0x7f, 0xb2, 0x15, 0x98, 0x3d, 0xf7, 0x86, 0x13, 0x2e, 0xe5, 0xb3, 0x48, 0x7c, 0x52, - 0xfe, 0xb8, 0xe4, 0xfc, 0x8b, 0x12, 0x34, 0x45, 0x6f, 0xa5, 0x5e, 0x71, 0x13, 0x16, 0xd4, 0xaa, - 0xf2, 0x28, 0x0a, 0x23, 0x29, 0xa6, 0x6c, 0x90, 0xdd, 0x85, 0xb6, 0x02, 0xc6, 0x11, 0xf7, 0x47, - 0xde, 0xa9, 0xaa, 0x3b, 0x87, 0xb3, 0xcd, 0xb4, 0xc6, 0x28, 0x9c, 0x24, 0x5c, 0xee, 0x60, 0x4d, - 0x39, 0x57, 0x2e, 0x62, 0xae, 0x5d, 0x04, 0xc5, 0x54, 0x01, 0xc9, 0x5a, 0x98, 0xf3, 0x77, 0x4a, - 0xc0, 0xb0, 0xeb, 0xcf, 0x42, 0x51, 0x85, 0xa4, 0xb6, 0x2c, 0xb5, 0x97, 0xde, 0x9a, 0xda, 0xcb, - 0xaf, 0xa3, 0x76, 0x07, 0x66, 0x45, 0xef, 0xab, 0x05, 0xbd, 0x17, 0x59, 0x9f, 0x55, 0x6b, 0x95, - 0x76, 0xd5, 0xf9, 0x4f, 0x15, 0x58, 0xd9, 0x16, 0x5b, 0xf0, 0x56, 0xbf, 0xcf, 0xc7, 0x9a, 0x0f, - 0xde, 0x85, 0x46, 0x10, 0x0e, 0xb8, 0xa2, 0x3e, 0xd1, 0x31, 0x40, 0xc8, 0x20, 0xbd, 0x33, 0xcf, - 0x0f, 0x44, 0xc7, 0xc5, 0x7c, 0xd6, 0x09, 0xa1, 0x6e, 0xdf, 0x82, 0xc5, 0x31, 0x0f, 0x06, 0x26, - 0xb9, 0x0b, 0x25, 0x69, 0x41, 0xc2, 0x92, 0xd2, 0xdf, 0x85, 0xc6, 0xc9, 0x44, 0x94, 0x43, 0x21, - 0x51, 0x25, 0x3a, 0x00, 0x09, 0x6d, 0x09, 0x59, 0x31, 0x9e, 0xc4, 0x67, 0x94, 0x3b, 0x4b, 0xb9, - 0xf3, 0x98, 0xc6, 0xac, 0xeb, 0x00, 0x83, 0x49, 0x9c, 0x48, 0xea, 0x9f, 0xa3, 0xcc, 0x3a, 0x22, - 0x82, 0xfa, 0xbf, 0x0d, 0xcb, 0x23, 0xef, 0x55, 0x8f, 0xe8, 0xa7, 0xe7, 0x07, 0xbd, 0x93, 0x21, - 0xed, 0x22, 0xf3, 0x54, 0xae, 0x3d, 0xf2, 0x5e, 0xfd, 0x00, 0x73, 0x1e, 0x07, 0x0f, 0x09, 0x47, - 0x11, 0xa1, 0xd4, 0x97, 0x88, 0xc7, 0x3c, 0x3a, 0xe7, 0xc4, 0xd5, 0x55, 0xad, 0xa3, 0xb8, 0x02, - 0xc5, 0x1e, 0x8d, 0x70, 0xdc, 0xc9, 0xb0, 0x2f, 0x58, 0xd8, 0x9d, 0x1f, 0xf9, 0xc1, 0x5e, 0x32, - 0xec, 0xb3, 0x6b, 0x00, 0x28, 0x13, 0xc6, 0x3c, 0xea, 0xbd, 0xbc, 0x20, 0x7e, 0xac, 0x92, 0x0c, - 0x38, 0xe4, 0xd1, 0xe7, 0x17, 0xec, 0x1d, 0xa8, 0xf7, 0x63, 0x12, 0x2a, 0xde, 0x65, 0xa7, 0x41, - 0xcc, 0x5a, 0xeb, 0xc7, 0x28, 0x4e, 0xbc, 0x4b, 0x64, 0x28, 0xec, 0xad, 0x47, 0xab, 0xc0, 0x07, - 0x54, 0x7d, 0x4c, 0xd2, 0x71, 0x81, 0x3a, 0xbb, 0x25, 0x33, 0xb0, 0x9d, 0x98, 0x7d, 0x03, 0x16, - 0x54, 0x67, 0x4f, 0x86, 0xde, 0x69, 0x4c, 0xe2, 0x61, 0xc1, 0x6d, 0x4a, 0xf0, 0x21, 0x62, 0xce, - 0x0b, 0xa1, 0x34, 0x19, 0x6b, 0x2b, 0xf9, 0x06, 0xb7, 0x6f, 0x42, 0x68, 0x5d, 0x6b, 0xae, 0x4c, - 0x15, 0x2d, 0x5a, 0xb9, 0x60, 0xd1, 0x9c, 0x5f, 0x94, 0xa0, 0x29, 0x6b, 0x26, 0x4d, 0x83, 0xdd, - 0x07, 0xa6, 0x56, 0x31, 0x79, 0xe5, 0x0f, 0x7a, 0xc7, 0x97, 0x09, 0x8f, 0x05, 0xd1, 0xec, 0xcd, - 0xb8, 0x05, 0x79, 0x28, 0x0f, 0x2d, 0x34, 0x4e, 0x22, 0x41, 0xd3, 0x7b, 0x33, 0x6e, 0x2e, 0x07, - 0x59, 0x0c, 0x75, 0x99, 0x49, 0xd2, 0xf3, 0x83, 0x01, 0x7f, 0x45, 0xa4, 0xb4, 0xe0, 0x5a, 0xd8, - 0x83, 0x16, 0x34, 0xcd, 0xef, 0x9c, 0x9f, 0x42, 0x4d, 0x69, 0x42, 0xa4, 0x05, 0x64, 0xfa, 0xe5, - 0x1a, 0x08, 0xeb, 0x42, 0xcd, 0xee, 0x85, 0x5b, 0xfb, 0x3a, 0x6d, 0x3b, 0x7f, 0x01, 0xda, 0xfb, - 0x48, 0x44, 0x01, 0x12, 0xad, 0x54, 0xef, 0x56, 0x61, 0xce, 0x60, 0x9e, 0xba, 0x2b, 0x53, 0xb8, - 0x8f, 0x9e, 0x85, 0x71, 0x22, 0xdb, 0xa1, 0xdf, 0xce, 0x9f, 0x94, 0x80, 0xed, 0xc6, 0x89, 0x3f, - 0xf2, 0x12, 0xfe, 0x90, 0x6b, 0xf1, 0xf0, 0x14, 0x9a, 0x58, 0xdb, 0xb3, 0x70, 0x4b, 0x28, 0x5b, - 0x42, 0x49, 0xf8, 0x96, 0x64, 0xe7, 0xfc, 0x07, 0x1b, 0x66, 0x69, 0x21, 0xba, 0xad, 0x0a, 0x90, - 0xdb, 0x12, 0x2f, 0x3a, 0xe5, 0x09, 0x69, 0x62, 0x52, 0x8f, 0x07, 0x01, 0x6d, 0x87, 0xc1, 0x49, - 0xf7, 0xb7, 0x60, 0x29, 0x57, 0x87, 0x29, 0xa3, 0xeb, 0x05, 0x32, 0xba, 0x62, 0xca, 0xe8, 0x3e, - 0x2c, 0x5b, 0xfd, 0x92, 0x14, 0xd7, 0x81, 0x79, 0x64, 0x0c, 0xdc, 0xf0, 0x4b, 0x62, 0xc3, 0x97, - 0x49, 0xb6, 0x09, 0x2b, 0x27, 0x9c, 0x47, 0x5e, 0x42, 0x49, 0x62, 0x1d, 0x5c, 0x13, 0x59, 0x73, - 0x61, 0x9e, 0xf3, 0x5f, 0x4b, 0xb0, 0x88, 0xd2, 0xf4, 0x89, 0x17, 0x5c, 0xaa, 0xb9, 0xda, 0x2f, - 0x9c, 0xab, 0x3b, 0xc6, 0x26, 0x67, 0x94, 0xfe, 0xba, 0x13, 0x55, 0xc9, 0x4e, 0x14, 0x5b, 0x87, - 0xa6, 0xd5, 0xdd, 0x59, 0xa1, 0x59, 0xc6, 0x5e, 0x72, 0xc8, 0xa3, 0x07, 0x97, 0x09, 0xff, 0xd5, - 0xa7, 0xf2, 0x16, 0xb4, 0xd3, 0x6e, 0xcb, 0x79, 0x64, 0x50, 0x45, 0xc2, 0x94, 0x15, 0xd0, 0x6f, - 0xe7, 0x1f, 0x94, 0x44, 0xc1, 0xed, 0xd0, 0xd7, 0x5a, 0x27, 0x16, 0x44, 0xe5, 0x55, 0x15, 0xc4, - 0xdf, 0x53, 0xb5, 0xf6, 0x5f, 0x7d, 0xb0, 0x28, 0x13, 0x63, 0x1e, 0x0c, 0x7a, 0xde, 0x70, 0x48, - 0x82, 0xb8, 0xe6, 0xce, 0x63, 0x7a, 0x6b, 0x38, 0x74, 0x6e, 0xc3, 0x92, 0xd1, 0xbb, 0xd7, 0x8c, - 0xe3, 0x00, 0xd8, 0xbe, 0x1f, 0x27, 0xcf, 0x83, 0x78, 0x6c, 0x28, 0x64, 0xef, 0x40, 0x1d, 0xa5, - 0x2d, 0xf6, 0x4c, 0x70, 0xee, 0xac, 0x8b, 0xe2, 0x17, 0xfb, 0x15, 0x53, 0xa6, 0xf7, 0x4a, 0x66, - 0x96, 0x65, 0xa6, 0xf7, 0x8a, 0x32, 0x9d, 0x8f, 0x61, 0xd9, 0xaa, 0x4f, 0x36, 0xfd, 0x1e, 0xcc, - 0x4e, 0x92, 0x57, 0xa1, 0x52, 0xb9, 0x1b, 0x92, 0x42, 0xf0, 0x70, 0xe7, 0x8a, 0x1c, 0xe7, 0x53, - 0x58, 0x3a, 0xe0, 0x17, 0x92, 0x91, 0x55, 0x47, 0x6e, 0xbd, 0xf1, 0xe0, 0x47, 0xf9, 0xce, 0x06, - 0x30, 0xf3, 0xe3, 0x94, 0x01, 0xd4, 0x31, 0xb0, 0x64, 0x1d, 0x03, 0x9d, 0x5b, 0xc0, 0x8e, 0xfc, - 0xd3, 0xe0, 0x09, 0x8f, 0x63, 0xef, 0x54, 0xb3, 0x7e, 0x1b, 0x2a, 0xa3, 0xf8, 0x54, 0x8a, 0x2a, - 0xfc, 0xe9, 0x7c, 0x07, 0x96, 0xad, 0x72, 0xb2, 0xe2, 0x6b, 0x50, 0x8f, 0xfd, 0xd3, 0xc0, 0x4b, - 0x26, 0x11, 0x97, 0x55, 0xa7, 0x80, 0xf3, 0x10, 0x56, 0x7e, 0xc0, 0x23, 0xff, 0xe4, 0xf2, 0x4d, - 0xd5, 0xdb, 0xf5, 0x94, 0xb3, 0xf5, 0xec, 0xc2, 0x95, 0x4c, 0x3d, 0xb2, 0x79, 0x41, 0xbe, 0x72, - 0x25, 0x6b, 0xae, 0x48, 0x18, 0xb2, 0xaf, 0x6c, 0xca, 0x3e, 0xe7, 0x39, 0xb0, 0xed, 0x30, 0x08, - 0x78, 0x3f, 0x39, 0xe4, 0x3c, 0x4a, 0x2d, 0x50, 0x29, 0xad, 0x36, 0x36, 0xd7, 0xe4, 0xcc, 0x66, - 0x05, 0xaa, 0x24, 0x62, 0x06, 0xd5, 0x31, 0x8f, 0x46, 0x54, 0x71, 0xcd, 0xa5, 0xdf, 0xce, 0x15, - 0x58, 0xb6, 0xaa, 0x95, 0x67, 0xf6, 0x0f, 0xe1, 0xca, 0x8e, 0x1f, 0xf7, 0xf3, 0x0d, 0x76, 0x60, - 0x7e, 0x3c, 0x39, 0xee, 0xa5, 0x9c, 0xa8, 0x92, 0x78, 0x8c, 0xcb, 0x7e, 0x22, 0x2b, 0xfb, 0xeb, - 0x25, 0xa8, 0xee, 0x3d, 0xdb, 0xdf, 0xc6, 0xbd, 0xc2, 0x0f, 0xfa, 0xe1, 0x08, 0xb5, 0x30, 0x31, - 0x68, 0x9d, 0x9e, 0xca, 0x61, 0xd7, 0xa0, 0x4e, 0xca, 0x1b, 0x9e, 0x5c, 0xa5, 0x1e, 0x94, 0x02, - 0x78, 0x6a, 0xe6, 0xaf, 0xc6, 0x7e, 0x44, 0xc7, 0x62, 0x75, 0xd8, 0xad, 0xd2, 0x36, 0x93, 0xcf, - 0x70, 0x7e, 0x31, 0x0f, 0xf3, 0x72, 0xf3, 0x15, 0x1b, 0x79, 0xe2, 0x9f, 0xf3, 0x74, 0x23, 0xc7, - 0x14, 0x2a, 0xc6, 0x11, 0x1f, 0x85, 0x89, 0xd6, 0xdf, 0xc4, 0x32, 0xd8, 0x20, 0x59, 0x05, 0xa4, - 0x12, 0x21, 0xec, 0x08, 0x15, 0x51, 0xca, 0x02, 0xd9, 0x35, 0x98, 0x57, 0xca, 0x40, 0x55, 0x1f, - 0x58, 0x14, 0x84, 0xb3, 0xd1, 0xf7, 0xc6, 0x5e, 0xdf, 0x4f, 0x2e, 0xa5, 0x58, 0xd0, 0x69, 0xac, - 0x7f, 0x18, 0xf6, 0xbd, 0x61, 0xef, 0xd8, 0x1b, 0x7a, 0x41, 0x9f, 0x2b, 0xab, 0x83, 0x05, 0xe2, - 0x09, 0x5c, 0x76, 0x4b, 0x15, 0x13, 0xa7, 0xf4, 0x0c, 0x8a, 0x7b, 0x78, 0x3f, 0x1c, 0x8d, 0xfc, - 0x04, 0x0f, 0xee, 0xa4, 0x9a, 0x55, 0x5c, 0x03, 0x11, 0x36, 0x0e, 0x4a, 0x5d, 0x88, 0x19, 0xac, - 0x2b, 0x1b, 0x87, 0x01, 0x62, 0x2d, 0x19, 0x0d, 0xad, 0xe2, 0x1a, 0x08, 0xae, 0xc5, 0x24, 0x88, - 0x79, 0x92, 0x0c, 0xf9, 0x40, 0x77, 0xa8, 0x41, 0xc5, 0xf2, 0x19, 0xec, 0x3e, 0x2c, 0x0b, 0x5b, - 0x42, 0xec, 0x25, 0x61, 0x7c, 0xe6, 0xc7, 0xbd, 0x18, 0x8f, 0x41, 0xe2, 0x4c, 0x5b, 0x94, 0xc5, - 0x3e, 0x86, 0xb5, 0x0c, 0x1c, 0xf1, 0x3e, 0xf7, 0xcf, 0xf9, 0x80, 0x54, 0xb8, 0x8a, 0x3b, 0x2d, - 0x9b, 0xad, 0x43, 0x23, 0x98, 0x8c, 0x7a, 0x93, 0xf1, 0xc0, 0x43, 0x25, 0xa6, 0x45, 0xca, 0xa5, - 0x09, 0xb1, 0x0f, 0x41, 0xe9, 0x69, 0x52, 0x7b, 0x5c, 0xb4, 0x24, 0x1c, 0x52, 0xaf, 0x6b, 0x97, - 0x40, 0xc2, 0x4c, 0x55, 0xd2, 0xb6, 0x3c, 0x3f, 0x2a, 0x80, 0xf8, 0x24, 0xf2, 0xcf, 0xbd, 0x84, - 0x77, 0x96, 0x84, 0x50, 0x97, 0x49, 0xfc, 0xce, 0x0f, 0xfc, 0xc4, 0xf7, 0x92, 0x30, 0xea, 0x30, - 0xca, 0x4b, 0x01, 0x9c, 0x44, 0xa2, 0x8f, 0x38, 0xf1, 0x92, 0x49, 0x2c, 0x35, 0xd4, 0x65, 0x22, - 0xae, 0x7c, 0x06, 0xfb, 0x08, 0x56, 0x05, 0x45, 0x50, 0x96, 0xd4, 0xbd, 0x49, 0x55, 0x58, 0xa1, - 0x19, 0x99, 0x92, 0x8b, 0x53, 0x29, 0x49, 0x24, 0xf7, 0xe1, 0x15, 0x31, 0x95, 0x53, 0xb2, 0xb1, - 0x7f, 0xd8, 0x03, 0xbf, 0xdf, 0x93, 0x25, 0x90, 0x45, 0x56, 0x69, 0x14, 0xf9, 0x0c, 0x24, 0xf1, - 0xa1, 0x7f, 0xc2, 0x13, 0x7f, 0xc4, 0x3b, 0x6b, 0x82, 0xc4, 0x55, 0x1a, 0x19, 0x70, 0x32, 0xa6, - 0x9c, 0x8e, 0x60, 0x78, 0x91, 0x72, 0x7e, 0xbf, 0x24, 0x36, 0x1f, 0xc9, 0xa8, 0xb1, 0x71, 0xac, - 0x12, 0x2c, 0xda, 0x0b, 0x83, 0xe1, 0xa5, 0xe4, 0x5a, 0x10, 0xd0, 0xd3, 0x60, 0x78, 0x89, 0x8a, - 0xbd, 0x1f, 0x98, 0x45, 0x84, 0x9c, 0x6b, 0x2a, 0x90, 0x0a, 0xbd, 0x0b, 0x8d, 0xf1, 0xe4, 0x78, - 0xe8, 0xf7, 0x45, 0x91, 0x8a, 0xa8, 0x45, 0x40, 0x54, 0x00, 0xcf, 0x95, 0x62, 0xa5, 0x44, 0x89, - 0x2a, 0x95, 0x68, 0x48, 0x0c, 0x8b, 0x38, 0x0f, 0x60, 0xc5, 0xee, 0xa0, 0x14, 0xe8, 0x77, 0xa1, - 0x26, 0xf9, 0x5f, 0x19, 0x0a, 0x5a, 0x86, 0xf9, 0x16, 0x8f, 0x41, 0x3a, 0xdf, 0xf9, 0x97, 0x55, - 0x58, 0x96, 0xe8, 0xf6, 0x30, 0x8c, 0xf9, 0xd1, 0x64, 0x34, 0xf2, 0xa2, 0x02, 0xc1, 0x52, 0x7a, - 0x83, 0x60, 0x29, 0xe7, 0x05, 0xcb, 0x0d, 0xeb, 0x7c, 0x29, 0x24, 0x93, 0x81, 0xb0, 0x3b, 0xb0, - 0xd8, 0x1f, 0x86, 0xb1, 0x50, 0xf7, 0x4d, 0x0b, 0x62, 0x16, 0xce, 0x0b, 0xc3, 0xd9, 0x22, 0x61, - 0x68, 0x0a, 0xb2, 0xb9, 0x8c, 0x20, 0x73, 0xa0, 0x89, 0x95, 0x72, 0x25, 0x9b, 0xe7, 0xe5, 0x61, - 0xcb, 0xc0, 0xb0, 0x3f, 0x59, 0xb1, 0x21, 0x64, 0xd4, 0x62, 0x91, 0xd0, 0xf0, 0x47, 0x9c, 0x64, - 0xbf, 0x51, 0xba, 0x2e, 0x85, 0x46, 0x3e, 0x8b, 0x3d, 0x04, 0x10, 0x6d, 0x91, 0x02, 0x02, 0xa4, - 0x80, 0xdc, 0xb2, 0x57, 0xc5, 0x9c, 0xff, 0x0d, 0x4c, 0x4c, 0x22, 0x4e, 0x4a, 0x89, 0xf1, 0xa5, - 0xf3, 0x37, 0x4b, 0xd0, 0x30, 0xf2, 0xd8, 0x15, 0x58, 0xda, 0x7e, 0xfa, 0xf4, 0x70, 0xd7, 0xdd, - 0x7a, 0xf6, 0xf8, 0x07, 0xbb, 0xbd, 0xed, 0xfd, 0xa7, 0x47, 0xbb, 0xed, 0x19, 0x84, 0xf7, 0x9f, - 0x6e, 0x6f, 0xed, 0xf7, 0x1e, 0x3e, 0x75, 0xb7, 0x15, 0x5c, 0x62, 0xab, 0xc0, 0xdc, 0xdd, 0x27, - 0x4f, 0x9f, 0xed, 0x5a, 0x78, 0x99, 0xb5, 0xa1, 0xf9, 0xc0, 0xdd, 0xdd, 0xda, 0xde, 0x93, 0x48, - 0x85, 0xad, 0x40, 0xfb, 0xe1, 0xf3, 0x83, 0x9d, 0xc7, 0x07, 0x8f, 0x7a, 0xdb, 0x5b, 0x07, 0xdb, - 0xbb, 0xfb, 0xbb, 0x3b, 0xed, 0x2a, 0x5b, 0x80, 0xfa, 0xd6, 0x83, 0xad, 0x83, 0x9d, 0xa7, 0x07, - 0xbb, 0x3b, 0xed, 0x59, 0xe7, 0x4f, 0x4b, 0x70, 0x85, 0x7a, 0x3d, 0xc8, 0x32, 0xc9, 0x3a, 0x34, - 0xfa, 0x61, 0x38, 0x46, 0xc5, 0x3f, 0xdd, 0xda, 0x4c, 0x08, 0x19, 0x40, 0x08, 0x85, 0x93, 0x30, - 0xea, 0x73, 0xc9, 0x23, 0x40, 0xd0, 0x43, 0x44, 0x90, 0x01, 0xe4, 0xf2, 0x8a, 0x12, 0x82, 0x45, - 0x1a, 0x02, 0x13, 0x45, 0x56, 0x61, 0xee, 0x38, 0xe2, 0x5e, 0xff, 0x4c, 0x72, 0x87, 0x4c, 0xb1, - 0xf7, 0xd3, 0x93, 0x69, 0x1f, 0x67, 0x7f, 0xc8, 0x07, 0x44, 0x31, 0x35, 0x77, 0x51, 0xe2, 0xdb, - 0x12, 0x46, 0x29, 0xe8, 0x1d, 0x7b, 0xc1, 0x20, 0x0c, 0xf8, 0x40, 0xaa, 0xbd, 0x29, 0xe0, 0x1c, - 0xc2, 0x6a, 0x76, 0x7c, 0x92, 0xc7, 0x3e, 0x32, 0x78, 0x4c, 0x68, 0xa1, 0xdd, 0xe9, 0xab, 0x69, - 0xf0, 0xdb, 0x7f, 0x2e, 0x43, 0x15, 0x95, 0x92, 0xe9, 0x0a, 0x8c, 0xa9, 0x67, 0x56, 0x72, 0xee, - 0x06, 0x3a, 0xec, 0x8a, 0x2d, 0x4a, 0x1a, 0x5a, 0x52, 0x24, 0xcd, 0x8f, 0x78, 0xff, 0x5c, 0x9a, - 0x5a, 0x0c, 0x04, 0x19, 0x04, 0x0f, 0x01, 0xf4, 0xb5, 0x64, 0x10, 0x95, 0x56, 0x79, 0xf4, 0xe5, - 0x7c, 0x9a, 0x47, 0xdf, 0x75, 0x60, 0xde, 0x0f, 0x8e, 0xc3, 0x49, 0x30, 0x20, 0x86, 0xa8, 0xb9, - 0x2a, 0x49, 0x0e, 0x0e, 0x62, 0x54, 0x94, 0x9f, 0x82, 0xfc, 0x53, 0x80, 0x6d, 0x42, 0x3d, 0xbe, - 0x0c, 0xfa, 0x26, 0xcd, 0xaf, 0xc8, 0x59, 0xc2, 0x39, 0xd8, 0x38, 0xba, 0x0c, 0xfa, 0x44, 0xe1, - 0x69, 0x31, 0xe7, 0xb7, 0xa0, 0xa6, 0x60, 0x24, 0xcb, 0xe7, 0x07, 0x9f, 0x1f, 0x3c, 0x7d, 0x71, - 0xd0, 0x3b, 0xfa, 0xe1, 0xc1, 0x76, 0x7b, 0x86, 0x2d, 0x42, 0x63, 0x6b, 0x9b, 0x28, 0x9d, 0x80, - 0x12, 0x16, 0x39, 0xdc, 0x3a, 0x3a, 0xd2, 0x48, 0xd9, 0x61, 0x78, 0x90, 0x8f, 0x49, 0xf3, 0xd3, - 0x06, 0xfc, 0x8f, 0x60, 0xc9, 0xc0, 0xd2, 0x53, 0xc4, 0x18, 0x81, 0xcc, 0x29, 0x82, 0x54, 0x46, - 0x91, 0xe3, 0xb4, 0xa1, 0xf5, 0x88, 0x27, 0x8f, 0x83, 0x93, 0x50, 0xd5, 0xf4, 0xdf, 0xab, 0xb0, - 0xa8, 0x21, 0x59, 0xd1, 0x1d, 0x58, 0xf4, 0x07, 0x3c, 0x48, 0xfc, 0xe4, 0xb2, 0x67, 0xd9, 0x0b, - 0xb2, 0x30, 0xaa, 0xda, 0xde, 0xd0, 0xf7, 0x94, 0x1f, 0x49, 0x24, 0xf0, 0xfc, 0x8c, 0x3a, 0x80, - 0x69, 0xb7, 0x21, 0xba, 0x12, 0x66, 0x8a, 0xc2, 0x3c, 0x94, 0x40, 0x88, 0xcb, 0x6d, 0x46, 0x7f, - 0x22, 0x54, 0xce, 0xa2, 0x2c, 0x5c, 0x2a, 0x51, 0x13, 0x0e, 0x79, 0x56, 0xe8, 0x09, 0x1a, 0xc8, - 0x39, 0x6a, 0xe6, 0x84, 0x7c, 0xcc, 0x3a, 0x6a, 0x0c, 0x67, 0x4f, 0x2d, 0xe7, 0xec, 0x41, 0xf9, - 0x79, 0x19, 0xf4, 0xf9, 0xa0, 0x97, 0x84, 0x3d, 0x92, 0xf3, 0x44, 0x12, 0x35, 0x37, 0x0b, 0xe3, - 0xbe, 0x91, 0xf0, 0x38, 0x09, 0xb8, 0xb0, 0x78, 0xd7, 0xc8, 0x0a, 0xaa, 0x20, 0x3c, 0x1f, 0x4c, - 0x22, 0x3f, 0xee, 0x34, 0xc9, 0x8d, 0x43, 0xbf, 0xd9, 0x77, 0xe1, 0xca, 0x31, 0x8f, 0x93, 0xde, - 0x19, 0xf7, 0x06, 0x3c, 0x22, 0xf2, 0x12, 0xfe, 0x22, 0xa1, 0x72, 0x15, 0x67, 0x22, 0xe1, 0x9e, - 0xf3, 0x28, 0xf6, 0xc3, 0x80, 0x94, 0xad, 0xba, 0xab, 0x92, 0x58, 0x1f, 0x0e, 0x5e, 0x6f, 0xd4, - 0x7a, 0x06, 0x17, 0x69, 0xe0, 0xc5, 0x99, 0xec, 0x26, 0xcc, 0xd1, 0x00, 0xe2, 0x4e, 0x9b, 0x68, - 0xa6, 0x99, 0xf2, 0xbc, 0x1f, 0xb8, 0x32, 0x0f, 0x57, 0xb9, 0x1f, 0x0e, 0xc3, 0x88, 0x34, 0xae, - 0xba, 0x2b, 0x12, 0xf6, 0xec, 0x9c, 0x46, 0xde, 0xf8, 0x4c, 0x6a, 0x5d, 0x59, 0xf8, 0xb3, 0x6a, - 0xad, 0xd1, 0x6e, 0x3a, 0xff, 0x1f, 0xcc, 0x52, 0xb5, 0x54, 0x1d, 0x4d, 0x66, 0x49, 0x56, 0x47, - 0x68, 0x07, 0xe6, 0x03, 0x9e, 0x5c, 0x84, 0xd1, 0x4b, 0xe5, 0x94, 0x94, 0x49, 0xe7, 0x67, 0x74, - 0x42, 0xd3, 0x4e, 0xba, 0xe7, 0xa4, 0x5a, 0xe2, 0x39, 0x5b, 0x2c, 0x55, 0x7c, 0xe6, 0xc9, 0x43, - 0x63, 0x8d, 0x80, 0xa3, 0x33, 0x0f, 0x65, 0xad, 0xb5, 0xfa, 0xe2, 0x1c, 0xde, 0x20, 0x6c, 0x4f, - 0x2c, 0xfe, 0x4d, 0x68, 0x29, 0xf7, 0x5f, 0xdc, 0x1b, 0xf2, 0x93, 0x44, 0x59, 0xd1, 0x82, 0xc9, - 0x88, 0x0e, 0xeb, 0xfb, 0xfc, 0x24, 0x71, 0x0e, 0x60, 0x49, 0xca, 0xbf, 0xa7, 0x63, 0xae, 0x9a, - 0xfe, 0x8d, 0x22, 0x5d, 0xa2, 0xb1, 0xb9, 0x6c, 0x0b, 0x4c, 0xe1, 0xf0, 0xb4, 0x4b, 0x3a, 0x2e, - 0x30, 0x53, 0x9e, 0xca, 0x0a, 0xe5, 0x66, 0xae, 0xec, 0x84, 0x72, 0x38, 0x16, 0x86, 0xf3, 0x13, - 0x4f, 0xfa, 0x7d, 0xe5, 0xb4, 0xad, 0xb9, 0x2a, 0xe9, 0xfc, 0x87, 0x12, 0x2c, 0x53, 0x6d, 0x4a, - 0x1b, 0x92, 0x7b, 0xd6, 0xc7, 0x5f, 0xa3, 0x9b, 0xca, 0x4a, 0x2b, 0x6c, 0x93, 0x2b, 0x30, 0x6b, - 0xee, 0x62, 0x22, 0xf1, 0xf5, 0x6d, 0x32, 0xd5, 0x9c, 0x4d, 0xe6, 0x2e, 0xb4, 0x07, 0x7c, 0xe8, - 0x93, 0xe3, 0x5e, 0xed, 0x09, 0x42, 0xf5, 0xc9, 0xe1, 0xce, 0xdf, 0x2d, 0xc1, 0x92, 0xd8, 0x74, - 0x48, 0x33, 0x97, 0x53, 0xf5, 0xff, 0xc3, 0x82, 0xd0, 0x1e, 0xa4, 0x04, 0x91, 0x83, 0x4a, 0xc5, - 0x30, 0xa1, 0xa2, 0xf0, 0xde, 0x8c, 0x6b, 0x17, 0x66, 0x9f, 0x92, 0x06, 0x17, 0xf4, 0x08, 0x2d, - 0x08, 0x05, 0xb0, 0xd7, 0x65, 0x6f, 0xc6, 0x35, 0x8a, 0x3f, 0xa8, 0xa1, 0x62, 0x8d, 0xb8, 0xf3, - 0x08, 0x16, 0xac, 0x86, 0x2c, 0xdb, 0x51, 0x53, 0xd8, 0x8e, 0x72, 0x46, 0xda, 0x72, 0x81, 0x91, - 0xf6, 0x9f, 0x57, 0x80, 0x21, 0x61, 0x65, 0x56, 0x6e, 0xdd, 0xf6, 0x74, 0xa8, 0xa8, 0x80, 0x14, - 0x62, 0x9b, 0xc0, 0x8c, 0xa4, 0xf2, 0xc0, 0x54, 0xb4, 0x07, 0xa6, 0x20, 0x17, 0xc5, 0xb2, 0xd4, - 0x50, 0xb4, 0x77, 0x83, 0xec, 0x02, 0x62, 0x99, 0x0a, 0xf3, 0x70, 0x17, 0x25, 0x57, 0x07, 0x9e, - 0x60, 0xe4, 0x59, 0x5a, 0xa5, 0xb3, 0xf4, 0x30, 0xf7, 0x46, 0x7a, 0x98, 0xcf, 0xd1, 0x83, 0x71, - 0x9a, 0xab, 0xd9, 0xa7, 0xb9, 0x9b, 0xb0, 0xa0, 0x3c, 0x1a, 0xc2, 0x29, 0x2b, 0x8f, 0xce, 0x16, - 0x88, 0xf4, 0xa4, 0x0e, 0x54, 0xfa, 0xc8, 0x28, 0x5c, 0x8e, 0x39, 0x1c, 0xf7, 0x8b, 0xd4, 0x6a, - 0xd7, 0xa0, 0xce, 0xa6, 0x00, 0x9d, 0xbf, 0x90, 0x4a, 0x7a, 0x93, 0x40, 0x46, 0x04, 0xf0, 0x01, - 0x1d, 0x9a, 0xf1, 0xfc, 0x95, 0xcd, 0x70, 0xfe, 0x56, 0x09, 0xda, 0xb8, 0x6e, 0x16, 0x69, 0x7e, - 0x02, 0xc4, 0x45, 0x6f, 0x49, 0x99, 0x56, 0x59, 0xf6, 0x31, 0xd4, 0x29, 0x1d, 0x8e, 0x79, 0x20, - 0xe9, 0xb2, 0x63, 0xd3, 0x65, 0x2a, 0x7f, 0xf6, 0x66, 0xdc, 0xb4, 0xb0, 0x41, 0x95, 0xff, 0xae, - 0x04, 0x0d, 0xd9, 0xca, 0x2f, 0x6d, 0x15, 0xea, 0x1a, 0x21, 0x1c, 0x42, 0x59, 0x4b, 0x23, 0x36, - 0xee, 0xc0, 0xe2, 0xc8, 0x4b, 0x26, 0x11, 0xee, 0xff, 0x96, 0x45, 0x28, 0x0b, 0xe3, 0x66, 0x4e, - 0xa2, 0x36, 0xee, 0x25, 0xfe, 0xb0, 0xa7, 0x72, 0x65, 0xb0, 0x44, 0x51, 0x16, 0x4a, 0x9c, 0x38, - 0xf1, 0x4e, 0xb9, 0xdc, 0xa7, 0x45, 0xc2, 0xe9, 0xc0, 0xea, 0x61, 0xea, 0xe5, 0x31, 0xf4, 0x71, - 0xe7, 0x9f, 0x2e, 0xc0, 0x5a, 0x2e, 0x4b, 0x87, 0x76, 0x49, 0x33, 0xc7, 0xd0, 0x1f, 0x1d, 0x87, - 0xfa, 0x30, 0x53, 0x32, 0x2d, 0x20, 0x56, 0x16, 0x3b, 0x85, 0x2b, 0x4a, 0x21, 0xc1, 0x39, 0x4d, - 0x37, 0xcf, 0x32, 0xed, 0x8a, 0x1f, 0xda, 0x4b, 0x98, 0x6d, 0x50, 0xe1, 0x26, 0x23, 0x17, 0xd7, - 0xc7, 0xce, 0xa0, 0xa3, 0x35, 0x1f, 0x29, 0xdc, 0x0d, 0xed, 0x08, 0xdb, 0xfa, 0xe0, 0x0d, 0x6d, - 0x59, 0xea, 0xbb, 0x3b, 0xb5, 0x36, 0x76, 0x09, 0x37, 0x54, 0x1e, 0x49, 0xef, 0x7c, 0x7b, 0xd5, - 0xb7, 0x1a, 0x1b, 0x1d, 0x4c, 0xec, 0x46, 0xdf, 0x50, 0x31, 0xfb, 0x29, 0xac, 0x5e, 0x78, 0x7e, - 0xa2, 0xba, 0x65, 0xe8, 0x22, 0xb3, 0xd4, 0xe4, 0xe6, 0x1b, 0x9a, 0x7c, 0x21, 0x3e, 0xb6, 0xb6, - 0xb4, 0x29, 0x35, 0x76, 0xff, 0xb8, 0x0c, 0x2d, 0xbb, 0x1e, 0x24, 0x53, 0xc9, 0xfb, 0x4a, 0x06, - 0x2a, 0xed, 0x35, 0x03, 0xe7, 0x6d, 0x02, 0xe5, 0x22, 0x9b, 0x80, 0x79, 0x0a, 0xaf, 0xbc, 0xc9, - 0x9c, 0x58, 0x7d, 0x3b, 0x73, 0xe2, 0x6c, 0xa1, 0x39, 0x71, 0xba, 0xd5, 0x69, 0xee, 0x97, 0xb5, - 0x3a, 0xcd, 0xbf, 0xd6, 0xea, 0xd4, 0xfd, 0x3f, 0x25, 0x60, 0x79, 0xea, 0x65, 0x8f, 0x84, 0x19, - 0x24, 0xe0, 0x43, 0x29, 0xc4, 0xbe, 0xfd, 0x76, 0x1c, 0xa0, 0x56, 0x4b, 0x7d, 0x8d, 0xac, 0x68, - 0xc6, 0x57, 0x99, 0xea, 0xd8, 0x82, 0x5b, 0x94, 0x95, 0x31, 0xa9, 0x56, 0xdf, 0x6c, 0x52, 0x9d, - 0x7d, 0xb3, 0x49, 0x75, 0x2e, 0x6b, 0x52, 0xed, 0xfe, 0xb5, 0x12, 0x2c, 0x17, 0x90, 0xd9, 0xaf, - 0x6f, 0xe0, 0x48, 0x18, 0x96, 0xf4, 0x29, 0x4b, 0xc2, 0x30, 0xc1, 0xee, 0x5f, 0x82, 0x05, 0x8b, - 0xb5, 0x7e, 0x7d, 0xed, 0x67, 0x35, 0x4a, 0x41, 0xd9, 0x16, 0xd6, 0xfd, 0x9f, 0x65, 0x60, 0x79, - 0xf6, 0xfe, 0x73, 0xed, 0x43, 0x7e, 0x9e, 0x2a, 0x05, 0xf3, 0xf4, 0xff, 0x74, 0xe7, 0xf9, 0x00, - 0x96, 0x64, 0xd0, 0xa8, 0x61, 0xf8, 0x12, 0x14, 0x93, 0xcf, 0x40, 0x9d, 0xda, 0xb6, 0x67, 0xd7, - 0xac, 0x20, 0x39, 0x63, 0xfb, 0xcd, 0x98, 0xb5, 0x9d, 0x2e, 0x74, 0xe4, 0x0c, 0xed, 0x9e, 0xf3, - 0x20, 0x39, 0x9a, 0x1c, 0x8b, 0xa8, 0x49, 0x3f, 0x0c, 0x48, 0x0d, 0x34, 0x33, 0xa5, 0x42, 0xf1, - 0x5d, 0x68, 0x9a, 0xdb, 0x87, 0x5c, 0x8e, 0x8c, 0xed, 0x13, 0x55, 0x09, 0xb3, 0x14, 0xdb, 0x81, - 0x16, 0x09, 0xc9, 0x81, 0xfe, 0xae, 0x4c, 0xdf, 0xbd, 0xc6, 0x9e, 0xb3, 0x37, 0xe3, 0x66, 0xbe, - 0x61, 0xbf, 0x09, 0x2d, 0xfb, 0xb0, 0x28, 0xb5, 0x92, 0xa2, 0xd3, 0x03, 0x7e, 0x6e, 0x17, 0x66, - 0x5b, 0xd0, 0xce, 0x9e, 0x36, 0x65, 0xe4, 0xcf, 0x94, 0x0a, 0x72, 0xc5, 0xd9, 0xc7, 0xd2, 0xb9, - 0x39, 0x4b, 0x76, 0x96, 0x9b, 0xf6, 0x67, 0xc6, 0x34, 0x6d, 0x88, 0x3f, 0x86, 0xbb, 0xf3, 0x77, - 0x00, 0x52, 0x8c, 0xb5, 0xa1, 0xf9, 0xf4, 0x70, 0xf7, 0xa0, 0xb7, 0xbd, 0xb7, 0x75, 0x70, 0xb0, - 0xbb, 0xdf, 0x9e, 0x61, 0x0c, 0x5a, 0x64, 0x16, 0xdc, 0xd1, 0x58, 0x09, 0x31, 0x69, 0x88, 0x51, - 0x58, 0x99, 0xad, 0x40, 0xfb, 0xf1, 0x41, 0x06, 0xad, 0x3c, 0xa8, 0x6b, 0xfe, 0x70, 0x56, 0x61, - 0x45, 0x04, 0x05, 0x3f, 0x10, 0xe4, 0xa1, 0xb4, 0x93, 0x7f, 0x58, 0x82, 0x2b, 0x99, 0x8c, 0x34, - 0x3c, 0x4c, 0x28, 0x20, 0xb6, 0x56, 0x62, 0x83, 0xe4, 0xac, 0x50, 0xba, 0x66, 0x46, 0x82, 0xe4, - 0x33, 0x90, 0xe6, 0x0d, 0xdd, 0x34, 0xc3, 0x49, 0x45, 0x59, 0xce, 0x9a, 0x8e, 0xc2, 0xc9, 0x74, - 0xfc, 0x44, 0x04, 0x1b, 0x9b, 0x19, 0xa9, 0xb3, 0xd8, 0xee, 0xb2, 0x4a, 0xe2, 0xb1, 0xc2, 0x52, - 0x76, 0xec, 0xfe, 0x16, 0xe6, 0x39, 0xff, 0xab, 0x0a, 0xec, 0xfb, 0x13, 0x1e, 0x5d, 0x52, 0xfc, - 0x97, 0xb6, 0xb2, 0xae, 0x65, 0x6d, 0x88, 0x73, 0xe3, 0xc9, 0xf1, 0xe7, 0xfc, 0x52, 0xc5, 0x6b, - 0x96, 0xdf, 0x2a, 0x5e, 0xb3, 0x28, 0x5e, 0xb2, 0xfa, 0xe6, 0x78, 0xc9, 0xd9, 0x37, 0xc5, 0x4b, - 0x7e, 0x03, 0x16, 0xfc, 0xd3, 0x20, 0x44, 0x71, 0x80, 0x2a, 0x44, 0xdc, 0x99, 0x5b, 0xaf, 0xe0, - 0x31, 0x5d, 0x82, 0x07, 0x88, 0xb1, 0x4f, 0xd3, 0x42, 0x7c, 0x70, 0x4a, 0xf1, 0xbd, 0xa6, 0x80, - 0xd8, 0x1d, 0x9c, 0xf2, 0xfd, 0xb0, 0xef, 0x25, 0x61, 0x44, 0xe7, 0x34, 0xf5, 0x31, 0xe2, 0x31, - 0xbb, 0x09, 0xad, 0x38, 0x9c, 0xa0, 0x52, 0xa5, 0xa6, 0x41, 0x18, 0xa5, 0x9a, 0x02, 0x3d, 0x14, - 0x93, 0xb1, 0x01, 0xcb, 0x93, 0x98, 0xf7, 0x46, 0x7e, 0x1c, 0xe3, 0xc6, 0xd9, 0x0f, 0x83, 0x24, - 0x0a, 0x87, 0xd2, 0x34, 0xb5, 0x34, 0x89, 0xf9, 0x13, 0x91, 0xb3, 0x2d, 0x32, 0xd8, 0x77, 0xd3, - 0x2e, 0x8d, 0x3d, 0x3f, 0x8a, 0x3b, 0x40, 0x5d, 0x52, 0x23, 0xc5, 0x7e, 0x1f, 0x7a, 0x7e, 0xa4, - 0xfb, 0x82, 0x89, 0x38, 0x13, 0xc7, 0xd9, 0xc8, 0xc6, 0x71, 0xfe, 0xa4, 0x38, 0x8e, 0x73, 0x81, - 0xaa, 0xbe, 0x2f, 0xab, 0xce, 0x2f, 0xf1, 0xdb, 0x87, 0x73, 0xfe, 0x7a, 0x02, 0x34, 0x65, 0x4c, - 0xe1, 0x06, 0xd4, 0xd4, 0x30, 0xf1, 0xac, 0x7e, 0x12, 0x85, 0x23, 0x75, 0x56, 0xc7, 0xdf, 0xac, - 0x05, 0xe5, 0x24, 0x94, 0x1f, 0x97, 0x93, 0xd0, 0xf9, 0x5d, 0x68, 0x18, 0x2b, 0xc5, 0xde, 0x13, - 0x66, 0x03, 0xd4, 0x09, 0xe5, 0x21, 0x5f, 0x78, 0x86, 0xea, 0x12, 0x7d, 0x3c, 0x60, 0xdf, 0x82, - 0xa5, 0x81, 0x1f, 0x71, 0x0a, 0x89, 0xee, 0x45, 0xfc, 0x9c, 0x47, 0xb1, 0x32, 0x9f, 0xb4, 0x75, - 0x86, 0x2b, 0x70, 0xa7, 0x07, 0xcb, 0xd6, 0xd4, 0x68, 0xe1, 0x30, 0x47, 0x81, 0x90, 0xca, 0x82, - 0x6b, 0x07, 0x49, 0xca, 0x3c, 0xdc, 0x56, 0xa5, 0xe5, 0xa7, 0x37, 0x8e, 0xc2, 0x63, 0x6a, 0xa4, - 0xe4, 0x5a, 0x98, 0xf3, 0x3f, 0x2a, 0x50, 0xd9, 0x0b, 0xc7, 0xa6, 0x3f, 0xab, 0x94, 0xf7, 0x67, - 0x49, 0xfd, 0xb7, 0xa7, 0xd5, 0x5b, 0xa9, 0xa4, 0x58, 0x20, 0xbb, 0x0b, 0x2d, 0xe4, 0xb4, 0x24, - 0x44, 0x7d, 0xff, 0xc2, 0x8b, 0x44, 0xd4, 0x64, 0x85, 0xc8, 0x37, 0x93, 0xc3, 0x56, 0xa0, 0xa2, - 0xd5, 0x36, 0x2a, 0x80, 0x49, 0x3c, 0x6c, 0x52, 0xcc, 0xc0, 0xa5, 0x34, 0xd3, 0xca, 0x14, 0x0a, - 0x2e, 0xfb, 0x7b, 0xc1, 0xce, 0x62, 0xf3, 0x2d, 0xca, 0x42, 0x5d, 0x1c, 0x19, 0x76, 0x94, 0xaa, - 0xb6, 0x3a, 0x6d, 0x3a, 0x20, 0x6a, 0xb6, 0x03, 0x62, 0x1d, 0x1a, 0xc9, 0xf0, 0xbc, 0x37, 0xf6, - 0x2e, 0x87, 0xa1, 0x37, 0x90, 0x8c, 0x62, 0x42, 0xec, 0x3e, 0xc0, 0x68, 0x3c, 0x96, 0x54, 0x4c, - 0x16, 0x84, 0xc6, 0x66, 0x5b, 0xce, 0xfe, 0x93, 0xc3, 0x43, 0x41, 0x7d, 0xae, 0x51, 0x86, 0xed, - 0x42, 0xab, 0x30, 0x84, 0xf9, 0xba, 0xf2, 0x6c, 0x87, 0xe3, 0x8d, 0x02, 0x3a, 0xcf, 0x7c, 0xd4, - 0xfd, 0x6d, 0x60, 0xbf, 0x62, 0x04, 0xf2, 0x0b, 0xa8, 0xeb, 0x1e, 0x9a, 0x71, 0xbf, 0x14, 0xbe, - 0xd2, 0xb0, 0xe3, 0x7e, 0x29, 0x5a, 0xe5, 0x16, 0xb4, 0xc4, 0x6e, 0xa3, 0xe5, 0xa7, 0x08, 0x39, - 0xc8, 0xa0, 0xce, 0x9f, 0x95, 0x60, 0x96, 0x28, 0x0f, 0xd5, 0x2f, 0x91, 0xa7, 0x1d, 0x81, 0xd4, - 0xb5, 0x05, 0x37, 0x0b, 0x33, 0xc7, 0xba, 0xda, 0x50, 0xd6, 0x64, 0x60, 0x5e, 0x6f, 0x58, 0x87, - 0xba, 0x6e, 0xc9, 0x20, 0xa5, 0x14, 0x64, 0x37, 0xa0, 0x7a, 0x16, 0x8e, 0xd5, 0x09, 0x15, 0xd2, - 0x19, 0x75, 0x09, 0x4f, 0xfb, 0x83, 0xf5, 0x89, 0x21, 0x88, 0x53, 0x40, 0x16, 0x2e, 0x18, 0xeb, - 0x5c, 0xe1, 0x58, 0x9f, 0xc3, 0x22, 0xca, 0x07, 0xc3, 0x31, 0x32, 0x7d, 0x2f, 0x7a, 0x1f, 0x55, - 0x9b, 0xfe, 0x70, 0x32, 0xe0, 0xa6, 0x9d, 0x80, 0x0c, 0xdf, 0x12, 0x57, 0x1a, 0xb2, 0xf3, 0xcf, - 0x4a, 0x42, 0xee, 0x60, 0xbd, 0xec, 0x0e, 0x54, 0x71, 0xdb, 0xc8, 0x98, 0x85, 0x74, 0x48, 0x11, - 0x96, 0x73, 0xa9, 0x04, 0xae, 0x22, 0x99, 0xa6, 0xcd, 0xda, 0x85, 0x61, 0x3a, 0x3d, 0x64, 0xeb, - 0x91, 0x65, 0xce, 0xa6, 0x19, 0x94, 0x6d, 0x18, 0x7e, 0xbd, 0xaa, 0xb5, 0x15, 0x29, 0x4d, 0x6a, - 0x70, 0xca, 0x0d, 0x7f, 0xde, 0x1f, 0x96, 0x60, 0xc1, 0xea, 0x13, 0x72, 0x0f, 0x05, 0xfe, 0x0b, - 0x2b, 0x93, 0x5c, 0x79, 0x13, 0x32, 0x39, 0xaf, 0x6c, 0x73, 0x9e, 0xf6, 0x0f, 0x55, 0x4c, 0xff, - 0xd0, 0x7d, 0xa8, 0xa7, 0x77, 0x5b, 0xec, 0x4e, 0x61, 0x8b, 0x2a, 0xb8, 0x2a, 0x2d, 0x94, 0x7a, - 0x20, 0x66, 0x0d, 0x0f, 0x84, 0xf3, 0x29, 0x34, 0x8c, 0xf2, 0xa6, 0x07, 0xa1, 0x64, 0x79, 0x10, - 0x74, 0xe4, 0x61, 0x39, 0x8d, 0x3c, 0x74, 0x7e, 0x5e, 0x86, 0x05, 0x24, 0x6f, 0x3f, 0x38, 0x3d, - 0x0c, 0x87, 0x7e, 0xff, 0x92, 0xc8, 0x4a, 0x51, 0xb2, 0x54, 0x1b, 0x14, 0x99, 0xdb, 0x30, 0x8a, - 0x21, 0x1d, 0x6e, 0x2d, 0x64, 0xa6, 0x4e, 0xa3, 0x50, 0x45, 0x91, 0x74, 0xec, 0xc5, 0xdc, 0xb8, - 0xec, 0xe2, 0xda, 0x20, 0x8a, 0x3e, 0x04, 0x28, 0x8e, 0x74, 0xe4, 0x0f, 0x87, 0xbe, 0x28, 0x2b, - 0xce, 0xbb, 0x45, 0x59, 0xd8, 0xe6, 0xc0, 0x8f, 0xbd, 0xe3, 0xd4, 0xf7, 0xab, 0xd3, 0x64, 0x2c, - 0xf5, 0x5e, 0x19, 0xc6, 0x52, 0x11, 0x78, 0x6e, 0x83, 0xd9, 0x85, 0x9c, 0xcf, 0x2d, 0xa4, 0xf3, - 0xaf, 0xcb, 0xd0, 0x30, 0xc8, 0x02, 0xd9, 0xb9, 0x70, 0xdf, 0x33, 0x50, 0x19, 0x14, 0x11, 0x58, - 0x16, 0x14, 0x03, 0x61, 0x37, 0xed, 0x56, 0xc9, 0xc9, 0x42, 0x0c, 0x6f, 0x91, 0xd0, 0x35, 0xa8, - 0x23, 0xe9, 0x7f, 0x48, 0xe6, 0x1a, 0x79, 0xb1, 0x4c, 0x03, 0x2a, 0x77, 0x93, 0x72, 0x67, 0xd3, - 0x5c, 0x02, 0x5e, 0x1b, 0x26, 0xf1, 0x31, 0x34, 0x65, 0x35, 0xb4, 0xc6, 0x34, 0xe8, 0x94, 0xf9, - 0xac, 0xf5, 0x77, 0xad, 0x92, 0xea, 0xcb, 0x4d, 0xf5, 0x65, 0xed, 0x4d, 0x5f, 0xaa, 0x92, 0xce, - 0x23, 0x1d, 0x81, 0xf2, 0x28, 0xf2, 0xc6, 0x67, 0x4a, 0xa0, 0xdc, 0x87, 0x65, 0x25, 0x37, 0x26, - 0x81, 0x17, 0x04, 0xe1, 0x24, 0xe8, 0x73, 0x15, 0xa4, 0x58, 0x94, 0xe5, 0x0c, 0x74, 0x48, 0x3b, - 0x55, 0xc4, 0xee, 0xc2, 0xac, 0x50, 0x3c, 0x85, 0x7a, 0x50, 0x2c, 0x42, 0x44, 0x11, 0x76, 0x07, - 0x66, 0x85, 0xfe, 0x59, 0x9e, 0xca, 0xf4, 0xa2, 0x80, 0xb3, 0x01, 0x8b, 0x14, 0x43, 0x6f, 0xc8, - 0xbe, 0x77, 0x8a, 0xd4, 0x86, 0xb9, 0xbe, 0x88, 0xb4, 0x5f, 0x01, 0x76, 0x20, 0xf8, 0xca, 0xf4, - 0x23, 0xff, 0x59, 0x05, 0x1a, 0x06, 0x8c, 0xf2, 0x89, 0x9c, 0x7f, 0xbd, 0x81, 0xef, 0x8d, 0x78, - 0xc2, 0x23, 0xc9, 0x4b, 0x19, 0x14, 0xcb, 0x79, 0xe7, 0xa7, 0xbd, 0x70, 0x92, 0xf4, 0x06, 0xfc, - 0x34, 0xe2, 0x5c, 0xea, 0x33, 0x19, 0x14, 0xcb, 0x21, 0x35, 0x1b, 0xe5, 0x84, 0xbb, 0x2e, 0x83, - 0x2a, 0xaf, 0xb0, 0x98, 0xa7, 0x6a, 0xea, 0x15, 0x16, 0xb3, 0x92, 0x95, 0xac, 0xb3, 0x05, 0x92, - 0xf5, 0x23, 0x58, 0x15, 0x32, 0x54, 0x4a, 0x8f, 0x5e, 0x86, 0xb8, 0xa6, 0xe4, 0xb2, 0xbb, 0xd0, - 0xc6, 0x3e, 0x2b, 0xd6, 0x88, 0xfd, 0x9f, 0x09, 0x1e, 0x2b, 0xb9, 0x39, 0x1c, 0xcb, 0x92, 0xeb, - 0xc1, 0x2c, 0x2b, 0x42, 0x73, 0x72, 0x38, 0x95, 0xf5, 0x5e, 0xd9, 0x65, 0xeb, 0xb2, 0x6c, 0x06, - 0x67, 0x1f, 0xc3, 0xda, 0x88, 0x0f, 0x7c, 0xcf, 0xae, 0xa2, 0x97, 0x6e, 0xf2, 0xd3, 0xb2, 0xb1, - 0x15, 0x9c, 0x85, 0x9f, 0x85, 0xa3, 0x63, 0x5f, 0x6c, 0x6c, 0xc2, 0x49, 0x52, 0x75, 0x73, 0xb8, - 0xb3, 0x00, 0x8d, 0xa3, 0x24, 0x1c, 0xab, 0xa5, 0x6f, 0x41, 0x53, 0x24, 0x65, 0x58, 0xea, 0x3b, - 0x70, 0x95, 0xe8, 0xf5, 0x59, 0x38, 0x0e, 0x87, 0xe1, 0xe9, 0xa5, 0x65, 0xea, 0xf8, 0xb7, 0x25, - 0x58, 0xb6, 0x72, 0x53, 0x5b, 0x07, 0xd9, 0x65, 0x55, 0x2c, 0xa1, 0x20, 0xf1, 0x25, 0x63, 0x5b, - 0x10, 0x05, 0x85, 0x1b, 0xec, 0xb9, 0x0c, 0x2f, 0xdc, 0x4a, 0x2f, 0xc8, 0xa8, 0x0f, 0x05, 0xbd, - 0x77, 0xf2, 0xf4, 0x2e, 0xbf, 0x57, 0x57, 0x67, 0x54, 0x15, 0xbf, 0x29, 0x03, 0xa9, 0x06, 0x72, - 0xd0, 0x15, 0x3b, 0xf8, 0xc5, 0x34, 0x8d, 0xa9, 0x1e, 0xf4, 0x35, 0x18, 0x3b, 0xbf, 0x28, 0x01, - 0xa4, 0xbd, 0xa3, 0xf0, 0x1b, 0xbd, 0xb5, 0x89, 0xbb, 0xe4, 0xc6, 0x36, 0xf6, 0x1e, 0x34, 0x75, - 0x04, 0x45, 0xba, 0x5b, 0x36, 0x14, 0x86, 0xda, 0xc5, 0x6d, 0x58, 0x3c, 0x1d, 0x86, 0xc7, 0xa4, - 0xc5, 0x50, 0x9c, 0x73, 0x2c, 0x83, 0x73, 0x5b, 0x02, 0x7e, 0x28, 0xd1, 0x74, 0x6b, 0xad, 0x9a, - 0x5b, 0x6b, 0xf1, 0x46, 0xf9, 0xf3, 0xb2, 0x76, 0x63, 0xa7, 0x33, 0xf1, 0x5a, 0x2e, 0x67, 0x9b, - 0x39, 0xb1, 0x3e, 0xc5, 0x73, 0x4c, 0x67, 0xa0, 0xc3, 0x37, 0x5a, 0xca, 0x3f, 0x85, 0x56, 0x24, - 0x64, 0xa6, 0x12, 0xa8, 0xd5, 0xd7, 0x08, 0xd4, 0x85, 0xc8, 0xda, 0x99, 0xdf, 0x87, 0xb6, 0x37, - 0x38, 0xe7, 0x51, 0xe2, 0x93, 0xe5, 0x90, 0xd4, 0x28, 0x31, 0xc0, 0x45, 0x03, 0x27, 0x6d, 0xe5, - 0x36, 0x2c, 0xca, 0x50, 0x69, 0x5d, 0x52, 0xde, 0xaa, 0x4c, 0x61, 0x2c, 0xe8, 0xfc, 0x63, 0xe5, - 0x35, 0xb7, 0x57, 0xf7, 0xf5, 0xb3, 0x62, 0x8e, 0xb0, 0x9c, 0x19, 0xe1, 0x37, 0xa4, 0x67, 0x7a, - 0xa0, 0x4c, 0x94, 0x15, 0x23, 0x24, 0x6f, 0x20, 0xa3, 0x0e, 0xec, 0x69, 0xad, 0xbe, 0xcd, 0xb4, - 0x3a, 0xff, 0xb1, 0x04, 0xf3, 0x7b, 0xe1, 0x78, 0x0f, 0xa7, 0x18, 0x75, 0x1c, 0x64, 0x13, 0x7d, - 0x4f, 0x41, 0x25, 0xdf, 0x10, 0xba, 0x58, 0xa8, 0x95, 0x2c, 0x64, 0xb5, 0x92, 0xdf, 0x86, 0x77, - 0xc8, 0x48, 0x1e, 0x85, 0xe3, 0x30, 0x42, 0x76, 0xf5, 0x86, 0x42, 0x05, 0x09, 0x83, 0xe4, 0x4c, - 0x89, 0xd3, 0xd7, 0x15, 0x21, 0xcb, 0xd5, 0x30, 0x39, 0xef, 0x89, 0x13, 0x9e, 0xd4, 0xa2, 0x84, - 0x94, 0xcd, 0x67, 0x38, 0xbf, 0x01, 0x75, 0x3a, 0x61, 0xd0, 0xd0, 0x3e, 0x80, 0xfa, 0x59, 0x38, - 0xee, 0x9d, 0xf9, 0x41, 0xa2, 0xd8, 0xbf, 0x95, 0xaa, 0xfe, 0x7b, 0x34, 0x29, 0xba, 0x80, 0xf3, - 0x27, 0x73, 0x30, 0xff, 0x38, 0x38, 0x0f, 0xfd, 0x3e, 0x79, 0xdf, 0x47, 0x7c, 0x14, 0xaa, 0x9b, - 0x1b, 0xf8, 0x9b, 0x2e, 0x47, 0xa7, 0x77, 0x2b, 0x05, 0x0b, 0x19, 0x08, 0x9e, 0x49, 0x23, 0xf3, - 0x6e, 0xa4, 0x4c, 0xa5, 0x07, 0xad, 0x59, 0xe3, 0xee, 0x0b, 0xd6, 0x26, 0xee, 0xec, 0xd1, 0xdc, - 0x89, 0x88, 0x5b, 0x03, 0xc1, 0xc9, 0x97, 0x21, 0x95, 0x22, 0xe6, 0x4e, 0xc4, 0xff, 0x48, 0x88, - 0xce, 0xd9, 0x11, 0x17, 0x6e, 0x0e, 0xad, 0x7a, 0xe1, 0x39, 0xdb, 0x04, 0x51, 0x3d, 0x13, 0x1f, - 0x88, 0x32, 0x62, 0x3b, 0x30, 0x21, 0x54, 0x50, 0xb3, 0x37, 0x86, 0xc5, 0xad, 0xef, 0x2c, 0x2c, - 0xe2, 0x2c, 0xb4, 0xd0, 0x15, 0xe3, 0x04, 0x71, 0xbf, 0x34, 0x8b, 0x1b, 0xa7, 0x73, 0x11, 0x53, - 0xae, 0x4e, 0xe7, 0x48, 0x32, 0xde, 0x70, 0x78, 0xec, 0xf5, 0x5f, 0x8a, 0xc3, 0x64, 0x53, 0x78, - 0xc7, 0x2c, 0x90, 0x02, 0x23, 0xd3, 0x75, 0xa5, 0xe8, 0xa5, 0xaa, 0x6b, 0x42, 0x6c, 0x13, 0x1a, - 0x64, 0xb9, 0x90, 0x2b, 0xdb, 0xa2, 0x95, 0x6d, 0x9b, 0xa6, 0x0d, 0x5a, 0x5b, 0xb3, 0x90, 0x19, - 0x17, 0xb0, 0x98, 0x8b, 0xf2, 0xf6, 0x06, 0x03, 0x19, 0x52, 0xd1, 0x16, 0xf7, 0x2b, 0x35, 0x40, - 0xb6, 0x11, 0x31, 0x61, 0xa2, 0xc0, 0x12, 0x15, 0xb0, 0x30, 0x76, 0x43, 0x58, 0x0e, 0xc7, 0x9e, - 0x3f, 0xa0, 0x80, 0x25, 0x71, 0xfc, 0xd4, 0x18, 0xd6, 0xa1, 0x7e, 0xd3, 0xc6, 0xb9, 0x4c, 0xb3, - 0x62, 0x61, 0x38, 0x37, 0x3a, 0x3d, 0x4a, 0xc3, 0xc2, 0x6d, 0x90, 0x7d, 0x48, 0x4e, 0xed, 0x84, - 0x53, 0xec, 0x77, 0x6b, 0xf3, 0x1d, 0x39, 0x66, 0x49, 0xb6, 0xea, 0xef, 0x11, 0x16, 0x71, 0x45, - 0x49, 0x54, 0xdb, 0x84, 0x5f, 0x61, 0xd5, 0x52, 0xdb, 0x64, 0x51, 0xf2, 0x2b, 0x88, 0x02, 0xce, - 0x16, 0x34, 0xcd, 0x0a, 0x58, 0x0d, 0xaa, 0x4f, 0x0f, 0x77, 0x0f, 0xda, 0x33, 0xac, 0x01, 0xf3, - 0x47, 0xbb, 0xcf, 0x9e, 0xed, 0xef, 0xee, 0xb4, 0x4b, 0xac, 0x09, 0x35, 0x1d, 0xef, 0x5a, 0xc6, - 0xd4, 0xd6, 0xf6, 0xf6, 0xee, 0xe1, 0xb3, 0xdd, 0x9d, 0x76, 0xe5, 0xb3, 0x6a, 0xad, 0xdc, 0xae, - 0x38, 0x7f, 0x54, 0x81, 0x86, 0x51, 0xff, 0x1b, 0x6c, 0x46, 0x37, 0x00, 0xe8, 0x44, 0x91, 0xc6, - 0xb4, 0x54, 0x5d, 0x03, 0x41, 0x09, 0xa9, 0xcf, 0xda, 0x15, 0x71, 0xd9, 0x54, 0xa5, 0x69, 0xd6, - 0xe8, 0x56, 0xa7, 0xe9, 0xc4, 0x99, 0x75, 0x6d, 0x10, 0x29, 0x4a, 0x02, 0x14, 0x84, 0x29, 0xf8, - 0xd0, 0x84, 0x70, 0x85, 0x22, 0x1e, 0x87, 0xc3, 0x73, 0x2e, 0x8a, 0x08, 0xbd, 0xcc, 0xc2, 0xb0, - 0x2d, 0x29, 0x6a, 0x8c, 0x00, 0xe9, 0x59, 0xd7, 0x06, 0xd9, 0xb7, 0xd5, 0x0a, 0xd5, 0x68, 0x85, - 0xd6, 0xf2, 0xd3, 0x6d, 0xad, 0xce, 0x93, 0x9c, 0xd1, 0xa7, 0x4e, 0xcb, 0xf4, 0xcd, 0xfc, 0x77, - 0x7f, 0x3e, 0xc6, 0x9f, 0x04, 0xd8, 0xd6, 0x60, 0x20, 0x9b, 0x35, 0xef, 0xd2, 0x46, 0xe6, 0xe5, - 0x6d, 0x25, 0xdb, 0x0a, 0xe4, 0x47, 0xb9, 0x58, 0x7e, 0xbc, 0x96, 0xcb, 0x9c, 0xc7, 0xd0, 0x38, - 0x34, 0xae, 0x83, 0x3b, 0x28, 0x6a, 0xd5, 0x45, 0x70, 0x21, 0x84, 0x85, 0xd1, 0x27, 0x45, 0x8d, - 0x2e, 0x95, 0xcd, 0x2e, 0x39, 0xff, 0xa8, 0x24, 0x6e, 0xd8, 0xe9, 0x21, 0x88, 0xf6, 0x1d, 0x68, - 0x6a, 0xbf, 0x41, 0x7a, 0x29, 0xc1, 0xc2, 0xb0, 0x0c, 0x75, 0xa7, 0x17, 0x9e, 0x9c, 0xc4, 0x5c, - 0x85, 0x0f, 0x5b, 0x98, 0xd2, 0x6a, 0x51, 0x4f, 0xf6, 0x45, 0x0b, 0xb1, 0x0c, 0x23, 0xce, 0xe1, - 0x48, 0xb9, 0xd2, 0x6e, 0xab, 0x02, 0xa7, 0x75, 0x5a, 0xdf, 0x9d, 0xc8, 0xce, 0xf4, 0x5d, 0xa8, - 0xe9, 0x7a, 0xed, 0x2d, 0x4b, 0x95, 0xd4, 0xf9, 0xb8, 0x35, 0xd2, 0x89, 0xd7, 0xea, 0xb4, 0x60, - 0xa0, 0x7c, 0x06, 0xdb, 0x00, 0x76, 0xe2, 0x47, 0xd9, 0xe2, 0x82, 0xa3, 0x0a, 0x72, 0x9c, 0x17, - 0xb0, 0xac, 0xc4, 0x81, 0xa1, 0x6e, 0xdb, 0x0b, 0x59, 0x7a, 0x93, 0xb8, 0x2c, 0xe7, 0xc5, 0xa5, - 0xf3, 0xaf, 0xaa, 0x30, 0x2f, 0x57, 0x3b, 0xf7, 0xac, 0x80, 0xd8, 0x70, 0x2d, 0x8c, 0x75, 0xac, - 0xcb, 0xa3, 0x44, 0x08, 0x72, 0x13, 0xbd, 0x93, 0xdd, 0x06, 0x53, 0xe3, 0x5f, 0x66, 0x2b, 0x5c, - 0x85, 0xea, 0xd8, 0x4b, 0xce, 0xc8, 0x36, 0x24, 0x68, 0x89, 0xd2, 0xca, 0xbc, 0x3c, 0x6b, 0x9b, - 0x97, 0x8b, 0x1e, 0x53, 0x10, 0x3a, 0x5f, 0xfe, 0x31, 0x85, 0x6b, 0x50, 0x17, 0xdb, 0x76, 0x6a, - 0x41, 0x4e, 0x81, 0xcc, 0x36, 0x5f, 0xcb, 0x6d, 0xf3, 0x6f, 0xbf, 0x01, 0x7f, 0x17, 0xe6, 0xc4, - 0x85, 0x22, 0x19, 0x26, 0x7e, 0x4d, 0x39, 0x88, 0x45, 0x39, 0xf5, 0x57, 0xc4, 0x8f, 0xb9, 0xb2, - 0xac, 0x79, 0x25, 0xb9, 0x61, 0x5f, 0x49, 0x36, 0x0d, 0xdf, 0xcd, 0x8c, 0xe1, 0xfb, 0x2e, 0xb4, - 0xf5, 0xf4, 0x91, 0xa5, 0x2a, 0x88, 0x65, 0x14, 0x71, 0x0e, 0x4f, 0xf7, 0x97, 0x96, 0xb5, 0xbf, - 0xa0, 0xc4, 0xda, 0x4a, 0x12, 0x3e, 0x1a, 0x27, 0x6a, 0x7f, 0x79, 0x08, 0x0b, 0x56, 0x27, 0x71, - 0x5b, 0x91, 0xc1, 0xeb, 0xed, 0x19, 0xb6, 0x00, 0xf5, 0xc7, 0x07, 0xbd, 0x87, 0xfb, 0x8f, 0x1f, - 0xed, 0x3d, 0x6b, 0x97, 0x30, 0x79, 0xf4, 0x7c, 0x7b, 0x7b, 0x77, 0x77, 0x87, 0xb6, 0x19, 0x80, - 0xb9, 0x87, 0x5b, 0x8f, 0x71, 0xcb, 0xa9, 0x38, 0xff, 0xbb, 0x04, 0x0d, 0xa3, 0x7a, 0xf6, 0x3d, - 0x3d, 0x33, 0xe2, 0xd6, 0xea, 0xf5, 0x7c, 0x17, 0x36, 0x94, 0xe0, 0x35, 0xa6, 0x46, 0xbf, 0x1f, - 0x51, 0x9e, 0xfa, 0x7e, 0x04, 0x2e, 0x8f, 0x27, 0x6a, 0xd0, 0xf3, 0x20, 0x8e, 0x21, 0x59, 0x58, - 0xc4, 0x08, 0xa5, 0xbb, 0x05, 0x96, 0x14, 0xa6, 0xb7, 0x2c, 0xec, 0x7c, 0x04, 0x90, 0xf6, 0xc6, - 0x1e, 0xf6, 0x8c, 0x3d, 0xec, 0x92, 0x31, 0xec, 0xb2, 0xb3, 0x23, 0x04, 0x86, 0x9c, 0x42, 0xed, - 0xe1, 0xfc, 0x36, 0x30, 0x65, 0xe9, 0xa1, 0x58, 0xbc, 0xf1, 0x90, 0x27, 0xea, 0x3a, 0xc9, 0x92, - 0xcc, 0x79, 0xac, 0x33, 0xd4, 0x8d, 0xa8, 0xb4, 0x96, 0x54, 0xee, 0x48, 0x8a, 0xcb, 0xca, 0x1d, - 0x59, 0xd4, 0xd5, 0xf9, 0x4e, 0x17, 0x3a, 0x3b, 0x1c, 0x6b, 0xdb, 0x1a, 0x0e, 0x33, 0xdd, 0xc1, - 0xa3, 0x7a, 0x41, 0x9e, 0x3c, 0xc7, 0x7f, 0x1f, 0xae, 0x6c, 0x89, 0x9b, 0x23, 0xbf, 0xae, 0xc0, - 0x62, 0xa7, 0x03, 0xab, 0xd9, 0x2a, 0x65, 0x63, 0x0f, 0x61, 0x69, 0x87, 0x1f, 0x4f, 0x4e, 0xf7, - 0xf9, 0x79, 0xda, 0x10, 0x83, 0x6a, 0x7c, 0x16, 0x5e, 0xc8, 0xf9, 0xa1, 0xdf, 0xec, 0x3a, 0xc0, - 0x10, 0xcb, 0xf4, 0xe2, 0x31, 0xef, 0xab, 0x5b, 0xc1, 0x84, 0x1c, 0x8d, 0x79, 0xdf, 0xf9, 0x08, - 0x98, 0x59, 0x8f, 0x9c, 0x2f, 0xd4, 0xad, 0x27, 0xc7, 0xbd, 0xf8, 0x32, 0x4e, 0xf8, 0x48, 0x5d, - 0x77, 0x36, 0x21, 0xe7, 0x36, 0x34, 0x0f, 0xbd, 0x4b, 0x97, 0x7f, 0x21, 0xdf, 0x2b, 0x59, 0x83, - 0xf9, 0xb1, 0x77, 0x89, 0xfc, 0xac, 0xcd, 0xff, 0x94, 0xed, 0xfc, 0x69, 0x05, 0xe6, 0x44, 0x49, - 0xac, 0x75, 0xc0, 0xe3, 0xc4, 0x0f, 0x88, 0xc7, 0x54, 0xad, 0x06, 0x94, 0x13, 0x98, 0xe5, 0x02, - 0x81, 0x29, 0x6d, 0x52, 0xea, 0x76, 0xa5, 0x24, 0x59, 0x0b, 0x43, 0xb1, 0x95, 0xde, 0x10, 0x10, - 0x94, 0x9a, 0x02, 0x19, 0xff, 0x5a, 0xaa, 0xc1, 0x8b, 0xfe, 0xa9, 0xbd, 0x40, 0xca, 0x44, 0x13, - 0x2a, 0x3c, 0x27, 0xcc, 0xab, 0x78, 0xec, 0xcc, 0x39, 0x21, 0x77, 0x1e, 0xa8, 0xbd, 0xc5, 0x79, - 0x40, 0x18, 0xaa, 0x5e, 0x77, 0x1e, 0x80, 0xb7, 0x39, 0x0f, 0xbc, 0x8d, 0x5f, 0xab, 0x0b, 0x35, - 0xda, 0xd3, 0x0d, 0x11, 0xa9, 0xd2, 0xc8, 0x2f, 0xda, 0x9c, 0xb2, 0x60, 0xf1, 0x8b, 0xb4, 0xa7, - 0xb8, 0x3a, 0xdf, 0x19, 0xc1, 0xbc, 0x04, 0x51, 0x15, 0x3b, 0xf6, 0x13, 0x69, 0xb9, 0xc4, 0x9f, - 0x48, 0x91, 0x81, 0x37, 0x52, 0xb7, 0xd1, 0xe9, 0x37, 0x0e, 0x99, 0x2e, 0xc5, 0x7e, 0x31, 0xf1, - 0x23, 0x3e, 0x50, 0xf7, 0xba, 0x0c, 0x88, 0x22, 0x71, 0xe3, 0xde, 0xcb, 0x20, 0xbc, 0x08, 0xe4, - 0xcd, 0x2e, 0x9d, 0x76, 0x18, 0xb4, 0xe9, 0x55, 0x0a, 0x3c, 0x4e, 0x2b, 0xb6, 0xfc, 0x7b, 0x25, - 0x68, 0x4b, 0x06, 0xd1, 0x79, 0xca, 0x09, 0xfd, 0xba, 0xeb, 0x8b, 0x37, 0x61, 0x81, 0x0e, 0xf3, - 0x7a, 0xab, 0x90, 0x0e, 0x5d, 0x0b, 0xc4, 0xfe, 0xaa, 0x50, 0xb8, 0x91, 0x3f, 0x94, 0xf4, 0x66, - 0x42, 0x6a, 0xb7, 0x89, 0x3c, 0x19, 0xc4, 0x5f, 0x72, 0x75, 0xda, 0xf9, 0xe3, 0x12, 0x2c, 0x19, - 0x1d, 0x96, 0x0c, 0xf6, 0x29, 0x34, 0xf5, 0xe3, 0x2f, 0x5c, 0x2b, 0x43, 0x6b, 0xb6, 0x44, 0x48, - 0x3f, 0xb3, 0x0a, 0x13, 0x9d, 0x7a, 0x97, 0xd4, 0xc1, 0x78, 0x32, 0x92, 0x5a, 0x88, 0x09, 0xe1, - 0xfa, 0x5f, 0x70, 0xfe, 0x52, 0x17, 0x11, 0x7a, 0x90, 0x85, 0x91, 0x13, 0x24, 0x0c, 0x92, 0x33, - 0x5d, 0xa8, 0x2a, 0x9d, 0x20, 0x26, 0xe8, 0xfc, 0x95, 0x32, 0x2c, 0x0b, 0xab, 0x92, 0xb4, 0xe6, - 0xe9, 0xfb, 0xf7, 0x73, 0xc2, 0xc0, 0x26, 0x84, 0xcd, 0xde, 0x8c, 0x2b, 0xd3, 0xec, 0x7b, 0x6f, - 0x69, 0x09, 0xd3, 0xb7, 0x05, 0xa6, 0xac, 0x45, 0xa5, 0x68, 0x2d, 0x5e, 0x33, 0xd3, 0x45, 0xfe, - 0xa8, 0xd9, 0x62, 0x7f, 0xd4, 0x5b, 0xf9, 0x7f, 0x1e, 0xcc, 0xc3, 0x6c, 0xdc, 0x0f, 0xc7, 0xdc, - 0x59, 0x85, 0x15, 0x7b, 0x0a, 0xa4, 0x0c, 0xfe, 0x45, 0x09, 0x3a, 0x0f, 0x85, 0xbb, 0xdd, 0x0f, - 0x4e, 0xf7, 0xfc, 0x38, 0x09, 0x23, 0xfd, 0x98, 0xc9, 0x0d, 0x80, 0x38, 0xf1, 0x22, 0x79, 0x2a, - 0x13, 0xaa, 0xa4, 0x81, 0xe0, 0x48, 0x78, 0x30, 0x10, 0xb9, 0x62, 0x05, 0x75, 0x3a, 0xa7, 0xaa, - 0x4b, 0xcb, 0x98, 0xa5, 0xf0, 0xde, 0x12, 0xf7, 0x71, 0xb0, 0xcb, 0xfc, 0x9c, 0x36, 0x36, 0x61, - 0x6e, 0xca, 0xa0, 0xce, 0xef, 0x97, 0x61, 0x31, 0xed, 0x24, 0xc5, 0x81, 0xd9, 0xe2, 0x51, 0x6a, - 0xb9, 0xa9, 0x78, 0x94, 0x5e, 0xac, 0x9e, 0x8f, 0x6a, 0xaf, 0x61, 0x1c, 0x33, 0x50, 0x76, 0x13, - 0x1a, 0x2a, 0x15, 0x4e, 0x12, 0xe3, 0x55, 0x01, 0x13, 0x16, 0x51, 0xf3, 0xa8, 0x78, 0xcb, 0x43, - 0x84, 0x4c, 0xd1, 0x0d, 0xc7, 0x51, 0x42, 0x5f, 0x8a, 0x99, 0x57, 0x49, 0x94, 0x20, 0xa8, 0xb1, - 0x8a, 0x07, 0x9e, 0x48, 0x5b, 0x35, 0x35, 0xb9, 0x9a, 0x7e, 0x8d, 0x49, 0x73, 0xa6, 0xa8, 0x31, - 0xbd, 0xf2, 0x50, 0x75, 0x4d, 0x48, 0x19, 0x27, 0xc2, 0x89, 0xe1, 0xba, 0xaf, 0xba, 0x16, 0xe6, - 0xfc, 0x5e, 0x09, 0xae, 0x16, 0x2c, 0xa3, 0xe4, 0xd4, 0x1d, 0x58, 0x3a, 0xd1, 0x99, 0x6a, 0xaa, - 0x05, 0xbb, 0xae, 0x2a, 0x99, 0x68, 0x4f, 0xaf, 0x9b, 0xff, 0x40, 0x1f, 0x66, 0xc4, 0xe2, 0x59, - 0x37, 0x5c, 0xf2, 0x19, 0xce, 0x21, 0x74, 0x77, 0x5f, 0x21, 0xe3, 0x6f, 0x9b, 0x4f, 0x6b, 0x2a, - 0xca, 0xda, 0xcc, 0x09, 0xb6, 0x37, 0xdb, 0x44, 0x4f, 0x60, 0xc1, 0xaa, 0x8b, 0x7d, 0xe7, 0x6d, - 0x2b, 0x31, 0x79, 0x74, 0x5d, 0xae, 0xba, 0x78, 0x1b, 0x54, 0xdd, 0xb3, 0x31, 0x20, 0xe7, 0x1c, - 0x16, 0x9f, 0x4c, 0x86, 0x89, 0x9f, 0xbe, 0x13, 0xca, 0xbe, 0x27, 0x3f, 0xa2, 0x2a, 0xd4, 0xd4, - 0x15, 0x36, 0x65, 0x96, 0xc3, 0x19, 0x1b, 0x61, 0x4d, 0xbd, 0x7c, 0x8b, 0xf9, 0x0c, 0xe7, 0x2a, - 0xac, 0xa5, 0x4d, 0x8a, 0xb9, 0x53, 0x9b, 0xc3, 0x1f, 0x94, 0x44, 0xb0, 0xa8, 0xfd, 0x6c, 0x29, - 0x7b, 0x04, 0xcb, 0xb1, 0x1f, 0x9c, 0x0e, 0xb9, 0x59, 0x4f, 0x2c, 0x67, 0xe2, 0x8a, 0xdd, 0x3d, - 0xf9, 0xb4, 0xa9, 0x5b, 0xf4, 0x05, 0x12, 0x48, 0x71, 0x47, 0x53, 0x02, 0xc9, 0x4c, 0x49, 0xd1, - 0x00, 0x3e, 0x83, 0x96, 0xdd, 0x18, 0xfb, 0x58, 0x5e, 0x8f, 0x49, 0x7b, 0x66, 0x3a, 0x31, 0x6d, - 0xca, 0xb0, 0x4a, 0x3a, 0x3f, 0x2f, 0x41, 0xc7, 0xe5, 0x48, 0xc6, 0xdc, 0x68, 0x54, 0x52, 0xcf, - 0xa7, 0xb9, 0x6a, 0xa7, 0x0f, 0x58, 0x5f, 0xbb, 0x51, 0x63, 0xdd, 0x98, 0xba, 0x28, 0x7b, 0x33, - 0x05, 0xa3, 0x7a, 0x50, 0x83, 0x39, 0x39, 0xbe, 0x35, 0xb8, 0x22, 0xbb, 0xa4, 0xba, 0x93, 0x7a, - 0xbf, 0xac, 0x46, 0x2d, 0xef, 0x57, 0x17, 0x3a, 0xe2, 0xcd, 0x1a, 0x73, 0x1c, 0xf2, 0xc3, 0x1d, - 0x60, 0x4f, 0xbc, 0xbe, 0x17, 0x85, 0x61, 0x70, 0xc8, 0x23, 0x19, 0xdd, 0x47, 0xba, 0x1d, 0x39, - 0x87, 0x94, 0x1a, 0x2a, 0x52, 0xea, 0x99, 0x95, 0x30, 0x50, 0xcf, 0xd9, 0x88, 0x94, 0xe3, 0xc2, - 0xf2, 0x03, 0xef, 0x25, 0x57, 0x35, 0xa5, 0xb3, 0xd4, 0x18, 0xeb, 0x4a, 0xd5, 0xdc, 0xab, 0x9b, - 0x6f, 0xf9, 0x66, 0x5d, 0xb3, 0xb4, 0xb3, 0x09, 0x2b, 0x76, 0x9d, 0x52, 0x94, 0x74, 0xa1, 0x36, - 0x92, 0x98, 0xec, 0x9d, 0x4e, 0xdf, 0xfd, 0x0a, 0x1a, 0xc6, 0x3b, 0x44, 0x6c, 0x0d, 0x96, 0x5f, - 0x3c, 0x7e, 0x76, 0xb0, 0x7b, 0x74, 0xd4, 0x3b, 0x7c, 0xfe, 0xe0, 0xf3, 0xdd, 0x1f, 0xf6, 0xf6, - 0xb6, 0x8e, 0xf6, 0xda, 0x33, 0x6c, 0x15, 0xd8, 0xc1, 0xee, 0xd1, 0xb3, 0xdd, 0x1d, 0x0b, 0x2f, - 0xb1, 0x1b, 0xd0, 0x7d, 0x7e, 0xf0, 0xfc, 0x68, 0x77, 0xa7, 0x57, 0xf4, 0x5d, 0x99, 0x5d, 0x87, - 0xab, 0x32, 0xbf, 0xe0, 0xf3, 0xca, 0xdd, 0x4f, 0xa1, 0x9d, 0x35, 0xe2, 0x59, 0xc6, 0xcf, 0xd7, - 0x59, 0x49, 0x37, 0x7f, 0x5e, 0x81, 0x96, 0x08, 0xdf, 0x15, 0x0f, 0xff, 0xf2, 0x88, 0x3d, 0x81, - 0x79, 0xf9, 0x82, 0x34, 0x53, 0xa4, 0x65, 0xbf, 0x59, 0xdd, 0x5d, 0xcd, 0xc2, 0x72, 0x59, 0x97, - 0xff, 0xea, 0xbf, 0xff, 0x6f, 0x7f, 0xbb, 0xbc, 0xc0, 0x1a, 0xf7, 0xce, 0x3f, 0xbc, 0x77, 0xca, - 0x83, 0x18, 0xeb, 0xf8, 0x1d, 0x80, 0xf4, 0x5d, 0x64, 0xd6, 0xd1, 0x36, 0xa3, 0xcc, 0xa3, 0xd1, - 0xdd, 0xab, 0x05, 0x39, 0xb2, 0xde, 0xab, 0x54, 0xef, 0xb2, 0xd3, 0xc2, 0x7a, 0xfd, 0xc0, 0x4f, - 0xc4, 0x1b, 0xc9, 0x9f, 0x94, 0xee, 0xb2, 0x01, 0x34, 0xcd, 0x17, 0x8b, 0x99, 0x72, 0x66, 0x16, - 0xbc, 0xb9, 0xdc, 0x7d, 0xa7, 0x30, 0x4f, 0xd1, 0x32, 0xb5, 0x71, 0xc5, 0x69, 0x63, 0x1b, 0x13, - 0x2a, 0x91, 0xb6, 0x32, 0x14, 0x1c, 0x9e, 0x3e, 0x4c, 0xcc, 0xae, 0x19, 0x4c, 0x97, 0x7b, 0x16, - 0xb9, 0x7b, 0x7d, 0x4a, 0xae, 0x6c, 0xeb, 0x3a, 0xb5, 0xb5, 0xe6, 0x30, 0x6c, 0xab, 0x4f, 0x65, - 0xd4, 0xb3, 0xc8, 0x9f, 0x94, 0xee, 0x6e, 0xfe, 0x9b, 0xdb, 0x50, 0xd7, 0x81, 0x0e, 0xec, 0xa7, - 0xb0, 0x60, 0xc5, 0x57, 0x33, 0x35, 0x8c, 0xa2, 0x70, 0xec, 0xee, 0xb5, 0xe2, 0x4c, 0xd9, 0xf0, - 0x0d, 0x6a, 0xb8, 0xc3, 0x56, 0xb1, 0x61, 0x19, 0xa0, 0x7c, 0x8f, 0x6e, 0x0a, 0x88, 0x8b, 0xc9, - 0x2f, 0x0d, 0x49, 0x26, 0x1a, 0xbb, 0x96, 0x15, 0x2e, 0x56, 0x6b, 0xd7, 0xa7, 0xe4, 0xca, 0xe6, - 0xae, 0x51, 0x73, 0xab, 0x6c, 0xc5, 0x6c, 0x4e, 0x07, 0x1f, 0x70, 0xba, 0x8d, 0x6f, 0xbe, 0xd9, - 0xcb, 0xae, 0x6b, 0xc2, 0x2a, 0x7a, 0xcb, 0x57, 0x93, 0x48, 0xfe, 0x41, 0x5f, 0xa7, 0x43, 0x4d, - 0x31, 0x46, 0xcb, 0x67, 0x3e, 0xd9, 0xcb, 0x8e, 0xa1, 0x61, 0x3c, 0x89, 0xc7, 0xae, 0x4e, 0x7d, - 0xbe, 0xaf, 0xdb, 0x2d, 0xca, 0x2a, 0x1a, 0x8a, 0x59, 0xff, 0x3d, 0x54, 0x74, 0x7e, 0x0c, 0x75, - 0xfd, 0xc8, 0x1a, 0x5b, 0x33, 0x1e, 0xbd, 0x33, 0x1f, 0x85, 0xeb, 0x76, 0xf2, 0x19, 0x45, 0xc4, - 0x67, 0xd6, 0x8e, 0xc4, 0xf7, 0x02, 0x1a, 0xc6, 0x43, 0x6a, 0x7a, 0x00, 0xf9, 0xc7, 0xda, 0xf4, - 0x00, 0x0a, 0xde, 0x5d, 0x73, 0x96, 0xa8, 0x89, 0x06, 0xab, 0x13, 0x7d, 0x27, 0xaf, 0xc2, 0x98, - 0xed, 0xc3, 0x15, 0x29, 0xb1, 0x8f, 0xf9, 0xd7, 0x59, 0x86, 0x82, 0x67, 0x92, 0xef, 0x97, 0xd8, - 0xa7, 0x50, 0x53, 0xef, 0xe5, 0xb1, 0xd5, 0xe2, 0x77, 0xff, 0xba, 0x6b, 0x39, 0x5c, 0x8a, 0xd7, - 0x1f, 0x02, 0xa4, 0xaf, 0xb6, 0x69, 0x21, 0x91, 0x7b, 0x05, 0x4e, 0x53, 0x40, 0xfe, 0x89, 0x37, - 0x67, 0x95, 0x06, 0xd8, 0x66, 0x24, 0x24, 0x02, 0x7e, 0xa1, 0x1e, 0xde, 0xf8, 0x09, 0x34, 0x8c, - 0x87, 0xdb, 0xf4, 0xf4, 0xe5, 0x1f, 0x7d, 0xd3, 0xd3, 0x57, 0xf0, 0xce, 0x9b, 0xd3, 0xa5, 0xda, - 0x57, 0x9c, 0x45, 0xac, 0x3d, 0xf6, 0x4f, 0x83, 0x91, 0x28, 0x80, 0x0b, 0x74, 0x06, 0x0b, 0xd6, - 0xeb, 0x6c, 0x9a, 0x43, 0x8b, 0xde, 0x7e, 0xd3, 0x1c, 0x5a, 0xf8, 0xa0, 0x9b, 0xa2, 0x33, 0x67, - 0x09, 0xdb, 0x39, 0xa7, 0x22, 0x46, 0x4b, 0x3f, 0x82, 0x86, 0xf1, 0xd2, 0x9a, 0x1e, 0x4b, 0xfe, - 0x51, 0x37, 0x3d, 0x96, 0xa2, 0x87, 0xd9, 0x56, 0xa8, 0x8d, 0x96, 0x43, 0xa4, 0x40, 0x4f, 0x48, - 0x60, 0xdd, 0x3f, 0x85, 0x96, 0xfd, 0xf6, 0x9a, 0xe6, 0xfd, 0xc2, 0x57, 0xdc, 0x34, 0xef, 0x4f, - 0x79, 0xb0, 0x4d, 0x92, 0xf4, 0xdd, 0x65, 0xdd, 0xc8, 0xbd, 0x2f, 0x65, 0xa8, 0xe4, 0x57, 0xec, - 0xfb, 0x28, 0xe0, 0xe4, 0x9b, 0x1e, 0x6c, 0xcd, 0xa0, 0x5a, 0xf3, 0xe5, 0x0f, 0xcd, 0x2f, 0xb9, - 0xe7, 0x3f, 0x6c, 0x62, 0x16, 0x8f, 0x60, 0xd0, 0xae, 0x45, 0x6f, 0x7b, 0x18, 0xbb, 0x96, 0xf9, - 0xfc, 0x87, 0xb1, 0x6b, 0x59, 0x4f, 0x80, 0x64, 0x77, 0xad, 0xc4, 0xc7, 0x3a, 0x02, 0x58, 0xcc, - 0xdc, 0x01, 0xd3, 0x5c, 0x51, 0x7c, 0x4d, 0xb7, 0x7b, 0xe3, 0xf5, 0x57, 0xc7, 0x6c, 0x09, 0xa2, - 0x84, 0xe0, 0x3d, 0x75, 0x29, 0xfa, 0x77, 0xa1, 0x69, 0xbe, 0x07, 0xc5, 0x4c, 0x56, 0xce, 0xb6, - 0xf4, 0x4e, 0x61, 0x9e, 0xbd, 0xb8, 0xac, 0x69, 0x36, 0xc3, 0x7e, 0x00, 0xab, 0x9a, 0xd5, 0xcd, - 0x6b, 0x45, 0x31, 0x7b, 0xb7, 0xe0, 0xb2, 0x91, 0xa9, 0xc7, 0x75, 0xaf, 0x4e, 0xbd, 0x8d, 0x74, - 0xbf, 0x84, 0x44, 0x63, 0x3f, 0xb2, 0x93, 0x6e, 0x18, 0x45, 0x6f, 0x0b, 0xa5, 0x1b, 0x46, 0xe1, - 0xcb, 0x3c, 0x8a, 0x68, 0xd8, 0xb2, 0x35, 0x47, 0x22, 0xaa, 0x84, 0xfd, 0x08, 0x16, 0x8d, 0x8b, - 0x9b, 0x47, 0x97, 0x41, 0x5f, 0x33, 0x40, 0xfe, 0x5d, 0x81, 0x6e, 0xd1, 0x29, 0xc5, 0x59, 0xa3, - 0xfa, 0x97, 0x1c, 0x6b, 0x72, 0x90, 0xf8, 0xb7, 0xa1, 0x61, 0x5e, 0x0a, 0x7d, 0x4d, 0xbd, 0x6b, - 0x46, 0x96, 0x79, 0x25, 0xfe, 0x7e, 0x89, 0x1d, 0x8a, 0xe8, 0x42, 0xfd, 0xe0, 0x6f, 0x18, 0x65, - 0xb7, 0x4f, 0xfb, 0x21, 0x60, 0xbd, 0x90, 0x45, 0x4f, 0x40, 0xdf, 0x29, 0xdd, 0x2f, 0xb1, 0xbf, - 0x5f, 0x82, 0xa6, 0x75, 0x69, 0xd3, 0x8a, 0xd5, 0xca, 0xf4, 0xac, 0x63, 0xe6, 0x99, 0x5d, 0x73, - 0x5c, 0x1a, 0xf6, 0xfe, 0xdd, 0xcf, 0xac, 0x69, 0xfd, 0xd2, 0x32, 0xa8, 0x6d, 0x64, 0x5f, 0xfd, - 0xfd, 0x2a, 0x5b, 0xc0, 0x7c, 0xcd, 0xe1, 0xab, 0xfb, 0x25, 0xf6, 0x87, 0x25, 0x68, 0xd9, 0x16, - 0x6e, 0x3d, 0xdc, 0x42, 0x5b, 0xba, 0x5e, 0xfc, 0x29, 0x66, 0xf1, 0x1f, 0x51, 0x2f, 0x9f, 0xdd, - 0x75, 0xad, 0x5e, 0xca, 0x07, 0x9d, 0x7e, 0xb5, 0xde, 0xb2, 0x4f, 0xc4, 0x63, 0xfa, 0xca, 0xb9, - 0xc7, 0xf2, 0x8f, 0xaf, 0x6b, 0x82, 0x31, 0x9f, 0x38, 0xa7, 0x45, 0xf8, 0x89, 0x78, 0xed, 0x56, - 0x79, 0x88, 0x90, 0xee, 0xde, 0xf6, 0x7b, 0xe7, 0x26, 0x8d, 0xe9, 0x86, 0x73, 0xd5, 0x1a, 0x53, - 0x76, 0x87, 0xdf, 0x12, 0xbd, 0x93, 0xaf, 0x93, 0xa7, 0x5b, 0x54, 0xee, 0xc5, 0xf2, 0xe9, 0x9d, - 0x1c, 0x89, 0x4e, 0xca, 0xe2, 0x16, 0x73, 0xbc, 0x65, 0x35, 0xce, 0x5d, 0xea, 0xeb, 0x4d, 0xe7, - 0xdd, 0xa9, 0x7d, 0xbd, 0x47, 0x76, 0x6a, 0xec, 0xf1, 0x21, 0x40, 0xea, 0x8c, 0x67, 0x19, 0x47, - 0xb0, 0x16, 0x19, 0x79, 0x7f, 0xbd, 0xcd, 0x81, 0xca, 0x5f, 0x8c, 0x35, 0xfe, 0x58, 0x08, 0xc0, - 0xc7, 0xca, 0x85, 0x6c, 0xaa, 0x39, 0xb6, 0xc7, 0xdc, 0x52, 0x73, 0xb2, 0xf5, 0x5b, 0xe2, 0x4f, - 0xfb, 0xa3, 0x9f, 0xc3, 0xc2, 0x7e, 0x18, 0xbe, 0x9c, 0x8c, 0x75, 0x18, 0x95, 0xed, 0x42, 0xda, - 0xf3, 0xe2, 0xb3, 0x6e, 0x66, 0x14, 0xce, 0x3a, 0x55, 0xd5, 0x65, 0x1d, 0xa3, 0xaa, 0x7b, 0x5f, - 0xa6, 0x8e, 0xfe, 0xaf, 0x98, 0x07, 0x4b, 0x5a, 0xaa, 0xea, 0x8e, 0x77, 0xed, 0x6a, 0x2c, 0x59, - 0x9a, 0x6d, 0xc2, 0xd2, 0xc7, 0x55, 0x6f, 0xef, 0xc5, 0xaa, 0x4e, 0x92, 0x29, 0xcd, 0x1d, 0xde, - 0xa7, 0xfb, 0x5c, 0xe4, 0x87, 0x59, 0x4e, 0x3b, 0xae, 0x1d, 0x38, 0xdd, 0x05, 0x0b, 0xb4, 0x77, - 0x9a, 0xb1, 0x77, 0x19, 0xf1, 0x2f, 0xee, 0x7d, 0x29, 0x3d, 0x3c, 0x5f, 0xa9, 0x9d, 0x46, 0xb9, - 0xc0, 0xac, 0x9d, 0x26, 0xe3, 0x33, 0xb3, 0x76, 0x9a, 0x9c, 0xcf, 0xcc, 0x9a, 0x6a, 0xe5, 0x82, - 0x63, 0x43, 0x58, 0xca, 0xb9, 0xd9, 0xf4, 0x26, 0x33, 0xcd, 0x39, 0xd7, 0x5d, 0x9f, 0x5e, 0xc0, - 0x6e, 0xed, 0xae, 0xdd, 0xda, 0x11, 0x2c, 0xec, 0x70, 0x31, 0x59, 0x22, 0x6e, 0x3c, 0x73, 0xf3, - 0xd7, 0x8c, 0x4a, 0xcf, 0x6e, 0x09, 0x94, 0x67, 0xab, 0x12, 0x14, 0xb0, 0xcd, 0x7e, 0x0c, 0x8d, - 0x47, 0x3c, 0x51, 0x81, 0xe2, 0x5a, 0x99, 0xcd, 0x44, 0x8e, 0x77, 0x0b, 0xe2, 0xcc, 0x6d, 0x9a, - 0xa1, 0xda, 0xee, 0xf1, 0xc1, 0x29, 0x17, 0xc2, 0xa9, 0xe7, 0x0f, 0xbe, 0x62, 0x7f, 0x91, 0x2a, - 0xd7, 0x37, 0x65, 0x56, 0x8d, 0xa8, 0x5f, 0xb3, 0xf2, 0xc5, 0x0c, 0x5e, 0x54, 0x73, 0x10, 0x0e, - 0xb8, 0xa1, 0x54, 0x05, 0xd0, 0x30, 0x6e, 0xda, 0x69, 0x06, 0xca, 0x5f, 0x4c, 0xd4, 0x0c, 0x54, - 0x70, 0x31, 0xcf, 0xb9, 0x43, 0xed, 0x38, 0x6c, 0x3d, 0x6d, 0x47, 0x5c, 0xc6, 0x4b, 0x5b, 0xba, - 0xf7, 0xa5, 0x37, 0x4a, 0xbe, 0x62, 0x2f, 0xe8, 0x81, 0x35, 0x33, 0x10, 0x3e, 0xd5, 0xce, 0xb3, - 0x31, 0xf3, 0x7a, 0xb2, 0x8c, 0x2c, 0x5b, 0x63, 0x17, 0x4d, 0x91, 0xee, 0xf5, 0x3d, 0x80, 0xa3, - 0x24, 0x1c, 0xef, 0x78, 0x7c, 0x14, 0x06, 0xa9, 0xac, 0x4d, 0xc3, 0xb0, 0x53, 0xf9, 0x65, 0xc4, - 0x62, 0xb3, 0x17, 0xc6, 0x71, 0xc6, 0xba, 0x4b, 0xa0, 0x88, 0x6b, 0x6a, 0xa4, 0xb6, 0x9e, 0x90, - 0x82, 0x68, 0xed, 0xfb, 0x25, 0xb6, 0x05, 0x90, 0xfa, 0x59, 0xf5, 0xe1, 0x24, 0xe7, 0xc2, 0xd5, - 0x62, 0xaf, 0xc0, 0x29, 0x7b, 0x08, 0xf5, 0xd4, 0xbb, 0xb5, 0x96, 0xde, 0xbb, 0xb5, 0x7c, 0x61, - 0x7a, 0x07, 0xcf, 0xf9, 0x9c, 0x9c, 0x36, 0x4d, 0x15, 0xb0, 0x1a, 0x4e, 0x15, 0x39, 0x92, 0x7c, - 0x58, 0x16, 0x1d, 0xd4, 0x0a, 0x0e, 0x85, 0x0f, 0xab, 0x91, 0x14, 0xf8, 0x7d, 0x34, 0x37, 0x17, - 0x3a, 0x44, 0x2c, 0x1b, 0x0b, 0x52, 0xab, 0x08, 0x5d, 0x46, 0xd1, 0x3c, 0x82, 0xa5, 0x9c, 0x8d, - 0x5d, 0xb3, 0xf4, 0x34, 0x27, 0x8a, 0x66, 0xe9, 0xa9, 0xe6, 0x79, 0xe7, 0x0a, 0x35, 0xb9, 0xe8, - 0x00, 0x9d, 0xa9, 0x2e, 0xfc, 0xa4, 0x7f, 0x86, 0xcd, 0xfd, 0x41, 0x09, 0x96, 0x0b, 0x4c, 0xe8, - 0xec, 0x3d, 0x75, 0x3c, 0x9f, 0x6a, 0x5e, 0xef, 0x16, 0x5a, 0x58, 0x9d, 0x23, 0x6a, 0xe7, 0x09, - 0xfb, 0xdc, 0xda, 0xd8, 0x84, 0x71, 0x53, 0x72, 0xe6, 0x6b, 0x95, 0x8a, 0x42, 0x8d, 0xe2, 0x0b, - 0x58, 0x13, 0x1d, 0xd9, 0x1a, 0x0e, 0x33, 0xd6, 0xdf, 0x1b, 0xb9, 0x7f, 0xb8, 0x65, 0x59, 0xb5, - 0xbb, 0xd3, 0xff, 0x21, 0xd7, 0x14, 0x05, 0x58, 0x74, 0x95, 0x4d, 0xa0, 0x9d, 0xb5, 0xa8, 0xb2, - 0xe9, 0x75, 0x75, 0xdf, 0xb5, 0x0e, 0x9a, 0x05, 0x56, 0xd8, 0x6f, 0x52, 0x63, 0xef, 0x3a, 0xdd, - 0xa2, 0x79, 0x11, 0x67, 0x4f, 0x5c, 0x8f, 0xbf, 0xac, 0xcd, 0xbf, 0x99, 0x71, 0xaa, 0x06, 0xa6, - 0xd9, 0xab, 0xf5, 0x51, 0xb7, 0xd8, 0x7a, 0x7c, 0x8b, 0x9a, 0x5f, 0x77, 0xde, 0x29, 0x6a, 0x3e, - 0x12, 0x9f, 0x88, 0x43, 0xef, 0x5a, 0x96, 0xaf, 0x55, 0x0f, 0xd6, 0x8b, 0xd6, 0x7b, 0xea, 0xe9, - 0x25, 0x33, 0xd7, 0x33, 0xa4, 0xdb, 0x35, 0x4d, 0x73, 0xaf, 0x66, 0x9f, 0x02, 0xbb, 0xb2, 0x66, - 0x9f, 0x22, 0xfb, 0xb0, 0xad, 0xd7, 0x28, 0xcb, 0xf0, 0x27, 0xa5, 0xbb, 0x0f, 0x6e, 0xff, 0xe8, - 0x9b, 0xa7, 0x7e, 0x72, 0x36, 0x39, 0xde, 0xe8, 0x87, 0xa3, 0x7b, 0x43, 0x65, 0xd6, 0x93, 0x57, - 0x6a, 0xee, 0x0d, 0x83, 0xc1, 0x3d, 0xaa, 0xf6, 0x78, 0x8e, 0xfe, 0x43, 0xe0, 0x77, 0xfe, 0x6f, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x54, 0xaa, 0x5f, 0xca, 0x53, 0x70, 0x00, 0x00, + 0x96, 0x1f, 0xae, 0xfa, 0x20, 0x59, 0xf5, 0xaa, 0x48, 0x16, 0x83, 0x14, 0x59, 0xaa, 0x96, 0xd4, + 0xea, 0x1c, 0x8d, 0xa4, 0xd6, 0xf4, 0x50, 0x6a, 0xce, 0x4c, 0xff, 0x7b, 0xbb, 0xff, 0xeb, 0x5d, + 0x8a, 0xa4, 0x44, 0x75, 0x53, 0x14, 0x27, 0x29, 0x8d, 0x3c, 0x33, 0xbb, 0xc8, 0x49, 0x56, 0x05, + 0xc9, 0x1c, 0x55, 0x65, 0x56, 0x67, 0x66, 0x91, 0xe2, 0xb4, 0xdb, 0x07, 0xc3, 0x30, 0x0c, 0x5f, + 0x16, 0x63, 0xc3, 0x80, 0x6d, 0xd8, 0x58, 0x60, 0xd6, 0x80, 0xb1, 0xf0, 0xc1, 0xbe, 0x18, 0xf0, + 0x1a, 0xeb, 0x93, 0x0f, 0x0b, 0x18, 0x30, 0x7c, 0xb0, 0x01, 0x03, 0x36, 0xb0, 0x86, 0x61, 0x03, + 0xf6, 0xc2, 0xf0, 0xcd, 0xbe, 0x1b, 0xef, 0xc5, 0x47, 0x46, 0x64, 0x66, 0x49, 0xea, 0x99, 0xf1, + 0x9e, 0x58, 0xf1, 0x8b, 0xc8, 0xf8, 0x7c, 0xef, 0xc5, 0x8b, 0xf7, 0x5e, 0x04, 0xa1, 0x19, 0x8f, + 0xfb, 0xeb, 0xe3, 0x38, 0x4a, 0x23, 0x36, 0x33, 0x0c, 0xe3, 0x71, 0xbf, 0x77, 0xf5, 0x24, 0x8a, + 0x4e, 0x86, 0xfc, 0x9e, 0x3f, 0x0e, 0xee, 0xf9, 0x61, 0x18, 0xa5, 0x7e, 0x1a, 0x44, 0x61, 0x22, + 0x0a, 0x39, 0x3f, 0x81, 0x85, 0x47, 0x3c, 0x3c, 0xe4, 0x7c, 0xe0, 0xf2, 0x2f, 0x26, 0x3c, 0x49, + 0xd9, 0xb7, 0x60, 0xc9, 0xe7, 0x3f, 0xe3, 0x7c, 0xe0, 0x8d, 0xfd, 0x24, 0x19, 0x9f, 0xc6, 0x7e, + 0xc2, 0xbb, 0x95, 0x1b, 0x95, 0x3b, 0x6d, 0xb7, 0x23, 0x32, 0x0e, 0x34, 0xce, 0xde, 0x83, 0x76, + 0x82, 0x45, 0x79, 0x98, 0xc6, 0xd1, 0xf8, 0xa2, 0x5b, 0xa5, 0x72, 0x2d, 0xc4, 0x76, 0x04, 0xe4, + 0x0c, 0x61, 0x51, 0xb7, 0x90, 0x8c, 0xa3, 0x30, 0xe1, 0xec, 0x3e, 0xac, 0xf4, 0x83, 0xf1, 0x29, + 0x8f, 0x3d, 0xfa, 0x78, 0x14, 0xf2, 0x51, 0x14, 0x06, 0xfd, 0x6e, 0xe5, 0x46, 0xed, 0x4e, 0xd3, + 0x65, 0x22, 0x0f, 0xbf, 0x78, 0x22, 0x73, 0xd8, 0x6d, 0x58, 0xe4, 0xa1, 0xc0, 0xf9, 0x80, 0xbe, + 0x92, 0x4d, 0x2d, 0x64, 0x30, 0x7e, 0xe0, 0xfc, 0xf5, 0x2a, 0x2c, 0x3d, 0x0e, 0x83, 0xf4, 0x85, + 0x3f, 0x1c, 0xf2, 0x54, 0x8d, 0xe9, 0x36, 0x2c, 0x9e, 0x13, 0x40, 0x63, 0x3a, 0x8f, 0xe2, 0x81, + 0x1c, 0xd1, 0x82, 0x80, 0x0f, 0x24, 0x3a, 0xb5, 0x67, 0xd5, 0xa9, 0x3d, 0x2b, 0x9d, 0xae, 0xda, + 0x94, 0xe9, 0xba, 0x0d, 0x8b, 0x31, 0xef, 0x47, 0x67, 0x3c, 0xbe, 0xf0, 0xce, 0x83, 0x70, 0x10, + 0x9d, 0x77, 0xeb, 0x37, 0x2a, 0x77, 0x66, 0xdc, 0x05, 0x05, 0xbf, 0x20, 0x94, 0x3d, 0x80, 0xc5, + 0xfe, 0xa9, 0x1f, 0x86, 0x7c, 0xe8, 0x1d, 0xf9, 0xfd, 0x97, 0x93, 0x71, 0xd2, 0x9d, 0xb9, 0x51, + 0xb9, 0xd3, 0xda, 0xb8, 0xb2, 0x4e, 0xab, 0xba, 0xbe, 0x75, 0xea, 0x87, 0x0f, 0x28, 0xe7, 0x30, + 0xf4, 0xc7, 0xc9, 0x69, 0x94, 0xba, 0x0b, 0xf2, 0x0b, 0x01, 0x27, 0xce, 0x0a, 0x30, 0x73, 0x26, + 0xc4, 0xdc, 0x3b, 0xff, 0xb8, 0x02, 0xcb, 0xcf, 0xc3, 0x61, 0xd4, 0x7f, 0xf9, 0x4b, 0x4e, 0x51, + 0xc9, 0x18, 0xaa, 0x6f, 0x3b, 0x86, 0xda, 0xd7, 0x1d, 0xc3, 0x2a, 0xac, 0xd8, 0x9d, 0x95, 0xa3, + 0xe0, 0x70, 0x19, 0xbf, 0x3e, 0xe1, 0xaa, 0x5b, 0x6a, 0x18, 0xef, 0x43, 0xa7, 0x3f, 0x89, 0x63, + 0x1e, 0x16, 0xc6, 0xb1, 0x28, 0x71, 0x3d, 0x90, 0xf7, 0xa0, 0x1d, 0xf2, 0xf3, 0xac, 0x98, 0xa4, + 0xdd, 0x90, 0x9f, 0xab, 0x22, 0x4e, 0x17, 0x56, 0xf3, 0xcd, 0xc8, 0x0e, 0xfc, 0x97, 0x0a, 0xd4, + 0x9f, 0xa7, 0xaf, 0x22, 0xb6, 0x0e, 0xf5, 0xf4, 0x62, 0x2c, 0x38, 0x64, 0x61, 0x83, 0xc9, 0xa1, + 0x6d, 0x0e, 0x06, 0x31, 0x4f, 0x92, 0x67, 0x17, 0x63, 0xee, 0xb6, 0x7d, 0x91, 0xf0, 0xb0, 0x1c, + 0xeb, 0xc2, 0x9c, 0x4c, 0x53, 0x83, 0x4d, 0x57, 0x25, 0xd9, 0x75, 0x00, 0x7f, 0x14, 0x4d, 0xc2, + 0xd4, 0x4b, 0xfc, 0x94, 0xa6, 0xaa, 0xe6, 0x1a, 0x08, 0xbb, 0x0a, 0xcd, 0xf1, 0x4b, 0x2f, 0xe9, + 0xc7, 0xc1, 0x38, 0x25, 0xb2, 0x69, 0xba, 0x19, 0xc0, 0xbe, 0x05, 0x8d, 0x68, 0x92, 0x8e, 0xa3, + 0x20, 0x4c, 0x25, 0xa9, 0x2c, 0xca, 0xbe, 0x3c, 0x9d, 0xa4, 0x07, 0x08, 0xbb, 0xba, 0x00, 0xbb, + 0x09, 0xf3, 0xfd, 0x28, 0x3c, 0x0e, 0xe2, 0x91, 0x10, 0x06, 0xdd, 0x59, 0x6a, 0xcd, 0x06, 0x9d, + 0x3f, 0xaa, 0x42, 0xeb, 0x59, 0xec, 0x87, 0x89, 0xdf, 0x47, 0x00, 0xbb, 0x9e, 0xbe, 0xf2, 0x4e, + 0xfd, 0xe4, 0x94, 0x46, 0xdb, 0x74, 0x55, 0x92, 0xad, 0xc2, 0xac, 0xe8, 0x28, 0x8d, 0xa9, 0xe6, + 0xca, 0x14, 0xfb, 0x00, 0x96, 0xc2, 0xc9, 0xc8, 0xb3, 0xdb, 0xaa, 0x11, 0xb5, 0x14, 0x33, 0x70, + 0x02, 0x8e, 0x70, 0xad, 0x45, 0x13, 0x62, 0x84, 0x06, 0xc2, 0x1c, 0x68, 0xcb, 0x14, 0x0f, 0x4e, + 0x4e, 0xc5, 0x30, 0x67, 0x5c, 0x0b, 0xc3, 0x3a, 0xd2, 0x60, 0xc4, 0xbd, 0x24, 0xf5, 0x47, 0x63, + 0x39, 0x2c, 0x03, 0xa1, 0xfc, 0x28, 0xf5, 0x87, 0xde, 0x31, 0xe7, 0x49, 0x77, 0x4e, 0xe6, 0x6b, + 0x84, 0xdd, 0x82, 0x85, 0x01, 0x4f, 0x52, 0x4f, 0x2e, 0x0a, 0x4f, 0xba, 0x0d, 0x62, 0xfd, 0x1c, + 0x8a, 0xf5, 0xc4, 0xfe, 0xb9, 0x87, 0x13, 0xc0, 0x5f, 0x75, 0x9b, 0xa2, 0xaf, 0x19, 0x82, 0x94, + 0xf3, 0x88, 0xa7, 0xc6, 0xec, 0x25, 0x92, 0x42, 0x9d, 0x3d, 0x60, 0x06, 0xbc, 0xcd, 0x53, 0x3f, + 0x18, 0x26, 0xec, 0x23, 0x68, 0xa7, 0x46, 0x61, 0x12, 0x85, 0x2d, 0x4d, 0x4e, 0xc6, 0x07, 0xae, + 0x55, 0xce, 0x39, 0x85, 0xc6, 0x43, 0xce, 0xf7, 0x82, 0x51, 0x90, 0xb2, 0x55, 0x98, 0x39, 0x0e, + 0x5e, 0x71, 0x41, 0xf0, 0xb5, 0xdd, 0x4b, 0xae, 0x48, 0xb2, 0x77, 0x01, 0xe8, 0x87, 0x37, 0xd2, + 0x84, 0xb5, 0x7b, 0xc9, 0x6d, 0x12, 0xf6, 0x04, 0x29, 0xab, 0x07, 0x73, 0x63, 0x1e, 0xf7, 0xb9, + 0x5a, 0xbf, 0xdd, 0x4b, 0xae, 0x02, 0x1e, 0xcc, 0xc1, 0xcc, 0x10, 0x6b, 0x77, 0x7e, 0x6f, 0x06, + 0x5a, 0x87, 0x3c, 0xd4, 0x9c, 0xc6, 0xa0, 0x8e, 0x73, 0x22, 0xb9, 0x8b, 0x7e, 0xb3, 0x6f, 0x40, + 0x8b, 0xe6, 0x29, 0x49, 0xe3, 0x20, 0x3c, 0x11, 0x04, 0xfe, 0xa0, 0xda, 0xad, 0xb8, 0x80, 0xf0, + 0x21, 0xa1, 0xac, 0x03, 0x35, 0x7f, 0xa4, 0x08, 0x1c, 0x7f, 0xb2, 0x2b, 0xd0, 0xf0, 0x47, 0xa9, + 0xe8, 0x5e, 0x9b, 0xe0, 0x39, 0x7f, 0x94, 0x52, 0xd7, 0xde, 0x83, 0xf6, 0xd8, 0xbf, 0x18, 0x21, + 0x3f, 0x6b, 0xaa, 0x68, 0xbb, 0x2d, 0x89, 0xed, 0x22, 0x59, 0x6c, 0xc0, 0xb2, 0x59, 0x44, 0x35, + 0x3e, 0xa3, 0x1b, 0x5f, 0x32, 0x4a, 0xcb, 0x3e, 0xdc, 0x86, 0x45, 0xf5, 0x4d, 0x2c, 0xc6, 0x43, + 0xb4, 0xd2, 0x74, 0x17, 0x24, 0xac, 0x46, 0x79, 0x07, 0x3a, 0xc7, 0x41, 0xe8, 0x0f, 0xbd, 0xfe, + 0x30, 0x3d, 0xf3, 0x06, 0x7c, 0x98, 0xfa, 0x44, 0x35, 0x33, 0xee, 0x02, 0xe1, 0x5b, 0xc3, 0xf4, + 0x6c, 0x1b, 0x51, 0xf6, 0x01, 0x34, 0x8f, 0x39, 0xf7, 0x68, 0xb2, 0xba, 0x0d, 0x8b, 0x03, 0xd5, + 0x0a, 0xb9, 0x8d, 0x63, 0xb5, 0x56, 0x1f, 0x40, 0x27, 0x9a, 0xa4, 0x27, 0x51, 0x10, 0x9e, 0x78, + 0x28, 0xf3, 0xbc, 0x60, 0x40, 0x54, 0x54, 0x7f, 0x50, 0xbd, 0x5f, 0x71, 0x17, 0x54, 0x1e, 0x4a, + 0x9f, 0xc7, 0x03, 0x76, 0x0b, 0x16, 0x87, 0x7e, 0x92, 0x7a, 0xa7, 0xd1, 0xd8, 0x1b, 0x4f, 0x8e, + 0x5e, 0xf2, 0x8b, 0xee, 0x3c, 0x4d, 0xc4, 0x3c, 0xc2, 0xbb, 0xd1, 0xf8, 0x80, 0x40, 0x76, 0x0d, + 0x80, 0xfa, 0x29, 0x3a, 0x01, 0x37, 0x2a, 0x77, 0xe6, 0xdd, 0x26, 0x22, 0xa2, 0xd1, 0x1f, 0xc2, + 0x32, 0x2d, 0x4f, 0x7f, 0x92, 0xa4, 0xd1, 0xc8, 0x43, 0x79, 0x1d, 0x0f, 0x92, 0x6e, 0x8b, 0x68, + 0xed, 0x7d, 0xd9, 0x59, 0x63, 0x8d, 0xd7, 0xb7, 0x79, 0x92, 0x6e, 0x51, 0x61, 0x57, 0x94, 0xc5, + 0x4d, 0xfd, 0xc2, 0x5d, 0x1a, 0xe4, 0x71, 0xf6, 0x01, 0x30, 0x7f, 0x38, 0x8c, 0xce, 0xbd, 0x84, + 0x0f, 0x8f, 0x3d, 0x39, 0x89, 0xdd, 0x85, 0x1b, 0x95, 0x3b, 0x0d, 0xb7, 0x43, 0x39, 0x87, 0x7c, + 0x78, 0x7c, 0x20, 0xf0, 0xde, 0x36, 0xac, 0x96, 0x57, 0x8d, 0xc4, 0x81, 0xa3, 0x43, 0xa2, 0xaa, + 0xbb, 0xf8, 0x93, 0xad, 0xc0, 0xcc, 0x99, 0x3f, 0x9c, 0x70, 0x29, 0x9f, 0x45, 0xe2, 0x93, 0xea, + 0xc7, 0x15, 0xe7, 0x9f, 0x57, 0xa0, 0x2d, 0x7a, 0x2b, 0xf5, 0x8a, 0x9b, 0x30, 0xaf, 0x56, 0x95, + 0xc7, 0x71, 0x14, 0x4b, 0x31, 0x65, 0x83, 0xec, 0x2e, 0x74, 0x14, 0x30, 0x8e, 0x79, 0x30, 0xf2, + 0x4f, 0x54, 0xdd, 0x05, 0x9c, 0x6d, 0x64, 0x35, 0xc6, 0xd1, 0x24, 0xe5, 0x72, 0x07, 0x6b, 0xcb, + 0xb9, 0x72, 0x11, 0x73, 0xed, 0x22, 0x28, 0xa6, 0x4a, 0x48, 0xd6, 0xc2, 0x9c, 0xbf, 0x5d, 0x01, + 0x86, 0x5d, 0x7f, 0x16, 0x89, 0x2a, 0x24, 0xb5, 0xe5, 0xa9, 0xbd, 0xf2, 0xd6, 0xd4, 0x5e, 0x7d, + 0x1d, 0xb5, 0x3b, 0x30, 0x23, 0x7a, 0x5f, 0x2f, 0xe9, 0xbd, 0xc8, 0xfa, 0xac, 0xde, 0xa8, 0x75, + 0xea, 0xce, 0x7f, 0xac, 0xc1, 0xca, 0x96, 0xd8, 0x82, 0x37, 0xfb, 0x7d, 0x3e, 0xd6, 0x7c, 0xf0, + 0x2e, 0xb4, 0xc2, 0x68, 0xc0, 0x15, 0xf5, 0x89, 0x8e, 0x01, 0x42, 0x06, 0xe9, 0x9d, 0xfa, 0x41, + 0x28, 0x3a, 0x2e, 0xe6, 0xb3, 0x49, 0x08, 0x75, 0xfb, 0x16, 0x2c, 0x8e, 0x79, 0x38, 0x30, 0xc9, + 0x5d, 0x28, 0x49, 0xf3, 0x12, 0x96, 0x94, 0xfe, 0x2e, 0xb4, 0x8e, 0x27, 0xa2, 0x1c, 0x0a, 0x89, + 0x3a, 0xd1, 0x01, 0x48, 0x68, 0x53, 0xc8, 0x8a, 0xf1, 0x24, 0x39, 0xa5, 0xdc, 0x19, 0xca, 0x9d, + 0xc3, 0x34, 0x66, 0x5d, 0x03, 0x18, 0x4c, 0x92, 0x54, 0x52, 0xff, 0x2c, 0x65, 0x36, 0x11, 0x11, + 0xd4, 0xff, 0x6d, 0x58, 0x1e, 0xf9, 0xaf, 0x3c, 0xa2, 0x1f, 0x2f, 0x08, 0xbd, 0xe3, 0x21, 0xed, + 0x22, 0x73, 0x54, 0xae, 0x33, 0xf2, 0x5f, 0xfd, 0x00, 0x73, 0x1e, 0x87, 0x0f, 0x09, 0x47, 0x11, + 0xa1, 0xd4, 0x97, 0x98, 0x27, 0x3c, 0x3e, 0xe3, 0xc4, 0xd5, 0x75, 0xad, 0xa3, 0xb8, 0x02, 0xc5, + 0x1e, 0x8d, 0x70, 0xdc, 0xe9, 0xb0, 0x2f, 0x58, 0xd8, 0x9d, 0x1b, 0x05, 0xe1, 0x6e, 0x3a, 0xec, + 0xb3, 0xab, 0x00, 0x28, 0x13, 0xc6, 0x3c, 0xf6, 0x5e, 0x9e, 0x13, 0x3f, 0xd6, 0x49, 0x06, 0x1c, + 0xf0, 0xf8, 0xf3, 0x73, 0xf6, 0x0e, 0x34, 0xfb, 0x09, 0x09, 0x15, 0xff, 0xa2, 0xdb, 0x22, 0x66, + 0x6d, 0xf4, 0x13, 0x14, 0x27, 0xfe, 0x05, 0x32, 0x14, 0xf6, 0xd6, 0xa7, 0x55, 0xe0, 0x03, 0xaa, + 0x3e, 0x21, 0xe9, 0x38, 0x4f, 0x9d, 0xdd, 0x94, 0x19, 0xd8, 0x4e, 0xc2, 0xbe, 0x01, 0xf3, 0xaa, + 0xb3, 0xc7, 0x43, 0xff, 0x24, 0x21, 0xf1, 0x30, 0xef, 0xb6, 0x25, 0xf8, 0x10, 0x31, 0xe7, 0x85, + 0x50, 0x9a, 0x8c, 0xb5, 0x95, 0x7c, 0x83, 0xdb, 0x37, 0x21, 0xb4, 0xae, 0x0d, 0x57, 0xa6, 0xca, + 0x16, 0xad, 0x5a, 0xb2, 0x68, 0xce, 0x2f, 0x2a, 0xd0, 0x96, 0x35, 0x93, 0xa6, 0xc1, 0xee, 0x03, + 0x53, 0xab, 0x98, 0xbe, 0x0a, 0x06, 0xde, 0xd1, 0x45, 0xca, 0x13, 0x41, 0x34, 0xbb, 0x97, 0xdc, + 0x92, 0x3c, 0x94, 0x87, 0x16, 0x9a, 0xa4, 0xb1, 0xa0, 0xe9, 0xdd, 0x4b, 0x6e, 0x21, 0x07, 0x59, + 0x0c, 0x75, 0x99, 0x49, 0xea, 0x05, 0xe1, 0x80, 0xbf, 0x22, 0x52, 0x9a, 0x77, 0x2d, 0xec, 0xc1, + 0x02, 0xb4, 0xcd, 0xef, 0x9c, 0x9f, 0x42, 0x43, 0x69, 0x42, 0xa4, 0x05, 0xe4, 0xfa, 0xe5, 0x1a, + 0x08, 0xeb, 0x41, 0xc3, 0xee, 0x85, 0xdb, 0xf8, 0x3a, 0x6d, 0x3b, 0x7f, 0x01, 0x3a, 0x7b, 0x48, + 0x44, 0x21, 0x12, 0xad, 0x54, 0xef, 0x56, 0x61, 0xd6, 0x60, 0x9e, 0xa6, 0x2b, 0x53, 0xb8, 0x8f, + 0x9e, 0x46, 0x49, 0x2a, 0xdb, 0xa1, 0xdf, 0xce, 0x9f, 0x54, 0x80, 0xed, 0x24, 0x69, 0x30, 0xf2, + 0x53, 0xfe, 0x90, 0x6b, 0xf1, 0xf0, 0x14, 0xda, 0x58, 0xdb, 0xb3, 0x68, 0x53, 0x28, 0x5b, 0x42, + 0x49, 0xf8, 0x96, 0x64, 0xe7, 0xe2, 0x07, 0xeb, 0x66, 0x69, 0x21, 0xba, 0xad, 0x0a, 0x90, 0xdb, + 0x52, 0x3f, 0x3e, 0xe1, 0x29, 0x69, 0x62, 0x52, 0x8f, 0x07, 0x01, 0x6d, 0x45, 0xe1, 0x71, 0xef, + 0xb7, 0x60, 0xa9, 0x50, 0x87, 0x29, 0xa3, 0x9b, 0x25, 0x32, 0xba, 0x66, 0xca, 0xe8, 0x3e, 0x2c, + 0x5b, 0xfd, 0x92, 0x14, 0xd7, 0x85, 0x39, 0x64, 0x0c, 0xdc, 0xf0, 0x2b, 0x62, 0xc3, 0x97, 0x49, + 0xb6, 0x01, 0x2b, 0xc7, 0x9c, 0xc7, 0x7e, 0x4a, 0x49, 0x62, 0x1d, 0x5c, 0x13, 0x59, 0x73, 0x69, + 0x9e, 0xf3, 0x5f, 0x2b, 0xb0, 0x88, 0xd2, 0xf4, 0x89, 0x1f, 0x5e, 0xa8, 0xb9, 0xda, 0x2b, 0x9d, + 0xab, 0x3b, 0xc6, 0x26, 0x67, 0x94, 0xfe, 0xba, 0x13, 0x55, 0xcb, 0x4f, 0x14, 0xbb, 0x01, 0x6d, + 0xab, 0xbb, 0x33, 0x42, 0xb3, 0x4c, 0xfc, 0xf4, 0x80, 0xc7, 0x0f, 0x2e, 0x52, 0xfe, 0xab, 0x4f, + 0xe5, 0x2d, 0xe8, 0x64, 0xdd, 0x96, 0xf3, 0xc8, 0xa0, 0x8e, 0x84, 0x29, 0x2b, 0xa0, 0xdf, 0xce, + 0xdf, 0xaf, 0x88, 0x82, 0x5b, 0x51, 0xa0, 0xb5, 0x4e, 0x2c, 0x88, 0xca, 0xab, 0x2a, 0x88, 0xbf, + 0xa7, 0x6a, 0xed, 0xbf, 0xfa, 0x60, 0x51, 0x26, 0x26, 0x3c, 0x1c, 0x78, 0xfe, 0x70, 0x48, 0x82, + 0xb8, 0xe1, 0xce, 0x61, 0x7a, 0x73, 0x38, 0x74, 0x6e, 0xc3, 0x92, 0xd1, 0xbb, 0xd7, 0x8c, 0x63, + 0x1f, 0xd8, 0x5e, 0x90, 0xa4, 0xcf, 0xc3, 0x64, 0x6c, 0x28, 0x64, 0xef, 0x40, 0x13, 0xa5, 0x2d, + 0xf6, 0x4c, 0x70, 0xee, 0x8c, 0x8b, 0xe2, 0x17, 0xfb, 0x95, 0x50, 0xa6, 0xff, 0x4a, 0x66, 0x56, + 0x65, 0xa6, 0xff, 0x8a, 0x32, 0x9d, 0x8f, 0x61, 0xd9, 0xaa, 0x4f, 0x36, 0xfd, 0x1e, 0xcc, 0x4c, + 0xd2, 0x57, 0x91, 0x52, 0xb9, 0x5b, 0x92, 0x42, 0xf0, 0x70, 0xe7, 0x8a, 0x1c, 0xe7, 0x53, 0x58, + 0xda, 0xe7, 0xe7, 0x92, 0x91, 0x55, 0x47, 0x6e, 0xbd, 0xf1, 0xe0, 0x47, 0xf9, 0xce, 0x3a, 0x30, + 0xf3, 0xe3, 0x8c, 0x01, 0xd4, 0x31, 0xb0, 0x62, 0x1d, 0x03, 0x9d, 0x5b, 0xc0, 0x0e, 0x83, 0x93, + 0xf0, 0x09, 0x4f, 0x12, 0xff, 0x44, 0xb3, 0x7e, 0x07, 0x6a, 0xa3, 0xe4, 0x44, 0x8a, 0x2a, 0xfc, + 0xe9, 0x7c, 0x07, 0x96, 0xad, 0x72, 0xb2, 0xe2, 0xab, 0xd0, 0x4c, 0x82, 0x93, 0xd0, 0x4f, 0x27, + 0x31, 0x97, 0x55, 0x67, 0x80, 0xf3, 0x10, 0x56, 0x7e, 0xc0, 0xe3, 0xe0, 0xf8, 0xe2, 0x4d, 0xd5, + 0xdb, 0xf5, 0x54, 0xf3, 0xf5, 0xec, 0xc0, 0xe5, 0x5c, 0x3d, 0xb2, 0x79, 0x41, 0xbe, 0x72, 0x25, + 0x1b, 0xae, 0x48, 0x18, 0xb2, 0xaf, 0x6a, 0xca, 0x3e, 0xe7, 0x39, 0xb0, 0xad, 0x28, 0x0c, 0x79, + 0x3f, 0x3d, 0xe0, 0x3c, 0xce, 0x2c, 0x50, 0x19, 0xad, 0xb6, 0x36, 0xd6, 0xe4, 0xcc, 0xe6, 0x05, + 0xaa, 0x24, 0x62, 0x06, 0xf5, 0x31, 0x8f, 0x47, 0x54, 0x71, 0xc3, 0xa5, 0xdf, 0xce, 0x65, 0x58, + 0xb6, 0xaa, 0x95, 0x67, 0xf6, 0x0f, 0xe1, 0xf2, 0x76, 0x90, 0xf4, 0x8b, 0x0d, 0x76, 0x61, 0x6e, + 0x3c, 0x39, 0xf2, 0x32, 0x4e, 0x54, 0x49, 0x3c, 0xc6, 0xe5, 0x3f, 0x91, 0x95, 0xfd, 0xb5, 0x0a, + 0xd4, 0x77, 0x9f, 0xed, 0x6d, 0xe1, 0x5e, 0x11, 0x84, 0xfd, 0x68, 0x84, 0x5a, 0x98, 0x18, 0xb4, + 0x4e, 0x4f, 0xe5, 0xb0, 0xab, 0xd0, 0x24, 0xe5, 0x0d, 0x4f, 0xae, 0x52, 0x0f, 0xca, 0x00, 0x3c, + 0x35, 0xf3, 0x57, 0xe3, 0x20, 0xa6, 0x63, 0xb1, 0x3a, 0xec, 0xd6, 0x69, 0x9b, 0x29, 0x66, 0x38, + 0xbf, 0x98, 0x83, 0x39, 0xb9, 0xf9, 0x8a, 0x8d, 0x3c, 0x0d, 0xce, 0x78, 0xb6, 0x91, 0x63, 0x0a, + 0x15, 0xe3, 0x98, 0x8f, 0xa2, 0x54, 0xeb, 0x6f, 0x62, 0x19, 0x6c, 0x90, 0xac, 0x02, 0x52, 0x89, + 0x10, 0x76, 0x84, 0x9a, 0x28, 0x65, 0x81, 0xec, 0x2a, 0xcc, 0x29, 0x65, 0xa0, 0xae, 0x0f, 0x2c, + 0x0a, 0xc2, 0xd9, 0xe8, 0xfb, 0x63, 0xbf, 0x1f, 0xa4, 0x17, 0x52, 0x2c, 0xe8, 0x34, 0xd6, 0x3f, + 0x8c, 0xfa, 0xfe, 0xd0, 0x3b, 0xf2, 0x87, 0x7e, 0xd8, 0xe7, 0xca, 0xea, 0x60, 0x81, 0x78, 0x02, + 0x97, 0xdd, 0x52, 0xc5, 0xc4, 0x29, 0x3d, 0x87, 0xe2, 0x1e, 0xde, 0x8f, 0x46, 0xa3, 0x20, 0xc5, + 0x83, 0x3b, 0xa9, 0x66, 0x35, 0xd7, 0x40, 0x84, 0x8d, 0x83, 0x52, 0xe7, 0x62, 0x06, 0x9b, 0xca, + 0xc6, 0x61, 0x80, 0x58, 0x4b, 0x4e, 0x43, 0xab, 0xb9, 0x06, 0x82, 0x6b, 0x31, 0x09, 0x13, 0x9e, + 0xa6, 0x43, 0x3e, 0xd0, 0x1d, 0x6a, 0x51, 0xb1, 0x62, 0x06, 0xbb, 0x0f, 0xcb, 0xc2, 0x96, 0x90, + 0xf8, 0x69, 0x94, 0x9c, 0x06, 0x89, 0x97, 0xe0, 0x31, 0x48, 0x9c, 0x69, 0xcb, 0xb2, 0xd8, 0xc7, + 0xb0, 0x96, 0x83, 0x63, 0xde, 0xe7, 0xc1, 0x19, 0x1f, 0x90, 0x0a, 0x57, 0x73, 0xa7, 0x65, 0xb3, + 0x1b, 0xd0, 0x0a, 0x27, 0x23, 0x6f, 0x32, 0x1e, 0xf8, 0xa8, 0xc4, 0x2c, 0x90, 0x72, 0x69, 0x42, + 0xec, 0x43, 0x50, 0x7a, 0x9a, 0xd4, 0x1e, 0x17, 0x2d, 0x09, 0x87, 0xd4, 0xeb, 0xda, 0x25, 0x90, + 0x30, 0x33, 0x95, 0xb4, 0x23, 0xcf, 0x8f, 0x0a, 0x20, 0x3e, 0x89, 0x83, 0x33, 0x3f, 0xe5, 0xdd, + 0x25, 0x21, 0xd4, 0x65, 0x12, 0xbf, 0x0b, 0xc2, 0x20, 0x0d, 0xfc, 0x34, 0x8a, 0xbb, 0x8c, 0xf2, + 0x32, 0x00, 0x27, 0x91, 0xe8, 0x23, 0x49, 0xfd, 0x74, 0x92, 0x48, 0x0d, 0x75, 0x99, 0x88, 0xab, + 0x98, 0xc1, 0x3e, 0x82, 0x55, 0x41, 0x11, 0x94, 0x25, 0x75, 0x6f, 0x52, 0x15, 0x56, 0x68, 0x46, + 0xa6, 0xe4, 0xe2, 0x54, 0x4a, 0x12, 0x29, 0x7c, 0x78, 0x59, 0x4c, 0xe5, 0x94, 0x6c, 0xec, 0x1f, + 0xf6, 0x20, 0xe8, 0x7b, 0xb2, 0x04, 0xb2, 0xc8, 0x2a, 0x8d, 0xa2, 0x98, 0x81, 0x24, 0x3e, 0x0c, + 0x8e, 0x79, 0x1a, 0x8c, 0x78, 0x77, 0x4d, 0x90, 0xb8, 0x4a, 0x23, 0x03, 0x4e, 0xc6, 0x94, 0xd3, + 0x15, 0x0c, 0x2f, 0x52, 0xce, 0xef, 0x57, 0xc4, 0xe6, 0x23, 0x19, 0x35, 0x31, 0x8e, 0x55, 0x82, + 0x45, 0xbd, 0x28, 0x1c, 0x5e, 0x48, 0xae, 0x05, 0x01, 0x3d, 0x0d, 0x87, 0x17, 0xa8, 0xd8, 0x07, + 0xa1, 0x59, 0x44, 0xc8, 0xb9, 0xb6, 0x02, 0xa9, 0xd0, 0xbb, 0xd0, 0x1a, 0x4f, 0x8e, 0x86, 0x41, + 0x5f, 0x14, 0xa9, 0x89, 0x5a, 0x04, 0x44, 0x05, 0xf0, 0x5c, 0x29, 0x56, 0x4a, 0x94, 0xa8, 0x53, + 0x89, 0x96, 0xc4, 0xb0, 0x88, 0xf3, 0x00, 0x56, 0xec, 0x0e, 0x4a, 0x81, 0x7e, 0x17, 0x1a, 0x92, + 0xff, 0x95, 0xa1, 0x60, 0xc1, 0x30, 0xdf, 0xe2, 0x31, 0x48, 0xe7, 0x3b, 0xff, 0xa2, 0x0e, 0xcb, + 0x12, 0xdd, 0x1a, 0x46, 0x09, 0x3f, 0x9c, 0x8c, 0x46, 0x7e, 0x5c, 0x22, 0x58, 0x2a, 0x6f, 0x10, + 0x2c, 0xd5, 0xa2, 0x60, 0xb9, 0x6e, 0x9d, 0x2f, 0x85, 0x64, 0x32, 0x10, 0x76, 0x07, 0x16, 0xfb, + 0xc3, 0x28, 0x11, 0xea, 0xbe, 0x69, 0x41, 0xcc, 0xc3, 0x45, 0x61, 0x38, 0x53, 0x26, 0x0c, 0x4d, + 0x41, 0x36, 0x9b, 0x13, 0x64, 0x0e, 0xb4, 0xb1, 0x52, 0xae, 0x64, 0xf3, 0x9c, 0x3c, 0x6c, 0x19, + 0x18, 0xf6, 0x27, 0x2f, 0x36, 0x84, 0x8c, 0x5a, 0x2c, 0x13, 0x1a, 0xc1, 0x88, 0x93, 0xec, 0x37, + 0x4a, 0x37, 0xa5, 0xd0, 0x28, 0x66, 0xb1, 0x87, 0x00, 0xa2, 0x2d, 0x52, 0x40, 0x80, 0x14, 0x90, + 0x5b, 0xf6, 0xaa, 0x98, 0xf3, 0xbf, 0x8e, 0x89, 0x49, 0xcc, 0x49, 0x29, 0x31, 0xbe, 0x74, 0xfe, + 0x46, 0x05, 0x5a, 0x46, 0x1e, 0xbb, 0x0c, 0x4b, 0x5b, 0x4f, 0x9f, 0x1e, 0xec, 0xb8, 0x9b, 0xcf, + 0x1e, 0xff, 0x60, 0xc7, 0xdb, 0xda, 0x7b, 0x7a, 0xb8, 0xd3, 0xb9, 0x84, 0xf0, 0xde, 0xd3, 0xad, + 0xcd, 0x3d, 0xef, 0xe1, 0x53, 0x77, 0x4b, 0xc1, 0x15, 0xb6, 0x0a, 0xcc, 0xdd, 0x79, 0xf2, 0xf4, + 0xd9, 0x8e, 0x85, 0x57, 0x59, 0x07, 0xda, 0x0f, 0xdc, 0x9d, 0xcd, 0xad, 0x5d, 0x89, 0xd4, 0xd8, + 0x0a, 0x74, 0x1e, 0x3e, 0xdf, 0xdf, 0x7e, 0xbc, 0xff, 0xc8, 0xdb, 0xda, 0xdc, 0xdf, 0xda, 0xd9, + 0xdb, 0xd9, 0xee, 0xd4, 0xd9, 0x3c, 0x34, 0x37, 0x1f, 0x6c, 0xee, 0x6f, 0x3f, 0xdd, 0xdf, 0xd9, + 0xee, 0xcc, 0x38, 0x7f, 0x5a, 0x81, 0xcb, 0xd4, 0xeb, 0x41, 0x9e, 0x49, 0x6e, 0x40, 0xab, 0x1f, + 0x45, 0x63, 0x54, 0xfc, 0xb3, 0xad, 0xcd, 0x84, 0x90, 0x01, 0x84, 0x50, 0x38, 0x8e, 0xe2, 0x3e, + 0x97, 0x3c, 0x02, 0x04, 0x3d, 0x44, 0x04, 0x19, 0x40, 0x2e, 0xaf, 0x28, 0x21, 0x58, 0xa4, 0x25, + 0x30, 0x51, 0x64, 0x15, 0x66, 0x8f, 0x62, 0xee, 0xf7, 0x4f, 0x25, 0x77, 0xc8, 0x14, 0x7b, 0x3f, + 0x3b, 0x99, 0xf6, 0x71, 0xf6, 0x87, 0x7c, 0x40, 0x14, 0xd3, 0x70, 0x17, 0x25, 0xbe, 0x25, 0x61, + 0x94, 0x82, 0xfe, 0x91, 0x1f, 0x0e, 0xa2, 0x90, 0x0f, 0xa4, 0xda, 0x9b, 0x01, 0xce, 0x01, 0xac, + 0xe6, 0xc7, 0x27, 0x79, 0xec, 0x23, 0x83, 0xc7, 0x84, 0x16, 0xda, 0x9b, 0xbe, 0x9a, 0x06, 0xbf, + 0xfd, 0xe7, 0x2a, 0xd4, 0x51, 0x29, 0x99, 0xae, 0xc0, 0x98, 0x7a, 0x66, 0xad, 0xe0, 0x6e, 0xa0, + 0xc3, 0xae, 0xd8, 0xa2, 0xa4, 0xa1, 0x25, 0x43, 0xb2, 0xfc, 0x98, 0xf7, 0xcf, 0xa4, 0xa9, 0xc5, + 0x40, 0x90, 0x41, 0xf0, 0x10, 0x40, 0x5f, 0x4b, 0x06, 0x51, 0x69, 0x95, 0x47, 0x5f, 0xce, 0x65, + 0x79, 0xf4, 0x5d, 0x17, 0xe6, 0x82, 0xf0, 0x28, 0x9a, 0x84, 0x03, 0x62, 0x88, 0x86, 0xab, 0x92, + 0xe4, 0xe0, 0x20, 0x46, 0x45, 0xf9, 0x29, 0xc8, 0x3f, 0x03, 0xd8, 0x06, 0x34, 0x93, 0x8b, 0xb0, + 0x6f, 0xd2, 0xfc, 0x8a, 0x9c, 0x25, 0x9c, 0x83, 0xf5, 0xc3, 0x8b, 0xb0, 0x4f, 0x14, 0x9e, 0x15, + 0x73, 0x7e, 0x0b, 0x1a, 0x0a, 0x46, 0xb2, 0x7c, 0xbe, 0xff, 0xf9, 0xfe, 0xd3, 0x17, 0xfb, 0xde, + 0xe1, 0x0f, 0xf7, 0xb7, 0x3a, 0x97, 0xd8, 0x22, 0xb4, 0x36, 0xb7, 0x88, 0xd2, 0x09, 0xa8, 0x60, + 0x91, 0x83, 0xcd, 0xc3, 0x43, 0x8d, 0x54, 0x1d, 0x86, 0x07, 0xf9, 0x84, 0x34, 0x3f, 0x6d, 0xc0, + 0xff, 0x08, 0x96, 0x0c, 0x2c, 0x3b, 0x45, 0x8c, 0x11, 0xc8, 0x9d, 0x22, 0x48, 0x65, 0x14, 0x39, + 0x4e, 0x07, 0x16, 0x1e, 0xf1, 0xf4, 0x71, 0x78, 0x1c, 0xa9, 0x9a, 0xfe, 0x7b, 0x1d, 0x16, 0x35, + 0x24, 0x2b, 0xba, 0x03, 0x8b, 0xc1, 0x80, 0x87, 0x69, 0x90, 0x5e, 0x78, 0x96, 0xbd, 0x20, 0x0f, + 0xa3, 0xaa, 0xed, 0x0f, 0x03, 0x5f, 0xf9, 0x91, 0x44, 0x02, 0xcf, 0xcf, 0xa8, 0x03, 0x98, 0x76, + 0x1b, 0xa2, 0x2b, 0x61, 0xa6, 0x28, 0xcd, 0x43, 0x09, 0x84, 0xb8, 0xdc, 0x66, 0xf4, 0x27, 0x42, + 0xe5, 0x2c, 0xcb, 0xc2, 0xa5, 0x12, 0x35, 0xe1, 0x90, 0x67, 0x84, 0x9e, 0xa0, 0x81, 0x82, 0xa3, + 0x66, 0x56, 0xc8, 0xc7, 0xbc, 0xa3, 0xc6, 0x70, 0xf6, 0x34, 0x0a, 0xce, 0x1e, 0x94, 0x9f, 0x17, + 0x61, 0x9f, 0x0f, 0xbc, 0x34, 0xf2, 0x48, 0xce, 0x13, 0x49, 0x34, 0xdc, 0x3c, 0x8c, 0xfb, 0x46, + 0xca, 0x93, 0x34, 0xe4, 0xc2, 0xe2, 0xdd, 0x20, 0x2b, 0xa8, 0x82, 0xf0, 0x7c, 0x30, 0x89, 0x83, + 0xa4, 0xdb, 0x26, 0x37, 0x0e, 0xfd, 0x66, 0xdf, 0x85, 0xcb, 0x47, 0x3c, 0x49, 0xbd, 0x53, 0xee, + 0x0f, 0x78, 0x4c, 0xe4, 0x25, 0xfc, 0x45, 0x42, 0xe5, 0x2a, 0xcf, 0x44, 0xc2, 0x3d, 0xe3, 0x71, + 0x12, 0x44, 0x21, 0x29, 0x5b, 0x4d, 0x57, 0x25, 0xb1, 0x3e, 0x1c, 0xbc, 0xde, 0xa8, 0xf5, 0x0c, + 0x2e, 0xd2, 0xc0, 0xcb, 0x33, 0xd9, 0x4d, 0x98, 0xa5, 0x01, 0x24, 0xdd, 0x0e, 0xd1, 0x4c, 0x3b, + 0xe3, 0xf9, 0x20, 0x74, 0x65, 0x1e, 0xae, 0x72, 0x3f, 0x1a, 0x46, 0x31, 0x69, 0x5c, 0x4d, 0x57, + 0x24, 0xec, 0xd9, 0x39, 0x89, 0xfd, 0xf1, 0xa9, 0xd4, 0xba, 0xf2, 0xf0, 0x67, 0xf5, 0x46, 0xab, + 0xd3, 0x76, 0xfe, 0x3f, 0x98, 0xa1, 0x6a, 0xa9, 0x3a, 0x9a, 0xcc, 0x8a, 0xac, 0x8e, 0xd0, 0x2e, + 0xcc, 0x85, 0x3c, 0x3d, 0x8f, 0xe2, 0x97, 0xca, 0x29, 0x29, 0x93, 0xce, 0xcf, 0xe8, 0x84, 0xa6, + 0x9d, 0x74, 0xcf, 0x49, 0xb5, 0xc4, 0x73, 0xb6, 0x58, 0xaa, 0xe4, 0xd4, 0x97, 0x87, 0xc6, 0x06, + 0x01, 0x87, 0xa7, 0x3e, 0xca, 0x5a, 0x6b, 0xf5, 0xc5, 0x39, 0xbc, 0x45, 0xd8, 0xae, 0x58, 0xfc, + 0x9b, 0xb0, 0xa0, 0xdc, 0x7f, 0x89, 0x37, 0xe4, 0xc7, 0xa9, 0xb2, 0xa2, 0x85, 0x93, 0x11, 0x1d, + 0xd6, 0xf7, 0xf8, 0x71, 0xea, 0xec, 0xc3, 0x92, 0x94, 0x7f, 0x4f, 0xc7, 0x5c, 0x35, 0xfd, 0x1b, + 0x65, 0xba, 0x44, 0x6b, 0x63, 0xd9, 0x16, 0x98, 0xc2, 0xe1, 0x69, 0x97, 0x74, 0x5c, 0x60, 0xa6, + 0x3c, 0x95, 0x15, 0xca, 0xcd, 0x5c, 0xd9, 0x09, 0xe5, 0x70, 0x2c, 0x0c, 0xe7, 0x27, 0x99, 0xf4, + 0xfb, 0xca, 0x69, 0xdb, 0x70, 0x55, 0xd2, 0xf9, 0xf7, 0x15, 0x58, 0xa6, 0xda, 0x94, 0x36, 0x24, + 0xf7, 0xac, 0x8f, 0xbf, 0x46, 0x37, 0x95, 0x95, 0x56, 0xd8, 0x26, 0x57, 0x60, 0xc6, 0xdc, 0xc5, + 0x44, 0xe2, 0xeb, 0xdb, 0x64, 0xea, 0x05, 0x9b, 0xcc, 0x5d, 0xe8, 0x0c, 0xf8, 0x30, 0x20, 0xc7, + 0xbd, 0xda, 0x13, 0x84, 0xea, 0x53, 0xc0, 0x9d, 0xbf, 0x53, 0x81, 0x25, 0xb1, 0xe9, 0x90, 0x66, + 0x2e, 0xa7, 0xea, 0xff, 0x87, 0x79, 0xa1, 0x3d, 0x48, 0x09, 0x22, 0x07, 0x95, 0x89, 0x61, 0x42, + 0x45, 0xe1, 0xdd, 0x4b, 0xae, 0x5d, 0x98, 0x7d, 0x4a, 0x1a, 0x5c, 0xe8, 0x11, 0x5a, 0x12, 0x0a, + 0x60, 0xaf, 0xcb, 0xee, 0x25, 0xd7, 0x28, 0xfe, 0xa0, 0x81, 0x8a, 0x35, 0xe2, 0xce, 0x23, 0x98, + 0xb7, 0x1a, 0xb2, 0x6c, 0x47, 0x6d, 0x61, 0x3b, 0x2a, 0x18, 0x69, 0xab, 0x25, 0x46, 0xda, 0x7f, + 0x56, 0x03, 0x86, 0x84, 0x95, 0x5b, 0xb9, 0x1b, 0xb6, 0xa7, 0x43, 0x45, 0x05, 0x64, 0x10, 0xdb, + 0x00, 0x66, 0x24, 0x95, 0x07, 0xa6, 0xa6, 0x3d, 0x30, 0x25, 0xb9, 0x28, 0x96, 0xa5, 0x86, 0xa2, + 0xbd, 0x1b, 0x64, 0x17, 0x10, 0xcb, 0x54, 0x9a, 0x87, 0xbb, 0x28, 0xb9, 0x3a, 0xf0, 0x04, 0x23, + 0xcf, 0xd2, 0x2a, 0x9d, 0xa7, 0x87, 0xd9, 0x37, 0xd2, 0xc3, 0x5c, 0x81, 0x1e, 0x8c, 0xd3, 0x5c, + 0xc3, 0x3e, 0xcd, 0xdd, 0x84, 0x79, 0xe5, 0xd1, 0x10, 0x4e, 0x59, 0x79, 0x74, 0xb6, 0x40, 0xa4, + 0x27, 0x75, 0xa0, 0xd2, 0x47, 0x46, 0xe1, 0x72, 0x2c, 0xe0, 0xb8, 0x5f, 0x64, 0x56, 0xbb, 0x16, + 0x75, 0x36, 0x03, 0xe8, 0xfc, 0x85, 0x54, 0xe2, 0x4d, 0x42, 0x19, 0x11, 0xc0, 0x07, 0x74, 0x68, + 0xc6, 0xf3, 0x57, 0x3e, 0xc3, 0xf9, 0x9b, 0x15, 0xe8, 0xe0, 0xba, 0x59, 0xa4, 0xf9, 0x09, 0x10, + 0x17, 0xbd, 0x25, 0x65, 0x5a, 0x65, 0xd9, 0xc7, 0xd0, 0xa4, 0x74, 0x34, 0xe6, 0xa1, 0xa4, 0xcb, + 0xae, 0x4d, 0x97, 0x99, 0xfc, 0xd9, 0xbd, 0xe4, 0x66, 0x85, 0x0d, 0xaa, 0xfc, 0xb7, 0x15, 0x68, + 0xc9, 0x56, 0x7e, 0x69, 0xab, 0x50, 0xcf, 0x08, 0xe1, 0x10, 0xca, 0x5a, 0x16, 0xb1, 0x71, 0x07, + 0x16, 0x47, 0x7e, 0x3a, 0x89, 0x71, 0xff, 0xb7, 0x2c, 0x42, 0x79, 0x18, 0x37, 0x73, 0x12, 0xb5, + 0x89, 0x97, 0x06, 0x43, 0x4f, 0xe5, 0xca, 0x60, 0x89, 0xb2, 0x2c, 0x94, 0x38, 0x49, 0xea, 0x9f, + 0x70, 0xb9, 0x4f, 0x8b, 0x84, 0xd3, 0x85, 0xd5, 0x83, 0xcc, 0xcb, 0x63, 0xe8, 0xe3, 0xce, 0x3f, + 0x99, 0x87, 0xb5, 0x42, 0x96, 0x0e, 0xed, 0x92, 0x66, 0x8e, 0x61, 0x30, 0x3a, 0x8a, 0xf4, 0x61, + 0xa6, 0x62, 0x5a, 0x40, 0xac, 0x2c, 0x76, 0x02, 0x97, 0x95, 0x42, 0x82, 0x73, 0x9a, 0x6d, 0x9e, + 0x55, 0xda, 0x15, 0x3f, 0xb4, 0x97, 0x30, 0xdf, 0xa0, 0xc2, 0x4d, 0x46, 0x2e, 0xaf, 0x8f, 0x9d, + 0x42, 0x57, 0x6b, 0x3e, 0x52, 0xb8, 0x1b, 0xda, 0x11, 0xb6, 0xf5, 0xc1, 0x1b, 0xda, 0xb2, 0xd4, + 0x77, 0x77, 0x6a, 0x6d, 0xec, 0x02, 0xae, 0xab, 0x3c, 0x92, 0xde, 0xc5, 0xf6, 0xea, 0x6f, 0x35, + 0x36, 0x3a, 0x98, 0xd8, 0x8d, 0xbe, 0xa1, 0x62, 0xf6, 0x53, 0x58, 0x3d, 0xf7, 0x83, 0x54, 0x75, + 0xcb, 0xd0, 0x45, 0x66, 0xa8, 0xc9, 0x8d, 0x37, 0x34, 0xf9, 0x42, 0x7c, 0x6c, 0x6d, 0x69, 0x53, + 0x6a, 0xec, 0xfd, 0x71, 0x15, 0x16, 0xec, 0x7a, 0x90, 0x4c, 0x25, 0xef, 0x2b, 0x19, 0xa8, 0xb4, + 0xd7, 0x1c, 0x5c, 0xb4, 0x09, 0x54, 0xcb, 0x6c, 0x02, 0xe6, 0x29, 0xbc, 0xf6, 0x26, 0x73, 0x62, + 0xfd, 0xed, 0xcc, 0x89, 0x33, 0xa5, 0xe6, 0xc4, 0xe9, 0x56, 0xa7, 0xd9, 0x5f, 0xd6, 0xea, 0x34, + 0xf7, 0x5a, 0xab, 0x53, 0xef, 0xff, 0x54, 0x80, 0x15, 0xa9, 0x97, 0x3d, 0x12, 0x66, 0x90, 0x90, + 0x0f, 0xa5, 0x10, 0xfb, 0xf6, 0xdb, 0x71, 0x80, 0x5a, 0x2d, 0xf5, 0x35, 0xb2, 0xa2, 0x19, 0x5f, + 0x65, 0xaa, 0x63, 0xf3, 0x6e, 0x59, 0x56, 0xce, 0xa4, 0x5a, 0x7f, 0xb3, 0x49, 0x75, 0xe6, 0xcd, + 0x26, 0xd5, 0xd9, 0xbc, 0x49, 0xb5, 0xf7, 0x57, 0x2b, 0xb0, 0x5c, 0x42, 0x66, 0xbf, 0xbe, 0x81, + 0x23, 0x61, 0x58, 0xd2, 0xa7, 0x2a, 0x09, 0xc3, 0x04, 0x7b, 0x7f, 0x09, 0xe6, 0x2d, 0xd6, 0xfa, + 0xf5, 0xb5, 0x9f, 0xd7, 0x28, 0x05, 0x65, 0x5b, 0x58, 0xef, 0x7f, 0x56, 0x81, 0x15, 0xd9, 0xfb, + 0xcf, 0xb5, 0x0f, 0xc5, 0x79, 0xaa, 0x95, 0xcc, 0xd3, 0xff, 0xd3, 0x9d, 0xe7, 0x03, 0x58, 0x92, + 0x41, 0xa3, 0x86, 0xe1, 0x4b, 0x50, 0x4c, 0x31, 0x03, 0x75, 0x6a, 0xdb, 0x9e, 0xdd, 0xb0, 0x82, + 0xe4, 0x8c, 0xed, 0x37, 0x67, 0xd6, 0x76, 0x7a, 0xd0, 0x95, 0x33, 0xb4, 0x73, 0xc6, 0xc3, 0xf4, + 0x70, 0x72, 0x24, 0xa2, 0x26, 0x83, 0x28, 0x24, 0x35, 0xd0, 0xcc, 0x94, 0x0a, 0xc5, 0x77, 0xa1, + 0x6d, 0x6e, 0x1f, 0x72, 0x39, 0x72, 0xb6, 0x4f, 0x54, 0x25, 0xcc, 0x52, 0x6c, 0x1b, 0x16, 0x48, + 0x48, 0x0e, 0xf4, 0x77, 0x55, 0xfa, 0xee, 0x35, 0xf6, 0x9c, 0xdd, 0x4b, 0x6e, 0xee, 0x1b, 0xf6, + 0x9b, 0xb0, 0x60, 0x1f, 0x16, 0xa5, 0x56, 0x52, 0x76, 0x7a, 0xc0, 0xcf, 0xed, 0xc2, 0x6c, 0x13, + 0x3a, 0xf9, 0xd3, 0xa6, 0x8c, 0xfc, 0x99, 0x52, 0x41, 0xa1, 0x38, 0xfb, 0x58, 0x3a, 0x37, 0x67, + 0xc8, 0xce, 0x72, 0xd3, 0xfe, 0xcc, 0x98, 0xa6, 0x75, 0xf1, 0xc7, 0x70, 0x77, 0xfe, 0x0e, 0x40, + 0x86, 0xb1, 0x0e, 0xb4, 0x9f, 0x1e, 0xec, 0xec, 0x7b, 0x5b, 0xbb, 0x9b, 0xfb, 0xfb, 0x3b, 0x7b, + 0x9d, 0x4b, 0x8c, 0xc1, 0x02, 0x99, 0x05, 0xb7, 0x35, 0x56, 0x41, 0x4c, 0x1a, 0x62, 0x14, 0x56, + 0x65, 0x2b, 0xd0, 0x79, 0xbc, 0x9f, 0x43, 0x6b, 0x0f, 0x9a, 0x9a, 0x3f, 0x9c, 0x55, 0x58, 0x11, + 0x41, 0xc1, 0x0f, 0x04, 0x79, 0x28, 0xed, 0xe4, 0x1f, 0x54, 0xe0, 0x72, 0x2e, 0x23, 0x0b, 0x0f, + 0x13, 0x0a, 0x88, 0xad, 0x95, 0xd8, 0x20, 0x39, 0x2b, 0x94, 0xae, 0x99, 0x93, 0x20, 0xc5, 0x0c, + 0xa4, 0x79, 0x43, 0x37, 0xcd, 0x71, 0x52, 0x59, 0x96, 0xb3, 0xa6, 0xa3, 0x70, 0x72, 0x1d, 0x3f, + 0x16, 0xc1, 0xc6, 0x66, 0x46, 0xe6, 0x2c, 0xb6, 0xbb, 0xac, 0x92, 0x78, 0xac, 0xb0, 0x94, 0x1d, + 0xbb, 0xbf, 0xa5, 0x79, 0xce, 0xff, 0xaa, 0x03, 0xfb, 0xfe, 0x84, 0xc7, 0x17, 0x14, 0xff, 0xa5, + 0xad, 0xac, 0x6b, 0x79, 0x1b, 0xe2, 0xec, 0x78, 0x72, 0xf4, 0x39, 0xbf, 0x50, 0xf1, 0x9a, 0xd5, + 0xb7, 0x8a, 0xd7, 0x2c, 0x8b, 0x97, 0xac, 0xbf, 0x39, 0x5e, 0x72, 0xe6, 0x4d, 0xf1, 0x92, 0xdf, + 0x80, 0xf9, 0xe0, 0x24, 0x8c, 0x50, 0x1c, 0xa0, 0x0a, 0x91, 0x74, 0x67, 0x6f, 0xd4, 0xf0, 0x98, + 0x2e, 0xc1, 0x7d, 0xc4, 0xd8, 0xa7, 0x59, 0x21, 0x3e, 0x38, 0xa1, 0xf8, 0x5e, 0x53, 0x40, 0xec, + 0x0c, 0x4e, 0xf8, 0x5e, 0xd4, 0xf7, 0xd3, 0x28, 0xa6, 0x73, 0x9a, 0xfa, 0x18, 0xf1, 0x84, 0xdd, + 0x84, 0x85, 0x24, 0x9a, 0xa0, 0x52, 0xa5, 0xa6, 0x41, 0x18, 0xa5, 0xda, 0x02, 0x3d, 0x10, 0x93, + 0xb1, 0x0e, 0xcb, 0x93, 0x84, 0x7b, 0xa3, 0x20, 0x49, 0x70, 0xe3, 0xec, 0x47, 0x61, 0x1a, 0x47, + 0x43, 0x69, 0x9a, 0x5a, 0x9a, 0x24, 0xfc, 0x89, 0xc8, 0xd9, 0x12, 0x19, 0xec, 0xbb, 0x59, 0x97, + 0xc6, 0x7e, 0x10, 0x27, 0x5d, 0xa0, 0x2e, 0xa9, 0x91, 0x62, 0xbf, 0x0f, 0xfc, 0x20, 0xd6, 0x7d, + 0xc1, 0x44, 0x92, 0x8b, 0xe3, 0x6c, 0xe5, 0xe3, 0x38, 0x7f, 0x52, 0x1e, 0xc7, 0x39, 0x4f, 0x55, + 0xdf, 0x97, 0x55, 0x17, 0x97, 0xf8, 0xed, 0xc3, 0x39, 0x7f, 0x3d, 0x01, 0x9a, 0x32, 0xa6, 0x70, + 0x1d, 0x1a, 0x6a, 0x98, 0x78, 0x56, 0x3f, 0x8e, 0xa3, 0x91, 0x3a, 0xab, 0xe3, 0x6f, 0xb6, 0x00, + 0xd5, 0x34, 0x92, 0x1f, 0x57, 0xd3, 0xc8, 0xf9, 0x5d, 0x68, 0x19, 0x2b, 0xc5, 0xde, 0x13, 0x66, + 0x03, 0xd4, 0x09, 0xe5, 0x21, 0x5f, 0x78, 0x86, 0x9a, 0x12, 0x7d, 0x3c, 0x60, 0xdf, 0x82, 0xa5, + 0x41, 0x10, 0x73, 0x0a, 0x89, 0xf6, 0x62, 0x7e, 0xc6, 0xe3, 0x44, 0x99, 0x4f, 0x3a, 0x3a, 0xc3, + 0x15, 0xb8, 0xe3, 0xc1, 0xb2, 0x35, 0x35, 0x5a, 0x38, 0xcc, 0x52, 0x20, 0xa4, 0xb2, 0xe0, 0xda, + 0x41, 0x92, 0x32, 0x0f, 0xb7, 0x55, 0x69, 0xf9, 0xf1, 0xc6, 0x71, 0x74, 0x44, 0x8d, 0x54, 0x5c, + 0x0b, 0x73, 0xfe, 0x47, 0x0d, 0x6a, 0xbb, 0xd1, 0xd8, 0xf4, 0x67, 0x55, 0x8a, 0xfe, 0x2c, 0xa9, + 0xff, 0x7a, 0x5a, 0xbd, 0x95, 0x4a, 0x8a, 0x05, 0xb2, 0xbb, 0xb0, 0x80, 0x9c, 0x96, 0x46, 0xa8, + 0xef, 0x9f, 0xfb, 0xb1, 0x88, 0x9a, 0xac, 0x11, 0xf9, 0xe6, 0x72, 0xd8, 0x0a, 0xd4, 0xb4, 0xda, + 0x46, 0x05, 0x30, 0x89, 0x87, 0x4d, 0x8a, 0x19, 0xb8, 0x90, 0x66, 0x5a, 0x99, 0x42, 0xc1, 0x65, + 0x7f, 0x2f, 0xd8, 0x59, 0x6c, 0xbe, 0x65, 0x59, 0xa8, 0x8b, 0x23, 0xc3, 0x8e, 0x32, 0xd5, 0x56, + 0xa7, 0x4d, 0x07, 0x44, 0xc3, 0x76, 0x40, 0xdc, 0x80, 0x56, 0x3a, 0x3c, 0xf3, 0xc6, 0xfe, 0xc5, + 0x30, 0xf2, 0x07, 0x92, 0x51, 0x4c, 0x88, 0xdd, 0x07, 0x18, 0x8d, 0xc7, 0x92, 0x8a, 0xc9, 0x82, + 0xd0, 0xda, 0xe8, 0xc8, 0xd9, 0x7f, 0x72, 0x70, 0x20, 0xa8, 0xcf, 0x35, 0xca, 0xb0, 0x1d, 0x58, + 0x28, 0x0d, 0x61, 0xbe, 0xa6, 0x3c, 0xdb, 0xd1, 0x78, 0xbd, 0x84, 0xce, 0x73, 0x1f, 0xf5, 0x7e, + 0x1b, 0xd8, 0xaf, 0x18, 0x81, 0xfc, 0x02, 0x9a, 0xba, 0x87, 0x66, 0xdc, 0x2f, 0x85, 0xaf, 0xb4, + 0xec, 0xb8, 0x5f, 0x8a, 0x56, 0xb9, 0x05, 0x0b, 0x62, 0xb7, 0xd1, 0xf2, 0x53, 0x84, 0x1c, 0xe4, + 0x50, 0xe7, 0xcf, 0x2a, 0x30, 0x43, 0x94, 0x87, 0xea, 0x97, 0xc8, 0xd3, 0x8e, 0x40, 0xea, 0xda, + 0xbc, 0x9b, 0x87, 0x99, 0x63, 0x5d, 0x6d, 0xa8, 0x6a, 0x32, 0x30, 0xaf, 0x37, 0xdc, 0x80, 0xa6, + 0x6e, 0xc9, 0x20, 0xa5, 0x0c, 0x64, 0xd7, 0xa1, 0x7e, 0x1a, 0x8d, 0xd5, 0x09, 0x15, 0xb2, 0x19, + 0x75, 0x09, 0xcf, 0xfa, 0x83, 0xf5, 0x89, 0x21, 0x88, 0x53, 0x40, 0x1e, 0x2e, 0x19, 0xeb, 0x6c, + 0xe9, 0x58, 0x9f, 0xc3, 0x22, 0xca, 0x07, 0xc3, 0x31, 0x32, 0x7d, 0x2f, 0x7a, 0x1f, 0x55, 0x9b, + 0xfe, 0x70, 0x32, 0xe0, 0xa6, 0x9d, 0x80, 0x0c, 0xdf, 0x12, 0x57, 0x1a, 0xb2, 0xf3, 0x4f, 0x2b, + 0x42, 0xee, 0x60, 0xbd, 0xec, 0x0e, 0xd4, 0x71, 0xdb, 0xc8, 0x99, 0x85, 0x74, 0x48, 0x11, 0x96, + 0x73, 0xa9, 0x04, 0xae, 0x22, 0x99, 0xa6, 0xcd, 0xda, 0x85, 0x61, 0x3a, 0x3b, 0x64, 0xeb, 0x91, + 0xe5, 0xce, 0xa6, 0x39, 0x94, 0xad, 0x1b, 0x7e, 0xbd, 0xba, 0xb5, 0x15, 0x29, 0x4d, 0x6a, 0x70, + 0xc2, 0x0d, 0x7f, 0xde, 0x1f, 0x56, 0x60, 0xde, 0xea, 0x13, 0x72, 0x0f, 0x05, 0xfe, 0x0b, 0x2b, + 0x93, 0x5c, 0x79, 0x13, 0x32, 0x39, 0xaf, 0x6a, 0x73, 0x9e, 0xf6, 0x0f, 0xd5, 0x4c, 0xff, 0xd0, + 0x7d, 0x68, 0x66, 0x77, 0x5b, 0xec, 0x4e, 0x61, 0x8b, 0x2a, 0xb8, 0x2a, 0x2b, 0x94, 0x79, 0x20, + 0x66, 0x0c, 0x0f, 0x84, 0xf3, 0x29, 0xb4, 0x8c, 0xf2, 0xa6, 0x07, 0xa1, 0x62, 0x79, 0x10, 0x74, + 0xe4, 0x61, 0x35, 0x8b, 0x3c, 0x74, 0x7e, 0x5e, 0x85, 0x79, 0x24, 0xef, 0x20, 0x3c, 0x39, 0x88, + 0x86, 0x41, 0xff, 0x82, 0xc8, 0x4a, 0x51, 0xb2, 0x54, 0x1b, 0x14, 0x99, 0xdb, 0x30, 0x8a, 0x21, + 0x1d, 0x6e, 0x2d, 0x64, 0xa6, 0x4e, 0xa3, 0x50, 0x45, 0x91, 0x74, 0xe4, 0x27, 0xdc, 0xb8, 0xec, + 0xe2, 0xda, 0x20, 0x8a, 0x3e, 0x04, 0x28, 0x8e, 0x74, 0x14, 0x0c, 0x87, 0x81, 0x28, 0x2b, 0xce, + 0xbb, 0x65, 0x59, 0xd8, 0xe6, 0x20, 0x48, 0xfc, 0xa3, 0xcc, 0xf7, 0xab, 0xd3, 0x64, 0x2c, 0xf5, + 0x5f, 0x19, 0xc6, 0x52, 0x11, 0x78, 0x6e, 0x83, 0xf9, 0x85, 0x9c, 0x2b, 0x2c, 0xa4, 0xf3, 0xaf, + 0xaa, 0xd0, 0x32, 0xc8, 0x02, 0xd9, 0xb9, 0x74, 0xdf, 0x33, 0x50, 0x19, 0x14, 0x11, 0x5a, 0x16, + 0x14, 0x03, 0x61, 0x37, 0xed, 0x56, 0xc9, 0xc9, 0x42, 0x0c, 0x6f, 0x91, 0xd0, 0x55, 0x68, 0x22, + 0xe9, 0x7f, 0x48, 0xe6, 0x1a, 0x79, 0xb1, 0x4c, 0x03, 0x2a, 0x77, 0x83, 0x72, 0x67, 0xb2, 0x5c, + 0x02, 0x5e, 0x1b, 0x26, 0xf1, 0x31, 0xb4, 0x65, 0x35, 0xb4, 0xc6, 0x34, 0xe8, 0x8c, 0xf9, 0xac, + 0xf5, 0x77, 0xad, 0x92, 0xea, 0xcb, 0x0d, 0xf5, 0x65, 0xe3, 0x4d, 0x5f, 0xaa, 0x92, 0xce, 0x23, + 0x1d, 0x81, 0xf2, 0x28, 0xf6, 0xc7, 0xa7, 0x4a, 0xa0, 0xdc, 0x87, 0x65, 0x25, 0x37, 0x26, 0xa1, + 0x1f, 0x86, 0xd1, 0x24, 0xec, 0x73, 0x15, 0xa4, 0x58, 0x96, 0xe5, 0x0c, 0x74, 0x48, 0x3b, 0x55, + 0xc4, 0xee, 0xc2, 0x8c, 0x50, 0x3c, 0x85, 0x7a, 0x50, 0x2e, 0x42, 0x44, 0x11, 0x76, 0x07, 0x66, + 0x84, 0xfe, 0x59, 0x9d, 0xca, 0xf4, 0xa2, 0x80, 0xb3, 0x0e, 0x8b, 0x14, 0x43, 0x6f, 0xc8, 0xbe, + 0x77, 0xca, 0xd4, 0x86, 0xd9, 0xbe, 0x88, 0xb4, 0x5f, 0x01, 0xb6, 0x2f, 0xf8, 0xca, 0xf4, 0x23, + 0xff, 0x59, 0x0d, 0x5a, 0x06, 0x8c, 0xf2, 0x89, 0x9c, 0x7f, 0xde, 0x20, 0xf0, 0x47, 0x3c, 0xe5, + 0xb1, 0xe4, 0xa5, 0x1c, 0x8a, 0xe5, 0xfc, 0xb3, 0x13, 0x2f, 0x9a, 0xa4, 0xde, 0x80, 0x9f, 0xc4, + 0x9c, 0x4b, 0x7d, 0x26, 0x87, 0x62, 0x39, 0xa4, 0x66, 0xa3, 0x9c, 0x70, 0xd7, 0xe5, 0x50, 0xe5, + 0x15, 0x16, 0xf3, 0x54, 0xcf, 0xbc, 0xc2, 0x62, 0x56, 0xf2, 0x92, 0x75, 0xa6, 0x44, 0xb2, 0x7e, + 0x04, 0xab, 0x42, 0x86, 0x4a, 0xe9, 0xe1, 0xe5, 0x88, 0x6b, 0x4a, 0x2e, 0xbb, 0x0b, 0x1d, 0xec, + 0xb3, 0x62, 0x8d, 0x24, 0xf8, 0x99, 0xe0, 0xb1, 0x8a, 0x5b, 0xc0, 0xb1, 0x2c, 0xb9, 0x1e, 0xcc, + 0xb2, 0x22, 0x34, 0xa7, 0x80, 0x53, 0x59, 0xff, 0x95, 0x5d, 0xb6, 0x29, 0xcb, 0xe6, 0x70, 0xf6, + 0x31, 0xac, 0x8d, 0xf8, 0x20, 0xf0, 0xed, 0x2a, 0xbc, 0x6c, 0x93, 0x9f, 0x96, 0x8d, 0xad, 0xe0, + 0x2c, 0xfc, 0x2c, 0x1a, 0x1d, 0x05, 0x62, 0x63, 0x13, 0x4e, 0x92, 0xba, 0x5b, 0xc0, 0x9d, 0x79, + 0x68, 0x1d, 0xa6, 0xd1, 0x58, 0x2d, 0xfd, 0x02, 0xb4, 0x45, 0x52, 0x86, 0xa5, 0xbe, 0x03, 0x57, + 0x88, 0x5e, 0x9f, 0x45, 0xe3, 0x68, 0x18, 0x9d, 0x5c, 0x58, 0xa6, 0x8e, 0x7f, 0x53, 0x81, 0x65, + 0x2b, 0x37, 0xb3, 0x75, 0x90, 0x5d, 0x56, 0xc5, 0x12, 0x0a, 0x12, 0x5f, 0x32, 0xb6, 0x05, 0x51, + 0x50, 0xb8, 0xc1, 0x9e, 0xcb, 0xf0, 0xc2, 0xcd, 0xec, 0x82, 0x8c, 0xfa, 0x50, 0xd0, 0x7b, 0xb7, + 0x48, 0xef, 0xf2, 0x7b, 0x75, 0x75, 0x46, 0x55, 0xf1, 0x9b, 0x32, 0x90, 0x6a, 0x20, 0x07, 0x5d, + 0xb3, 0x83, 0x5f, 0x4c, 0xd3, 0x98, 0xea, 0x41, 0x5f, 0x83, 0x89, 0xf3, 0x8b, 0x0a, 0x40, 0xd6, + 0x3b, 0x0a, 0xbf, 0xd1, 0x5b, 0x9b, 0xb8, 0x4b, 0x6e, 0x6c, 0x63, 0xef, 0x41, 0x5b, 0x47, 0x50, + 0x64, 0xbb, 0x65, 0x4b, 0x61, 0xa8, 0x5d, 0xdc, 0x86, 0xc5, 0x93, 0x61, 0x74, 0x44, 0x5a, 0x0c, + 0xc5, 0x39, 0x27, 0x32, 0x38, 0x77, 0x41, 0xc0, 0x0f, 0x25, 0x9a, 0x6d, 0xad, 0x75, 0x73, 0x6b, + 0x2d, 0xdf, 0x28, 0x7f, 0x5e, 0xd5, 0x6e, 0xec, 0x6c, 0x26, 0x5e, 0xcb, 0xe5, 0x6c, 0xa3, 0x20, + 0xd6, 0xa7, 0x78, 0x8e, 0xe9, 0x0c, 0x74, 0xf0, 0x46, 0x4b, 0xf9, 0xa7, 0xb0, 0x10, 0x0b, 0x99, + 0xa9, 0x04, 0x6a, 0xfd, 0x35, 0x02, 0x75, 0x3e, 0xb6, 0x76, 0xe6, 0xf7, 0xa1, 0xe3, 0x0f, 0xce, + 0x78, 0x9c, 0x06, 0x64, 0x39, 0x24, 0x35, 0x4a, 0x0c, 0x70, 0xd1, 0xc0, 0x49, 0x5b, 0xb9, 0x0d, + 0x8b, 0x32, 0x54, 0x5a, 0x97, 0x94, 0xb7, 0x2a, 0x33, 0x18, 0x0b, 0x3a, 0xff, 0x48, 0x79, 0xcd, + 0xed, 0xd5, 0x7d, 0xfd, 0xac, 0x98, 0x23, 0xac, 0xe6, 0x46, 0xf8, 0x0d, 0xe9, 0x99, 0x1e, 0x28, + 0x13, 0x65, 0xcd, 0x08, 0xc9, 0x1b, 0xc8, 0xa8, 0x03, 0x7b, 0x5a, 0xeb, 0x6f, 0x33, 0xad, 0xce, + 0x7f, 0xa8, 0xc0, 0xdc, 0x6e, 0x34, 0xde, 0xc5, 0x29, 0x46, 0x1d, 0x07, 0xd9, 0x44, 0xdf, 0x53, + 0x50, 0xc9, 0x37, 0x84, 0x2e, 0x96, 0x6a, 0x25, 0xf3, 0x79, 0xad, 0xe4, 0xb7, 0xe1, 0x1d, 0x32, + 0x92, 0xc7, 0xd1, 0x38, 0x8a, 0x91, 0x5d, 0xfd, 0xa1, 0x50, 0x41, 0xa2, 0x30, 0x3d, 0x55, 0xe2, + 0xf4, 0x75, 0x45, 0xc8, 0x72, 0x35, 0x4c, 0xcf, 0x3c, 0x71, 0xc2, 0x93, 0x5a, 0x94, 0x90, 0xb2, + 0xc5, 0x0c, 0xe7, 0x37, 0xa0, 0x49, 0x27, 0x0c, 0x1a, 0xda, 0x07, 0xd0, 0x3c, 0x8d, 0xc6, 0xde, + 0x69, 0x10, 0xa6, 0x8a, 0xfd, 0x17, 0x32, 0xd5, 0x7f, 0x97, 0x26, 0x45, 0x17, 0x70, 0xfe, 0x64, + 0x16, 0xe6, 0x1e, 0x87, 0x67, 0x51, 0xd0, 0x27, 0xef, 0xfb, 0x88, 0x8f, 0x22, 0x75, 0x73, 0x03, + 0x7f, 0xd3, 0xe5, 0xe8, 0xec, 0x6e, 0xa5, 0x60, 0x21, 0x03, 0xc1, 0x33, 0x69, 0x6c, 0xde, 0x8d, + 0x94, 0xa9, 0xec, 0xa0, 0x35, 0x63, 0xdc, 0x7d, 0xc1, 0xda, 0xc4, 0x9d, 0x3d, 0x9a, 0x3b, 0x11, + 0x71, 0x6b, 0x20, 0x38, 0xf9, 0x32, 0xa4, 0x52, 0xc4, 0xdc, 0x89, 0xf8, 0x1f, 0x09, 0xd1, 0x39, + 0x3b, 0xe6, 0xc2, 0xcd, 0xa1, 0x55, 0x2f, 0x3c, 0x67, 0x9b, 0x20, 0xaa, 0x67, 0xe2, 0x03, 0x51, + 0x46, 0x6c, 0x07, 0x26, 0x84, 0x0a, 0x6a, 0xfe, 0xc6, 0xb0, 0xb8, 0xf5, 0x9d, 0x87, 0x45, 0x9c, + 0x85, 0x16, 0xba, 0x62, 0x9c, 0x20, 0xee, 0x97, 0xe6, 0x71, 0xe3, 0x74, 0x2e, 0x62, 0xca, 0xd5, + 0xe9, 0x1c, 0x49, 0xc6, 0x1f, 0x0e, 0x8f, 0xfc, 0xfe, 0x4b, 0x71, 0x98, 0x6c, 0x0b, 0xef, 0x98, + 0x05, 0x52, 0x60, 0x64, 0xb6, 0xae, 0x14, 0xbd, 0x54, 0x77, 0x4d, 0x88, 0x6d, 0x40, 0x8b, 0x2c, + 0x17, 0x72, 0x65, 0x17, 0x68, 0x65, 0x3b, 0xa6, 0x69, 0x83, 0xd6, 0xd6, 0x2c, 0x64, 0xc6, 0x05, + 0x2c, 0x16, 0xa2, 0xbc, 0xfd, 0xc1, 0x40, 0x86, 0x54, 0x74, 0xc4, 0xfd, 0x4a, 0x0d, 0x90, 0x6d, + 0x44, 0x4c, 0x98, 0x28, 0xb0, 0x44, 0x05, 0x2c, 0x8c, 0x5d, 0x17, 0x96, 0xc3, 0xb1, 0x1f, 0x0c, + 0x28, 0x60, 0x49, 0x1c, 0x3f, 0x35, 0x86, 0x75, 0xa8, 0xdf, 0xb4, 0x71, 0x2e, 0xd3, 0xac, 0x58, + 0x18, 0xce, 0x8d, 0x4e, 0x8f, 0xb2, 0xb0, 0x70, 0x1b, 0x64, 0x1f, 0x92, 0x53, 0x3b, 0xe5, 0x14, + 0xfb, 0xbd, 0xb0, 0xf1, 0x8e, 0x1c, 0xb3, 0x24, 0x5b, 0xf5, 0xf7, 0x10, 0x8b, 0xb8, 0xa2, 0x24, + 0xaa, 0x6d, 0xc2, 0xaf, 0xb0, 0x6a, 0xa9, 0x6d, 0xb2, 0x28, 0xf9, 0x15, 0x44, 0x01, 0x67, 0x13, + 0xda, 0x66, 0x05, 0xac, 0x01, 0xf5, 0xa7, 0x07, 0x3b, 0xfb, 0x9d, 0x4b, 0xac, 0x05, 0x73, 0x87, + 0x3b, 0xcf, 0x9e, 0xed, 0xed, 0x6c, 0x77, 0x2a, 0xac, 0x0d, 0x0d, 0x1d, 0xef, 0x5a, 0xc5, 0xd4, + 0xe6, 0xd6, 0xd6, 0xce, 0xc1, 0xb3, 0x9d, 0xed, 0x4e, 0xed, 0xb3, 0x7a, 0xa3, 0xda, 0xa9, 0x39, + 0x7f, 0x54, 0x83, 0x96, 0x51, 0xff, 0x1b, 0x6c, 0x46, 0xd7, 0x01, 0xe8, 0x44, 0x91, 0xc5, 0xb4, + 0xd4, 0x5d, 0x03, 0x41, 0x09, 0xa9, 0xcf, 0xda, 0x35, 0x71, 0xd9, 0x54, 0xa5, 0x69, 0xd6, 0xe8, + 0x56, 0xa7, 0xe9, 0xc4, 0x99, 0x71, 0x6d, 0x10, 0x29, 0x4a, 0x02, 0x14, 0x84, 0x29, 0xf8, 0xd0, + 0x84, 0x70, 0x85, 0x62, 0x9e, 0x44, 0xc3, 0x33, 0x2e, 0x8a, 0x08, 0xbd, 0xcc, 0xc2, 0xb0, 0x2d, + 0x29, 0x6a, 0x8c, 0x00, 0xe9, 0x19, 0xd7, 0x06, 0xd9, 0xb7, 0xd5, 0x0a, 0x35, 0x68, 0x85, 0xd6, + 0x8a, 0xd3, 0x6d, 0xad, 0xce, 0x93, 0x82, 0xd1, 0xa7, 0x49, 0xcb, 0xf4, 0xcd, 0xe2, 0x77, 0x7f, + 0x3e, 0xc6, 0x9f, 0x14, 0xd8, 0xe6, 0x60, 0x20, 0x9b, 0x35, 0xef, 0xd2, 0xc6, 0xe6, 0xe5, 0x6d, + 0x25, 0xdb, 0x4a, 0xe4, 0x47, 0xb5, 0x5c, 0x7e, 0xbc, 0x96, 0xcb, 0x9c, 0xc7, 0xd0, 0x3a, 0x30, + 0xae, 0x83, 0x3b, 0x28, 0x6a, 0xd5, 0x45, 0x70, 0x21, 0x84, 0x85, 0xd1, 0x27, 0x43, 0x8d, 0x2e, + 0x55, 0xcd, 0x2e, 0x39, 0xff, 0xb0, 0x22, 0x6e, 0xd8, 0xe9, 0x21, 0x88, 0xf6, 0x1d, 0x68, 0x6b, + 0xbf, 0x41, 0x76, 0x29, 0xc1, 0xc2, 0xb0, 0x0c, 0x75, 0xc7, 0x8b, 0x8e, 0x8f, 0x13, 0xae, 0xc2, + 0x87, 0x2d, 0x4c, 0x69, 0xb5, 0xa8, 0x27, 0x07, 0xa2, 0x85, 0x44, 0x86, 0x11, 0x17, 0x70, 0xa4, + 0x5c, 0x69, 0xb7, 0x55, 0x81, 0xd3, 0x3a, 0xad, 0xef, 0x4e, 0xe4, 0x67, 0xfa, 0x2e, 0x34, 0x74, + 0xbd, 0xf6, 0x96, 0xa5, 0x4a, 0xea, 0x7c, 0xdc, 0x1a, 0xe9, 0xc4, 0x6b, 0x75, 0x5a, 0x30, 0x50, + 0x31, 0x83, 0xad, 0x03, 0x3b, 0x0e, 0xe2, 0x7c, 0x71, 0xc1, 0x51, 0x25, 0x39, 0xce, 0x0b, 0x58, + 0x56, 0xe2, 0xc0, 0x50, 0xb7, 0xed, 0x85, 0xac, 0xbc, 0x49, 0x5c, 0x56, 0x8b, 0xe2, 0xd2, 0xf9, + 0x97, 0x75, 0x98, 0x93, 0xab, 0x5d, 0x78, 0x56, 0x40, 0x6c, 0xb8, 0x16, 0xc6, 0xba, 0xd6, 0xe5, + 0x51, 0x22, 0x04, 0xb9, 0x89, 0xde, 0xc9, 0x6f, 0x83, 0x99, 0xf1, 0x2f, 0xb7, 0x15, 0xae, 0x42, + 0x7d, 0xec, 0xa7, 0xa7, 0x64, 0x1b, 0x12, 0xb4, 0x44, 0x69, 0x65, 0x5e, 0x9e, 0xb1, 0xcd, 0xcb, + 0x65, 0x8f, 0x29, 0x08, 0x9d, 0xaf, 0xf8, 0x98, 0xc2, 0x55, 0x68, 0x8a, 0x6d, 0x3b, 0xb3, 0x20, + 0x67, 0x40, 0x6e, 0x9b, 0x6f, 0x14, 0xb6, 0xf9, 0xb7, 0xdf, 0x80, 0xbf, 0x0b, 0xb3, 0xe2, 0x42, + 0x91, 0x0c, 0x13, 0xbf, 0xaa, 0x1c, 0xc4, 0xa2, 0x9c, 0xfa, 0x2b, 0xe2, 0xc7, 0x5c, 0x59, 0xd6, + 0xbc, 0x92, 0xdc, 0xb2, 0xaf, 0x24, 0x9b, 0x86, 0xef, 0x76, 0xce, 0xf0, 0x7d, 0x17, 0x3a, 0x7a, + 0xfa, 0xc8, 0x52, 0x15, 0x26, 0x32, 0x8a, 0xb8, 0x80, 0x67, 0xfb, 0xcb, 0x82, 0xb5, 0xbf, 0xa0, + 0xc4, 0xda, 0x4c, 0x53, 0x3e, 0x1a, 0xa7, 0x6a, 0x7f, 0x79, 0x08, 0xf3, 0x56, 0x27, 0x71, 0x5b, + 0x91, 0xc1, 0xeb, 0x9d, 0x4b, 0x6c, 0x1e, 0x9a, 0x8f, 0xf7, 0xbd, 0x87, 0x7b, 0x8f, 0x1f, 0xed, + 0x3e, 0xeb, 0x54, 0x30, 0x79, 0xf8, 0x7c, 0x6b, 0x6b, 0x67, 0x67, 0x9b, 0xb6, 0x19, 0x80, 0xd9, + 0x87, 0x9b, 0x8f, 0x71, 0xcb, 0xa9, 0x39, 0xff, 0xbb, 0x02, 0x2d, 0xa3, 0x7a, 0xf6, 0x3d, 0x3d, + 0x33, 0xe2, 0xd6, 0xea, 0xb5, 0x62, 0x17, 0xd6, 0x95, 0xe0, 0x35, 0xa6, 0x46, 0xbf, 0x1f, 0x51, + 0x9d, 0xfa, 0x7e, 0x04, 0x2e, 0x8f, 0x2f, 0x6a, 0xd0, 0xf3, 0x20, 0x8e, 0x21, 0x79, 0x58, 0xc4, + 0x08, 0x65, 0xbb, 0x05, 0x96, 0x14, 0xa6, 0xb7, 0x3c, 0xec, 0x7c, 0x04, 0x90, 0xf5, 0xc6, 0x1e, + 0xf6, 0x25, 0x7b, 0xd8, 0x15, 0x63, 0xd8, 0x55, 0x67, 0x5b, 0x08, 0x0c, 0x39, 0x85, 0xda, 0xc3, + 0xf9, 0x6d, 0x60, 0xca, 0xd2, 0x43, 0xb1, 0x78, 0xe3, 0x21, 0x4f, 0xd5, 0x75, 0x92, 0x25, 0x99, + 0xf3, 0x58, 0x67, 0xa8, 0x1b, 0x51, 0x59, 0x2d, 0x99, 0xdc, 0x91, 0x14, 0x97, 0x97, 0x3b, 0xb2, + 0xa8, 0xab, 0xf3, 0x9d, 0x1e, 0x74, 0xb7, 0x39, 0xd6, 0xb6, 0x39, 0x1c, 0xe6, 0xba, 0x83, 0x47, + 0xf5, 0x92, 0x3c, 0x79, 0x8e, 0xff, 0x3e, 0x5c, 0xde, 0x14, 0x37, 0x47, 0x7e, 0x5d, 0x81, 0xc5, + 0x4e, 0x17, 0x56, 0xf3, 0x55, 0xca, 0xc6, 0x1e, 0xc2, 0xd2, 0x36, 0x3f, 0x9a, 0x9c, 0xec, 0xf1, + 0xb3, 0xac, 0x21, 0x06, 0xf5, 0xe4, 0x34, 0x3a, 0x97, 0xf3, 0x43, 0xbf, 0xd9, 0x35, 0x80, 0x21, + 0x96, 0xf1, 0x92, 0x31, 0xef, 0xab, 0x5b, 0xc1, 0x84, 0x1c, 0x8e, 0x79, 0xdf, 0xf9, 0x08, 0x98, + 0x59, 0x8f, 0x9c, 0x2f, 0xd4, 0xad, 0x27, 0x47, 0x5e, 0x72, 0x91, 0xa4, 0x7c, 0xa4, 0xae, 0x3b, + 0x9b, 0x90, 0x73, 0x1b, 0xda, 0x07, 0xfe, 0x85, 0xcb, 0xbf, 0x90, 0xef, 0x95, 0xac, 0xc1, 0xdc, + 0xd8, 0xbf, 0x40, 0x7e, 0xd6, 0xe6, 0x7f, 0xca, 0x76, 0xfe, 0xb4, 0x06, 0xb3, 0xa2, 0x24, 0xd6, + 0x3a, 0xe0, 0x49, 0x1a, 0x84, 0xc4, 0x63, 0xaa, 0x56, 0x03, 0x2a, 0x08, 0xcc, 0x6a, 0x89, 0xc0, + 0x94, 0x36, 0x29, 0x75, 0xbb, 0x52, 0x92, 0xac, 0x85, 0xa1, 0xd8, 0xca, 0x6e, 0x08, 0x08, 0x4a, + 0xcd, 0x80, 0x9c, 0x7f, 0x2d, 0xd3, 0xe0, 0x45, 0xff, 0xd4, 0x5e, 0x20, 0x65, 0xa2, 0x09, 0x95, + 0x9e, 0x13, 0xe6, 0x54, 0x3c, 0x76, 0xee, 0x9c, 0x50, 0x38, 0x0f, 0x34, 0xde, 0xe2, 0x3c, 0x20, + 0x0c, 0x55, 0xaf, 0x3b, 0x0f, 0xc0, 0xdb, 0x9c, 0x07, 0xde, 0xc6, 0xaf, 0xd5, 0x83, 0x06, 0xed, + 0xe9, 0x86, 0x88, 0x54, 0x69, 0xe4, 0x17, 0x6d, 0x4e, 0x99, 0xb7, 0xf8, 0x45, 0xda, 0x53, 0x5c, + 0x9d, 0xef, 0x8c, 0x60, 0x4e, 0x82, 0xa8, 0x8a, 0x1d, 0x05, 0xa9, 0xb4, 0x5c, 0xe2, 0x4f, 0xa4, + 0xc8, 0xd0, 0x1f, 0xa9, 0xdb, 0xe8, 0xf4, 0x1b, 0x87, 0x4c, 0x97, 0x62, 0xbf, 0x98, 0x04, 0x31, + 0x1f, 0xa8, 0x7b, 0x5d, 0x06, 0x44, 0x91, 0xb8, 0x89, 0xf7, 0x32, 0x8c, 0xce, 0x43, 0x79, 0xb3, + 0x4b, 0xa7, 0x1d, 0x06, 0x1d, 0x7a, 0x95, 0x02, 0x8f, 0xd3, 0x8a, 0x2d, 0xff, 0x6e, 0x05, 0x3a, + 0x92, 0x41, 0x74, 0x9e, 0x72, 0x42, 0xbf, 0xee, 0xfa, 0xe2, 0x4d, 0x98, 0xa7, 0xc3, 0xbc, 0xde, + 0x2a, 0xa4, 0x43, 0xd7, 0x02, 0xb1, 0xbf, 0x2a, 0x14, 0x6e, 0x14, 0x0c, 0x25, 0xbd, 0x99, 0x90, + 0xda, 0x6d, 0x62, 0x5f, 0x06, 0xf1, 0x57, 0x5c, 0x9d, 0x76, 0xfe, 0xb8, 0x02, 0x4b, 0x46, 0x87, + 0x25, 0x83, 0x7d, 0x0a, 0x6d, 0xfd, 0xf8, 0x0b, 0xd7, 0xca, 0xd0, 0x9a, 0x2d, 0x11, 0xb2, 0xcf, + 0xac, 0xc2, 0x44, 0xa7, 0xfe, 0x05, 0x75, 0x30, 0x99, 0x8c, 0xa4, 0x16, 0x62, 0x42, 0xb8, 0xfe, + 0xe7, 0x9c, 0xbf, 0xd4, 0x45, 0x84, 0x1e, 0x64, 0x61, 0xe4, 0x04, 0x89, 0xc2, 0xf4, 0x54, 0x17, + 0xaa, 0x4b, 0x27, 0x88, 0x09, 0x3a, 0xff, 0xa9, 0x0a, 0xcb, 0xc2, 0xaa, 0x24, 0xad, 0x79, 0xfa, + 0xfe, 0xfd, 0xac, 0x30, 0xb0, 0x09, 0x61, 0xb3, 0x7b, 0xc9, 0x95, 0x69, 0xf6, 0xbd, 0xb7, 0xb4, + 0x84, 0xe9, 0xdb, 0x02, 0x53, 0xd6, 0xa2, 0x56, 0xb6, 0x16, 0xaf, 0x99, 0xe9, 0x32, 0x7f, 0xd4, + 0x4c, 0xb9, 0x3f, 0xea, 0xed, 0xfc, 0x3f, 0x85, 0x90, 0xfa, 0x39, 0x59, 0xca, 0x0a, 0xa9, 0xdf, + 0x80, 0x35, 0x0b, 0x20, 0x39, 0x1b, 0x1c, 0x07, 0x5c, 0xdd, 0x95, 0x5b, 0x4a, 0x78, 0xea, 0x59, + 0x45, 0x1e, 0xcc, 0xc1, 0x4c, 0xd2, 0x8f, 0xc6, 0xdc, 0x59, 0x85, 0x15, 0x7b, 0x72, 0xa5, 0x74, + 0xff, 0x45, 0x05, 0xba, 0x0f, 0x85, 0x23, 0x3f, 0x08, 0x4f, 0x76, 0x83, 0x24, 0x8d, 0x62, 0xfd, + 0x4c, 0xca, 0x75, 0x80, 0x24, 0xf5, 0x63, 0x79, 0xde, 0x13, 0x4a, 0xaa, 0x81, 0xe0, 0x1c, 0xf1, + 0x70, 0x20, 0x72, 0x05, 0x6d, 0xe8, 0x74, 0xe1, 0x10, 0x20, 0x6d, 0x6e, 0x96, 0x2a, 0x7d, 0x4b, + 0xdc, 0xf4, 0xc1, 0xc9, 0xe0, 0x67, 0xb4, 0x65, 0x0a, 0x43, 0x56, 0x0e, 0x75, 0x7e, 0xbf, 0x0a, + 0x8b, 0x59, 0x27, 0x29, 0xc2, 0xcc, 0x16, 0xbc, 0x52, 0x7f, 0xce, 0x04, 0xaf, 0xf4, 0x8f, 0x79, + 0x01, 0x2a, 0xd4, 0x86, 0xd9, 0xcd, 0x40, 0xd9, 0x4d, 0x68, 0xa9, 0x54, 0x34, 0x49, 0x8d, 0xf7, + 0x0a, 0x4c, 0x58, 0xc4, 0xe3, 0xa3, 0x4a, 0x2f, 0x8f, 0x27, 0x32, 0x45, 0x77, 0x27, 0x47, 0x29, + 0x7d, 0x29, 0xd6, 0x54, 0x25, 0x51, 0x36, 0xa1, 0x2e, 0x2c, 0xd6, 0x90, 0xf4, 0x60, 0x53, 0x47, + 0x6c, 0xe8, 0x77, 0x9e, 0x34, 0xcf, 0x8b, 0x1a, 0xb3, 0xcb, 0x14, 0x75, 0xd7, 0x84, 0x94, 0xd9, + 0x23, 0x9a, 0x18, 0x41, 0x01, 0x75, 0xd7, 0xc2, 0x9c, 0xdf, 0xab, 0xc0, 0x95, 0x92, 0x65, 0x94, + 0x32, 0x60, 0x1b, 0x96, 0x8e, 0x75, 0xa6, 0x9a, 0x6a, 0x21, 0x08, 0x56, 0x95, 0xb4, 0xb5, 0xa7, + 0xd7, 0x2d, 0x7e, 0xa0, 0x8f, 0x49, 0x62, 0xf1, 0xac, 0xbb, 0x33, 0xc5, 0x0c, 0xe7, 0x00, 0x7a, + 0x3b, 0xaf, 0x50, 0xa4, 0x6c, 0x99, 0x8f, 0x76, 0x2a, 0xca, 0xda, 0x28, 0x88, 0xcc, 0x37, 0x5b, + 0x5b, 0x8f, 0x61, 0xde, 0xaa, 0x8b, 0x7d, 0xe7, 0x6d, 0x2b, 0x31, 0xb9, 0xff, 0x86, 0x5c, 0x75, + 0xf1, 0xea, 0xa8, 0xba, 0xc1, 0x63, 0x40, 0xce, 0x19, 0x2c, 0x3e, 0x99, 0x0c, 0xd3, 0x20, 0x7b, + 0x81, 0x94, 0x7d, 0x4f, 0x7e, 0x44, 0x55, 0xa8, 0xa9, 0x2b, 0x6d, 0xca, 0x2c, 0x87, 0x33, 0x36, + 0xc2, 0x9a, 0xbc, 0x62, 0x8b, 0xc5, 0x0c, 0xe7, 0x0a, 0xac, 0x65, 0x4d, 0x8a, 0xb9, 0x53, 0xdb, + 0xce, 0x1f, 0x54, 0x44, 0x18, 0xaa, 0xfd, 0x20, 0x2a, 0x7b, 0x04, 0xcb, 0x49, 0x10, 0x9e, 0x0c, + 0xb9, 0x59, 0x4f, 0x22, 0x67, 0xe2, 0xb2, 0xdd, 0x3d, 0xf9, 0x68, 0xaa, 0x5b, 0xf6, 0x05, 0x12, + 0x48, 0x79, 0x47, 0x33, 0x02, 0xc9, 0x4d, 0x49, 0xd9, 0x00, 0x3e, 0x83, 0x05, 0xbb, 0x31, 0xf6, + 0xb1, 0xbc, 0x78, 0x93, 0xf5, 0xcc, 0x74, 0x8f, 0xda, 0x94, 0x61, 0x95, 0x74, 0x7e, 0x5e, 0x81, + 0xae, 0xcb, 0x91, 0x8c, 0xb9, 0xd1, 0xa8, 0xa4, 0x9e, 0x4f, 0x0b, 0xd5, 0x4e, 0x1f, 0xb0, 0xbe, + 0xd0, 0xa3, 0xc6, 0xba, 0x3e, 0x75, 0x51, 0x76, 0x2f, 0x95, 0x8c, 0xea, 0x41, 0x03, 0x66, 0xe5, + 0xf8, 0xd6, 0xe0, 0xb2, 0xec, 0x92, 0xea, 0x4e, 0xe6, 0x57, 0xb3, 0x1a, 0xb5, 0xfc, 0x6a, 0x3d, + 0xe8, 0x8a, 0xd7, 0x70, 0xcc, 0x71, 0xc8, 0x0f, 0xb7, 0x81, 0x3d, 0xf1, 0xfb, 0x7e, 0x1c, 0x45, + 0xe1, 0x01, 0x8f, 0x65, 0xdc, 0x20, 0x69, 0x8d, 0xe4, 0x76, 0x52, 0x0a, 0xae, 0x48, 0xa9, 0x07, + 0x5c, 0xa2, 0x50, 0x3d, 0x94, 0x23, 0x52, 0x8e, 0x0b, 0xcb, 0x0f, 0xfc, 0x97, 0x5c, 0xd5, 0x94, + 0xcd, 0x52, 0x6b, 0xac, 0x2b, 0x55, 0x73, 0xaf, 0xee, 0xd4, 0x15, 0x9b, 0x75, 0xcd, 0xd2, 0xce, + 0x06, 0xac, 0xd8, 0x75, 0x4a, 0x51, 0xd2, 0x83, 0xc6, 0x48, 0x62, 0xb2, 0x77, 0x3a, 0x7d, 0xf7, + 0x2b, 0x68, 0x19, 0x2f, 0x1c, 0xb1, 0x35, 0x58, 0x7e, 0xf1, 0xf8, 0xd9, 0xfe, 0xce, 0xe1, 0xa1, + 0x77, 0xf0, 0xfc, 0xc1, 0xe7, 0x3b, 0x3f, 0xf4, 0x76, 0x37, 0x0f, 0x77, 0x3b, 0x97, 0xd8, 0x2a, + 0xb0, 0xfd, 0x9d, 0xc3, 0x67, 0x3b, 0xdb, 0x16, 0x5e, 0x61, 0xd7, 0xa1, 0xf7, 0x7c, 0xff, 0xf9, + 0xe1, 0xce, 0xb6, 0x57, 0xf6, 0x5d, 0x95, 0x5d, 0x83, 0x2b, 0x32, 0xbf, 0xe4, 0xf3, 0xda, 0xdd, + 0x4f, 0xa1, 0x93, 0x37, 0x0f, 0x5a, 0x66, 0xd5, 0xd7, 0xd9, 0x5f, 0x37, 0x7e, 0x5e, 0x83, 0x05, + 0x11, 0x18, 0x2c, 0x9e, 0x14, 0xe6, 0x31, 0x7b, 0x02, 0x73, 0xf2, 0x6d, 0x6a, 0xa6, 0x48, 0xcb, + 0x7e, 0x0d, 0xbb, 0xb7, 0x9a, 0x87, 0xe5, 0xb2, 0x2e, 0xff, 0x95, 0x7f, 0xf7, 0xdf, 0xfe, 0x56, + 0x75, 0x9e, 0xb5, 0xee, 0x9d, 0x7d, 0x78, 0xef, 0x84, 0x87, 0x09, 0xd6, 0xf1, 0x3b, 0x00, 0xd9, + 0x8b, 0xcb, 0xac, 0xab, 0xad, 0x51, 0xb9, 0xe7, 0xa8, 0x7b, 0x57, 0x4a, 0x72, 0x64, 0xbd, 0x57, + 0xa8, 0xde, 0x65, 0x67, 0x01, 0xeb, 0x0d, 0xc2, 0x20, 0x15, 0xaf, 0x2f, 0x7f, 0x52, 0xb9, 0xcb, + 0x06, 0xd0, 0x36, 0xdf, 0x42, 0x66, 0xca, 0x4d, 0x5a, 0xf2, 0x9a, 0x73, 0xef, 0x9d, 0xd2, 0x3c, + 0x45, 0xcb, 0xd4, 0xc6, 0x65, 0xa7, 0x83, 0x6d, 0x4c, 0xa8, 0x44, 0xd6, 0xca, 0x50, 0x70, 0x78, + 0xf6, 0xe4, 0x31, 0xbb, 0x6a, 0x30, 0x5d, 0xe1, 0xc1, 0xe5, 0xde, 0xb5, 0x29, 0xb9, 0xb2, 0xad, + 0x6b, 0xd4, 0xd6, 0x9a, 0xc3, 0xb0, 0xad, 0x3e, 0x95, 0x51, 0x0f, 0x2e, 0x7f, 0x52, 0xb9, 0xbb, + 0xf1, 0xaf, 0x6f, 0x43, 0x53, 0x87, 0x50, 0xb0, 0x9f, 0xc2, 0xbc, 0x15, 0xb9, 0xcd, 0xd4, 0x30, + 0xca, 0x02, 0xbd, 0x7b, 0x57, 0xcb, 0x33, 0x65, 0xc3, 0xd7, 0xa9, 0xe1, 0x2e, 0x5b, 0xc5, 0x86, + 0x65, 0xe8, 0xf3, 0x3d, 0xba, 0x83, 0x20, 0xae, 0x3c, 0xbf, 0x34, 0x24, 0x99, 0x68, 0xec, 0x6a, + 0x5e, 0xb8, 0x58, 0xad, 0x5d, 0x9b, 0x92, 0x2b, 0x9b, 0xbb, 0x4a, 0xcd, 0xad, 0xb2, 0x15, 0xb3, + 0x39, 0x1d, 0xd6, 0xc0, 0xe9, 0x9e, 0xbf, 0xf9, 0x1a, 0x30, 0xbb, 0xa6, 0x09, 0xab, 0xec, 0x95, + 0x60, 0x4d, 0x22, 0xc5, 0xa7, 0x82, 0x9d, 0x2e, 0x35, 0xc5, 0x18, 0x2d, 0x9f, 0xf9, 0x18, 0x30, + 0x3b, 0x82, 0x96, 0xf1, 0xd8, 0x1e, 0xbb, 0x32, 0xf5, 0x61, 0xc0, 0x5e, 0xaf, 0x2c, 0xab, 0x6c, + 0x28, 0x66, 0xfd, 0xf7, 0x50, 0xd1, 0xf9, 0x31, 0x34, 0xf5, 0xf3, 0x6d, 0x6c, 0xcd, 0x78, 0x4e, + 0xcf, 0x7c, 0x6e, 0xae, 0xd7, 0x2d, 0x66, 0x94, 0x11, 0x9f, 0x59, 0x3b, 0x12, 0xdf, 0x0b, 0x68, + 0x19, 0x4f, 0xb4, 0xe9, 0x01, 0x14, 0x9f, 0x81, 0xd3, 0x03, 0x28, 0x79, 0xd1, 0xcd, 0x59, 0xa2, + 0x26, 0x5a, 0xac, 0x49, 0xf4, 0x9d, 0xbe, 0x8a, 0x12, 0xb6, 0x07, 0x97, 0xa5, 0xc4, 0x3e, 0xe2, + 0x5f, 0x67, 0x19, 0x4a, 0x1e, 0x60, 0xbe, 0x5f, 0x61, 0x9f, 0x42, 0x43, 0xbd, 0xc4, 0xc7, 0x56, + 0xcb, 0x5f, 0x14, 0xec, 0xad, 0x15, 0x70, 0x29, 0x5e, 0x7f, 0x08, 0x90, 0xbd, 0x07, 0xa7, 0x85, + 0x44, 0xe1, 0x7d, 0x39, 0x4d, 0x01, 0xc5, 0xc7, 0xe3, 0x9c, 0x55, 0x1a, 0x60, 0x87, 0x91, 0x90, + 0x08, 0xf9, 0xb9, 0x7a, 0xd2, 0xe3, 0x27, 0xd0, 0x32, 0x9e, 0x84, 0xd3, 0xd3, 0x57, 0x7c, 0x4e, + 0x4e, 0x4f, 0x5f, 0xc9, 0x0b, 0x72, 0x4e, 0x8f, 0x6a, 0x5f, 0x71, 0x16, 0xb1, 0xf6, 0x24, 0x38, + 0x09, 0x47, 0xa2, 0x00, 0x2e, 0xd0, 0x29, 0xcc, 0x5b, 0xef, 0xbe, 0x69, 0x0e, 0x2d, 0x7b, 0x55, + 0x4e, 0x73, 0x68, 0xe9, 0x53, 0x71, 0x8a, 0xce, 0x9c, 0x25, 0x6c, 0xe7, 0x8c, 0x8a, 0x18, 0x2d, + 0xfd, 0x08, 0x5a, 0xc6, 0x1b, 0x6e, 0x7a, 0x2c, 0xc5, 0xe7, 0xe2, 0xf4, 0x58, 0xca, 0x9e, 0x7c, + 0x5b, 0xa1, 0x36, 0x16, 0x1c, 0x22, 0x05, 0x7a, 0x9c, 0x02, 0xeb, 0xfe, 0x29, 0x2c, 0xd8, 0xaf, + 0xba, 0x69, 0xde, 0x2f, 0x7d, 0x1f, 0x4e, 0xf3, 0xfe, 0x94, 0xa7, 0xe0, 0x24, 0x49, 0xdf, 0x5d, + 0xd6, 0x8d, 0xdc, 0xfb, 0x52, 0x06, 0x61, 0x7e, 0xc5, 0xbe, 0x8f, 0x02, 0x4e, 0xbe, 0x16, 0xc2, + 0xd6, 0x0c, 0xaa, 0x35, 0xdf, 0x14, 0xd1, 0xfc, 0x52, 0x78, 0x58, 0xc4, 0x26, 0x66, 0xf1, 0xbc, + 0x06, 0xed, 0x5a, 0xf4, 0x6a, 0x88, 0xb1, 0x6b, 0x99, 0x0f, 0x8b, 0x18, 0xbb, 0x96, 0xf5, 0xb8, + 0x48, 0x7e, 0xd7, 0x4a, 0x03, 0xac, 0x23, 0x84, 0xc5, 0xdc, 0xed, 0x32, 0xcd, 0x15, 0xe5, 0x17, + 0x80, 0x7b, 0xd7, 0x5f, 0x7f, 0x29, 0xcd, 0x96, 0x20, 0x4a, 0x08, 0xde, 0x53, 0xd7, 0xad, 0x7f, + 0x17, 0xda, 0xe6, 0x4b, 0x53, 0xcc, 0x64, 0xe5, 0x7c, 0x4b, 0xef, 0x94, 0xe6, 0xd9, 0x8b, 0xcb, + 0xda, 0x66, 0x33, 0xec, 0x07, 0xb0, 0xaa, 0x59, 0xdd, 0xbc, 0xb0, 0x94, 0xb0, 0x77, 0x4b, 0xae, + 0x31, 0x99, 0x7a, 0x5c, 0xef, 0xca, 0xd4, 0x7b, 0x4e, 0xf7, 0x2b, 0x48, 0x34, 0xf6, 0xf3, 0x3d, + 0xd9, 0x86, 0x51, 0xf6, 0x6a, 0x51, 0xb6, 0x61, 0x94, 0xbe, 0xf9, 0xa3, 0x88, 0x86, 0x2d, 0x5b, + 0x73, 0x24, 0xe2, 0x55, 0xd8, 0x8f, 0x60, 0xd1, 0xb8, 0x12, 0x7a, 0x78, 0x11, 0xf6, 0x35, 0x03, + 0x14, 0x5f, 0x2c, 0xe8, 0x95, 0x9d, 0x52, 0x9c, 0x35, 0xaa, 0x7f, 0xc9, 0xb1, 0x26, 0x07, 0x89, + 0x7f, 0x0b, 0x5a, 0xe6, 0x75, 0xd3, 0xd7, 0xd4, 0xbb, 0x66, 0x64, 0x99, 0x97, 0xed, 0xef, 0x57, + 0xd8, 0x81, 0x88, 0x5b, 0xd4, 0x4f, 0x09, 0x47, 0x71, 0x7e, 0xfb, 0xb4, 0x9f, 0x18, 0xd6, 0x0b, + 0x59, 0xf6, 0xb8, 0xf4, 0x9d, 0xca, 0xfd, 0x0a, 0xfb, 0x7b, 0x15, 0x68, 0x5b, 0xd7, 0x41, 0xad, + 0x28, 0xb0, 0x5c, 0xcf, 0xba, 0x66, 0x9e, 0xd9, 0x35, 0xc7, 0xa5, 0x61, 0xef, 0xdd, 0xfd, 0xcc, + 0x9a, 0xd6, 0x2f, 0x2d, 0x53, 0xdd, 0x7a, 0xfe, 0x3d, 0xe1, 0xaf, 0xf2, 0x05, 0xcc, 0x77, 0x22, + 0xbe, 0xba, 0x5f, 0x61, 0x7f, 0x58, 0x81, 0x05, 0xdb, 0x76, 0xae, 0x87, 0x5b, 0x6a, 0xa5, 0xd7, + 0x8b, 0x3f, 0xc5, 0xe0, 0xfe, 0x23, 0xea, 0xe5, 0xb3, 0xbb, 0xae, 0xd5, 0x4b, 0xf9, 0x54, 0xd4, + 0xaf, 0xd6, 0x5b, 0xf6, 0x89, 0x78, 0xa6, 0x5f, 0xb9, 0x0d, 0x59, 0xf1, 0x59, 0x77, 0x4d, 0x30, + 0xe6, 0xe3, 0xe9, 0xb4, 0x08, 0x3f, 0x11, 0xef, 0xe8, 0x2a, 0xdf, 0x13, 0xd2, 0xdd, 0xdb, 0x7e, + 0xef, 0xdc, 0xa4, 0x31, 0x5d, 0x77, 0xae, 0x58, 0x63, 0xca, 0xef, 0xf0, 0x9b, 0xa2, 0x77, 0xf2, + 0xdd, 0xf3, 0x6c, 0x8b, 0x2a, 0xbc, 0x85, 0x3e, 0xbd, 0x93, 0x23, 0xd1, 0x49, 0x59, 0xdc, 0x62, + 0x8e, 0xb7, 0xac, 0xc6, 0xb9, 0x4b, 0x7d, 0xbd, 0xe9, 0xbc, 0x3b, 0xb5, 0xaf, 0xf7, 0xc8, 0x02, + 0x8e, 0x3d, 0x3e, 0x00, 0xc8, 0xdc, 0xfc, 0x2c, 0xe7, 0x62, 0xd6, 0x22, 0xa3, 0x18, 0x09, 0x60, + 0x73, 0xa0, 0xf2, 0x44, 0x63, 0x8d, 0x3f, 0x16, 0x02, 0xf0, 0xb1, 0x72, 0x4e, 0x9b, 0x6a, 0x8e, + 0xed, 0x8b, 0xb7, 0xd4, 0x9c, 0x7c, 0xfd, 0x96, 0xf8, 0xd3, 0x9e, 0xee, 0xe7, 0x30, 0xbf, 0x17, + 0x45, 0x2f, 0x27, 0x63, 0x1d, 0xa0, 0x65, 0x3b, 0xa7, 0x76, 0xfd, 0xe4, 0xb4, 0x97, 0x1b, 0x85, + 0x73, 0x83, 0xaa, 0xea, 0xb1, 0xae, 0x51, 0xd5, 0xbd, 0x2f, 0xb3, 0x10, 0x82, 0xaf, 0x98, 0x0f, + 0x4b, 0x5a, 0xaa, 0xea, 0x8e, 0xf7, 0xec, 0x6a, 0x2c, 0x59, 0x9a, 0x6f, 0xc2, 0xd2, 0xc7, 0x55, + 0x6f, 0xef, 0x25, 0xaa, 0x4e, 0x92, 0x29, 0xed, 0x6d, 0xde, 0xa7, 0x9b, 0x62, 0xe4, 0xe1, 0x59, + 0xce, 0x3a, 0xae, 0x5d, 0x43, 0xbd, 0x79, 0x0b, 0xb4, 0x77, 0x9a, 0xb1, 0x7f, 0x11, 0xf3, 0x2f, + 0xee, 0x7d, 0x29, 0x7d, 0x47, 0x5f, 0xa9, 0x9d, 0x46, 0x39, 0xd7, 0xac, 0x9d, 0x26, 0xe7, 0x8d, + 0xb3, 0x76, 0x9a, 0x82, 0x37, 0xce, 0x9a, 0x6a, 0xe5, 0xdc, 0x63, 0x43, 0x58, 0x2a, 0x38, 0xf0, + 0xf4, 0x26, 0x33, 0xcd, 0xed, 0xd7, 0xbb, 0x31, 0xbd, 0x80, 0xdd, 0xda, 0x5d, 0xbb, 0xb5, 0x43, + 0x98, 0xdf, 0xe6, 0x62, 0xb2, 0x44, 0x44, 0x7a, 0xee, 0x4e, 0xb1, 0x19, 0xef, 0x9e, 0xdf, 0x12, + 0x28, 0xcf, 0x56, 0x25, 0x28, 0x14, 0x9c, 0xfd, 0x18, 0x5a, 0x8f, 0x78, 0xaa, 0x42, 0xd0, 0xb5, + 0x32, 0x9b, 0x8b, 0x49, 0xef, 0x95, 0x44, 0xb0, 0xdb, 0x34, 0x43, 0xb5, 0xdd, 0xe3, 0x83, 0x13, + 0x2e, 0x84, 0x93, 0x17, 0x0c, 0xbe, 0x62, 0x7f, 0x91, 0x2a, 0xd7, 0x77, 0x70, 0x56, 0x8d, 0x78, + 0x62, 0xb3, 0xf2, 0xc5, 0x1c, 0x5e, 0x56, 0x73, 0x18, 0x0d, 0xb8, 0xa1, 0x54, 0x85, 0xd0, 0x32, + 0xee, 0xf0, 0x69, 0x06, 0x2a, 0x5e, 0x79, 0xd4, 0x0c, 0x54, 0x72, 0xe5, 0xcf, 0xb9, 0x43, 0xed, + 0x38, 0xec, 0x46, 0xd6, 0x8e, 0xb8, 0xe6, 0x97, 0xb5, 0x74, 0xef, 0x4b, 0x7f, 0x94, 0x7e, 0xc5, + 0x5e, 0xd0, 0xd3, 0x6d, 0x66, 0x88, 0x7d, 0xa6, 0x9d, 0xe7, 0xa3, 0xf1, 0xf5, 0x64, 0x19, 0x59, + 0xb6, 0xc6, 0x2e, 0x9a, 0x22, 0xdd, 0xeb, 0x7b, 0x00, 0x87, 0x69, 0x34, 0xde, 0xf6, 0xf9, 0x28, + 0x0a, 0x33, 0x59, 0x9b, 0x05, 0x78, 0x67, 0xf2, 0xcb, 0x88, 0xf2, 0x66, 0x2f, 0x8c, 0xe3, 0x8c, + 0x75, 0x4b, 0x41, 0x11, 0xd7, 0xd4, 0x18, 0x70, 0x3d, 0x21, 0x25, 0x71, 0xe0, 0xf7, 0x2b, 0x6c, + 0x13, 0x20, 0xf3, 0xe0, 0xea, 0xc3, 0x49, 0xc1, 0x39, 0xac, 0xc5, 0x5e, 0x89, 0xbb, 0xf7, 0x00, + 0x9a, 0x99, 0xdf, 0x6c, 0x2d, 0xbb, 0xd1, 0x6b, 0x79, 0xd9, 0xf4, 0x0e, 0x5e, 0xf0, 0x66, 0x39, + 0x1d, 0x9a, 0x2a, 0x60, 0x0d, 0x9c, 0x2a, 0x72, 0x51, 0x05, 0xb0, 0x2c, 0x3a, 0xa8, 0x15, 0x1c, + 0x0a, 0x4c, 0x56, 0x23, 0x29, 0xf1, 0x28, 0x69, 0x6e, 0x2e, 0x75, 0x88, 0x58, 0x36, 0x16, 0xa4, + 0x56, 0x11, 0x14, 0x8d, 0xa2, 0x79, 0x04, 0x4b, 0x05, 0x1b, 0xbb, 0x66, 0xe9, 0x69, 0x4e, 0x14, + 0xcd, 0xd2, 0x53, 0xcd, 0xf3, 0xce, 0x65, 0x6a, 0x72, 0xd1, 0x01, 0x3a, 0x53, 0x9d, 0x07, 0x69, + 0xff, 0x14, 0x9b, 0xfb, 0x83, 0x0a, 0x2c, 0x97, 0x98, 0xd0, 0xd9, 0x7b, 0xea, 0x78, 0x3e, 0xd5, + 0xbc, 0xde, 0x2b, 0xb5, 0xb0, 0x3a, 0x87, 0xd4, 0xce, 0x13, 0xf6, 0xb9, 0xb5, 0xb1, 0x09, 0xe3, + 0xa6, 0xe4, 0xcc, 0xd7, 0x2a, 0x15, 0xa5, 0x1a, 0xc5, 0x17, 0xb0, 0x26, 0x3a, 0xb2, 0x39, 0x1c, + 0xe6, 0xac, 0xbf, 0xd7, 0x0b, 0xff, 0xca, 0xcb, 0xb2, 0x6a, 0xf7, 0xa6, 0xff, 0xab, 0xaf, 0x29, + 0x0a, 0xb0, 0xe8, 0x2a, 0x9b, 0x40, 0x27, 0x6f, 0x51, 0x65, 0xd3, 0xeb, 0xea, 0xbd, 0x6b, 0x1d, + 0x34, 0x4b, 0xac, 0xb0, 0xdf, 0xa4, 0xc6, 0xde, 0x75, 0x7a, 0x65, 0xf3, 0x22, 0xce, 0x9e, 0xb8, + 0x1e, 0x7f, 0x59, 0x9b, 0x7f, 0x73, 0xe3, 0x54, 0x0d, 0x4c, 0xb3, 0x57, 0xeb, 0xa3, 0x6e, 0xb9, + 0xf5, 0xf8, 0x16, 0x35, 0x7f, 0xc3, 0x79, 0xa7, 0xac, 0xf9, 0x58, 0x7c, 0x22, 0x0e, 0xbd, 0x6b, + 0x79, 0xbe, 0x56, 0x3d, 0xb8, 0x51, 0xb6, 0xde, 0x53, 0x4f, 0x2f, 0xb9, 0xb9, 0xbe, 0x44, 0xba, + 0x5d, 0xdb, 0x34, 0xf7, 0x6a, 0xf6, 0x29, 0xb1, 0x2b, 0x6b, 0xf6, 0x29, 0xb3, 0x0f, 0xdb, 0x7a, + 0x8d, 0xb2, 0x0c, 0x7f, 0x52, 0xb9, 0xfb, 0xe0, 0xf6, 0x8f, 0xbe, 0x79, 0x12, 0xa4, 0xa7, 0x93, + 0xa3, 0xf5, 0x7e, 0x34, 0xba, 0x37, 0x54, 0x66, 0x3d, 0x79, 0x59, 0xe7, 0xde, 0x30, 0x1c, 0xdc, + 0xa3, 0x6a, 0x8f, 0x66, 0xe9, 0x7f, 0x0f, 0x7e, 0xe7, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x55, + 0x01, 0x55, 0xb7, 0xad, 0x70, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/lnrpc/rpc.proto b/lnrpc/rpc.proto index 5f150836c..cb5a2e2c0 100644 --- a/lnrpc/rpc.proto +++ b/lnrpc/rpc.proto @@ -2686,6 +2686,12 @@ message PolicyUpdateRequest { /// If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged. uint64 max_htlc_msat = 6 [json_name = "max_htlc_msat"]; + + /// The minimum HTLC size in milli-satoshis. Only applied if min_htlc_msat_specified is true. + uint64 min_htlc_msat = 7 [json_name = "min_htlc_msat"]; + + /// If true, min_htlc_msat is applied. + bool min_htlc_msat_specified = 8 [json_name = "set_min_htlc_msat"]; } message PolicyUpdateResponse { } diff --git a/lnrpc/rpc.swagger.json b/lnrpc/rpc.swagger.json index 3a62ad84e..244c51081 100644 --- a/lnrpc/rpc.swagger.json +++ b/lnrpc/rpc.swagger.json @@ -3538,6 +3538,16 @@ "type": "string", "format": "uint64", "description": "/ If set, the maximum HTLC size in milli-satoshis. If unset, the maximum HTLC will be unchanged." + }, + "min_htlc_msat": { + "type": "string", + "format": "uint64", + "description": "/ The minimum HTLC size in milli-satoshis. Only applied if min_htlc_msat_specified is true." + }, + "min_htlc_msat_specified": { + "type": "boolean", + "format": "boolean", + "description": "/ If true, min_htlc_msat is applied." } } }, diff --git a/routing/localchans/manager.go b/routing/localchans/manager.go index 19fdbe5e5..413f86433 100644 --- a/routing/localchans/manager.go +++ b/routing/localchans/manager.go @@ -160,6 +160,11 @@ func (r *Manager) updateEdge(chanPoint wire.OutPoint, edge.MaxHTLC = amtMax } + // If a new min htlc is specified, update the edge. + if newSchema.MinHTLC != nil { + edge.MinHTLC = *newSchema.MinHTLC + } + // If the MaxHtlc flag wasn't already set, we can set it now. edge.MessageFlags |= lnwire.ChanUpdateOptionMaxHtlc diff --git a/routing/router.go b/routing/router.go index ea802b480..5020aefc4 100644 --- a/routing/router.go +++ b/routing/router.go @@ -224,6 +224,10 @@ type ChannelPolicy struct { // MaxHTLC is the maximum HTLC size including fees we are allowed to // forward over this channel. MaxHTLC lnwire.MilliSatoshi + + // MinHTLC is the minimum HTLC size including fees we are allowed to + // forward over this channel. + MinHTLC *lnwire.MilliSatoshi } // Config defines the configuration for the ChannelRouter. ALL elements within diff --git a/rpcserver.go b/rpcserver.go index 9e501232a..225fdf006 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -4864,15 +4864,25 @@ func (r *rpcServer) UpdateChannelPolicy(ctx context.Context, FeeRate: feeRateFixed, } + maxHtlc := lnwire.MilliSatoshi(req.MaxHtlcMsat) + var minHtlc *lnwire.MilliSatoshi + if req.MinHtlcMsatSpecified { + min := lnwire.MilliSatoshi(req.MinHtlcMsat) + minHtlc = &min + } + chanPolicy := routing.ChannelPolicy{ FeeSchema: feeSchema, TimeLockDelta: req.TimeLockDelta, - MaxHTLC: lnwire.MilliSatoshi(req.MaxHtlcMsat), + MaxHTLC: maxHtlc, + MinHTLC: minHtlc, } rpcsLog.Debugf("[updatechanpolicy] updating channel policy base_fee=%v, "+ - "rate_float=%v, rate_fixed=%v, time_lock_delta: %v, targets=%v", + "rate_float=%v, rate_fixed=%v, time_lock_delta: %v, "+ + "min_htlc=%v, max_htlc=%v, targets=%v", req.BaseFeeMsat, req.FeeRate, feeRateFixed, req.TimeLockDelta, + minHtlc, maxHtlc, spew.Sdump(targetChans)) // With the scope resolved, we'll now send this to the local channel From 61e114f201e9a4425afdb395dc15830fb167fd71 Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Mon, 25 Nov 2019 13:36:40 +0100 Subject: [PATCH 10/10] autopilot: take channel min htlc from config --- lnd.go | 2 +- pilot.go | 33 +++++++++++++++++---------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/lnd.go b/lnd.go index ccce8f9f9..00041d7ff 100644 --- a/lnd.go +++ b/lnd.go @@ -479,7 +479,7 @@ func Main(lisCfg ListenerCfg) error { // Set up an autopilot manager from the current config. This will be // used to manage the underlying autopilot agent, starting and stopping // it at will. - atplCfg, err := initAutoPilot(server, cfg.Autopilot) + atplCfg, err := initAutoPilot(server, cfg.Autopilot, mainChain) if err != nil { err := fmt.Errorf("Unable to initialize autopilot: %v", err) ltndLog.Error(err) diff --git a/pilot.go b/pilot.go index cc6650735..59f05116b 100644 --- a/pilot.go +++ b/pilot.go @@ -70,10 +70,11 @@ func validateAtplCfg(cfg *autoPilotConfig) ([]*autopilot.WeightedHeuristic, // chanController is an implementation of the autopilot.ChannelController // interface that's backed by a running lnd instance. type chanController struct { - server *server - private bool - minConfs int32 - confTarget uint32 + server *server + private bool + minConfs int32 + confTarget uint32 + chanMinHtlcIn lnwire.MilliSatoshi } // OpenChannel opens a channel to a target peer, with a capacity of the @@ -91,9 +92,6 @@ func (c *chanController) OpenChannel(target *btcec.PublicKey, return err } - // TODO(halseth): make configurable? - minHtlcIn := lnwire.NewMSatFromSatoshis(1) - // Construct the open channel request and send it to the server to begin // the funding workflow. req := &openChanReq{ @@ -102,7 +100,7 @@ func (c *chanController) OpenChannel(target *btcec.PublicKey, subtractFees: true, localFundingAmt: amt, pushAmt: 0, - minHtlcIn: minHtlcIn, + minHtlcIn: c.chanMinHtlcIn, fundingFeePerKw: feePerKw, private: c.private, remoteCsvDelay: 0, @@ -136,11 +134,13 @@ func (c *chanController) SpliceOut(chanPoint *wire.OutPoint, // autopilot.ChannelController interface. var _ autopilot.ChannelController = (*chanController)(nil) -// initAutoPilot initializes a new autopilot.ManagerCfg to manage an -// autopilot.Agent instance based on the passed configuration struct. The agent -// and all interfaces needed to drive it won't be launched before the Manager's +// initAutoPilot initializes a new autopilot.ManagerCfg to manage an autopilot. +// Agent instance based on the passed configuration structs. The agent and all +// interfaces needed to drive it won't be launched before the Manager's // StartAgent method is called. -func initAutoPilot(svr *server, cfg *autoPilotConfig) (*autopilot.ManagerCfg, error) { +func initAutoPilot(svr *server, cfg *autoPilotConfig, chainCfg *chainConfig) ( + *autopilot.ManagerCfg, error) { + atplLog.Infof("Instantiating autopilot with max_channels=%d, allocation=%f, "+ "min_chan_size=%d, max_chan_size=%d, private=%t, min_confs=%d, "+ "conf_target=%d", cfg.MaxChannels, cfg.Allocation, cfg.MinChannelSize, @@ -173,10 +173,11 @@ func initAutoPilot(svr *server, cfg *autoPilotConfig) (*autopilot.ManagerCfg, er Self: self, Heuristic: weightedAttachment, ChanController: &chanController{ - server: svr, - private: cfg.Private, - minConfs: cfg.MinConfs, - confTarget: cfg.ConfTarget, + server: svr, + private: cfg.Private, + minConfs: cfg.MinConfs, + confTarget: cfg.ConfTarget, + chanMinHtlcIn: chainCfg.MinHTLCIn, }, WalletBalance: func() (btcutil.Amount, error) { return svr.cc.wallet.ConfirmedBalance(cfg.MinConfs)