<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">It turns out that using a simple enum type to implement a state machine instead of a function avoids the performance penalty and allows me to collapse a four stage conduit pipeline into one with <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">4 x</code> performance improvement.</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248);white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important">blankStrings :: MonadThrow m => Conduit BS.ByteString m BS.ByteString
blankStrings = blankStrings' InJson

blankStrings' :: MonadThrow m => FastState -> Conduit BS.ByteString m BS.ByteString
blankStrings' lastState = do
  mbs <- await
  case mbs of
    Just bs -> do
      let (!cs, Just (!nextState, _)) = unfoldrN (BS.length bs) blankByteString (lastState, bs)
      yield cs
      blankStrings' nextState
    Nothing -> return ()
  where
    blankByteString :: (FastState, ByteString) -> Maybe (Word8, (FastState, ByteString))
    blankByteString (InJson, bs) = case BS.uncons bs of
      Just (!c, !cs) | isLeadingDigit c   -> Just (w1         , (InNumber , cs))
      Just (!c, !cs) | c == wDoubleQuote  -> Just (wOpenParen , (InString , cs))
      Just (!c, !cs) | isAlphabetic c     -> Just (c          , (InIdent  , cs))
      Just (!c, !cs)                      -> Just (c          , (InJson   , cs))
      Nothing -> Nothing
    blankByteString (InString, bs) = case BS.uncons bs of
      Just (!c, !cs) | c == wBackslash    -> Just (wSpace     , (Escaped  , cs))
      Just (!c, !cs) | c == wDoubleQuote  -> Just (wCloseParen, (InJson   , cs))
      Just (_ , !cs)                      -> Just (wSpace     , (InString , cs))
      Nothing                             -> Nothing
    blankByteString (Escaped, bs) = case BS.uncons bs of
      Just (_, !cs)                       -> Just (wSpace, (InString, cs))
      Nothing                             -> Nothing
    blankByteString (InNumber, bs) = case BS.uncons bs of
      Just (!c, !cs) | isTrailingDigit c  -> Just (w0         , (InNumber , cs))
      Just (!c, !cs) | c == wDoubleQuote  -> Just (wOpenParen , (InString , cs))
      Just (!c, !cs) | isAlphabetic c     -> Just (c          , (InIdent  , cs))
      Just (!c, !cs)                      -> Just (c          , (InJson   , cs))
      Nothing                             -> Nothing
    blankByteString (InIdent, bs) = case BS.uncons bs of
      Just (!c, !cs) | isAlphabetic c     -> Just (wUnderscore, (InIdent  , cs))
      Just (!c, !cs) | isLeadingDigit c   -> Just (w1         , (InNumber , cs))
      Just (!c, !cs) | c == wDoubleQuote  -> Just (wOpenParen , (InString , cs))
      Just (!c, !cs)                      -> Just (c          , (InJson   , cs))
      Nothing                             -> Nothing
</code></pre><p style="margin:0px 0px 1.2em!important">I’m quite please with this, but any further suggestions are still welcome.</p>
<p style="margin:0px 0px 1.2em!important">Cheers,</p>
<p style="margin:0px 0px 1.2em!important">-John</p>
<p style="margin:0px 0px 1.2em!important">On Sun, 3 Apr 2016 at 23:55 John Ky <a href="http://mailto:newhoggy@gmail.com">newhoggy@gmail.com</a> wrote:</p>
<p style="margin:0px 0px 1.2em!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><p style="margin:0px 0px 1.2em!important">Hi Haskellers,</p>
<p style="margin:0px 0px 1.2em!important">I just rewrote the code to a state-machine in the hope that I can eventually collapse several stages in a pipeline into one, but this simple state-machine version turns out to be about 3 times slower even though it does the same thing:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important">newtype Blank = Blank
  { blank :: BS.ByteString -> Maybe (Word8, (BS.ByteString, Blank))
  }

escapeChar :: BS.ByteString -> Maybe (Word8, (BS.ByteString, Blank))
escapeChar bs = case BS.uncons bs of
  Just (c, cs)  -> Just (c, (cs, Blank (if c /= wBackslash then escapeChar else escapedChar)))
  Nothing       -> Nothing

escapedChar :: BS.ByteString -> Maybe (Word8, (BS.ByteString, Blank))
escapedChar bs = case BS.uncons bs of
  Just (_, cs) -> Just (wUnderscore, (cs, Blank escapeChar))
  Nothing      -> Nothing

fastBlank :: MonadThrow m => Conduit BS.ByteString m BS.ByteString
fastBlank = fastBlank' escapeChar

fastBlank' :: MonadThrow m => (BS.ByteString -> Maybe (Word8, (BS.ByteString, Blank))) -> Conduit BS.ByteString m BS.ByteString
fastBlank' blank = do
  mbs <- await
  case mbs of
    Just bs -> do
      let (cs, Just (_, Blank newBlank)) = unfoldrN (BS.length bs) (\(bs, Blank f) -> f bs) (bs, Blank blank)
      yield cs
      fastBlank' newBlank
    Nothing -> return ()
</code></pre><p style="margin:0px 0px 1.2em!important">I worry that if I go this approach, just the cost of the state-machine might mean I only break-even.</p>
<p style="margin:0px 0px 1.2em!important">Is there any reason why this version should be slower?</p>
<p style="margin:0px 0px 1.2em!important">Cheers,</p>
<p style="margin:0px 0px 1.2em!important">-John</p>
<div title="MDH:SGkgSGFza2VsbGVycyw8ZGl2Pjxicj48L2Rpdj48ZGl2PkkganVzdCByZXdyb3RlIHRoZSBjb2Rl
IHRvIGEgc3RhdGUtbWFjaGluZSBpbiB0aGUgaG9wZSB0aGF0IEkgY2FuIGV2ZW50dWFsbHkgY29s
bGFwc2Ugc2V2ZXJhbCBzdGFnZXMgaW4gYSBwaXBlbGluZSBpbnRvIG9uZSwgYnV0IHRoaXMgc2lt
cGxlIHN0YXRlLW1hY2hpbmUgdmVyc2lvbiB0dXJucyBvdXQgdG8gYmUgYWJvdXQgMyB0aW1lcyBz
bG93ZXI6PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8YnI+PGRpdj5uZXd0eXBlIEJsYW5r
ID0gQmxhbms8L2Rpdj48ZGl2PiZuYnNwOyB7IGJsYW5rIDo6IEJTLkJ5dGVTdHJpbmcgLSZndDsg
TWF5YmUgKFdvcmQ4LCAoQlMuQnl0ZVN0cmluZywgQmxhbmspKTwvZGl2PjxkaXY+Jm5ic3A7IH08
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmVzY2FwZUNoYXIgOjogQlMuQnl0ZVN0cmluZyAtJmd0
OyBNYXliZSAoV29yZDgsIChCUy5CeXRlU3RyaW5nLCBCbGFuaykpPC9kaXY+PGRpdj5lc2NhcGVD
aGFyIGJzID0gY2FzZSBCUy51bmNvbnMgYnMgb2Y8L2Rpdj48ZGl2PiZuYnNwOyBKdXN0IChjLCBj
cykgJm5ic3A7LSZndDsgSnVzdCAoYywgKGNzLCBCbGFuayAoaWYgYyAvPSB3QmFja3NsYXNoIHRo
ZW4gZXNjYXBlQ2hhciBlbHNlIGVzY2FwZWRDaGFyKSkpPC9kaXY+PGRpdj4mbmJzcDsgTm90aGlu
ZyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAtJmd0OyBOb3RoaW5nPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj5lc2NhcGVkQ2hhciA6OiBCUy5CeXRlU3RyaW5nIC0mZ3Q7IE1heWJlIChXb3JkOCwgKEJT
LkJ5dGVTdHJpbmcsIEJsYW5rKSk8L2Rpdj48ZGl2PmVzY2FwZWRDaGFyIGJzID0gY2FzZSBCUy51
bmNvbnMgYnMgb2Y8L2Rpdj48ZGl2PiZuYnNwOyBKdXN0IChfLCBjcykgLSZndDsgSnVzdCAod1Vu
ZGVyc2NvcmUsIChjcywgQmxhbmsgZXNjYXBlQ2hhcikpPC9kaXY+PGRpdj4mbmJzcDsgTm90aGlu
ZyAmbmJzcDsgJm5ic3A7ICZuYnNwOy0mZ3Q7IE5vdGhpbmc8L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2PmZhc3RCbGFuayA6OiBNb25hZFRocm93IG0gPSZndDsgQ29uZHVpdCBCUy5CeXRlU3RyaW5n
IG0gQlMuQnl0ZVN0cmluZzwvZGl2PjxkaXY+ZmFzdEJsYW5rID0gZmFzdEJsYW5rJyBlc2NhcGVD
aGFyPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5mYXN0QmxhbmsnIDo6IE1vbmFkVGhyb3cgbSA9
Jmd0OyAoQlMuQnl0ZVN0cmluZyAtJmd0OyBNYXliZSAoV29yZDgsIChCUy5CeXRlU3RyaW5nLCBC
bGFuaykpKSAtJmd0OyBDb25kdWl0IEJTLkJ5dGVTdHJpbmcgbSBCUy5CeXRlU3RyaW5nPC9kaXY+
PGRpdj5mYXN0QmxhbmsnIGJsYW5rID0gZG88L2Rpdj48ZGl2PiZuYnNwOyBtYnMgJmx0Oy0gYXdh
aXQ8L2Rpdj48ZGl2PiZuYnNwOyBjYXNlIG1icyBvZjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBK
dXN0IGJzIC0mZ3Q7IGRvPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBsZXQgKGNzLCBK
dXN0IChfLCBCbGFuayBuZXdCbGFuaykpID0gdW5mb2xkck4gKEJTLmxlbmd0aCBicykgKFwoYnMs
IEJsYW5rIGYpIC0mZ3Q7IGYgYnMpIChicywgQmxhbmsgYmxhbmspPC9kaXY+PGRpdj4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyB5aWVsZCBjczwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgZmFz
dEJsYW5rJyBuZXdCbGFuazwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBOb3RoaW5nIC0mZ3Q7IHJl
dHVybiAoKTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5JIHdv
cnJ5IHRoYXQgaWYgSSBnbyB0aGlzIGFwcHJvYWNoLCBqdXN0IHRoZSBjb3N0IG9mIHRoZSBzdGF0
ZS1tYWNoaW5lIG1pZ2h0IG1lYW4gSSBvbmx5IGJyZWFrLWV2ZW4uPC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj5JcyB0aGVyZSBhbnkgcmVhc29uIHdoeSB0aGlzIHZlcnNpb24gc2hvdWxkIGJlIHNs
b3dlcj88L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkNoZWVycyw8L2Rpdj48ZGl2Pjxicj48L2Rp
dj48ZGl2Pi1Kb2huPC9kaXY+PGRpdj48YnI+PC9kaXY+" style="min-height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</div></div></div><div dir="ltr"><br><div class="gmail_quote"><div dir="ltr">On Sun, 3 Apr 2016 at 23:11 John Ky <<a href="mailto:newhoggy@gmail.com" target="_blank">newhoggy@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><p style="margin:0px 0px 1.2em!important">Hello Haskellers,</p>
<p style="margin:0px 0px 1.2em!important">I’ve been trying to squeeze as much performance out of my code as possible and I’ve come to a point where can’t figure out what more I can do.</p>
<p style="margin:0px 0px 1.2em!important">Here is some example code:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important">blankEscapedChars :: MonadThrow m => Conduit BS.ByteString m BS.ByteString
blankEscapedChars = blankEscapedChars' ""

blankEscapedChars' :: MonadThrow m => BS.ByteString -> Conduit BS.ByteString m BS.ByteString
blankEscapedChars' rs = do
  mbs <- await
  case mbs of
    Just bs -> do
      let cs = if BS.length rs /= 0 then BS.concat [rs, bs] else bs
      let ds = fst (unfoldrN (BS.length cs) unescapeByteString (False, cs))
      yield ds
      blankEscapedChars' (BS.drop (BS.length ds) cs)
    Nothing -> when (BS.length rs > 0) (yield rs)
  where
    unescapeByteString :: (Bool, ByteString) -> Maybe (Word8, (Bool, ByteString))
    unescapeByteString (wasEscaped, bs) = case BS.uncons bs of
      Just (_, cs) | wasEscaped       -> Just (wUnderscore, (False, cs))
      Just (c, cs) | c /= wBackslash  -> Just (c, (False, cs))
      Just (c, cs)                    -> Just (c, (True, cs))
      Nothing                         -> Nothing
</code></pre><p style="margin:0px 0px 1.2em!important">The above function <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">blankEscapedChars</code> will go find all <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">\</code> characters and convert the following character to a <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">_</code>.  For a <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">1 MB</code> in memory JSON <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">ByteString</code>, it benches at about <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">6.6 ms</code></p>
<p style="margin:0px 0px 1.2em!important">In all my code the basic strategy is the same.  <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">await</code> for the next byte string, then use and <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">unfoldrN</code> to produce a new <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">ByteString</code> for yielding.</p>
<p style="margin:0px 0px 1.2em!important">Anyone know of a way to go faster?</p>
<p style="margin:0px 0px 1.2em!important">Cheers,</p>
<p style="margin:0px 0px 1.2em!important">-John</p>
<div title="MDH:SGVsbG8gSGFza2VsbGVycyw8ZGl2Pjxicj48L2Rpdj48ZGl2PkkndmUgYmVlbiB0cnlpbmcgdG8g
c3F1ZWV6ZSBhcyBtdWNoIHBlcmZvcm1hbmNlIG91dCBvZiBteSBjb2RlIGFzIHBvc3NpYmxlIGFu
ZCBJJ3ZlIGNvbWUgdG8gYSBwb2ludCB3aGVyZSBjYW4ndCBmaWd1cmUgb3V0IHdoYXQgbW9yZSBJ
IGNhbiBkby48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkhlcmUgaXMgc29tZSBleGFtcGxlIGNv
ZGU6PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+YmxhbmtFc2Nh
cGVkQ2hhcnMgOjogTW9uYWRUaHJvdyBtID0mZ3Q7IENvbmR1aXQgQlMuQnl0ZVN0cmluZyBtIEJT
LkJ5dGVTdHJpbmc8L2Rpdj48ZGl2PmJsYW5rRXNjYXBlZENoYXJzID0gYmxhbmtFc2NhcGVkQ2hh
cnMnICIiPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5ibGFua0VzY2FwZWRDaGFycycgOjogTW9u
YWRUaHJvdyBtID0mZ3Q7IEJTLkJ5dGVTdHJpbmcgLSZndDsgQ29uZHVpdCBCUy5CeXRlU3RyaW5n
IG0gQlMuQnl0ZVN0cmluZzwvZGl2PjxkaXY+YmxhbmtFc2NhcGVkQ2hhcnMnIHJzID0gZG88L2Rp
dj48ZGl2PiZuYnNwOyBtYnMgJmx0Oy0gYXdhaXQ8L2Rpdj48ZGl2PiZuYnNwOyBjYXNlIG1icyBv
ZjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBKdXN0IGJzIC0mZ3Q7IGRvPC9kaXY+PGRpdj4mbmJz
cDsgJm5ic3A7ICZuYnNwOyBsZXQgY3MgPSBpZiBCUy5sZW5ndGggcnMgLz0gMCB0aGVuIEJTLmNv
bmNhdCBbcnMsIGJzXSBlbHNlIGJzPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBsZXQg
ZHMgPSBmc3QgKHVuZm9sZHJOIChCUy5sZW5ndGggY3MpIHVuZXNjYXBlQnl0ZVN0cmluZyAoRmFs
c2UsIGNzKSk8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7IHlpZWxkIGRzPC9kaXY+PGRp
dj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBibGFua0VzY2FwZWRDaGFycycgKEJTLmRyb3AgKEJTLmxl
bmd0aCBkcykgY3MpPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IE5vdGhpbmcgLSZndDsgd2hlbiAo
QlMubGVuZ3RoIHJzICZndDsgMCkgKHlpZWxkIHJzKTwvZGl2PjxkaXY+Jm5ic3A7IHdoZXJlPC9k
aXY+PGRpdj4mbmJzcDsgJm5ic3A7IHVuZXNjYXBlQnl0ZVN0cmluZyA6OiAoQm9vbCwgQnl0ZVN0
cmluZykgLSZndDsgTWF5YmUgKFdvcmQ4LCAoQm9vbCwgQnl0ZVN0cmluZykpPC9kaXY+PGRpdj4m
bmJzcDsgJm5ic3A7IHVuZXNjYXBlQnl0ZVN0cmluZyAod2FzRXNjYXBlZCwgYnMpID0gY2FzZSBC
Uy51bmNvbnMgYnMgb2Y8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7IEp1c3QgKF8sIGNz
KSB8IHdhc0VzY2FwZWQgJm5ic3A7ICZuYnNwOyAmbmJzcDsgLSZndDsgSnVzdCAod1VuZGVyc2Nv
cmUsIChGYWxzZSwgY3MpKTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgSnVzdCAoYywg
Y3MpIHwgYyAvPSB3QmFja3NsYXNoICZuYnNwOy0mZ3Q7IEp1c3QgKGMsIChGYWxzZSwgY3MpKTwv
ZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgSnVzdCAoYywgY3MpICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy0m
Z3Q7IEp1c3QgKGMsIChUcnVlLCBjcykpPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBO
b3RoaW5nICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IC0mZ3Q7IE5vdGhpbmc8L2Rpdj48L2Rp
dj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhlIGFib3ZlIGZ1bmN0aW9uIGBi
bGFua0VzY2FwZWRDaGFyc2Agd2lsbCBnbyBmaW5kIGFsbCBgXGAgY2hhcmFjdGVycyBhbmQgY29u
dmVydCB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciB0byBhIGBfYC4gJm5ic3A7Rm9yIGEgYDEgTUJg
IGluIG1lbW9yeSBKU09OIGBCeXRlU3RyaW5nYCwgaXQgYmVuY2hlcyBhdCBhYm91dCBgNi42IG1z
YDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PC9kaXY+PGRpdj5JbiBhbGwgbXkgY29kZSB0aGUg
YmFzaWMgc3RyYXRlZ3kgaXMgdGhlIHNhbWUuICZuYnNwO2Bhd2FpdGAgZm9yIHRoZSBuZXh0IGJ5
dGUgc3RyaW5nLCB0aGVuIHVzZSBhbmQgYHVuZm9sZHJOYCB0byBwcm9kdWNlIGEgbmV3IGBCeXRl
U3RyaW5nYCBmb3IgeWllbGRpbmcuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BbnlvbmUga25v
dyBvZiBhIHdheSB0byBnbyBmYXN0ZXI/PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5DaGVlcnMs
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4tSm9objwvZGl2PjxkaXY+PGJyPjwvZGl2Pg==" style="min-height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</div></div></div></blockquote></div></div></blockquote><p></p></div><p style="margin:0px 0px 1.2em!important"></p>
<div title="MDH:SXQgdHVybnMgb3V0IHRoYXQgdXNpbmcgYSBzaW1wbGUgZW51bSB0eXBlIHRvIGltcGxlbWVudCBh
IHN0YXRlIG1hY2hpbmUgaW5zdGVhZCBvZiBhIGZ1bmN0aW9uIGF2b2lkcyB0aGUgcGVyZm9ybWFu
Y2UgcGVuYWx0eSBhbmQgYWxsb3dzIG1lIHRvIGNvbGxhcHNlIGEgZm91ciBzdGFnZSBjb25kdWl0
IHBpcGVsaW5lIGludG8gb25lIHdpdGggYDQgeGAgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuPGRp
dj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PmJsYW5rU3RyaW5ncyA6OiBNb25hZFRocm93
IG0gPSZndDsgQ29uZHVpdCBCUy5CeXRlU3RyaW5nIG0gQlMuQnl0ZVN0cmluZzwvZGl2PjxkaXY+
PGRpdj5ibGFua1N0cmluZ3MgPSBibGFua1N0cmluZ3MnIEluSnNvbjwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+YmxhbmtTdHJpbmdzJyA6OiBNb25hZFRocm93IG0gPSZndDsgRmFzdFN0YXRlIC0m
Z3Q7IENvbmR1aXQgQlMuQnl0ZVN0cmluZyBtIEJTLkJ5dGVTdHJpbmc8L2Rpdj48ZGl2PmJsYW5r
U3RyaW5ncycgbGFzdFN0YXRlID0gZG88L2Rpdj48ZGl2PiZuYnNwOyBtYnMgJmx0Oy0gYXdhaXQ8
L2Rpdj48ZGl2PiZuYnNwOyBjYXNlIG1icyBvZjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBKdXN0
IGJzIC0mZ3Q7IGRvPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBsZXQgKCFjcywgSnVz
dCAoIW5leHRTdGF0ZSwgXykpID0gdW5mb2xkck4gKEJTLmxlbmd0aCBicykgYmxhbmtCeXRlU3Ry
aW5nIChsYXN0U3RhdGUsIGJzKTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgeWllbGQg
Y3M8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7IGJsYW5rU3RyaW5ncycgbmV4dFN0YXRl
PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IE5vdGhpbmcgLSZndDsgcmV0dXJuICgpPC9kaXY+PGRp
dj4mbmJzcDsgd2hlcmU8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgYmxhbmtCeXRlU3RyaW5nIDo6
IChGYXN0U3RhdGUsIEJ5dGVTdHJpbmcpIC0mZ3Q7IE1heWJlIChXb3JkOCwgKEZhc3RTdGF0ZSwg
Qnl0ZVN0cmluZykpPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IGJsYW5rQnl0ZVN0cmluZyAoSW5K
c29uLCBicykgPSBjYXNlIEJTLnVuY29ucyBicyBvZjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgSnVzdCAoIWMsICFjcykgfCBpc0xlYWRpbmdEaWdpdCBjICZuYnNwOyAtJmd0OyBKdXN0
ICh3MSAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgLCAoSW5OdW1iZXIgLCBjcykpPC9kaXY+
PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBKdXN0ICghYywgIWNzKSB8IGMgPT0gd0RvdWJsZVF1
b3RlICZuYnNwOy0mZ3Q7IEp1c3QgKHdPcGVuUGFyZW4gLCAoSW5TdHJpbmcgLCBjcykpPC9kaXY+
PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBKdXN0ICghYywgIWNzKSB8IGlzQWxwaGFiZXRpYyBj
ICZuYnNwOyAmbmJzcDsgLSZndDsgSnVzdCAoYyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7LCAoSW5JZGVudCAmbmJzcDssIGNzKSk8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5i
c3A7IEp1c3QgKCFjLCAhY3MpICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDstJmd0OyBKdXN0IChjICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDssIChJbkpzb24gJm5ic3A7ICwgY3MpKTwvZGl2
PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgTm90aGluZyAtJmd0OyBOb3RoaW5nPC9kaXY+PGRp
dj4mbmJzcDsgJm5ic3A7IGJsYW5rQnl0ZVN0cmluZyAoSW5TdHJpbmcsIGJzKSA9IGNhc2UgQlMu
dW5jb25zIGJzIG9mPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBKdXN0ICghYywgIWNz
KSB8IGMgPT0gd0JhY2tzbGFzaCAmbmJzcDsgJm5ic3A7LSZndDsgSnVzdCAod1NwYWNlICZuYnNw
OyAmbmJzcDsgLCAoRXNjYXBlZCAmbmJzcDssIGNzKSk8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsg
Jm5ic3A7IEp1c3QgKCFjLCAhY3MpIHwgYyA9PSB3RG91YmxlUXVvdGUgJm5ic3A7LSZndDsgSnVz
dCAod0Nsb3NlUGFyZW4sIChJbkpzb24gJm5ic3A7ICwgY3MpKTwvZGl2PjxkaXY+Jm5ic3A7ICZu
YnNwOyAmbmJzcDsgSnVzdCAoXyAsICFjcykgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy0mZ3Q7IEp1c3Qg
KHdTcGFjZSAmbmJzcDsgJm5ic3A7ICwgKEluU3RyaW5nICwgY3MpKTwvZGl2PjxkaXY+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgTm90aGluZyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7IC0mZ3Q7IE5vdGhpbmc8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgYmxhbmtCeXRlU3Ry
aW5nIChFc2NhcGVkLCBicykgPSBjYXNlIEJTLnVuY29ucyBicyBvZjwvZGl2PjxkaXY+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgSnVzdCAoXywgIWNzKSAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IC0mZ3Q7IEp1
c3QgKHdTcGFjZSwgKEluU3RyaW5nLCBjcykpPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNw
OyBOb3RoaW5nICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgLSZndDsg
Tm90aGluZzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBibGFua0J5dGVTdHJpbmcgKEluTnVtYmVy
LCBicykgPSBjYXNlIEJTLnVuY29ucyBicyBvZjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgSnVzdCAoIWMsICFjcykgfCBpc1RyYWlsaW5nRGlnaXQgYyAmbmJzcDstJmd0OyBKdXN0ICh3
MCAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgLCAoSW5OdW1iZXIgLCBjcykpPC9kaXY+PGRp
dj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBKdXN0ICghYywgIWNzKSB8IGMgPT0gd0RvdWJsZVF1b3Rl
ICZuYnNwOy0mZ3Q7IEp1c3QgKHdPcGVuUGFyZW4gLCAoSW5TdHJpbmcgLCBjcykpPC9kaXY+PGRp
dj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBKdXN0ICghYywgIWNzKSB8IGlzQWxwaGFiZXRpYyBjICZu
YnNwOyAmbmJzcDsgLSZndDsgSnVzdCAoYyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7LCAoSW5JZGVudCAmbmJzcDssIGNzKSk8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7
IEp1c3QgKCFjLCAhY3MpICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDstJmd0OyBKdXN0IChjICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDssIChJbkpzb24gJm5ic3A7ICwgY3MpKTwvZGl2Pjxk
aXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgTm90aGluZyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7IC0mZ3Q7IE5vdGhpbmc8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgYmxh
bmtCeXRlU3RyaW5nIChJbklkZW50LCBicykgPSBjYXNlIEJTLnVuY29ucyBicyBvZjwvZGl2Pjxk
aXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgSnVzdCAoIWMsICFjcykgfCBpc0FscGhhYmV0aWMgYyAm
bmJzcDsgJm5ic3A7IC0mZ3Q7IEp1c3QgKHdVbmRlcnNjb3JlLCAoSW5JZGVudCAmbmJzcDssIGNz
KSk8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7IEp1c3QgKCFjLCAhY3MpIHwgaXNMZWFk
aW5nRGlnaXQgYyAmbmJzcDsgLSZndDsgSnVzdCAodzEgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICwgKEluTnVtYmVyICwgY3MpKTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgSnVz
dCAoIWMsICFjcykgfCBjID09IHdEb3VibGVRdW90ZSAmbmJzcDstJmd0OyBKdXN0ICh3T3BlblBh
cmVuICwgKEluU3RyaW5nICwgY3MpKTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgSnVz
dCAoIWMsICFjcykgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy0mZ3Q7IEp1c3QgKGMgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOywgKEluSnNvbiAmbmJzcDsgLCBjcykpPC9kaXY+PGRpdj4m
bmJzcDsgJm5ic3A7ICZuYnNwOyBOb3RoaW5nICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgLSZndDsgTm90aGluZzwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj5JJ20gcXVpdGUgcGxlYXNlIHdpdGggdGhpcywgYnV0IGFueSBmdXJ0aGVyIHN1Z2dl
c3Rpb25zIGFyZSB3ZWxjb21lLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGRpdj5DaGVlcnMs
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4tSm9objwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXYg
Y2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIj5PbiBTdW4sIDMgQXByIDIwMTYgYXQg
MjM6NTUgSm9obiBLeSAmbHQ7bmV3aG9nZ3lAZ21haWwuY29tJmd0OyB3cm90ZTo8YnI+PC9kaXY+
PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7
Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleDsiPjxkaXYgZGlyPSJs
dHIiPjxkaXY+PHAgc3R5bGU9Im1hcmdpbjowcHggMHB4IDEuMmVtIWltcG9ydGFudCI+SGkgSGFz
a2VsbGVycyw8L3A+CjxwIHN0eWxlPSJtYXJnaW46MHB4IDBweCAxLjJlbSFpbXBvcnRhbnQiPkkg
anVzdCByZXdyb3RlIHRoZSBjb2RlIHRvIGEgc3RhdGUtbWFjaGluZSBpbiB0aGUgaG9wZSB0aGF0
IEkgY2FuIGV2ZW50dWFsbHkgY29sbGFwc2Ugc2V2ZXJhbCBzdGFnZXMgaW4gYSBwaXBlbGluZSBp
bnRvIG9uZSwgYnV0IHRoaXMgc2ltcGxlIHN0YXRlLW1hY2hpbmUgdmVyc2lvbiB0dXJucyBvdXQg
dG8gYmUgYWJvdXQgMyB0aW1lcyBzbG93ZXIgZXZlbiB0aG91Z2ggaXQgZG9lcyB0aGUgc2FtZSB0
aGluZzo8L3A+CjxwcmUgc3R5bGU9ImZvbnQtc2l6ZTowLjg1ZW07Zm9udC1mYW1pbHk6Q29uc29s
YXMsSW5jb25zb2xhdGEsQ291cmllcixtb25vc3BhY2U7Zm9udC1zaXplOjFlbTtsaW5lLWhlaWdo
dDoxLjJlbTttYXJnaW46MS4yZW0gMHB4Ij48Y29kZSBzdHlsZT0iZm9udC1zaXplOjAuODVlbTtm
b250LWZhbWlseTpDb25zb2xhcyxJbmNvbnNvbGF0YSxDb3VyaWVyLG1vbm9zcGFjZTttYXJnaW46
MHB4IDAuMTVlbTtwYWRkaW5nOjBweCAwLjNlbTt3aGl0ZS1zcGFjZTpwcmUtd3JhcDtib3JkZXI6
MXB4IHNvbGlkIHJnYigyMzQsMjM0LDIzNCk7Ym9yZGVyLXJhZGl1czozcHg7ZGlzcGxheTppbmxp
bmU7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjQ4LDI0OCwyNDgpO3doaXRlLXNwYWNlOnByZS13cmFw
O292ZXJmbG93OmF1dG87Ym9yZGVyLXJhZGl1czozcHg7Ym9yZGVyOjFweCBzb2xpZCByZ2IoMjA0
LDIwNCwyMDQpO3BhZGRpbmc6MC41ZW0gMC43ZW07ZGlzcGxheTpibG9jayFpbXBvcnRhbnQiPm5l
d3R5cGUgQmxhbmsgPSBCbGFuawogIHsgYmxhbmsgOjogQlMuQnl0ZVN0cmluZyAtJmd0OyBNYXli
ZSAoV29yZDgsIChCUy5CeXRlU3RyaW5nLCBCbGFuaykpCiAgfQoKZXNjYXBlQ2hhciA6OiBCUy5C
eXRlU3RyaW5nIC0mZ3Q7IE1heWJlIChXb3JkOCwgKEJTLkJ5dGVTdHJpbmcsIEJsYW5rKSkKZXNj
YXBlQ2hhciBicyA9IGNhc2UgQlMudW5jb25zIGJzIG9mCiAgSnVzdCAoYywgY3MpICAtJmd0OyBK
dXN0IChjLCAoY3MsIEJsYW5rIChpZiBjIC89IHdCYWNrc2xhc2ggdGhlbiBlc2NhcGVDaGFyIGVs
c2UgZXNjYXBlZENoYXIpKSkKICBOb3RoaW5nICAgICAgIC0mZ3Q7IE5vdGhpbmcKCmVzY2FwZWRD
aGFyIDo6IEJTLkJ5dGVTdHJpbmcgLSZndDsgTWF5YmUgKFdvcmQ4LCAoQlMuQnl0ZVN0cmluZywg
QmxhbmspKQplc2NhcGVkQ2hhciBicyA9IGNhc2UgQlMudW5jb25zIGJzIG9mCiAgSnVzdCAoXywg
Y3MpIC0mZ3Q7IEp1c3QgKHdVbmRlcnNjb3JlLCAoY3MsIEJsYW5rIGVzY2FwZUNoYXIpKQogIE5v
dGhpbmcgICAgICAtJmd0OyBOb3RoaW5nCgpmYXN0QmxhbmsgOjogTW9uYWRUaHJvdyBtID0mZ3Q7
IENvbmR1aXQgQlMuQnl0ZVN0cmluZyBtIEJTLkJ5dGVTdHJpbmcKZmFzdEJsYW5rID0gZmFzdEJs
YW5rJyBlc2NhcGVDaGFyCgpmYXN0QmxhbmsnIDo6IE1vbmFkVGhyb3cgbSA9Jmd0OyAoQlMuQnl0
ZVN0cmluZyAtJmd0OyBNYXliZSAoV29yZDgsIChCUy5CeXRlU3RyaW5nLCBCbGFuaykpKSAtJmd0
OyBDb25kdWl0IEJTLkJ5dGVTdHJpbmcgbSBCUy5CeXRlU3RyaW5nCmZhc3RCbGFuaycgYmxhbmsg
PSBkbwogIG1icyAmbHQ7LSBhd2FpdAogIGNhc2UgbWJzIG9mCiAgICBKdXN0IGJzIC0mZ3Q7IGRv
CiAgICAgIGxldCAoY3MsIEp1c3QgKF8sIEJsYW5rIG5ld0JsYW5rKSkgPSB1bmZvbGRyTiAoQlMu
bGVuZ3RoIGJzKSAoXChicywgQmxhbmsgZikgLSZndDsgZiBicykgKGJzLCBCbGFuayBibGFuaykK
ICAgICAgeWllbGQgY3MKICAgICAgZmFzdEJsYW5rJyBuZXdCbGFuawogICAgTm90aGluZyAtJmd0
OyByZXR1cm4gKCkKPC9jb2RlPjwvcHJlPjxwIHN0eWxlPSJtYXJnaW46MHB4IDBweCAxLjJlbSFp
bXBvcnRhbnQiPkkgd29ycnkgdGhhdCBpZiBJIGdvIHRoaXMgYXBwcm9hY2gsIGp1c3QgdGhlIGNv
c3Qgb2YgdGhlIHN0YXRlLW1hY2hpbmUgbWlnaHQgbWVhbiBJIG9ubHkgYnJlYWstZXZlbi48L3A+
CjxwIHN0eWxlPSJtYXJnaW46MHB4IDBweCAxLjJlbSFpbXBvcnRhbnQiPklzIHRoZXJlIGFueSBy
ZWFzb24gd2h5IHRoaXMgdmVyc2lvbiBzaG91bGQgYmUgc2xvd2VyPzwvcD4KPHAgc3R5bGU9Im1h
cmdpbjowcHggMHB4IDEuMmVtIWltcG9ydGFudCI+Q2hlZXJzLDwvcD4KPHAgc3R5bGU9Im1hcmdp
bjowcHggMHB4IDEuMmVtIWltcG9ydGFudCI+LUpvaG48L3A+CjxkaXYgdGl0bGU9Ik1ESDpTR2tn
U0dGemEyVnNiR1Z5Y3l3OFpHbDJQanhpY2o0OEwyUnBkajQ4WkdsMlBra2dhblZ6ZENCeVpYZHli
M1JsSUhSb1pTQmpiMlJsCklIUnZJR0VnYzNSaGRHVXRiV0ZqYUdsdVpTQnBiaUIwYUdVZ2FHOXda
U0IwYUdGMElFa2dZMkZ1SUdWMlpXNTBkV0ZzYkhrZ1kyOXMKYkdGd2MyVWdjMlYyWlhKaGJDQnpk
R0ZuWlhNZ2FXNGdZU0J3YVhCbGJHbHVaU0JwYm5SdklHOXVaU3dnWW5WMElIUm9hWE1nYzJsdApj
R3hsSUhOMFlYUmxMVzFoWTJocGJtVWdkbVZ5YzJsdmJpQjBkWEp1Y3lCdmRYUWdkRzhnWW1VZ1lX
SnZkWFFnTXlCMGFXMWxjeUJ6CmJHOTNaWEk2UEM5a2FYWStQR1JwZGo0OFluSStQQzlrYVhZK1BH
UnBkajVnWUdBOFluSStQR1JwZGo1dVpYZDBlWEJsSUVKc1lXNXIKSUQwZ1FteGhibXM4TDJScGRq
NDhaR2wyUGladVluTndPeUI3SUdKc1lXNXJJRG82SUVKVExrSjVkR1ZUZEhKcGJtY2dMU1puZERz
ZwpUV0Y1WW1VZ0tGZHZjbVE0TENBb1FsTXVRbmwwWlZOMGNtbHVaeXdnUW14aGJtc3BLVHd2Wkds
MlBqeGthWFkrSm01aWMzQTdJSDA4CkwyUnBkajQ4WkdsMlBqeGljajQ4TDJScGRqNDhaR2wyUG1W
elkyRndaVU5vWVhJZ09qb2dRbE11UW5sMFpWTjBjbWx1WnlBdEptZDAKT3lCTllYbGlaU0FvVjI5
eVpEZ3NJQ2hDVXk1Q2VYUmxVM1J5YVc1bkxDQkNiR0Z1YXlrcFBDOWthWFkrUEdScGRqNWxjMk5o
Y0dWRAphR0Z5SUdKeklEMGdZMkZ6WlNCQ1V5NTFibU52Ym5NZ1luTWdiMlk4TDJScGRqNDhaR2wy
UGladVluTndPeUJLZFhOMElDaGpMQ0JqCmN5a2dKbTVpYzNBN0xTWm5kRHNnU25WemRDQW9ZeXdn
S0dOekxDQkNiR0Z1YXlBb2FXWWdZeUF2UFNCM1FtRmphM05zWVhOb0lIUm8KWlc0Z1pYTmpZWEJs
UTJoaGNpQmxiSE5sSUdWelkyRndaV1JEYUdGeUtTa3BQQzlrYVhZK1BHUnBkajRtYm1KemNEc2dU
bTkwYUdsdQpaeUFtYm1KemNEc2dKbTVpYzNBN0lDWnVZbk53T3lBdEptZDBPeUJPYjNSb2FXNW5Q
QzlrYVhZK1BHUnBkajQ4WW5JK1BDOWthWFkrClBHUnBkajVsYzJOaGNHVmtRMmhoY2lBNk9pQkNV
eTVDZVhSbFUzUnlhVzVuSUMwbVozUTdJRTFoZVdKbElDaFhiM0prT0N3Z0tFSlQKTGtKNWRHVlRk
SEpwYm1jc0lFSnNZVzVyS1NrOEwyUnBkajQ4WkdsMlBtVnpZMkZ3WldSRGFHRnlJR0p6SUQwZ1ky
RnpaU0JDVXk1MQpibU52Ym5NZ1luTWdiMlk4TDJScGRqNDhaR2wyUGladVluTndPeUJLZFhOMElD
aGZMQ0JqY3lrZ0xTWm5kRHNnU25WemRDQW9kMVZ1ClpHVnljMk52Y21Vc0lDaGpjeXdnUW14aGJt
c2daWE5qWVhCbFEyaGhjaWtwUEM5a2FYWStQR1JwZGo0bWJtSnpjRHNnVG05MGFHbHUKWnlBbWJt
SnpjRHNnSm01aWMzQTdJQ1p1WW5Od095MG1aM1E3SUU1dmRHaHBibWM4TDJScGRqNDhaR2wyUGp4
aWNqNDhMMlJwZGo0OApaR2wyUG1aaGMzUkNiR0Z1YXlBNk9pQk5iMjVoWkZSb2NtOTNJRzBnUFNa
bmREc2dRMjl1WkhWcGRDQkNVeTVDZVhSbFUzUnlhVzVuCklHMGdRbE11UW5sMFpWTjBjbWx1Wnp3
dlpHbDJQanhrYVhZK1ptRnpkRUpzWVc1cklEMGdabUZ6ZEVKc1lXNXJKeUJsYzJOaGNHVkQKYUdG
eVBDOWthWFkrUEdScGRqNDhZbkkrUEM5a2FYWStQR1JwZGo1bVlYTjBRbXhoYm1zbklEbzZJRTF2
Ym1Ga1ZHaHliM2NnYlNBOQpKbWQwT3lBb1FsTXVRbmwwWlZOMGNtbHVaeUF0Sm1kME95Qk5ZWGxp
WlNBb1YyOXlaRGdzSUNoQ1V5NUNlWFJsVTNSeWFXNW5MQ0JDCmJHRnVheWtwS1NBdEptZDBPeUJE
YjI1a2RXbDBJRUpUTGtKNWRHVlRkSEpwYm1jZ2JTQkNVeTVDZVhSbFUzUnlhVzVuUEM5a2FYWSsK
UEdScGRqNW1ZWE4wUW14aGJtc25JR0pzWVc1cklEMGdaRzg4TDJScGRqNDhaR2wyUGladVluTndP
eUJ0WW5NZ0pteDBPeTBnWVhkaAphWFE4TDJScGRqNDhaR2wyUGladVluTndPeUJqWVhObElHMWlj
eUJ2Wmp3dlpHbDJQanhrYVhZK0ptNWljM0E3SUNadVluTndPeUJLCmRYTjBJR0p6SUMwbVozUTdJ
R1J2UEM5a2FYWStQR1JwZGo0bWJtSnpjRHNnSm01aWMzQTdJQ1p1WW5Od095QnNaWFFnS0dOekxD
QksKZFhOMElDaGZMQ0JDYkdGdWF5QnVaWGRDYkdGdWF5a3BJRDBnZFc1bWIyeGtjazRnS0VKVExt
eGxibWQwYUNCaWN5a2dLRndvWW5NcwpJRUpzWVc1cklHWXBJQzBtWjNRN0lHWWdZbk1wSUNoaWN5
d2dRbXhoYm1zZ1lteGhibXNwUEM5a2FYWStQR1JwZGo0bWJtSnpjRHNnCkptNWljM0E3SUNadVlu
TndPeUI1YVdWc1pDQmpjend2WkdsMlBqeGthWFkrSm01aWMzQTdJQ1p1WW5Od095QW1ibUp6Y0Rz
Z1ptRnoKZEVKc1lXNXJKeUJ1WlhkQ2JHRnVhend2WkdsMlBqeGthWFkrSm01aWMzQTdJQ1p1WW5O
d095Qk9iM1JvYVc1bklDMG1aM1E3SUhKbApkSFZ5YmlBb0tUd3ZaR2wyUGp3dlpHbDJQanhrYVhZ
K1lHQmdQQzlrYVhZK1BHUnBkajQ4WW5JK1BDOWthWFkrUEdScGRqNUpJSGR2CmNuSjVJSFJvWVhR
Z2FXWWdTU0JuYnlCMGFHbHpJR0Z3Y0hKdllXTm9MQ0JxZFhOMElIUm9aU0JqYjNOMElHOW1JSFJv
WlNCemRHRjAKWlMxdFlXTm9hVzVsSUcxcFoyaDBJRzFsWVc0Z1NTQnZibXg1SUdKeVpXRnJMV1Yy
Wlc0dVBDOWthWFkrUEdScGRqNDhZbkkrUEM5awphWFkrUEdScGRqNUpjeUIwYUdWeVpTQmhibmtn
Y21WaGMyOXVJSGRvZVNCMGFHbHpJSFpsY25OcGIyNGdjMmh2ZFd4a0lHSmxJSE5zCmIzZGxjajg4
TDJScGRqNDhaR2wyUGp4aWNqNDhMMlJwZGo0OFpHbDJQa05vWldWeWN5dzhMMlJwZGo0OFpHbDJQ
anhpY2o0OEwyUnAKZGo0OFpHbDJQaTFLYjJodVBDOWthWFkrUEdScGRqNDhZbkkrUEM5a2FYWSsi
IHN0eWxlPSJtaW4taGVpZ2h0OjA7d2lkdGg6MDttYXgtaGVpZ2h0OjA7bWF4LXdpZHRoOjA7b3Zl
cmZsb3c6aGlkZGVuO2ZvbnQtc2l6ZTowZW07cGFkZGluZzowO21hcmdpbjowIj7igIs8L2Rpdj48
L2Rpdj48L2Rpdj48ZGl2IGRpcj0ibHRyIj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxk
aXYgZGlyPSJsdHIiPk9uIFN1biwgMyBBcHIgMjAxNiBhdCAyMzoxMSBKb2huIEt5ICZsdDs8YSBo
cmVmPSJtYWlsdG86bmV3aG9nZ3lAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+bmV3aG9nZ3lA
Z21haWwuY29tPC9hPiZndDsgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFp
bF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowIDAgMCAuOGV4O2JvcmRlci1sZWZ0OjFweCAjY2NjIHNv
bGlkO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgZGlyPSJsdHIiPjxkaXY+PHAgc3R5bGU9Im1hcmdp
bjowcHggMHB4IDEuMmVtIWltcG9ydGFudCI+SGVsbG8gSGFza2VsbGVycyw8L3A+CjxwIHN0eWxl
PSJtYXJnaW46MHB4IDBweCAxLjJlbSFpbXBvcnRhbnQiPknigJl2ZSBiZWVuIHRyeWluZyB0byBz
cXVlZXplIGFzIG11Y2ggcGVyZm9ybWFuY2Ugb3V0IG9mIG15IGNvZGUgYXMgcG9zc2libGUgYW5k
IEnigJl2ZSBjb21lIHRvIGEgcG9pbnQgd2hlcmUgY2Fu4oCZdCBmaWd1cmUgb3V0IHdoYXQgbW9y
ZSBJIGNhbiBkby48L3A+CjxwIHN0eWxlPSJtYXJnaW46MHB4IDBweCAxLjJlbSFpbXBvcnRhbnQi
PkhlcmUgaXMgc29tZSBleGFtcGxlIGNvZGU6PC9wPgo8cHJlIHN0eWxlPSJmb250LXNpemU6MC44
NWVtO2ZvbnQtZmFtaWx5OkNvbnNvbGFzLEluY29uc29sYXRhLENvdXJpZXIsbW9ub3NwYWNlO2Zv
bnQtc2l6ZToxZW07bGluZS1oZWlnaHQ6MS4yZW07bWFyZ2luOjEuMmVtIDBweCI+PGNvZGUgc3R5
bGU9ImZvbnQtc2l6ZTowLjg1ZW07Zm9udC1mYW1pbHk6Q29uc29sYXMsSW5jb25zb2xhdGEsQ291
cmllcixtb25vc3BhY2U7bWFyZ2luOjBweCAwLjE1ZW07cGFkZGluZzowcHggMC4zZW07d2hpdGUt
c3BhY2U6cHJlLXdyYXA7Ym9yZGVyOjFweCBzb2xpZCByZ2IoMjM0LDIzNCwyMzQpO2JvcmRlci1y
YWRpdXM6M3B4O2Rpc3BsYXk6aW5saW5lO2JhY2tncm91bmQtY29sb3I6cmdiKDI0OCwyNDgsMjQ4
KTt3aGl0ZS1zcGFjZTpwcmUtd3JhcDtvdmVyZmxvdzphdXRvO2JvcmRlci1yYWRpdXM6M3B4O2Jv
cmRlcjoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nOjAuNWVtIDAuN2VtO2Rpc3Bs
YXk6YmxvY2shaW1wb3J0YW50Ij5ibGFua0VzY2FwZWRDaGFycyA6OiBNb25hZFRocm93IG0gPSZn
dDsgQ29uZHVpdCBCUy5CeXRlU3RyaW5nIG0gQlMuQnl0ZVN0cmluZwpibGFua0VzY2FwZWRDaGFy
cyA9IGJsYW5rRXNjYXBlZENoYXJzJyAiIgoKYmxhbmtFc2NhcGVkQ2hhcnMnIDo6IE1vbmFkVGhy
b3cgbSA9Jmd0OyBCUy5CeXRlU3RyaW5nIC0mZ3Q7IENvbmR1aXQgQlMuQnl0ZVN0cmluZyBtIEJT
LkJ5dGVTdHJpbmcKYmxhbmtFc2NhcGVkQ2hhcnMnIHJzID0gZG8KICBtYnMgJmx0Oy0gYXdhaXQK
ICBjYXNlIG1icyBvZgogICAgSnVzdCBicyAtJmd0OyBkbwogICAgICBsZXQgY3MgPSBpZiBCUy5s
ZW5ndGggcnMgLz0gMCB0aGVuIEJTLmNvbmNhdCBbcnMsIGJzXSBlbHNlIGJzCiAgICAgIGxldCBk
cyA9IGZzdCAodW5mb2xkck4gKEJTLmxlbmd0aCBjcykgdW5lc2NhcGVCeXRlU3RyaW5nIChGYWxz
ZSwgY3MpKQogICAgICB5aWVsZCBkcwogICAgICBibGFua0VzY2FwZWRDaGFycycgKEJTLmRyb3Ag
KEJTLmxlbmd0aCBkcykgY3MpCiAgICBOb3RoaW5nIC0mZ3Q7IHdoZW4gKEJTLmxlbmd0aCBycyAm
Z3Q7IDApICh5aWVsZCBycykKICB3aGVyZQogICAgdW5lc2NhcGVCeXRlU3RyaW5nIDo6IChCb29s
LCBCeXRlU3RyaW5nKSAtJmd0OyBNYXliZSAoV29yZDgsIChCb29sLCBCeXRlU3RyaW5nKSkKICAg
IHVuZXNjYXBlQnl0ZVN0cmluZyAod2FzRXNjYXBlZCwgYnMpID0gY2FzZSBCUy51bmNvbnMgYnMg
b2YKICAgICAgSnVzdCAoXywgY3MpIHwgd2FzRXNjYXBlZCAgICAgICAtJmd0OyBKdXN0ICh3VW5k
ZXJzY29yZSwgKEZhbHNlLCBjcykpCiAgICAgIEp1c3QgKGMsIGNzKSB8IGMgLz0gd0JhY2tzbGFz
aCAgLSZndDsgSnVzdCAoYywgKEZhbHNlLCBjcykpCiAgICAgIEp1c3QgKGMsIGNzKSAgICAgICAg
ICAgICAgICAgICAgLSZndDsgSnVzdCAoYywgKFRydWUsIGNzKSkKICAgICAgTm90aGluZyAgICAg
ICAgICAgICAgICAgICAgICAgICAtJmd0OyBOb3RoaW5nCjwvY29kZT48L3ByZT48cCBzdHlsZT0i
bWFyZ2luOjBweCAwcHggMS4yZW0haW1wb3J0YW50Ij5UaGUgYWJvdmUgZnVuY3Rpb24gPGNvZGUg
c3R5bGU9ImZvbnQtc2l6ZTowLjg1ZW07Zm9udC1mYW1pbHk6Q29uc29sYXMsSW5jb25zb2xhdGEs
Q291cmllcixtb25vc3BhY2U7bWFyZ2luOjBweCAwLjE1ZW07cGFkZGluZzowcHggMC4zZW07d2hp
dGUtc3BhY2U6cHJlLXdyYXA7Ym9yZGVyOjFweCBzb2xpZCByZ2IoMjM0LDIzNCwyMzQpO2JvcmRl
ci1yYWRpdXM6M3B4O2Rpc3BsYXk6aW5saW5lO2JhY2tncm91bmQtY29sb3I6cmdiKDI0OCwyNDgs
MjQ4KSI+YmxhbmtFc2NhcGVkQ2hhcnM8L2NvZGU+IHdpbGwgZ28gZmluZCBhbGwgPGNvZGUgc3R5
bGU9ImZvbnQtc2l6ZTowLjg1ZW07Zm9udC1mYW1pbHk6Q29uc29sYXMsSW5jb25zb2xhdGEsQ291
cmllcixtb25vc3BhY2U7bWFyZ2luOjBweCAwLjE1ZW07cGFkZGluZzowcHggMC4zZW07d2hpdGUt
c3BhY2U6cHJlLXdyYXA7Ym9yZGVyOjFweCBzb2xpZCByZ2IoMjM0LDIzNCwyMzQpO2JvcmRlci1y
YWRpdXM6M3B4O2Rpc3BsYXk6aW5saW5lO2JhY2tncm91bmQtY29sb3I6cmdiKDI0OCwyNDgsMjQ4
KSI+XDwvY29kZT4gY2hhcmFjdGVycyBhbmQgY29udmVydCB0aGUgZm9sbG93aW5nIGNoYXJhY3Rl
ciB0byBhIDxjb2RlIHN0eWxlPSJmb250LXNpemU6MC44NWVtO2ZvbnQtZmFtaWx5OkNvbnNvbGFz
LEluY29uc29sYXRhLENvdXJpZXIsbW9ub3NwYWNlO21hcmdpbjowcHggMC4xNWVtO3BhZGRpbmc6
MHB4IDAuM2VtO3doaXRlLXNwYWNlOnByZS13cmFwO2JvcmRlcjoxcHggc29saWQgcmdiKDIzNCwy
MzQsMjM0KTtib3JkZXItcmFkaXVzOjNweDtkaXNwbGF5OmlubGluZTtiYWNrZ3JvdW5kLWNvbG9y
OnJnYigyNDgsMjQ4LDI0OCkiPl88L2NvZGU+LiAgRm9yIGEgPGNvZGUgc3R5bGU9ImZvbnQtc2l6
ZTowLjg1ZW07Zm9udC1mYW1pbHk6Q29uc29sYXMsSW5jb25zb2xhdGEsQ291cmllcixtb25vc3Bh
Y2U7bWFyZ2luOjBweCAwLjE1ZW07cGFkZGluZzowcHggMC4zZW07d2hpdGUtc3BhY2U6cHJlLXdy
YXA7Ym9yZGVyOjFweCBzb2xpZCByZ2IoMjM0LDIzNCwyMzQpO2JvcmRlci1yYWRpdXM6M3B4O2Rp
c3BsYXk6aW5saW5lO2JhY2tncm91bmQtY29sb3I6cmdiKDI0OCwyNDgsMjQ4KSI+MSBNQjwvY29k
ZT4gaW4gbWVtb3J5IEpTT04gPGNvZGUgc3R5bGU9ImZvbnQtc2l6ZTowLjg1ZW07Zm9udC1mYW1p
bHk6Q29uc29sYXMsSW5jb25zb2xhdGEsQ291cmllcixtb25vc3BhY2U7bWFyZ2luOjBweCAwLjE1
ZW07cGFkZGluZzowcHggMC4zZW07d2hpdGUtc3BhY2U6cHJlLXdyYXA7Ym9yZGVyOjFweCBzb2xp
ZCByZ2IoMjM0LDIzNCwyMzQpO2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6aW5saW5lO2JhY2tn
cm91bmQtY29sb3I6cmdiKDI0OCwyNDgsMjQ4KSI+Qnl0ZVN0cmluZzwvY29kZT4sIGl0IGJlbmNo
ZXMgYXQgYWJvdXQgPGNvZGUgc3R5bGU9ImZvbnQtc2l6ZTowLjg1ZW07Zm9udC1mYW1pbHk6Q29u
c29sYXMsSW5jb25zb2xhdGEsQ291cmllcixtb25vc3BhY2U7bWFyZ2luOjBweCAwLjE1ZW07cGFk
ZGluZzowcHggMC4zZW07d2hpdGUtc3BhY2U6cHJlLXdyYXA7Ym9yZGVyOjFweCBzb2xpZCByZ2Io
MjM0LDIzNCwyMzQpO2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6aW5saW5lO2JhY2tncm91bmQt
Y29sb3I6cmdiKDI0OCwyNDgsMjQ4KSI+Ni42IG1zPC9jb2RlPjwvcD4KPHAgc3R5bGU9Im1hcmdp
bjowcHggMHB4IDEuMmVtIWltcG9ydGFudCI+SW4gYWxsIG15IGNvZGUgdGhlIGJhc2ljIHN0cmF0
ZWd5IGlzIHRoZSBzYW1lLiAgPGNvZGUgc3R5bGU9ImZvbnQtc2l6ZTowLjg1ZW07Zm9udC1mYW1p
bHk6Q29uc29sYXMsSW5jb25zb2xhdGEsQ291cmllcixtb25vc3BhY2U7bWFyZ2luOjBweCAwLjE1
ZW07cGFkZGluZzowcHggMC4zZW07d2hpdGUtc3BhY2U6cHJlLXdyYXA7Ym9yZGVyOjFweCBzb2xp
ZCByZ2IoMjM0LDIzNCwyMzQpO2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6aW5saW5lO2JhY2tn
cm91bmQtY29sb3I6cmdiKDI0OCwyNDgsMjQ4KSI+YXdhaXQ8L2NvZGU+IGZvciB0aGUgbmV4dCBi
eXRlIHN0cmluZywgdGhlbiB1c2UgYW5kIDxjb2RlIHN0eWxlPSJmb250LXNpemU6MC44NWVtO2Zv
bnQtZmFtaWx5OkNvbnNvbGFzLEluY29uc29sYXRhLENvdXJpZXIsbW9ub3NwYWNlO21hcmdpbjow
cHggMC4xNWVtO3BhZGRpbmc6MHB4IDAuM2VtO3doaXRlLXNwYWNlOnByZS13cmFwO2JvcmRlcjox
cHggc29saWQgcmdiKDIzNCwyMzQsMjM0KTtib3JkZXItcmFkaXVzOjNweDtkaXNwbGF5OmlubGlu
ZTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNDgsMjQ4LDI0OCkiPnVuZm9sZHJOPC9jb2RlPiB0byBw
cm9kdWNlIGEgbmV3IDxjb2RlIHN0eWxlPSJmb250LXNpemU6MC44NWVtO2ZvbnQtZmFtaWx5OkNv
bnNvbGFzLEluY29uc29sYXRhLENvdXJpZXIsbW9ub3NwYWNlO21hcmdpbjowcHggMC4xNWVtO3Bh
ZGRpbmc6MHB4IDAuM2VtO3doaXRlLXNwYWNlOnByZS13cmFwO2JvcmRlcjoxcHggc29saWQgcmdi
KDIzNCwyMzQsMjM0KTtib3JkZXItcmFkaXVzOjNweDtkaXNwbGF5OmlubGluZTtiYWNrZ3JvdW5k
LWNvbG9yOnJnYigyNDgsMjQ4LDI0OCkiPkJ5dGVTdHJpbmc8L2NvZGU+IGZvciB5aWVsZGluZy48
L3A+CjxwIHN0eWxlPSJtYXJnaW46MHB4IDBweCAxLjJlbSFpbXBvcnRhbnQiPkFueW9uZSBrbm93
IG9mIGEgd2F5IHRvIGdvIGZhc3Rlcj88L3A+CjxwIHN0eWxlPSJtYXJnaW46MHB4IDBweCAxLjJl
bSFpbXBvcnRhbnQiPkNoZWVycyw8L3A+CjxwIHN0eWxlPSJtYXJnaW46MHB4IDBweCAxLjJlbSFp
bXBvcnRhbnQiPi1Kb2huPC9wPgo8ZGl2IHRpdGxlPSJNREg6U0dWc2JHOGdTR0Z6YTJWc2JHVnlj
eXc4WkdsMlBqeGljajQ4TDJScGRqNDhaR2wyUGtrbmRtVWdZbVZsYmlCMGNubHBibWNnZEc4Zwpj
M0YxWldWNlpTQmhjeUJ0ZFdOb0lIQmxjbVp2Y20xaGJtTmxJRzkxZENCdlppQnRlU0JqYjJSbElH
RnpJSEJ2YzNOcFlteGxJR0Z1ClpDQkpKM1psSUdOdmJXVWdkRzhnWVNCd2IybHVkQ0IzYUdWeVpT
QmpZVzRuZENCbWFXZDFjbVVnYjNWMElIZG9ZWFFnYlc5eVpTQkoKSUdOaGJpQmtieTQ4TDJScGRq
NDhaR2wyUGp4aWNqNDhMMlJwZGo0OFpHbDJQa2hsY21VZ2FYTWdjMjl0WlNCbGVHRnRjR3hsSUdO
dgpaR1U2UEM5a2FYWStQR1JwZGo0OFluSStQQzlrYVhZK1BHUnBkajVnWUdBOEwyUnBkajQ4Wkds
MlBqeGthWFkrWW14aGJtdEZjMk5oCmNHVmtRMmhoY25NZ09qb2dUVzl1WVdSVWFISnZkeUJ0SUQw
bVozUTdJRU52Ym1SMWFYUWdRbE11UW5sMFpWTjBjbWx1WnlCdElFSlQKTGtKNWRHVlRkSEpwYm1j
OEwyUnBkajQ4WkdsMlBtSnNZVzVyUlhOallYQmxaRU5vWVhKeklEMGdZbXhoYm10RmMyTmhjR1Zr
UTJoaApjbk1uSUNJaVBDOWthWFkrUEdScGRqNDhZbkkrUEM5a2FYWStQR1JwZGo1aWJHRnVhMFZ6
WTJGd1pXUkRhR0Z5Y3ljZ09qb2dUVzl1CllXUlVhSEp2ZHlCdElEMG1aM1E3SUVKVExrSjVkR1ZU
ZEhKcGJtY2dMU1puZERzZ1EyOXVaSFZwZENCQ1V5NUNlWFJsVTNSeWFXNW4KSUcwZ1FsTXVRbmww
WlZOMGNtbHVaend2WkdsMlBqeGthWFkrWW14aGJtdEZjMk5oY0dWa1EyaGhjbk1uSUhKeklEMGda
Rzg4TDJScApkajQ4WkdsMlBpWnVZbk53T3lCdFluTWdKbXgwT3kwZ1lYZGhhWFE4TDJScGRqNDha
R2wyUGladVluTndPeUJqWVhObElHMWljeUJ2Clpqd3ZaR2wyUGp4a2FYWStKbTVpYzNBN0lDWnVZ
bk53T3lCS2RYTjBJR0p6SUMwbVozUTdJR1J2UEM5a2FYWStQR1JwZGo0bWJtSnoKY0RzZ0ptNWlj
M0E3SUNadVluTndPeUJzWlhRZ1kzTWdQU0JwWmlCQ1V5NXNaVzVuZEdnZ2NuTWdMejBnTUNCMGFH
VnVJRUpUTG1OdgpibU5oZENCYmNuTXNJR0p6WFNCbGJITmxJR0p6UEM5a2FYWStQR1JwZGo0bWJt
SnpjRHNnSm01aWMzQTdJQ1p1WW5Od095QnNaWFFnClpITWdQU0JtYzNRZ0tIVnVabTlzWkhKT0lD
aENVeTVzWlc1bmRHZ2dZM01wSUhWdVpYTmpZWEJsUW5sMFpWTjBjbWx1WnlBb1JtRnMKYzJVc0lH
TnpLU2s4TDJScGRqNDhaR2wyUGladVluTndPeUFtYm1KemNEc2dKbTVpYzNBN0lIbHBaV3hrSUdS
elBDOWthWFkrUEdScApkajRtYm1KemNEc2dKbTVpYzNBN0lDWnVZbk53T3lCaWJHRnVhMFZ6WTJG
d1pXUkRhR0Z5Y3ljZ0tFSlRMbVJ5YjNBZ0tFSlRMbXhsCmJtZDBhQ0JrY3lrZ1kzTXBQQzlrYVhZ
K1BHUnBkajRtYm1KemNEc2dKbTVpYzNBN0lFNXZkR2hwYm1jZ0xTWm5kRHNnZDJobGJpQW8KUWxN
dWJHVnVaM1JvSUhKeklDWm5kRHNnTUNrZ0tIbHBaV3hrSUhKektUd3ZaR2wyUGp4a2FYWStKbTVp
YzNBN0lIZG9aWEpsUEM5awphWFkrUEdScGRqNG1ibUp6Y0RzZ0ptNWljM0E3SUhWdVpYTmpZWEJs
UW5sMFpWTjBjbWx1WnlBNk9pQW9RbTl2YkN3Z1FubDBaVk4wCmNtbHVaeWtnTFNabmREc2dUV0Y1
WW1VZ0tGZHZjbVE0TENBb1FtOXZiQ3dnUW5sMFpWTjBjbWx1WnlrcFBDOWthWFkrUEdScGRqNG0K
Ym1KemNEc2dKbTVpYzNBN0lIVnVaWE5qWVhCbFFubDBaVk4wY21sdVp5QW9kMkZ6UlhOallYQmxa
Q3dnWW5NcElEMGdZMkZ6WlNCQwpVeTUxYm1OdmJuTWdZbk1nYjJZOEwyUnBkajQ4WkdsMlBpWnVZ
bk53T3lBbWJtSnpjRHNnSm01aWMzQTdJRXAxYzNRZ0tGOHNJR056CktTQjhJSGRoYzBWelkyRnda
V1FnSm01aWMzQTdJQ1p1WW5Od095QW1ibUp6Y0RzZ0xTWm5kRHNnU25WemRDQW9kMVZ1WkdWeWMy
TnYKY21Vc0lDaEdZV3h6WlN3Z1kzTXBLVHd2WkdsMlBqeGthWFkrSm01aWMzQTdJQ1p1WW5Od095
QW1ibUp6Y0RzZ1NuVnpkQ0FvWXl3ZwpZM01wSUh3Z1l5QXZQU0IzUW1GamEzTnNZWE5vSUNadVlu
TndPeTBtWjNRN0lFcDFjM1FnS0dNc0lDaEdZV3h6WlN3Z1kzTXBLVHd2ClpHbDJQanhrYVhZK0pt
NWljM0E3SUNadVluTndPeUFtYm1KemNEc2dTblZ6ZENBb1l5d2dZM01wSUNadVluTndPeUFtYm1K
emNEc2cKSm01aWMzQTdJQ1p1WW5Od095QW1ibUp6Y0RzZ0ptNWljM0E3SUNadVluTndPeUFtYm1K
emNEc2dKbTVpYzNBN0lDWnVZbk53T3kwbQpaM1E3SUVwMWMzUWdLR01zSUNoVWNuVmxMQ0JqY3lr
cFBDOWthWFkrUEdScGRqNG1ibUp6Y0RzZ0ptNWljM0E3SUNadVluTndPeUJPCmIzUm9hVzVuSUNa
dVluTndPeUFtYm1KemNEc2dKbTVpYzNBN0lDWnVZbk53T3lBbWJtSnpjRHNnSm01aWMzQTdJQ1p1
WW5Od095QW0KYm1KemNEc2dKbTVpYzNBN0lDWnVZbk53T3lBbWJtSnpjRHNnSm01aWMzQTdJQzBt
WjNRN0lFNXZkR2hwYm1jOEwyUnBkajQ4TDJScApkajQ4WkdsMlBtQmdZRHd2WkdsMlBqeGthWFkr
UEdKeVBqd3ZaR2wyUGp4a2FYWStWR2hsSUdGaWIzWmxJR1oxYm1OMGFXOXVJR0JpCmJHRnVhMFZ6
WTJGd1pXUkRhR0Z5YzJBZ2QybHNiQ0JuYnlCbWFXNWtJR0ZzYkNCZ1hHQWdZMmhoY21GamRHVnlj
eUJoYm1RZ1kyOXUKZG1WeWRDQjBhR1VnWm05c2JHOTNhVzVuSUdOb1lYSmhZM1JsY2lCMGJ5QmhJ
R0JmWUM0Z0ptNWljM0E3Um05eUlHRWdZREVnVFVKZwpJR2x1SUcxbGJXOXllU0JLVTA5T0lHQkNl
WFJsVTNSeWFXNW5ZQ3dnYVhRZ1ltVnVZMmhsY3lCaGRDQmhZbTkxZENCZ05pNDJJRzF6CllEd3Za
R2wyUGp4a2FYWStQR0p5UGp3dlpHbDJQanhrYVhZK1BDOWthWFkrUEdScGRqNUpiaUJoYkd3Z2JY
a2dZMjlrWlNCMGFHVWcKWW1GemFXTWdjM1J5WVhSbFoza2dhWE1nZEdobElITmhiV1V1SUNadVlu
TndPMkJoZDJGcGRHQWdabTl5SUhSb1pTQnVaWGgwSUdKNQpkR1VnYzNSeWFXNW5MQ0IwYUdWdUlI
VnpaU0JoYm1RZ1lIVnVabTlzWkhKT1lDQjBieUJ3Y205a2RXTmxJR0VnYm1WM0lHQkNlWFJsClUz
UnlhVzVuWUNCbWIzSWdlV2xsYkdScGJtY3VQQzlrYVhZK1BHUnBkajQ4WW5JK1BDOWthWFkrUEdS
cGRqNUJibmx2Ym1VZ2EyNXYKZHlCdlppQmhJSGRoZVNCMGJ5Qm5ieUJtWVhOMFpYSS9QQzlrYVhZ
K1BHUnBkajQ4WW5JK1BDOWthWFkrUEdScGRqNURhR1ZsY25NcwpQQzlrYVhZK1BHUnBkajQ4WW5J
K1BDOWthWFkrUEdScGRqNHRTbTlvYmp3dlpHbDJQanhrYVhZK1BHSnlQand2WkdsMlBnPT0iIHN0
eWxlPSJtaW4taGVpZ2h0OjA7d2lkdGg6MDttYXgtaGVpZ2h0OjA7bWF4LXdpZHRoOjA7b3ZlcmZs
b3c6aGlkZGVuO2ZvbnQtc2l6ZTowZW07cGFkZGluZzowO21hcmdpbjowIj7igIs8L2Rpdj48L2Rp
dj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2
PjwvZGl2Pg==" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</div></div></div>