<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>11813</bug_id>
          
          <creation_ts>2006-12-12 10:16:00 -0800</creation_ts>
          <short_desc>SVGLength needs a rewrite</short_desc>
          <delta_ts>2006-12-17 04:30:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>42377</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-12 10:16:00 -0800</bug_when>
    <thetext>SVGLength needs to be passed around as value, not by pointer, just like it&apos;s done for SVGMatrix* -&gt; AffineTransform, or SVGPoint/SVGRect. Also it&apos;s unnecessary to store both a value and a valueInSpecifiedUnits object in SVGLength itself, this can be changed.

The only problem is that the JS put() problems have to be fixed in POD types first, that&apos;s also done in the patch I&apos;m attaching soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42376</commentid>
    <comment_count>1</comment_count>
      <attachid>11824</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-12 10:17:59 -0800</bug_when>
    <thetext>Created attachment 11824
First patch, not ready for review yet

This patch compiles &amp; links, but it still has some subtle bugs related to coordinate handling &amp; fractions, and the new JS put() logic doesn&apos;t seem to work reliable yet. It doesn&apos;t crash but clearle shows memory corruption (ie. createSVGNumber() returns some weird 9.38E30 values....)

I just want to keep the patch here so Rob &amp; others can have a look at it, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42092</commentid>
    <comment_count>2</comment_count>
      <attachid>11846</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-14 15:57:53 -0800</bug_when>
    <thetext>Created attachment 11846
Second patch, not ready for review yet

Now that JS SVG POD types are fixed, SVGLength can be converted, finally.
This patch is complete, compiles &amp; links, but still has some issues with
two tests (svg length fraction handling). This is likely, as SVGLength
has been completely rewritten :-)

I&apos;ll try to fix them tomorrow...
Attaching patch for early birds..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41701</commentid>
    <comment_count>3</comment_count>
      <attachid>11880</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-12-16 06:23:57 -0800</bug_when>
    <thetext>Created attachment 11880
No regressions

These changes to Niko&apos;s patch should fix the regressions.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41729</commentid>
    <comment_count>4</comment_count>
      <attachid>11885</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-16 13:01:19 -0800</bug_when>
    <thetext>Created attachment 11885
Updated patch

Finally a complete patch, with no regressions! :-)
Credits go to Rob for fixing the last (very important!) regression,
which I was unable to find for quite some days...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41747</commentid>
    <comment_count>5</comment_count>
      <attachid>11889</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-16 14:27:14 -0800</bug_when>
    <thetext>Created attachment 11889
Updated patch II

We still found a problem when manually testing, uploading latest patch for Rob &amp; Oliver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41773</commentid>
    <comment_count>6</comment_count>
      <attachid>11893</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-17 04:11:49 -0800</bug_when>
    <thetext>Created attachment 11893
Final patch

All regressions fixed now! :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>41774</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-12-17 04:30:48 -0800</bug_when>
    <thetext>Landed in r18267.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11824</attachid>
            <date>2006-12-12 10:17:59 -0800</date>
            <delta_ts>2006-12-14 15:57:53 -0800</delta_ts>
            <desc>First patch, not ready for review yet</desc>
            <filename>MySVGLengthPatch.diff</filename>
            <type>text/plain</type>
            <size>187257</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lv
biAxODE3NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG15ICVwcmltaXRpdmVUeXBlSGFzaCA9ICgi
aW50IiA9PiAxLCAic2gKICAgICAgICAgICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyIg
PT4gMSwgImZsb2F0IiA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkb3VibGUiID0+
IDEsICJib29sZWFuIiA9PiAxLCAidm9pZCIgPT4gMSk7CiAKLW15ICVwb2RUeXBlSGFzaCA9ICgi
UkdCQ29sb3IiID0+IDEsICJTVkdQb2ludCIgPT4gMSwgIlNWR1JlY3QiID0+IDEsICJTVkdOdW1i
ZXIiID0+IDEsICJTVkdNYXRyaXgiID0+IDEpOworbXkgJXBvZFR5cGVIYXNoID0gKCJSR0JDb2xv
ciIgPT4gMSwgIlNWR0xlbmd0aCIgPT4gMSwgIlNWR1BvaW50IiA9PiAxLCAiU1ZHUmVjdCIgPT4g
MSwgIlNWR051bWJlciIgPT4gMSwgIlNWR01hdHJpeCIgPT4gMSk7CiAgCiBteSAlc3RyaW5nVHlw
ZUhhc2ggPSAoIkRPTVN0cmluZyIgPT4gMSwgIkF0b21pY1N0cmluZyIgPT4gMSk7CiAKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24g
MTgxNzcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAg
ICAjIEdldCBjb3JyZWN0IHBhc3Mvc3RvcmUgdHlwZXMgcmVzcGVjdGluZyBQT0RUeXBlIGZsYWcK
ICAgICBteSAkcG9kVHlwZSA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlBPRFR5
cGUifTsKLSAgICBteSAkcGFzc1R5cGUgPSAkcG9kVHlwZSA/ICJjb25zdCAkcG9kVHlwZSYiIDog
IiRpbXBsQ2xhc3NOYW1lKiI7CisgICAgbXkgJHBhc3NUeXBlID0gJHBvZFR5cGUgPyAiJHBvZFR5
cGUmIiA6ICIkaW1wbENsYXNzTmFtZSoiOwogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNp
bmNsdWRlIFwiJHBvZFR5cGUuaFwiXG4iKSBpZiAkcG9kVHlwZSBhbmQgJHBvZFR5cGUgbmUgImRv
dWJsZSI7CiAKQEAgLTI4NSw2ICsyODUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKCRwYXNzVHlwZSk7XG4iKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUo
S0pTOjpFeGVjU3RhdGUqLCAkcGFzc1R5cGUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgJGNsYXNzTmFtZShLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0ICRwb2RUeXBlJik7
XG4iKSBpZiAkcG9kVHlwZTsgCiAgICAgfQogCiAgICAgIyBEZXN0cnVjdG9yCkBAIC00MDgsNyAr
NDA5LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgICRwb2RUeXBlJiBpbXBsKCkgeyByZXR1cm4gbV9pbXBsOyB9XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgY29uc3QgJHBvZFR5cGUmIGltcGwoKSBj
b25zdCB7IHJldHVybiBtX2ltcGw7IH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgInByaXZhdGU6XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgJHBvZFR5cGUgbV9pbXBsO1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgICRwb2RUeXBlICZtX2ltcGw7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcGwoKSBjb25z
dCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgInByaXZhdGU6XG4iKTsKQEAgLTQzMyw3ICs0MzQsOCBAQCBzdWIgR2VuZXJhdGVI
ZWFkZXIKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifTtcblxuIik7CiAKICAgICBpZiAoISRo
YXNQYXJlbnQpIHsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIktKUzo6SlNWYWx1ZSog
dG9KUyhLSlM6OkV4ZWNTdGF0ZSosICRwYXNzVHlwZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIktKUzo6SlNWYWx1ZSogdG9KUyhLSlM6OkV4ZWNTdGF0ZSosICRwYXNzVHlw
ZSk7XG4iKTsgCisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJLSlM6OkpTVmFsdWUqIHRv
SlMoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCAkcG9kVHlwZSYpO1xuIikgaWYgJHBvZFR5cGU7IAog
ICAgIH0KICAgICBpZiAoISRoYXNQYXJlbnQgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIifSkgewogICAgICAgICBpZiAoJHBvZFR5cGUp
IHsKQEAgLTY3NSwxMiArNjc3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAjIEdldCBjb3JyZWN0IHBhc3Mvc3RvcmUgdHlwZXMgcmVzcGVjdGluZyBQT0RUeXBlIGZsYWcK
ICAgICBteSAkcG9kVHlwZSA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlBPRFR5
cGUifTsKLSAgICBteSAkcGFzc1R5cGUgPSAkcG9kVHlwZSA/ICJjb25zdCAkcG9kVHlwZSYiIDog
IiRpbXBsQ2xhc3NOYW1lKiI7CisgICAgbXkgJHBhc3NUeXBlID0gJHBvZFR5cGUgPyAiJHBvZFR5
cGUmIiA6ICIkaW1wbENsYXNzTmFtZSoiOwogCiAgICAgIyBDb25zdHJ1Y3RvcgogICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENhY2hlIn0pIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoJHBhc3NUeXBlIGlt
cGwpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NO
YW1lKGltcGwpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4gICAgc2V0UHJv
dG90eXBlKCR7Y2xhc3NOYW1lfVByb3RvOjpzZWxmKCkpO1xufVxuXG4iKTsgCiAgICAgfSBlbHNl
IHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUo
RXhlY1N0YXRlKiBleGVjLCAkcGFzc1R5cGUgaW1wbClcbiIpOwogICAgICAgICBpZiAoJGhhc1Bh
cmVudCkgewpAQCAtNjg4LDEyICs2OTEsMTkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDog
bV9pbXBsKGltcGwpXG4iKTsKICAgICAgICAgfQotICAgIH0KIAotICAgIGlmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENhY2hlIn0pIHsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4gICAgc2V0UHJvdG90eXBlKCR7Y2xhc3NOYW1lfVByb3RvOjpzZWxmKCkp
O1xufVxuXG4iKTsKLSAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biAgICBzZXRQcm90b3R5cGUoJHtjbGFzc05hbWV9UHJvdG86OnNlbGYoZXhlYykpO1xufVxuXG4i
KTsKKworICAgICAgICBpZiAoJHBvZFR5cGUpIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgJHBv
ZFR5cGUmIGltcGwpXG4iKTsKKyAgICAgICAgICAgIGlmICgkaGFzUGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKGV4ZWMs
IGltcGwpXG4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgOiBtX2ltcGwoY29uc3RfY2FzdDwkcG9kVHlwZSY+KGltcGwpKVxu
Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
ICAgIHNldFByb3RvdHlwZSgke2NsYXNzTmFtZX1Qcm90bzo6c2VsZihleGVjKSk7XG59XG5cbiIp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgIyBEZXN0cnVjdG9yCkBAIC04MDEsMTQgKzgxMSwy
MiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgImltcC4kbmFtZSgpIikgLiAiO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAiaW1wLT4kbmFtZSgpIikgLiAiO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgIG15ICR0eXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisKKyAgICAgICAgICAgICAgICAgICAgIyBTcGVjaWFs
IGNhc2UgZm9yIG5vbi1yZWZjb3VudGVkIChQT0QpIHR5cGVzCisgICAgICAgICAgICAgICAgICAg
IGlmICgkY29kZUdlbmVyYXRvci0+SXNQb2RUeXBlKCR0eXBlKSBhbmQgJHR5cGUgbmUgIlJHQkNv
bG9yIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICgkY29kZUdlbmVyYXRvci0+SXNTVkdB
bmltYXRlZFR5cGUoJGltcGxDbGFzc05hbWUpIG9yICRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFk
b25seS8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAi
aW1wLT4ke25hbWV9UmVmKCkiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJpbXAtPiRu
YW1lKCkiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgY2FzZSAiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiQXR0ck51bToge1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwO1xuIik7CiAKICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEtKUzo6SlNWYWx1ZSogcmVz
dWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJpbXAuJG5h
bWUoZWMpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAiaW1wLiR7bmFtZX1SZWYoZWMpIikgLiAiO1xuIik7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUsICJpbXAtPiRuYW1lKGVjKSIpIC4gIjtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTk5OCw2ICsxMDE2LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gS0pTOjpjYWNo
ZURPTU9iamVjdDwkaW1wbENsYXNzTmFtZSwgJGNsYXNzTmFtZT4oZXhlYywgb2JqKTtcbiIpOwog
ICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CisKKyAgICAgICAg
aWYgKCRwb2RUeXBlKSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIktKUzo6SlNW
YWx1ZSogdG9KUyhLSlM6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgJHBvZFR5cGUmIG9iailcbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsgCisgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gbmV3ICRjbGFzc05hbWUoZXhlYywgb2JqKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmICghJGhhc1BhcmVudCB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciJ9KSB7CkBAIC0xMDc1LDYgKzExMDAsNyBA
QCBzdWIgR2V0TmF0aXZlVHlwZQogICAgIHJldHVybiAiRmxvYXRSZWN0IiBpZiAkdHlwZSBlcSAi
U1ZHUmVjdCI7CiAgICAgcmV0dXJuICJGbG9hdFBvaW50IiBpZiAkdHlwZSBlcSAiU1ZHUG9pbnQi
OwogICAgIHJldHVybiAiQWZmaW5lVHJhbnNmb3JtIiBpZiAkdHlwZSBlcSAiU1ZHTWF0cml4IjsK
KyAgICByZXR1cm4gIlNWR0xlbmd0aCIgaWYgJHR5cGUgZXEgIlNWR0xlbmd0aCI7CiAgICAgcmV0
dXJuICJkb3VibGUiIGlmICR0eXBlIGVxICJTVkdOdW1iZXIiOwogICAgIHJldHVybiAiU1ZHUGFp
bnQ6OlNWR1BhaW50VHlwZSIgaWYgJHR5cGUgZXEgIlNWR1BhaW50VHlwZSI7CiAKQEAgLTEyMjMs
NyArMTI0OSw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgcmV0dXJuICJnZXRET01S
R0JDb2xvcihleGVjLCAkdmFsdWUpIjsKICAgICB9CiAKLSAgICBpZiAoJHR5cGUgZXEgIlNWR1Jl
Y3QiIG9yICR0eXBlIGVxICJTVkdQb2ludCIgb3IgJHR5cGUgZXEgIlNWR051bWJlciIgb3IgJHR5
cGUgZXEgIlNWR01hdHJpeCIpIHsKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzUG9kVHlwZSgk
dHlwZSkpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3siSlMkdHlwZS5oIn0gPSAxOwogICAgICAg
ICByZXR1cm4gInRvSlMoZXhlYywgJHZhbHVlKSI7CiAgICAgfQpJbmRleDogV2ViQ29yZS9rc3Zn
Mi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysg
V2ViQ29yZS9rc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJTVkdQYWludFNlcnZlclNvbGlkLmgiCiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgorI2luY2x1
ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR1Jl
bmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgpAQCAtMTEyLDcgKzEx
Myw3IEBAIGRvdWJsZSBLU1ZHUGFpbnRlckZhY3Rvcnk6OmNzc1ByaW1pdGl2ZVQKICAgICAgICAg
U1ZHRWxlbWVudCogdmlld3BvcnRFbGVtZW50ID0gKGVsZW1lbnQgPyBlbGVtZW50LT52aWV3cG9y
dEVsZW1lbnQoKSA6IDApOwogICAgICAgICBpZiAodmlld3BvcnRFbGVtZW50KSB7CiAgICAgICAg
ICAgICBkb3VibGUgcmVzdWx0ID0gcHJpbWl0aXZlLT5nZXRGbG9hdFZhbHVlKCkgLyAxMDAuMDsK
LSAgICAgICAgICAgIHJldHVybiBTVkdIZWxwZXI6OlBlcmNlbnRhZ2VPZlZpZXdwb3J0KHJlc3Vs
dCwgdmlld3BvcnRFbGVtZW50LCBMTV9PVEhFUik7CisgICAgICAgICAgICByZXR1cm4gU1ZHSGVs
cGVyOjpQZXJjZW50YWdlT2ZWaWV3cG9ydChyZXN1bHQsIHZpZXdwb3J0RWxlbWVudCwgTGVuZ3Ro
TW9kZU90aGVyKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9taXNj
L1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvbWlz
Yy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tz
dmcyL21pc2MvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYg
Kzg0LDI1IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5
cGU+CisgICAgVmFsdWVUeXBlJiBkZWZhdWx0QmFzZVZhbHVlUmVmKCkKKyAgICB7CisgICAgICAg
IHN0YXRpYyBWYWx1ZVR5cGUgc192YWx1ZVR5cGUgPSBWYWx1ZVR5cGUoKTsKKyAgICAgICAgcmV0
dXJuIHNfdmFsdWVUeXBlOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlw
ZT4KKyAgICBWYWx1ZVR5cGUmIGJhc2VWYWx1ZVJlZihjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKKyAgICB7CisgICAgICAgIEhhc2hN
YXA8U3RyaW5nSW1wbCosIFZhbHVlVHlwZT4qIHByb3BlcnR5TWFwID0gYmFzZVZhbHVlTWFwPFZh
bHVlVHlwZT4oKS5nZXQoZWxlbWVudCk7CisgICAgICAgIGlmIChwcm9wZXJ0eU1hcCkgeworICAg
ICAgICAgICAgY29uc3QgVmFsdWVUeXBlJiByZWYocHJvcGVydHlNYXAtPmdldChwcm9wZXJ0eU5h
bWUuaW1wbCgpKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxWYWx1ZVR5cGUmPihy
ZWYpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRCYXNlVmFsdWVSZWY8VmFs
dWVUeXBlPigpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZT4KICAg
ICB2b2lkIHNldEJhc2VWYWx1ZShjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9t
aWNTdHJpbmcmIHByb3BlcnR5TmFtZSwgVmFsdWVUeXBlIG5ld1ZhbHVlKQogICAgIHsKICAgICAg
ICAgSGFzaE1hcDxTdHJpbmdJbXBsKiwgVmFsdWVUeXBlPiogcHJvcGVydHlNYXAgPSBiYXNlVmFs
dWVNYXA8VmFsdWVUeXBlPigpLmdldChlbGVtZW50KTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0FuaW1hdGVkVGVtcGxhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdBbmltYXRlZFRlbXBsYXRlLmgJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBCYXJlVHlwZSBhbmltVmFs
KCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbVZhbChCYXJlVHlwZSBu
ZXdBbmltVmFsKSA9IDA7CisKKyAgICAgICAgLy8gVXNlZCBieSB0aGUgYmluZGluZ3MgdG8gc3Vw
cG9ydCBwdXQoKSBvcGVyYXRpb25zIG9uIGF0dHJpYnV0ZXMKKyAgICAgICAgLy8gZm9yIFBPRCB0
eXBlcyAobm9uIHJlZmNvdW50ZWQsIGJ5LXZhbHVlIHBhc3NlZCBvYmplY3RzKQorICAgICAgICB2
aXJ0dWFsIEJhcmVUeXBlJiBiYXNlVmFsUmVmKCkgPSAwOworICAgICAgICB2aXJ0dWFsIEJhcmVU
eXBlJiBhbmltVmFsUmVmKCkgPSAwOwogICAgIH07CiAKICAgICAvLyBDb21tb24gdHlwZSBkZWZp
bml0aW9ucywgdG8gZWFzZSBJREwgZ2VuZXJhdGlvbi4uLgpAQCAtNTUsNyArNjAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGJvb2w+IFNW
R0FuaW1hdGVkQm9vbGVhbjsKICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8aW50PiBT
VkdBbmltYXRlZEVudW1lcmF0aW9uOwogICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxs
b25nPiBTVkdBbmltYXRlZEludGVnZXI7Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRl
PFNWR0xlbmd0aCo+IFNWR0FuaW1hdGVkTGVuZ3RoOworICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZTxTVkdMZW5ndGg+IFNWR0FuaW1hdGVkTGVuZ3RoOwogICAgIHR5cGVkZWYgU1ZHQW5p
bWF0ZWRUZW1wbGF0ZTxTVkdMZW5ndGhMaXN0Kj4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OwogICAg
IHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxkb3VibGU+IFNWR0FuaW1hdGVkTnVtYmVyOwog
ICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdOdW1iZXJMaXN0Kj4gU1ZHQW5pbWF0
ZWROdW1iZXJMaXN0OyAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0
CkBAIC0yMSwxMiArMjEsMTIgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVm
IFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHQ2lyY2xlRWxlbWVudC5oIgogCiAjaW5jbHVkZSAi
RmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR0xlbmd0
aC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2
LDkgKzM2LDkgQEAgU1ZHQ2lyY2xlRWxlbWVudDo6U1ZHQ2lyY2xlRWxlbWVudChjb25zdAogICAg
ICwgU1ZHVGVzdHMoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKQotICAgICwgbV9jeChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRI
LCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2N5KG5ldyBTVkdMZW5ndGgodGhpcywgTE1f
SEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3IobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9PVEhFUiwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV9jeChTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZVdpZHRoKSkKKyAgICAsIG1fY3koU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpKQorICAgICwgbV9yKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlT3RoZXIpKQog
ewogfQogCkBAIC00NiwxOSArNDYsMTkgQEAgU1ZHQ2lyY2xlRWxlbWVudDo6flNWR0NpcmNsZUVs
ZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDaXJjbGVF
bGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hB
dHRyLmxvY2FsTmFtZSgpLCBtX2N4LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwg
U1ZHTmFtZXM6OmN5QXR0ci5sb2NhbE5hbWUoKSwgbV9jeS5nZXQoKSkKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVu
Z3RoLCBSLCByLCBTVkdOYW1lczo6ckF0dHIubG9jYWxOYW1lKCksIG1fci5nZXQoKSkKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4QXR0ci5sb2NhbE5hbWUoKSwgbV9jeCkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ci5sb2NhbE5hbWUoKSwg
bV9jeSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNW
R0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFIsIHIsIFNWR05hbWVzOjpyQXR0ci5sb2NhbE5hbWUo
KSwgbV9yKQogCiB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0g
YXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeEF0dHIp
Ci0gICAgICAgIGN4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAg
ICBzZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkp
OyAgICAgICAKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN5QXR0cikK
LSAgICAgICAgY3lCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAg
IHNldEN5QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ckF0dHIpCi0gICAgICAg
IHJCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFJCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVPdGhlciwgdmFsdWUpKTsKICAgICBlbHNl
IHsKICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTcyLDM3ICs3MiwxMSBAQCB2b2lkIFNWR0NpcmNsZUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAKIFBhdGggU1ZHQ2lyY2xlRWxlbWVudDo6dG9QYXRoRGF0
YSgpIGNvbnN0CiB7Ci0gICAgZmxvYXQgX2N4ID0gY3goKS0+dmFsdWUoKSwgX2N5ID0gY3koKS0+
dmFsdWUoKTsKLSAgICBmbG9hdCBfciA9IHIoKS0+dmFsdWUoKTsKLQotICAgIHJldHVybiBQYXRo
OjpjcmVhdGVDaXJjbGUoRmxvYXRQb2ludChfY3gsIF9jeSksIF9yKTsKLX0KLQotY29uc3QgU1ZH
U3R5bGVkRWxlbWVudCogU1ZHQ2lyY2xlRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29u
c3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCkKLXsKLSAgICAvLyBBbGwgYXR0cmlidXRlJ3Mg
Y29udGV4dHMgYXJlIGVxdWFsIChzbyBqdXN0IHRha2UgdGhlIG9uZSBmcm9tICdjeCcpLgotICAg
IGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHJlc3RvcmUgPSBjeCgpLT5jb250ZXh0KCk7Ci0KLSAg
ICBjeCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIGN5KCktPnNldENvbnRleHQoY29udGV4
dCk7Ci0gICAgcigpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIAotICAgIFNWR1N0eWxlZEVs
ZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnRleHQpOwotICAgIHJldHVybiByZXN0b3Jl
OwotfQotCi1ib29sIFNWR0NpcmNsZUVsZW1lbnQ6Omhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25z
dAotewotICAgIGlmIChjeCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZ
UEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICBjeSgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6
U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICByKCktPnVuaXRUeXBlKCkgPT0g
U1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gUGF0aDo6Y3JlYXRlQ2lyY2xlKEZs
b2F0UG9pbnQoY3goKS52YWx1ZSgpLCBjeSgpLnZhbHVlKCkpLCByKCkudmFsdWUoKSk7CiB9CiAK
IH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0
cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHJldmlzaW9u
IDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsy
MCw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtT
VkdfU1ZHQ2lyY2xlRWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0NpcmNsZUVsZW1lbnRJ
bXBsX0gKKyNpZm5kZWYgU1ZHQ2lyY2xlRWxlbWVudF9ICisjZGVmaW5lIFNWR0NpcmNsZUVsZW1l
bnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQuaCIKQEAgLTMxLDcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsK
LSAgICBjbGFzcyBTVkdMZW5ndGg7CiAgICAgY2xhc3MgU1ZHQ2lyY2xlRWxlbWVudCA6IHB1Ymxp
YyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgU1ZHTGFuZ1NwYWNlLApAQCAtNDksMjQgKzQ5LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkg
eyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAg
ICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGNv
bnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxl
ZEVsZW1lbnQqIGNvbnRleHQpOwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNv
bnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQog
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3Q7Ci0KICAg
ICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9O
UyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8
U1ZHTGVuZ3RoPiwgQ3gsIGN4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEN5LCBj
eSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNsZUVsZW1l
bnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBSLCByKQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdM
ZW5ndGgsIEN4LCBjeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBDeSwgY3kpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgs
IFNWR0xlbmd0aCwgUiwgcikKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gU1ZHQ2lyY2xlRWxlbWVudF9I
CiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4
MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp+U1YKIH0KIAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIGludCwgRW51bWVyYXRp
b24sIGVudW1lcmF0aW9uLCBUeXBlLCB0eXBlLCBTVkdOYW1lczo6dHlwZUF0dHIubG9jYWxOYW1l
KCksIG1fdHlwZSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOdW1iZXJMaXN0KiwgTnVtYmVyTGlzdCwgbnVtYmVy
TGlzdCwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzLCBTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRy
LmxvY2FsTmFtZSgpLCBtX3RhYmxlVmFsdWVzLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlNfTk9OX1BPRChTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgU1ZH
TnVtYmVyTGlzdCosIE51bWJlckxpc3QsIG51bWJlckxpc3QsIFRhYmxlVmFsdWVzLCB0YWJsZVZh
bHVlcywgU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0ci5sb2NhbE5hbWUoKSwgbV90YWJsZVZhbHVl
cy5nZXQoKSkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50LCBkb3VibGUsIE51bWJlciwgbnVtYmVyLCBTbG9wZSwgc2xvcGUs
IFNWR05hbWVzOjpzbG9wZUF0dHIubG9jYWxOYW1lKCksIG1fc2xvcGUpCiBBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgZG91
YmxlLCBOdW1iZXIsIG51bWJlciwgSW50ZXJjZXB0LCBpbnRlcmNlcHQsIFNWR05hbWVzOjppbnRl
cmNlcHRBdHRyLmxvY2FsTmFtZSgpLCBtX2ludGVyY2VwdCkKIEFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBkb3VibGUsIE51
bWJlciwgbnVtYmVyLCBBbXBsaXR1ZGUsIGFtcGxpdHVkZSwgU1ZHTmFtZXM6OmFtcGxpdHVkZUF0
dHIubG9jYWxOYW1lKCksIG1fYW1wbGl0dWRlKQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgotICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RF
IHByb2plY3QKIApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgor
CiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdDdXJzb3JFbGVtZW50LmgiCiAKQEAg
LTQwLDggKzQxLDggQEAgU1ZHQ3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudChjb25zdAog
ICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdVUklSZWZlcmVu
Y2UoKQogICAgICwgQ2FjaGVkUmVzb3VyY2VDbGllbnQoKQotICAgICwgbV94KG5ldyBTVkdMZW5n
dGgoMCwgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVu
Z3RoKDAsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94KDAsIExlbmd0
aE1vZGVXaWR0aCkKKyAgICAsIG1feSgwLCBMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIG1fY2Fj
aGVkSW1hZ2UgPSAwOwogfQpAQCAtNTIsMTYgKzUzLDE2IEBAIFNWR0N1cnNvckVsZW1lbnQ6On5T
VkdDdXJzb3JFbGVtZW50KCkKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+ZGVyZWYodGhpcyk7CiB9
CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xl
bmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCks
IG1feC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVsZW1l
bnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9j
YWxOYW1lKCksIG1feS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1
cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4
QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
Q3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6
OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCiAKIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewotICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
Ojp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsK
KyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgoMCwgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1
ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAg
ICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlC
YXNlVmFsdWUoU1ZHTGVuZ3RoKDAsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC04Miw2ICs4Myw2IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWIKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHQ3Vyc29yRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1
cnNvckVsZW1lbnQuaAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdD
dXJzb3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgotICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9y
Zz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3
aWxkZm94QGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKIApAQCAtMjAsMTIgKzIwLDE0IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV
U0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHQ3Vyc29yRWxlbWVudEltcGxfSAotI2RlZmluZSBL
U1ZHX1NWR0N1cnNvckVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHQ3Vyc29yRWxlbWVudF9ICisj
ZGVmaW5lIFNWR0N1cnNvckVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1
ZGUgIkltYWdlLmgiCiAKKyNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2Uu
aCIKQEAgLTM0LDggKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAgICBjbGFzcyBT
VkdMZW5ndGg7Ci0KICAgICBjbGFzcyBTVkdDdXJzb3JFbGVtZW50IDogcHVibGljIFNWR0VsZW1l
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwKQEAgLTYwLDggKzYwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJB
VElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCos
IFJlZlB0cjxTVkdMZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4s
IFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDdXJzb3JF
bGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3Ro
LCBZLCB5KQogCiAgICAgICAgIENhY2hlZEltYWdlICptX2NhY2hlZEltYWdlOwogICAgIH07Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBr
ZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUs
IDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEt
MTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0VsZW1lbnRJbXBsX0gKLSNkZWZpbmUg
S1NWR19TVkdFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0VsZW1lbnRfSAorI2RlZmluZSBTVkdF
bGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgpA
QCAtMzMsMTcgKzM0LDIzIEBACiAKICNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfRU1QVFlfREVD
TEFSQVRJT05TKEJhcmVUeXBlLCBOdWxsVHlwZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkgXAogcHVibGljOiBcCi0gICAgdmlydHVhbCBCYXJlVHlwZSBMb3dlclByb3BlcnR5KCkgY29u
c3QgeyBBU1NFUlQoZmFsc2UpOyByZXR1cm4gTnVsbFR5cGU7IH0gXAotICAgIHZpcnR1YWwgdm9p
ZCBzZXQjI1VwcGVyUHJvcGVydHkoQmFyZVR5cGUgbmV3VmFsdWUpIHsgQVNTRVJUKGZhbHNlKTsg
fVwKLSAgICB2aXJ0dWFsIEJhcmVUeXBlIExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0
IHsgQVNTRVJUKGZhbHNlKTsgcmV0dXJuIE51bGxUeXBlOyB9IFwKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUoQmFyZVR5cGUgbmV3VmFsdWUpIHsgQVNTRVJU
KGZhbHNlKTsgfQorICAgIHZpcnR1YWwgQmFyZVR5cGUgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBOdWxsVHlwZTsgfSBcCisgICAgdmlydHVhbCB2
b2lkIHNldCMjVXBwZXJQcm9wZXJ0eShCYXJlVHlwZSBuZXdWYWx1ZSkgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfVwKKyAgICB2aXJ0dWFsIEJhcmVUeXBlIExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1
ZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBOdWxsVHlwZTsgfSBcCisg
ICAgdmlydHVhbCB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKEJhcmVUeXBlIG5l
d1ZhbHVlKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IFwKK1wKKyAgICB2aXJ0dWFsIEJhcmVU
eXBlJiBMb3dlclByb3BlcnR5IyNCYXNlVmFsdWVSZWYoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyBzdGF0aWMgQmFyZVR5cGUgdHlwZTsgcmV0dXJuIHR5cGU7IH0gXAorICAgIHZpcnR1YWwgQmFy
ZVR5cGUmIExvd2VyUHJvcGVydHkjI1JlZigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHN0YXRp
YyBCYXJlVHlwZSB0eXBlOyByZXR1cm4gdHlwZTsgfQogCiAjZGVmaW5lIEFOSU1BVEVEX1BST1BF
UlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKEZvcndhcmRDbGFzcywgQmFyZVR5cGUsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHkpIFwKIHB1YmxpYzogXAogICAgIHZpcnR1YWwgQmFyZVR5cGUg
TG93ZXJQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIEZvcndhcmRDbGFzczo6TG93ZXJQcm9wZXJ0
eSgpOyB9IFwKICAgICB2aXJ0dWFsIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5KEJhcmVUeXBlIG5l
d1ZhbHVlKSB7IEZvcndhcmRDbGFzczo6c2V0IyNVcHBlclByb3BlcnR5KG5ld1ZhbHVlKTsgfSBc
CiAgICAgdmlydHVhbCBCYXJlVHlwZSBMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBGb3J3YXJkQ2xhc3M6Okxvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpOyB9IFwKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUoQmFyZVR5cGUgbmV3
VmFsdWUpIHsgRm9yd2FyZENsYXNzOjpzZXQjI1VwcGVyUHJvcGVydHkjI0Jhc2VWYWx1ZShuZXdW
YWx1ZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUo
QmFyZVR5cGUgbmV3VmFsdWUpIHsgRm9yd2FyZENsYXNzOjpzZXQjI1VwcGVyUHJvcGVydHkjI0Jh
c2VWYWx1ZShuZXdWYWx1ZSk7IH0gXAorXAorICAgIHZpcnR1YWwgQmFyZVR5cGUmIExvd2VyUHJv
cGVydHkjI0Jhc2VWYWx1ZVJlZigpIHsgcmV0dXJuIEZvcndhcmRDbGFzczo6TG93ZXJQcm9wZXJ0
eSMjQmFzZVZhbHVlUmVmKCk7IH07IFwKKyAgICB2aXJ0dWFsIEJhcmVUeXBlJiBMb3dlclByb3Bl
cnR5IyNSZWYoKSB7IHJldHVybiBGb3J3YXJkQ2xhc3M6Okxvd2VyUHJvcGVydHkjI1JlZigpOyB9
OwogCiAjZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19JTlRFUk5BTChDbGFz
c1R5cGUsIENsYXNzU3RvcmFnZVR5cGUsIEJhcmVUeXBlLCBTdG9yYWdlVHlwZSwgVXBwZXJQcm9w
ZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAogY2xhc3MgU1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQ
cm9wZXJ0eSBcCkBAIC01Niw2ICs2MywxMCBAQCBwdWJsaWM6IFwKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QmFzZVZhbChCYXJlVHlwZSBuZXdCYXNlVmFsKTsgXAogICAgIHZpcnR1YWwgQmFyZVR5cGUg
YW5pbVZhbCgpIGNvbnN0OyBcCiAgICAgdmlydHVhbCB2b2lkIHNldEFuaW1WYWwoQmFyZVR5cGUg
bmV3QW5pbVZhbCk7IFwKK1wKKyAgICB2aXJ0dWFsIEJhcmVUeXBlJiBiYXNlVmFsUmVmKCk7IFwK
KyAgICB2aXJ0dWFsIEJhcmVUeXBlJiBhbmltVmFsUmVmKCk7IFwKK1wKIHByb3RlY3RlZDogXAog
ICAgIENsYXNzU3RvcmFnZVR5cGUgbV9lbGVtZW50OyBcCiB9OyBcCkBAIC02NSw2ICs3NiwxMCBA
QCBwdWJsaWM6IFwKICAgICBCYXJlVHlwZSBMb3dlclByb3BlcnR5IyNCYXNlVmFsdWUoKSBjb25z
dDsgXAogICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUoQmFyZVR5cGUgbmV3
VmFsdWUpOyBcCiAgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3Bl
cnR5PiBMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIGNvbnN0OyBcCitcCisgICAgQmFyZVR5cGUm
IExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZVJlZigpOyBcCisgICAgQmFyZVR5cGUmIExvd2VyUHJv
cGVydHkjI1JlZigpOyBcCitcCiBwcml2YXRlOiBcCiAgICAgU3RvcmFnZVR5cGUgbV8jI0xvd2Vy
UHJvcGVydHk7CiAKQEAgLTg3LDYgKzEwMiwxNCBAQCB2b2lkIENsYXNzTmFtZTo6U1ZHQW5pbWF0
ZWRUZW1wbGF0ZSMjVXBwCiB7IFwKICAgICBtX2VsZW1lbnQtPnNldCMjVXBwZXJQcm9wZXJ0eShu
ZXdBbmltVmFsKTsgXAogfSBcCitCYXJlVHlwZSYgQ2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBs
YXRlIyNVcHBlclByb3BlcnR5OjpiYXNlVmFsUmVmKCkgXAoreyBcCisgICAgcmV0dXJuIG1fZWxl
bWVudC0+TG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlUmVmKCk7IFwKK30gXAorQmFyZVR5cGUmIENs
YXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eTo6YW5pbVZhbFJlZigp
IFwKK3sgXAorICAgIHJldHVybiBtX2VsZW1lbnQtPkxvd2VyUHJvcGVydHkjI1JlZigpOyBcCit9
XAogQmFyZVR5cGUgQ2xhc3NOYW1lOjpMb3dlclByb3BlcnR5KCkgY29uc3QgXAogeyBcCiAgICAg
cmV0dXJuIFN0b3JhZ2VHZXR0ZXI7IFwKQEAgLTk4LDcgKzEyMSw3IEBAIHZvaWQgQ2xhc3NOYW1l
OjpzZXQjI1VwcGVyUHJvcGVydHkoQmFyZVQKIEJhcmVUeXBlIENsYXNzTmFtZTo6TG93ZXJQcm9w
ZXJ0eSMjQmFzZVZhbHVlKCkgY29uc3QgXAogeyBcCiAgICAgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dCA9IENvbnRleHRFbGVtZW50OyBcCi0gICAgQVNTRVJUKGNvbnRleHQgIT0gMCk7IFwKKyAg
ICBBU1NFUlQoY29udGV4dCk7IFwKICAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lv
bnMgPSAoY29udGV4dC0+ZG9jdW1lbnQoKSA/IGNvbnRleHQtPmRvY3VtZW50KCktPmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKSA6IDApOyBcCiAgICAgaWYgKGV4dGVuc2lvbnMgJiYgZXh0ZW5zaW9ucy0+
aGFzQmFzZVZhbHVlPEJhcmVUeXBlPihjb250ZXh0LCBBdHRyTmFtZSkpIFwKICAgICAgICAgIHJl
dHVybiBleHRlbnNpb25zLT5iYXNlVmFsdWU8QmFyZVR5cGU+KGNvbnRleHQsIEF0dHJOYW1lKTsg
XApAQCAtMTA3LDExICsxMzAsMjEgQEAgQmFyZVR5cGUgQ2xhc3NOYW1lOjpMb3dlclByb3BlcnR5
IyNCYXNlVgogdm9pZCBDbGFzc05hbWU6OnNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKEJh
cmVUeXBlIG5ld1ZhbHVlKSBcCiB7IFwKICAgICBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0ID0g
Q29udGV4dEVsZW1lbnQ7IFwKLSAgICBBU1NFUlQoY29udGV4dCAhPSAwKTsgXAorICAgIEFTU0VS
VChjb250ZXh0KTsgXAogICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IChj
b250ZXh0LT5kb2N1bWVudCgpID8gY29udGV4dC0+ZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5z
aW9ucygpIDogMCk7IFwKICAgICBpZiAoZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25zLT5oYXNCYXNl
VmFsdWU8QmFyZVR5cGU+KGNvbnRleHQsIEF0dHJOYW1lKSkgXAogICAgICAgICBleHRlbnNpb25z
LT5zZXRCYXNlVmFsdWU8QmFyZVR5cGU+KGNvbnRleHQsIEF0dHJOYW1lLCBuZXdWYWx1ZSk7IFwK
ICAgICBzZXQjI1VwcGVyUHJvcGVydHkobmV3VmFsdWUpOyBcCit9IFwKK0JhcmVUeXBlJiBDbGFz
c05hbWU6Okxvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZVJlZigpIFwKK3sgXAorICAgIGNvbnN0IFNW
R0VsZW1lbnQqIGNvbnRleHQgPSBDb250ZXh0RWxlbWVudDsgXAorICAgIEFTU0VSVChjb250ZXh0
KTsgXAorICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9ucyogZXh0ZW5zaW9ucyA9IChjb250ZXh0LT5k
b2N1bWVudCgpID8gY29udGV4dC0+ZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpIDog
MCk7IFwKKyAgICBpZiAoZXh0ZW5zaW9ucyAmJiBleHRlbnNpb25zLT5oYXNCYXNlVmFsdWU8QmFy
ZVR5cGU+KGNvbnRleHQsIEF0dHJOYW1lKSkgXAorICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnMt
PmJhc2VWYWx1ZVJlZjxCYXJlVHlwZT4oY29udGV4dCwgQXR0ck5hbWUpOyBcCisgICAgQVNTRVJU
KGV4dGVuc2lvbnMpOyBcCisgICAgcmV0dXJuIGV4dGVuc2lvbnMtPmRlZmF1bHRCYXNlVmFsdWVS
ZWY8QmFyZVR5cGU+KCk7IFwKIH0KIAogLy8gVGhlc2UgYXJlIHRoZSBtYWNyb3Mgd2hpY2ggd2ls
bCBiZSB1c2VkIHRvIGRlY2xhcmUvaW1wbGVtZW50IHRoZSBzdmcgYW5pbWF0ZWQgcHJvcGVydGll
cy4uLgpAQCAtMTIxLDEzICsxNTQsNDggQEAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
X0lOVEVSTkFMKAogI2RlZmluZSBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoQ2xhc3NO
YW1lLCBCYXJlVHlwZSwgU3RvcmFnZVR5cGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkp
IFwKIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OU19JTlRFUk5BTChDbGFzc05hbWUsIFJl
ZlB0cjxDbGFzc05hbWU+LCBCYXJlVHlwZSwgU3RvcmFnZVR5cGUsIFVwcGVyUHJvcGVydHksIExv
d2VyUHJvcGVydHkpCiAKKyNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lU
SF9DT05URVhUX05PTl9QT0QoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExv
d2VyQ2xhc3NOYW1lLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgU3Rv
cmFnZUdldHRlcikgXAorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfSU5URVJOQUwoQ2xh
c3NOYW1lLCBTVkdFbGVtZW50LCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2VyQ2xhc3NO
YW1lLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgU3RvcmFnZUdldHRl
ciwgY29udGV4dEVsZW1lbnQoKSkgXAorUGFzc1JlZlB0cjxDbGFzc05hbWU6OlNWR0FuaW1hdGVk
VGVtcGxhdGUjI1VwcGVyUHJvcGVydHk+IENsYXNzTmFtZTo6TG93ZXJQcm9wZXJ0eSMjQW5pbWF0
ZWQoKSBjb25zdCBcCit7IFwKKyAgICBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0ID0gY29udGV4
dEVsZW1lbnQoKTsgXAorICAgIEFTU0VSVChjb250ZXh0KTsgXAorICAgIHJldHVybiBSZWZQdHI8
Q2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5PihuZXcgQ2xhc3NO
YW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5KGNvbnRleHQpKTsgXAorfSBc
CitCYXJlVHlwZSYgQ2xhc3NOYW1lOjpMb3dlclByb3BlcnR5IyNSZWYoKSBcCit7IFwKKyAgICAv
KiBUaGlzIGlzIE5PVCB1c2VkIGZvciBub24tUE9EIHR5cGVzISAqLyBcCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IFwKKyAgICBzdGF0aWMgQmFyZVR5cGUgdHlwZTsgXAorICAgIHJldHVybiB0
eXBlOyBcCit9CisKICNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9D
T05URVhUKENsYXNzTmFtZSwgQmFyZVR5cGUsIFVwcGVyQ2xhc3NOYW1lLCBMb3dlckNsYXNzTmFt
ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgQXR0ck5hbWUsIFN0b3JhZ2VHZXR0ZXIp
IFwKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX0lOVEVSTkFMKENsYXNzTmFtZSwgU1ZH
RWxlbWVudCwgQmFyZVR5cGUsIFVwcGVyQ2xhc3NOYW1lLCBMb3dlckNsYXNzTmFtZSwgVXBwZXJQ
cm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgQXR0ck5hbWUsIFN0b3JhZ2VHZXR0ZXIsIGNvbnRleHRF
bGVtZW50KCkpIFwKIFBhc3NSZWZQdHI8Q2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNV
cHBlclByb3BlcnR5PiBDbGFzc05hbWU6Okxvd2VyUHJvcGVydHkjI0FuaW1hdGVkKCkgY29uc3Qg
XAogeyBcCiAgICAgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCA9IGNvbnRleHRFbGVtZW50KCk7
IFwKLSAgICBBU1NFUlQoY29udGV4dCAhPSAwKTsgXAorICAgIEFTU0VSVChjb250ZXh0KTsgXAog
ICAgIHJldHVybiBSZWZQdHI8Q2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclBy
b3BlcnR5PihuZXcgQ2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5
KGNvbnRleHQpKTsgXAorfSBcCitCYXJlVHlwZSYgQ2xhc3NOYW1lOjpMb3dlclByb3BlcnR5IyNS
ZWYoKSBcCit7IFwKKyAgICBCYXJlVHlwZSYgcmVmKFN0b3JhZ2VHZXR0ZXIpOyBcCisgICAgcmV0
dXJuIHJlZjsgXAorfQorCisjZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX05P
Tl9QT0QoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2VyQ2xhc3NOYW1l
LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgU3RvcmFnZUdldHRlcikg
XAorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfSU5URVJOQUwoQ2xhc3NOYW1lLCBDbGFz
c05hbWUsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93ZXJDbGFzc05hbWUsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBTdG9yYWdlR2V0dGVyLCB0aGlzKSBcCitQ
YXNzUmVmUHRyPENsYXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eT4g
Q2xhc3NOYW1lOjpMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIGNvbnN0IFwKK3sgXAorICAgIHJl
dHVybiBSZWZQdHI8Q2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5
PihuZXcgQ2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5KHRoaXMp
KTsgXAorfSBcCitCYXJlVHlwZSYgQ2xhc3NOYW1lOjpMb3dlclByb3BlcnR5IyNSZWYoKSBcCit7
IFwKKyAgICAvKiBUaGlzIGlzIE5PVCB1c2VkIGZvciBub24tUE9EIHR5cGVzISAqLyBcCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IFwKKyAgICBzdGF0aWMgQmFyZVR5cGUgdHlwZTsgXAorICAg
IHJldHVybiB0eXBlOyBcCiB9CiAKICNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2VyQ2xhc3NOYW1lLCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgU3RvcmFnZUdldHRlcikgXApA
QCAtMTM1LDYgKzIwMywxMSBAQCBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19JTlRFUk5B
TChDCiBQYXNzUmVmUHRyPENsYXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9w
ZXJ0eT4gQ2xhc3NOYW1lOjpMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIGNvbnN0IFwKIHsgXAog
ICAgIHJldHVybiBSZWZQdHI8Q2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclBy
b3BlcnR5PihuZXcgQ2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5
KHRoaXMpKTsgXAorfSBcCitCYXJlVHlwZSYgQ2xhc3NOYW1lOjpMb3dlclByb3BlcnR5IyNSZWYo
KSBcCit7IFwKKyAgICBCYXJlVHlwZSYgcmVmKFN0b3JhZ2VHZXR0ZXIpOyBcCisgICAgcmV0dXJu
IHJlZjsgXAogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTYsNyArMjY5LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVk
UmVzb3VyY2VzKCk7CiAgICAgfTsKIAotCiAgICAgc3RhdGljIGlubGluZSBTVkdFbGVtZW50KiBz
dmdfZHluYW1pY19jYXN0KE5vZGUqIG5vZGUpCiAgICAgewogICAgICAgICBTVkdFbGVtZW50KiBz
dmdFbGVtZW50ID0gMDsKQEAgLTIwOCw2ICsyODAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlIAogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZiAv
LyBLU1ZHX1NWR0VsZW1lbnRJbXBsX0gKKyNlbmRpZiAvLyBTVkdFbGVtZW50X0gKIAogLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAko
cmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtk
ZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAg
LTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19T
VVBQT1JUCiAjaW5jbHVkZSAiU1ZHRWxsaXBzZUVsZW1lbnQuaCIKIApAQCAtMzYsMTAgKzM3LDEw
IEBAIFNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxlbWVudChjb24KICAgICAsIFNWR1Rl
c3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKCkKLSAgICAsIG1fY3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3Bv
cnRFbGVtZW50KCkpKQotICAgICwgbV9jeShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwg
dmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9yeChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJ
RFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3J5KG5ldyBTVkdMZW5ndGgodGhpcywg
TE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX2N4KHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCkKKyAgICAsIG1fY3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fcngo
dGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9yeSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
KQogewogfSAgICAKIApAQCAtNDcsMjIgKzQ4LDIyIEBAIFNWR0VsbGlwc2VFbGVtZW50Ojp+U1ZH
RWxsaXBzZUVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEN4LCBjeCwgU1ZH
TmFtZXM6OmN4QXR0ci5sb2NhbE5hbWUoKSwgbV9jeC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0
aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5LmdldCgpKQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCos
IExlbmd0aCwgbGVuZ3RoLCBSeCwgcngsIFNWR05hbWVzOjpyeEF0dHIubG9jYWxOYW1lKCksIG1f
cnguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFJ5LCByeSwgU1ZHTmFtZXM6OnJ5QXR0ci5s
b2NhbE5hbWUoKSwgbV9yeS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05h
bWVzOjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3ksIGN5
LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5KQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ci5sb2NhbE5hbWUoKSwgbV9yeCkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwg
bGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIubG9jYWxOYW1lKCksIG1fcnkpCiAKIHZv
aWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUo
KTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAgIGN4
QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwotICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OmN5QXR0cikKLSAgICAgICAgY3lCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cnhBdHRy
KQotICAgICAgICByeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKLSAgICBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyeUF0dHIpCi0gICAgICAgIHJ5QmFzZVZhbHVl
KCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRDeEJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6Y3lBdHRyKQorICAgICAgICBzZXRDeUJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKKyAgICAgICAgc2V0UnhCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ5QXR0cikKKyAgICAgICAgc2V0UnlCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC03NiwzOSArNzcsMTIgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaQogCiBQYXRoIFNWR0VsbGlwc2VFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29u
c3QKIHsKLSAgICBmbG9hdCBfY3ggPSBjeCgpLT52YWx1ZSgpLCBfY3kgPSBjeSgpLT52YWx1ZSgp
OwotICAgIGZsb2F0IF9yeCA9IHJ4KCktPnZhbHVlKCksIF9yeSA9IHJ5KCktPnZhbHVlKCk7Ci0K
LSAgICByZXR1cm4gUGF0aDo6Y3JlYXRlRWxsaXBzZShGbG9hdFBvaW50KF9jeCwgX2N5KSwgX3J4
LCBfcnkpOworICAgIHJldHVybiBQYXRoOjpjcmVhdGVFbGxpcHNlKEZsb2F0UG9pbnQoY3goKS52
YWx1ZSgpLCBjeSgpLnZhbHVlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4
KCkudmFsdWUoKSwgcnkoKS52YWx1ZSgpKTsKIH0KIAotY29uc3QgU1ZHU3R5bGVkRWxlbWVudCog
U1ZHRWxsaXBzZUVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnQqIGNvbnRleHQpCi17Ci0gICAgLy8gQWxsIGF0dHJpYnV0ZSdzIGNvbnRleHRzIGFyZSBl
cXVhbCAoc28ganVzdCB0YWtlIHRoZSBvbmUgZnJvbSAnY3gnKS4KLSAgICBjb25zdCBTVkdTdHls
ZWRFbGVtZW50KiByZXN0b3JlID0gY3goKS0+Y29udGV4dCgpOwotCi0gICAgY3goKS0+c2V0Q29u
dGV4dChjb250ZXh0KTsKLSAgICBjeSgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHJ4KCkt
PnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgcnkoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLQot
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnRleHQpOwotICAg
IHJldHVybiByZXN0b3JlOwogfQogCi1ib29sIFNWR0VsbGlwc2VFbGVtZW50OjpoYXNQZXJjZW50
YWdlVmFsdWVzKCkgY29uc3QKLXsKLSAgICBpZiAoY3goKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5n
dGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgY3koKS0+dW5pdFR5cGUo
KSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgcngo
KS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwK
LSAgICAgICAgcnkoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BF
UkNFTlRBR0UpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci19Ci0KLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06
dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHJldmlz
aW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCAr
MjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBL
U1ZHX1NWR0VsbGlwc2VFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHRWxsaXBzZUVsZW1l
bnRJbXBsX0gKKyNpZm5kZWYgU1ZHRWxsaXBzZUVsZW1lbnRfSAorI2RlZmluZSBTVkdFbGxpcHNl
RWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtMzEsNyArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZQogewotICAgIGNsYXNzIFNWR0xlbmd0aDsKICAgICBjbGFzcyBTVkdFbGxpcHNlRWxlbWVudCA6
IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCkBAIC00OSwyMCArNDksMTYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
IHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsg
fQogICAgICAgICB2aXJ0dWFsIFBhdGggdG9QYXRoRGF0YSgpIGNvbnN0OwogCi0gICAgICAgIHZp
cnR1YWwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3Qg
U1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCk7Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZp
cnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0
aGlzOyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25z
dDsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVD
TEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgUmVmUHRyPFNWR0xlbmd0aD4sIEN4LCBjeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVu
Z3RoPiwgQ3ksIGN5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBSeCwgcngpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFJ5LCByeSkKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xl
bmd0aCwgQ3gsIGN4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBDeSwgY3kpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBTVkdMZW5ndGgsIFJ4LCByeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgUnksIHJ5KQogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw3IEBAIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Ojp+U1ZHRkVDb2xvck1hdHIK
IAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQs
IFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyLmxvY2Fs
TmFtZSgpLCBtX2luMSkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgVHlwZSwgdHlwZSwg
U1ZHTmFtZXM6OnR5cGVBdHRyLmxvY2FsTmFtZSgpLCBtX3R5cGUpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTnVtYmVyTGlzdCosIE51
bWJlckxpc3QsIG51bWJlckxpc3QsIFZhbHVlcywgdmFsdWVzLCBTVkdOYW1lczo6dmFsdWVzQXR0
ci5sb2NhbE5hbWUoKSwgbV92YWx1ZXMuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OU19OT05fUE9EKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOdW1iZXJMaXN0KiwgTnVt
YmVyTGlzdCwgbnVtYmVyTGlzdCwgVmFsdWVzLCB2YWx1ZXMsIFNWR05hbWVzOjp2YWx1ZXNBdHRy
LmxvY2FsTmFtZSgpLCBtX3ZhbHVlcy5nZXQoKSkKIAogdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaWZmdQogQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBkb3VibGUsIE51bWJlciwgbnVt
YmVyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSwgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0
dHIubG9jYWxOYW1lKCksIG1fc3VyZmFjZVNjYWxlKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBkb3VibGUsIE51bWJlciwgbnVtYmVy
LCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgsICJrZXJuZWxVbml0TGVuZ3Ro
WCIsIG1fa2VybmVsVW5pdExlbmd0aFgpCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGRvdWJsZSwgTnVtYmVyLCBudW1iZXIsIEtlcm5l
bFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSwgImtlcm5lbFVuaXRMZW5ndGhZIiwgbV9r
ZXJuZWxVbml0TGVuZ3RoWSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudCwgU1ZHQ29sb3IqLCBDb2xvciwgY29sb3IsIExpZ2h0aW5nQ29s
b3IsIGxpZ2h0aW5nQ29sb3IsIFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIubG9jYWxOYW1l
KCksIG1fbGlnaHRpbmdDb2xvci5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
X05PTl9QT0QoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdDb2xvciosIENvbG9yLCBj
b2xvciwgTGlnaHRpbmdDb2xvciwgbGlnaHRpbmdDb2xvciwgU1ZHTmFtZXM6OmxpZ2h0aW5nX2Nv
bG9yQXR0ci5sb2NhbE5hbWUoKSwgbV9saWdodGluZ0NvbG9yLmdldCgpKQogCiB2b2lkIFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlICphdHRyKQogewpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNw
cAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgU1ZHRkVJbWFnZUVsZW1lbnQ6
On5TVkdGRUltYWdlRWxlbWVudCgpCiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmRlcmVmKHRoaXMp
OwogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUltYWdlRWxlbWVudCwg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNw
ZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR05h
bWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ci5sb2NhbE5hbWUoKSwgbV9wcmVzZXJ2ZUFzcGVj
dFJhdGlvLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfTk9OX1BPRChTVkdG
RUltYWdlRWxlbWVudCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0
aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNw
ZWN0UmF0aW8sIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ci5sb2NhbE5hbWUoKSwg
bV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLmdldCgpKQogCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAko
cmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVNwZWN1CiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBkb3VibGUsIE51bWJlciwgbnVtYmVy
LCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSwgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIu
bG9jYWxOYW1lKCksIG1fc3VyZmFjZVNjYWxlKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgZG91YmxlLCBOdW1iZXIsIG51bWJlciwg
S2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYLCAia2VybmVsVW5pdExlbmd0aFgi
LCBtX2tlcm5lbFVuaXRMZW5ndGhYKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgZG91YmxlLCBOdW1iZXIsIG51bWJlciwgS2VybmVs
VW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZLCAia2VybmVsVW5pdExlbmd0aFkiLCBtX2tl
cm5lbFVuaXRMZW5ndGhZKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHQ29sb3IqLCBDb2xvciwgY29sb3IsIExpZ2h0aW5nQ29s
b3IsIGxpZ2h0aW5nQ29sb3IsIFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIubG9jYWxOYW1l
KCksIG1fbGlnaHRpbmdDb2xvci5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
X05PTl9QT0QoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHQ29sb3IqLCBDb2xvciwg
Y29sb3IsIExpZ2h0aW5nQ29sb3IsIGxpZ2h0aW5nQ29sb3IsIFNWR05hbWVzOjpsaWdodGluZ19j
b2xvckF0dHIubG9jYWxOYW1lKCksIG1fbGlnaHRpbmdDb2xvci5nZXQoKSkKIAogdm9pZCBTVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqIGF0dHIpCiB7ICAgIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxk
Zm94QGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNh
bS53ZWluaWdAZ21haWwuY29tPgogCkBAIC00MywyMSArNDMsMjAgQEAgU1ZHRmlsdGVyRWxlbWVu
dDo6U1ZHRmlsdGVyRWxlbWVudChjb25zdAogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpCiAgICAgLCBtX2ZpbHRlclVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9P
QkpFQ1RCT1VORElOR0JPWCkKICAgICAsIG1fcHJpbWl0aXZlVW5pdHMoU1ZHVW5pdFR5cGVzOjpT
VkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgodGhp
cywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVuZ3Ro
KHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV93aWR0aChuZXcg
U1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2hl
aWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQor
ICAgICwgbV94KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBt
X2hlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV9maWx0ZXJSZXNYKDApCiAg
ICAgLCBtX2ZpbHRlclJlc1koMCkKLQogewogICAgIC8vIFNwZWM6IElmIHRoZSBhdHRyaWJ1dGUg
aXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3
ZXJlIHNwZWNpZmllZC4KLSAgICBtX3gtPnNldFZhbHVlQXNTdHJpbmcoIi0xMCUiKTsKLSAgICBt
X3ktPnNldFZhbHVlQXNTdHJpbmcoIi0xMCUiKTsKLQorICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKSk7CisgICAgc2V0WUJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiKSk7CisgCiAgICAgLy8gU3Bl
YzogSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlm
IGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgotICAgIG1fd2lkdGgtPnNldFZhbHVl
QXNTdHJpbmcoIjEyMCUiKTsKLSAgICBtX2hlaWdodC0+c2V0VmFsdWVBc1N0cmluZygiMTIwJSIp
OworICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgs
ICIxMjAlIikpOworICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCwgIjEyMCUiKSk7CiB9CiAKIFNWR0ZpbHRlckVsZW1lbnQ6On5TVkdGaWx0ZXJF
bGVtZW50KCkKQEAgLTY2LDEwICs2NSwxMCBAQCBTVkdGaWx0ZXJFbGVtZW50Ojp+U1ZHRmlsdGVy
RWxlbWVudCgpCiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1l
bnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBGaWx0ZXJVbml0cywgZmlsdGVyVW5p
dHMsIFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIubG9jYWxOYW1lKCksIG1fZmlsdGVyVW5pdHMp
CiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBpbnQsIEVu
dW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgUHJpbWl0aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzLCBT
VkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX3ByaW1pdGl2ZVVuaXRz
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwg
bV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2Nh
bE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmls
dGVyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZH
TmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwg
bGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCks
IG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVy
RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRy
LmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0
ZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0
dHIubG9jYWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0Zp
bHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZH
TmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWln
aHQpCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBsb25n
LCBJbnRlZ2VyLCBpbnRlZ2VyLCBGaWx0ZXJSZXNYLCBmaWx0ZXJSZXNYLCAiZmlsdGVyUmVzWCIs
IG1fZmlsdGVyUmVzWCkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVs
ZW1lbnQsIGxvbmcsIEludGVnZXIsIGludGVnZXIsIEZpbHRlclJlc1ksIGZpbHRlclJlc1ksICJm
aWx0ZXJSZXNZIiwgbV9maWx0ZXJSZXNZKQogCkBAIC05MSwxMyArOTAsMTMgQEAgdm9pZCBTVkdG
aWx0ZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAgICBlbHNlIGlmICh2YWx1ZSA9
PSAib2JqZWN0Qm91bmRpbmdCb3giKQogICAgICAgICAgICAgc2V0UHJpbWl0aXZlVW5pdHNCYXNl
VmFsdWUoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKTsKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhC
YXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhCYXNlVmFs
dWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZhbHVlKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0
aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5z
ZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAg
ICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgcmV0
dXJuOwogICAgICAgICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KSkgcmV0dXJuOwpAQCAtMTE3LDEzICsxMTYsMzEgQEAgU1ZHUmVzb3VyY2UqIFNWR0ZpbHRlckVs
ZW1lbnQ6OmNhbnZhc1JlcwogCiAgICAgYm9vbCBmaWx0ZXJCQm94TW9kZSA9IGZpbHRlclVuaXRz
KCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwogICAg
IG1fZmlsdGVyLT5zZXRGaWx0ZXJCb3VuZGluZ0JveE1vZGUoZmlsdGVyQkJveE1vZGUpOwotICAg
IAotICAgIHgoKS0+c2V0QmJveFJlbGF0aXZlKGZpbHRlckJCb3hNb2RlKTsKLSAgICB5KCktPnNl
dEJib3hSZWxhdGl2ZShmaWx0ZXJCQm94TW9kZSk7Ci0gICAgd2lkdGgoKS0+c2V0QmJveFJlbGF0
aXZlKGZpbHRlckJCb3hNb2RlKTsKLSAgICBoZWlnaHQoKS0+c2V0QmJveFJlbGF0aXZlKGZpbHRl
ckJCb3hNb2RlKTsKLSAgICBtX2ZpbHRlci0+c2V0RmlsdGVyUmVjdChGbG9hdFJlY3QoeCgpLT52
YWx1ZSgpLCB5KCktPnZhbHVlKCksIHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52YWx1ZSgp
KSk7Ci0gICAgCisKKyAgICBmbG9hdCBfeCwgX3ksIHcsIGg7CisKKyAgICBpZiAoZmlsdGVyQkJv
eE1vZGUgJiYgeCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAg
IF94ID0geCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpIC8gMTAwLjA7CisgICAgZWxzZQorICAg
ICAgICBfeCA9IHgoKS52YWx1ZSgpOworCisgICAgaWYgKGZpbHRlckJCb3hNb2RlICYmIHkoKS51
bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAgICAgICBfeSA9IHkoKS52YWx1
ZUluU3BlY2lmaWVkVW5pdHMoKSAvIDEwMC4wOworICAgIGVsc2UKKyAgICAgICAgX3kgPSB5KCku
dmFsdWUoKTsKKworICAgIGlmIChmaWx0ZXJCQm94TW9kZSAmJiB3aWR0aCgpLnVuaXRUeXBlKCkg
PT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgIHcgPSB3aWR0aCgpLnZhbHVlSW5TcGVj
aWZpZWRVbml0cygpIC8gMTAwLjA7CisgICAgZWxzZQorICAgICAgICB3ID0gd2lkdGgoKS52YWx1
ZSgpOworCisgICAgaWYgKGZpbHRlckJCb3hNb2RlICYmIGhlaWdodCgpLnVuaXRUeXBlKCkgPT0g
TGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgIGggPSBoZWlnaHQoKS52YWx1ZUluU3BlY2lm
aWVkVW5pdHMoKSAvIDEwMC4wOworICAgIGVsc2UKKyAgICAgICAgaCA9IGhlaWdodCgpLnZhbHVl
KCk7CisKKyAgICBtX2ZpbHRlci0+c2V0RmlsdGVyUmVjdChGbG9hdFJlY3QoX3gsIF95LCB3LCBo
KSk7CisKICAgICBib29sIHByaW1pdGl2ZUJCb3hNb2RlID0gcHJpbWl0aXZlVW5pdHMoKSA9PSBT
VkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7CiAgICAgbV9maWx0
ZXItPnNldEVmZmVjdEJvdW5kaW5nQm94TW9kZShwcmltaXRpdmVCQm94TW9kZSk7CiAgICAgLy8g
RklYTUU6IFdoZW4gZG9lcyB0aGlzIGluZm8gZ2V0IHBhc3NlZCB0byB0aGUgZmlsdGVycyBlbGVt
ZW50cz8KQEAgLTE0Myw2ICsxNjAsNiBAQCBTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxlbWVudDo6
Y2FudmFzUmVzCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JU
CiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmgJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBr
ZGUub3JnPgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogICAgIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KIApAQCAtMjEsOCArMjEsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEt
MTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0ZpbHRlckVsZW1lbnRJbXBsX0gKLSNk
ZWZpbmUgS1NWR19TVkdGaWx0ZXJFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0ZpbHRlckVsZW1l
bnRfSAorI2RlZmluZSBTVkdGaWx0ZXJFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAK
ICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgpAQCAtNTksMTAgKzYwLDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZpbHRlckVsZW1lbnQsIGludCwgaW50LCBGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMpCiAg
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBp
bnQsIGludCwgUHJpbWl0aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzKQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVm
UHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwg
eSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1l
bnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5n
dGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xl
bmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zp
bHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdM
ZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdo
dCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1l
bnQsIGxvbmcsIGxvbmcsIEZpbHRlclJlc1gsIGZpbHRlclJlc1gpCiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBsb25nLCBsb25nLCBGaWx0
ZXJSZXNZLCBmaWx0ZXJSZXNZKQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9u
IDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
cHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAj
aWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaCIKIApAQCAtMzUsMzcgKzM2LDM3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvYykKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgbV94KG5l
dyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1f
eShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAg
ICwgbV93aWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQo
KSkpCi0gICAgLCBtX2hlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3Bv
cnRFbGVtZW50KCkpKQorICAgICwgbV94KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1f
eSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewotICAgIC8v
IFNwZWMgOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMg
YXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgbV93aWR0aC0+c2V0
VmFsdWVBc1N0cmluZygiMTAwJSIpOwotICAgIG1faGVpZ2h0LT5zZXRWYWx1ZUFzU3RyaW5nKCIx
MDAlIik7CisgICAgLy8gU3BlYzogSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0
aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgorICAg
IHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAl
IikpOworICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCwgIjEwMCUiKSk7CiB9CiAKIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6flNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcygpCiB7CiB9CiAKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcywgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5s
b2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kuZ2V0KCkpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVz
Ojp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xl
bmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0
dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcywgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRy
LmxvY2FsTmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNW
R05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodCkKIEFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU3Ry
aW5nLCBTdHJpbmcsIHN0cmluZywgUmVzdWx0LCByZXN1bHQsIFNWR05hbWVzOjpyZXN1bHRBdHRy
LmxvY2FsTmFtZSgpLCBtX3Jlc3VsdCkKIAogdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikK
IHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNT
dHJpbmcodmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpyZXN1bHRBdHRyKQogICAgICAgICBzZXRSZXN1bHRCYXNlVmFsdWUodmFs
dWUpOwogICAgIGVsc2UKQEAgLTc3LDI2ICs3OCwzMSBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAgQVNTRVJUKGZpbHRlckVmZmVjdCk7CiAgICAgaWYgKCFm
aWx0ZXJFZmZlY3QpCiAgICAgICAgIHJldHVybjsKKwogICAgIGJvb2wgYmJveCA9IGZhbHNlOwog
ICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVz
OjpmaWx0ZXJUYWcpKQogICAgICAgICBiYm94ID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyRWxlbWVu
dCo+KHBhcmVudE5vZGUoKSktPnByaW1pdGl2ZVVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwogCi0gICAgeCgpLT5zZXRCYm94UmVsYXRpdmUo
YmJveCk7Ci0gICAgeSgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgd2lkdGgoKS0+c2V0
QmJveFJlbGF0aXZlKGJib3gpOwotICAgIGhlaWdodCgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7
Ci0gICAgZmxvYXQgX3ggPSB4KCktPnZhbHVlKCksIF95ID0geSgpLT52YWx1ZSgpOwotICAgIGZs
b2F0IF93aWR0aCA9IHdpZHRoKCktPnZhbHVlKCksIF9oZWlnaHQgPSBoZWlnaHQoKS0+dmFsdWUo
KTsKLSAgICBpZiAoYmJveCkKLSAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRTdWJSZWdpb24oRmxv
YXRSZWN0KF94ICogMTAwLmYsIF95ICogMTAwLmYsIF93aWR0aCAqIDEwMC5mLCBfaGVpZ2h0ICog
MTAwLmYpKTsKLSAgICBlbHNlCi0gICAgICAgIGZpbHRlckVmZmVjdC0+c2V0U3ViUmVnaW9uKEZs
b2F0UmVjdChfeCwgX3ksIF93aWR0aCwgX2hlaWdodCkpOwotCisgICAgZmxvYXQgX3gsIF95LCBf
d2lkdGgsIF9oZWlnaHQ7CisgIAorICAgIGlmIChiYm94KSB7CisgICAgICAgIF94ID0geCgpLnZh
bHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBfeSA9IHkoKS52YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKTsKKyAgICAgICAgX3dpZHRoID0gd2lkdGgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMo
KTsKKyAgICAgICAgX2hlaWdodCA9IGhlaWdodCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIF94ID0geCgpLnZhbHVlKCk7CisgICAgICAgIF95ID0geSgp
LnZhbHVlKCk7CisgICAgICAgIF93aWR0aCA9IHdpZHRoKCkudmFsdWUoKTsKKyAgICAgICAgX2hl
aWdodCA9IGhlaWdodCgpLnZhbHVlKCk7CisgICAgfSAKKyAgICAKKyAgICBmaWx0ZXJFZmZlY3Qt
PnNldFN1YlJlZ2lvbihGbG9hdFJlY3QoX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQpKTsKICAgICBm
aWx0ZXJFZmZlY3QtPnNldFJlc3VsdChyZXN1bHQoKSk7CiB9CiAKIH0KIAotLy8gdmltOnRzPTQ6
bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCwxNSArMjAsMTUgQEAKICAgICBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNJbXBsX0gKKyNpZm5kZWYgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzX0gKKyNkZWZpbmUgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzX0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdTdHlsZWRF
bGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdGaWx0ZXJFZmZl
Y3Q7Ci0gICAgY2xhc3MgU1ZHTGVuZ3RoOwogCiAgICAgY2xhc3MgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzIDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQKICAgICB7CkBAIC01
MCwxMCArNTAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xl
bmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZH
TGVuZ3RoPiwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNW
R0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgs
IFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIEhlaWdodCwgaGVpZ2h0KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTdHJpbmcsIFN0cmluZywg
UmVzdWx0LCByZXN1bHQpCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0
VG9WaWV3Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRUb1Zp
ZXdCb3guY3BwCShyZXZpc2lvbiAxODE3NykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRv
Vmlld0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgU1ZHRml0VG9WaWV3
Qm94Ojp+U1ZHRml0VG9WaWV3Qm94KCkKIH0KIAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlNfV0lUSF9DT05URVhUKFNWR0ZpdFRvVmlld0JveCwgRmxvYXRSZWN0LCBSZWN0LCByZWN0LCBW
aWV3Qm94LCB2aWV3Qm94LCBTVkdOYW1lczo6dmlld0JveEF0dHIubG9jYWxOYW1lKCksIG1fdmll
d0JveCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChTVkdGaXRU
b1ZpZXdCb3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBw
cmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJh
dGlvLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIubG9jYWxOYW1lKCksIG1fcHJl
c2VydmVBc3BlY3RSYXRpby5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJ
VEhfQ09OVEVYVF9OT05fUE9EKFNWR0ZpdFRvVmlld0JveCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
byosIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNw
ZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJh
dGlvQXR0ci5sb2NhbE5hbWUoKSwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLmdldCgpKQogCiB2b2lk
IFNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94KGNvbnN0IFN0cmluZyYgc3RyKQogewpAQCAt
NzQsNyArNzQsNyBAQCB2b2lkIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VWaWV3Qm94KGNvbnN0CiAg
ICAgCiAgICAgaWYgKHAgPCBlbmQpIC8vIG5vdGhpbmcgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhlIGxh
c3QsIGZvdXJ0aCBudW1iZXIKICAgICAgICAgZ290byBiYWlsX291dDsKLQorICAgIAogICAgIHNl
dFZpZXdCb3hCYXNlVmFsdWUoRmxvYXRSZWN0KHgsIHksIHcsIGgpKTsKICAgICByZXR1cm47CiAK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBACiAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuaCIKQEAgLTQwLDEwICs0MSwxMCBAQCBTVkdGb3JlaWduT2JqZWN0RWxl
bWVudDo6U1ZHRm9yZWlnbk9iamVjCiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3Bh
Y2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX3gobmV3
IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95
KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAg
LCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgp
KSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9y
dEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAg
LTUxLDIzICs1MiwyMyBAQCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6flNWR0ZvcmVpZ25PYmpl
CiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRy
LmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHks
IFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0
aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCks
IG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVu
Z3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBt
X3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2Fs
TmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdO
YW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwg
bV9oZWlnaHQpCiAKIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
Ojp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsK
KyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2
YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0g
ICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNl
dFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAg
ICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNl
dFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7
CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU19QUk9QX1dJRFRILCB2YWx1ZSk7CiAg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKLSAg
ICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAg
ICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlKSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU19QUk9QX0hFSUdIVCwgdmFs
dWUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cikpCkBAIC04MCwxMiArODEsMTIgQEAgdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxl
bWVudDo6cGFyc2VNYXBwZQogICAgIH0KIH0KIAotUmVuZGVyT2JqZWN0ICpTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEgKmFyZW5hLCBSZW5kZXJTdHls
ZSAqc3R5bGUpCitSZW5kZXJPYmplY3QqIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVS
ZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICBy
ZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRm9yZWlnbk9iamVjdCh0aGlzKTsKIH0KIAotYm9vbCBT
VkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlICpj
aGlsZCkgY29uc3QKK2Jvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoTm9kZSogY2hpbGQpIGNvbnN0CiB7CiAgICAgLy8gU2tpcCBvdmVyIFNWRyBy
dWxlcyB3aGljaCBkaXNhbGxvdyBub24tU1ZHIGtpZHMKICAgICByZXR1cm4gU3R5bGVkRWxlbWVu
dDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZCk7CkBAIC05Myw2ICs5NCw2IEBAIGJv
b2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNoaWxkU2hvdWwKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8g
dmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDggKzE5LDkgQEAKICAgICBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50
SW1wbF9ICisjaWZuZGVmIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50X0gKKyNkZWZpbmUgU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNW
R1Rlc3RzLmgiCkBAIC01OCwxMCArNTksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkgCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQogCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVm
UHRyPFNWR0xlbmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwg
SGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgsIHgpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBo
ZWlnaHQpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0
LDcgKzU0LDcgQEAgU1ZHR3JhZGllbnRFbGVtZW50Ojp+U1ZHR3JhZGllbnRFbGVtZW50KAogfQog
CiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdHcmFkaWVudEVsZW1lbnQsIGludCwg
RW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBHcmFkaWVudFVuaXRzLCBncmFkaWVudFVuaXRzLCBT
VkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIubG9jYWxOYW1lKCksIG1fZ3JhZGllbnRVbml0cykK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0dyYWRpZW50RWxlbWVudCwgU1ZHVHJh
bnNmb3JtTGlzdCosIFRyYW5zZm9ybUxpc3QsIHRyYW5zZm9ybUxpc3QsIEdyYWRpZW50VHJhbnNm
b3JtLCBncmFkaWVudFRyYW5zZm9ybSwgU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0ci5s
b2NhbE5hbWUoKSwgbV9ncmFkaWVudFRyYW5zZm9ybS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TX05PTl9QT0QoU1ZHR3JhZGllbnRFbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0
KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgR3JhZGllbnRUcmFuc2Zvcm0sIGdyYWRp
ZW50VHJhbnNmb3JtLCBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgp
LCBtX2dyYWRpZW50VHJhbnNmb3JtLmdldCgpKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHR3JhZGllbnRFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgU3By
ZWFkTWV0aG9kLCBzcHJlYWRNZXRob2QsIFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyLmxvY2Fs
TmFtZSgpLCBtX3NwcmVhZE1ldGhvZCkKIAogdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0hlbHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
SGVscGVyLmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdIZWxw
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0y
MSw2ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQ
UE9SVAogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogCkBAIC0zNiwyMiArMzcsMTggQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1mbG9hdCBTVkdIZWxwZXI6
OlBlcmNlbnRhZ2VPZlZpZXdwb3J0KGZsb2F0IHZhbHVlLCBjb25zdCBTVkdFbGVtZW50KiB2aWV3
cG9ydEVsZW1lbnQsIExlbmd0aE1vZGUgbW9kZSkKK2Zsb2F0IFNWR0hlbHBlcjo6UGVyY2VudGFn
ZU9mVmlld3BvcnQoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQqIHZpZXdwb3J0RWxlbWVu
dCwgU1ZHTGVuZ3RoTW9kZSBtb2RlKQogewogICAgIGZsb2F0IHdpZHRoID0gMCwgaGVpZ2h0ID0g
MDsKICAgICBpZiAoIXZpZXdwb3J0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIDAuMDsKLSAKKwog
ICAgIGlmICh2aWV3cG9ydEVsZW1lbnQtPmlzU1ZHKCkpIHsKICAgICAgICAgY29uc3QgU1ZHU1ZH
RWxlbWVudCogc3ZnID0gc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHU1ZHRWxlbWVudCo+KHZpZXdwb3J0
RWxlbWVudCk7Ci0gICAgICAgIGlmIChzdmctPmhhc0F0dHJpYnV0ZShTVkdOYW1lczo6dmlld0Jv
eEF0dHIpKSB7Ci0gICAgICAgICAgICB3aWR0aCA9IHN2Zy0+dmlld0JveCgpLndpZHRoKCk7Ci0g
ICAgICAgICAgICBoZWlnaHQgPSBzdmctPnZpZXdCb3goKS5oZWlnaHQoKTsKLSAgICAgICAgfSBl
bHNlIGlmIChzdmctPndpZHRoKCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RI
VFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgICAgICAgICAgc3ZnLT5oZWlnaHQoKS0+dW5pdFR5
cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UpIHsKLSAgICAgICAg
ICAgIC8vIFRPRE86IFNob3VsZG4ndCB3L2ggYmUgbXVsdGlwbGllZCB3aXRoIHRoZSBwZXJjZW50
YWdlIHZhbHVlcz8hCi0gICAgICAgICAgICAvLyBBRkFJSywgdGhpcyBhc3N1bWVzIHdpZHRoICYg
aGVpZ2h0ID09IDEwMCUsIFJvYj8/Ci0gICAgICAgICAgICBEb2N1bWVudCAqZG9jID0gc3ZnLT5k
b2N1bWVudCgpOworCisgICAgICAgIGlmIChzdmctPndpZHRoKCkudW5pdFR5cGUoKSA9PSBMZW5n
dGhUeXBlUGVyY2VudGFnZSB8fAorICAgICAgICAgICAgc3ZnLT5oZWlnaHQoKS51bml0VHlwZSgp
ID09IExlbmd0aFR5cGVQZXJjZW50YWdlKSB7CisgICAgICAgICAgICBEb2N1bWVudCogZG9jID0g
c3ZnLT5kb2N1bWVudCgpOwogICAgICAgICAgICAgaWYgKGRvYy0+ZG9jdW1lbnRFbGVtZW50KCkg
PT0gc3ZnKSB7CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBhc2sgdGhlIGNhbnZhcyBm
b3IgdGhlIGZ1bGwgImNhbnZhcyBzaXplIi4uLgogICAgICAgICAgICAgICAgIFJlbmRlclZpZXcq
IHZpZXcgPSBzdGF0aWNfY2FzdDxSZW5kZXJWaWV3ICo+KGRvYy0+cmVuZGVyZXIoKSk7CkBAIC02
MSwyMiArNTgsMjIgQEAgZmxvYXQgU1ZHSGVscGVyOjpQZXJjZW50YWdlT2ZWaWV3cG9ydChmbAog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHdpZHRoID0gc3ZnLT53aWR0aCgpLT52YWx1ZSgpOwotICAgICAgICAgICAgaGVpZ2h0
ID0gc3ZnLT5oZWlnaHQoKS0+dmFsdWUoKTsKKyAgICAgICAgICAgIHdpZHRoID0gc3ZnLT53aWR0
aCgpLnZhbHVlKCk7CisgICAgICAgICAgICBoZWlnaHQgPSBzdmctPmhlaWdodCgpLnZhbHVlKCk7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobW9kZSA9PSBMTV9XSURUSCkKKyAgICBpZiAo
bW9kZSA9PSBMZW5ndGhNb2RlV2lkdGgpCiAgICAgICAgIHJldHVybiB2YWx1ZSAqIHdpZHRoOwot
ICAgIGVsc2UgaWYgKG1vZGUgPT0gTE1fSEVJR0hUKQorICAgIGVsc2UgaWYgKG1vZGUgPT0gTGVu
Z3RoTW9kZUhlaWdodCkKICAgICAgICAgcmV0dXJuIHZhbHVlICogaGVpZ2h0OwotICAgIGVsc2Ug
aWYgKG1vZGUgPT0gTE1fT1RIRVIpCisgICAgZWxzZSBpZiAobW9kZSA9PSBMZW5ndGhNb2RlT3Ro
ZXIpCiAgICAgICAgIHJldHVybiB2YWx1ZSAqIHNxcnQocG93KGRvdWJsZSh3aWR0aCksIDIpICsg
cG93KGRvdWJsZShoZWlnaHQpLCAyKSkgLyBzcXJ0KDIuMCk7CiAgICAgCiAgICAgcmV0dXJuIDAu
MDsKIH0KIAotdm9pZCBTVkdIZWxwZXI6OnBhcnNlU2VwYXJhdGVkTGlzdChTVkdTdHJpbmdMaXN0
ICpsaXN0LCBjb25zdCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikKK3ZvaWQgU1ZHSGVs
cGVyOjpwYXJzZVNlcGFyYXRlZExpc3QoU1ZHU3RyaW5nTGlzdCogbGlzdCwgY29uc3QgU3RyaW5n
JiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIpCiB7CiAgICAgLy8gVE9ETyA6IG1vcmUgZXJyb3IgY2hl
Y2tpbmcvcmVwb3J0aW5nCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC05MSw2ICs4OCw2
IEBAIHZvaWQgU1ZHSGVscGVyOjpwYXJzZVNlcGFyYXRlZExpc3QoU1ZHU3QKIAogfQogCi0vLyB2
aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHSGVscGVyLmgJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZp
bmUgS1NWR19TVkdIZWxwZXJfSAogI2lmZGVmIFNWR19TVVBQT1JUCiAKKyNpbmNsdWRlICJTVkdM
ZW5ndGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zMiwxNiArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU1ZH
U3RyaW5nTGlzdDsKIAogICAgIC8vIEtTVkcgZXh0ZW5zaW9uCi0gICAgZW51bSBMZW5ndGhNb2Rl
IHsKLSAgICAgICAgTE1fVU5LTk9XTiA9IDAsCi0gICAgICAgIExNX1dJRFRILAotICAgICAgICBM
TV9IRUlHSFQsCi0gICAgICAgIExNX09USEVSCi0gICAgfTsKLQogICAgIGNsYXNzIFNWR0hlbHBl
ciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgZmxvYXQgUGVyY2VudGFnZU9mVmlld3Bv
cnQoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQgKnZpZXdwb3J0RWxlbWVudCwgTGVuZ3Ro
TW9kZSBtb2RlKTsKKyAgICAgICAgc3RhdGljIGZsb2F0IFBlcmNlbnRhZ2VPZlZpZXdwb3J0KGZs
b2F0IHZhbHVlLCBjb25zdCBTVkdFbGVtZW50ICp2aWV3cG9ydEVsZW1lbnQsIFNWR0xlbmd0aE1v
ZGUgbW9kZSk7CiAKICAgICAgICAgc3RhdGljIHZvaWQgcGFyc2VTZXBhcmF0ZWRMaXN0KFNWR1N0
cmluZ0xpc3QgKmxpc3QsIGNvbnN0IFN0cmluZyAmZGF0YSwgVUNoYXIgZGVsaW1pdGVyID0gJywn
KTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+
CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+Ci0gICAgICAgICAgICAgICAgICAyMDA2ICAgICAgIEFsZXhhbmRlciBLZWxsZXR0IDxseXBh
bm92QGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA2IEFsZXhhbmRlciBLZWxsZXR0IDxs
eXBhbm92QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKIApAQCAtMjIsNiArMjIsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZk
ZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdJbWFnZUVsZW1lbnQuaCIKIApAQCAtNDUsMTAg
KzQ2LDEwIEBAIFNWR0ltYWdlRWxlbWVudDo6U1ZHSW1hZ2VFbGVtZW50KGNvbnN0IFEKICAgICAs
IFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAg
ICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9X
SURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywg
TE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5n
dGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5l
dyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBt
X3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWln
aHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiAgICAgLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8obmV3
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8odGhpcykpCiAgICAgLCBtX2ltYWdlTG9hZGVyKHRoaXMp
CiB7CkBAIC01OCwyNiArNTksMjYgQEAgU1ZHSW1hZ2VFbGVtZW50Ojp+U1ZHSW1hZ2VFbGVtZW50
KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50
LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2Fs
TmFtZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFn
ZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0
dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0
aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVu
Z3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5h
bWUoKSwgbV9oZWlnaHQuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJ
bWFnZUVsZW1lbnQsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qLCBQcmVzZXJ2ZUFzcGVjdFJhdGlv
LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIubG9jYWxOYW1lKCksIG1f
cHJlc2VydmVBc3BlY3RSYXRpby5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFt
ZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05h
bWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lk
dGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGgpCitBTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwg
bV9oZWlnaHQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19OT05fUE9EKFNWR0ltYWdl
RWxlbWVudCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0aW8sIHBy
ZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0
aW8sIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ci5sb2NhbE5hbWUoKSwgbV9wcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmdldCgpKQogCiB2b2lkIFNWR0ltYWdlRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFs
dWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0
cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAg
ICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUp
KTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0
UmF0aW9BdHRyKQogICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKCktPnBhcnNl
UHJlc2VydmVBc3BlY3RSYXRpbyh2YWx1ZS5pbXBsKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NfUFJPUF9XSURUSCwgdmFsdWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIGhlaWdodEJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVl
KFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NfUFJPUF9IRUlHSFQsIHZhbHVlKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpAQCAtMTE0
LDYgKzExNSw2IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjphdHRhY2goKQogCiB9CiAKLS8vIHZp
bTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMTgxNzYpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVy
bWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3Rv
biwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0ltYWdlRWxlbWVu
dEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0ltYWdlRWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdJ
bWFnZUVsZW1lbnRfSAorI2RlZmluZSBTVkdJbWFnZUVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NV
UFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTY2
LDEwICs2NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29s
LCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKSAK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVm
ZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFn
ZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZH
TGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdM
ZW5ndGgsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0
aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvKiwgUmVmUHRyPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+LCBQcmVzZXJ2ZUFzcGVjdFJh
dGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogCiAgICAgICAgIFNWR0ltYWdlTG9hZGVyIG1faW1h
Z2VMb2FkZXI7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aC5jcHAJKHJldmlzaW9uIDE4MTc2KQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVy
bWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMTAsNyArMTAsNyBAQAogICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFuIG9mCiAgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIApAQCAt
MjEsODAgKzIxLDIxMSBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZH
X1NVUFBPUlQKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKIAotI2luY2x1ZGUgIkludFJlY3QuaCIK
LSNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCi0jaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgotI2luY2x1
ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKKyNpbmNsdWRlICJE
ZXByZWNhdGVkU3RyaW5nLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAi
U1ZHSGVscGVyLmgiCisjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgInN2
Z3BhdGhwYXJzZXIuaCIKLSNpbmNsdWRlIDxtYXRoLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
Ci0KLS8vIGtlZXAgdHJhY2sgb2YgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgdW5pdCB0eXBl
Ci1zdGF0aWMgY29uc3QgY2hhciogVW5pdFRleHRbXSA9Ci17Ci0gICAgIiIsICIiLAotICAgICIl
IiwgImVtIiwKLSAgICAiZXgiLCAicHgiLAotICAgICJjbSIsICJtbSIsCi0gICAgImluIiwgInB0
IiwKLSAgICAicGMiCi19OworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotU1ZHTGVuZ3RoOjpTVkdMZW5ndGgoY29uc3QgU1ZHU3R5bGVkRWxlbWVu
dCogY29udGV4dCwgTGVuZ3RoTW9kZSBtb2RlLCBjb25zdCBTVkdFbGVtZW50KiB2aWV3cG9ydCkK
LSAgICA6IFNoYXJlZDxTVkdMZW5ndGg+KCkKLSAgICAsIG1fdmFsdWUoMCkKLSAgICAsIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzKDApCi0gICAgLCBtX21vZGUobW9kZSkKLSAgICAsIG1fYmJveFJl
bGF0aXZlKGZhbHNlKQotICAgICwgbV91bml0VHlwZShTVkdfTEVOR1RIVFlQRV9VTktOT1dOKQot
ICAgICwgbV9yZXF1aXJlc0xheW91dChmYWxzZSkKLSAgICAsIG1fY29udGV4dChjb250ZXh0KQot
ICAgICwgbV92aWV3cG9ydEVsZW1lbnQodmlld3BvcnQpCisvLyBIZWxwZXIgZnVuY3Rpb25zCitp
bmxpbmUgdW5zaWduZWQgaW50IHN0b3JlVW5pdChTVkdMZW5ndGhNb2RlIG1vZGUsIFNWR0xlbmd0
aFR5cGUgdHlwZSkKIHsKKyAgICByZXR1cm4gKG1vZGUgPDwgNCkgfCB0eXBlOwogfQogCi1TVkdM
ZW5ndGg6On5TVkdMZW5ndGgoKQoraW5saW5lIFNWR0xlbmd0aE1vZGUgZXh0cmFjdE1vZGUodW5z
aWduZWQgaW50IHVuaXQpCiB7CisgICAgdW5zaWduZWQgaW50IG1vZGUgPSB1bml0ID4+IDQ7ICAg
IAorICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMZW5ndGhNb2RlPihtb2RlKTsKK30KKworaW5s
aW5lIFNWR0xlbmd0aFR5cGUgZXh0cmFjdFR5cGUodW5zaWduZWQgaW50IHVuaXQpCit7CisgICAg
dW5zaWduZWQgaW50IG1vZGUgPSB1bml0ID4+IDQ7CisgICAgdW5zaWduZWQgaW50IHR5cGUgPSB1
bml0IF4gKG1vZGUgPDwgNCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+
KHR5cGUpOworfQorCitpbmxpbmUgU3RyaW5nIGxlbmd0aFR5cGVUb1N0cmluZyhTVkdMZW5ndGhU
eXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMZW5ndGhUeXBlVW5r
bm93bjoKKyAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6CisgICAgICAgIHJldHVybiAiIjsgICAg
CisgICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToKKyAgICAgICAgcmV0dXJuICIlIjsKKyAg
ICBjYXNlIExlbmd0aFR5cGVFTVM6CisgICAgICAgIHJldHVybiAiZW0iOworICAgIGNhc2UgTGVu
Z3RoVHlwZUVYUzoKKyAgICAgICAgcmV0dXJuICJleCI7CisgICAgY2FzZSBMZW5ndGhUeXBlUFg6
CisgICAgICAgIHJldHVybiAicHgiOworICAgIGNhc2UgTGVuZ3RoVHlwZUNNOgorICAgICAgICBy
ZXR1cm4gImNtIjsKKyAgICBjYXNlIExlbmd0aFR5cGVNTToKKyAgICAgICAgcmV0dXJuICJtbSI7
CisgICAgY2FzZSBMZW5ndGhUeXBlSU46CisgICAgICAgIHJldHVybiAiaW4iOworICAgIGNhc2Ug
TGVuZ3RoVHlwZVBUOgorICAgICAgICByZXR1cm4gInB0IjsKKyAgICBjYXNlIExlbmd0aFR5cGVQ
QzoKKyAgICAgICAgcmV0dXJuICJwYyI7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCi1TVkdMZW5ndGg6OlNWR0xlbmd0aFR5cGUgU1ZHTGVuZ3RoOjp1bml0VHlwZSgpIGNvbnN0
CitpbmxpbmUgU1ZHTGVuZ3RoVHlwZSBzdHJpbmdUb0xlbmd0aFR5cGUoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7Ci0gICAgcmV0dXJuIG1fdW5pdFR5cGU7CisgICAgaWYgKHN0cmluZy5lbmRzV2l0
aCgiJSIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZVBlcmNlbnRhZ2U7CisgICAgZWxzZSBp
ZiAoc3RyaW5nLmVuZHNXaXRoKCJlbSIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZUVNUzsK
KyAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dpdGgoImV4IikpCisgICAgICAgIHJldHVybiBMZW5n
dGhUeXBlRVhTOworICAgIGVsc2UgaWYgKHN0cmluZy5lbmRzV2l0aCgicHgiKSkKKyAgICAgICAg
cmV0dXJuIExlbmd0aFR5cGVQWDsKKyAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dpdGgoImNtIikp
CisgICAgICAgIHJldHVybiBMZW5ndGhUeXBlQ007CisgICAgZWxzZSBpZiAoc3RyaW5nLmVuZHNX
aXRoKCJtbSIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZU1NOworICAgIGVsc2UgaWYgKHN0
cmluZy5lbmRzV2l0aCgiaW4iKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVJTjsKKyAgICBl
bHNlIGlmIChzdHJpbmcuZW5kc1dpdGgoInB0IikpCisgICAgICAgIHJldHVybiBMZW5ndGhUeXBl
UFQ7CisgICAgZWxzZSBpZiAoc3RyaW5nLmVuZHNXaXRoKCJwYyIpKQorICAgICAgICByZXR1cm4g
TGVuZ3RoVHlwZVBDOworICAgIGVsc2UgaWYgKCFzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gTGVuZ3RoVHlwZU51bWJlcjsKKworICAgIHJldHVybiBMZW5ndGhUeXBlVW5rbm93bjsK
K30KKworU1ZHTGVuZ3RoOjpTVkdMZW5ndGgoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4
dCwgU1ZHTGVuZ3RoTW9kZSBtb2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcpCisgICAg
OiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cygwLjApCisgICAgLCBtX3VuaXQoc3RvcmVVbml0KG1v
ZGUsIExlbmd0aFR5cGVOdW1iZXIpKQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCit7CisgICAg
c2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKTsKIH0KIAotdm9pZCBTVkdMZW5ndGg6OnNl
dFZhbHVlKGZsb2F0IHZhbHVlKQorU1ZHTGVuZ3RoVHlwZSBTVkdMZW5ndGg6OnVuaXRUeXBlKCkg
Y29uc3QKIHsKLSAgICBtX3ZhbHVlID0gdmFsdWU7Ci0gICAgdXBkYXRlVmFsdWVJblNwZWNpZmll
ZFVuaXRzKCk7CisgICAgcmV0dXJuIGV4dHJhY3RUeXBlKG1fdW5pdCk7CiB9CiAKIGZsb2F0IFNW
R0xlbmd0aDo6dmFsdWUoKSBjb25zdAogewotICAgIGlmIChtX3JlcXVpcmVzTGF5b3V0KQotICAg
ICAgICBjb25zdF9jYXN0PFNWR0xlbmd0aCo+KHRoaXMpLT51cGRhdGVWYWx1ZShmYWxzZSk7Cisg
ICAgU1ZHTGVuZ3RoVHlwZSB0eXBlID0gZXh0cmFjdFR5cGUobV91bml0KTsKKyAgICBpZiAodHlw
ZSA9PSBMZW5ndGhUeXBlVW5rbm93bikKKyAgICAgICAgcmV0dXJuIDAuMDsKKworICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoKKyAgICAgICAgcmV0dXJuIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzOworICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6Cisg
ICAgeworICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIG91dGVybW9zdCA8c3ZnPiBlbGVtZW50
ICAgICAgCisgICAgICAgIGNvbnN0IFNWR0VsZW1lbnQqIHZpZXdwb3J0ID0gbV9jb250ZXh0ID8g
bV9jb250ZXh0LT52aWV3cG9ydEVsZW1lbnQoKSA6IDA7CisgICAgICAgIGlmIChtX2NvbnRleHQg
JiYgIXZpZXdwb3J0ICYmIG1fY29udGV4dC0+b3duZXJEb2N1bWVudCgpLT5kb2N1bWVudEVsZW1l
bnQoKSA9PSBtX2NvbnRleHQpCisgICAgICAgICAgICB2aWV3cG9ydCA9IG1fY29udGV4dDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gU1ZHSGVscGVyOjpQZXJjZW50
YWdlT2ZWaWV3cG9ydChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDEwMC4wLCB2aWV3cG9ydCwg
ZXh0cmFjdE1vZGUobV91bml0KSk7CisgICAgfSAKKyAgICBjYXNlIExlbmd0aFR5cGVFTVM6Cisg
ICAgY2FzZSBMZW5ndGhUeXBlRVhTOgorICAgIHsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxl
ID0gMDsKKyAgICAgICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPnJlbmRlcmVyKCkpCisg
ICAgICAgICAgICBzdHlsZSA9IG1fY29udGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKKyAgICAg
ICAgaWYgKHN0eWxlKSB7CisgICAgICAgICAgICBmbG9hdCB1c2VTaXplID0gc3R5bGUtPmZvbnRT
aXplKCk7CisgICAgICAgICAgICBBU1NFUlQodXNlU2l6ZSA+IDApOworICAgICAgICAgICAgaWYg
KHR5cGUgPT0gTGVuZ3RoVHlwZUVNUykKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgKiB1c2VTaXplOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgZmxvYXQgeEhlaWdodCA9IHN0eWxlLT5mb250KCkueEhlaWdodCgpOworICAgICAgICAg
ICAgICAgIC8vIFVzZSBvZiBjZWlsIGFsbG93cyBhIHBpeGVsIG1hdGNoIHRvIHRoZSBXM0NzIGV4
cGVjdGVkIG91dHB1dCBvZiBjb29yZHMtdW5pdHMtMDMtYi5zdmcKKyAgICAgICAgICAgICAgICAv
LyBpZiB0aGlzIGNhdXNlcyBwcm9ibGVtcyBpbiByZWFsIHdvcmxkIGNhc2VzIG1heWJlIGl0IHdv
dWxkIGJlIGJlc3QgdG8gcmVtb3ZlIHRoaXMKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMgKiBjZWlsKHhIZWlnaHQpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIHJldHVybiAwLjA7CisgICAgfQorICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgor
ICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgY2FzZSBMZW5ndGhU
eXBlQ006CisgICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDIuNTQgKiBk
cGkoKTsKKyAgICBjYXNlIExlbmd0aFR5cGVNTToKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNw
ZWNpZmllZFVuaXRzIC8gMjUuNCAqIGRwaSgpOworICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgorICAg
ICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgKiBkcGkoKTsKKyAgICBjYXNlIExl
bmd0aFR5cGVQVDoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gNzIu
MCAqIGRwaSgpOworICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgorICAgICAgICByZXR1cm4gbV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMgLyA2LjAgKiBkcGkoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBBU1NFUlQoZmFsc2UpOworICAgIHJldHVybiAwLjA7Cit9CiAK
LSAgICBpZiAobV91bml0VHlwZSAhPSBTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKQotICAgICAg
ICByZXR1cm4gbV92YWx1ZTsKK3ZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkK
K3sKKyAgICBTVkdMZW5ndGhUeXBlIHR5cGUgPSBleHRyYWN0VHlwZShtX3VuaXQpOworICAgIEFT
U0VSVCh0eXBlICE9IExlbmd0aFR5cGVVbmtub3duKTsKIAotICAgIGZsb2F0IHZhbHVlID0gbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAxMDAuMDsKLSAgICBpZiAobV9iYm94UmVsYXRpdmUpCi0g
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIExlbmd0
aFR5cGVOdW1iZXI6CisgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6CisgICAgY2FzZSBM
ZW5ndGhUeXBlRU1TOgorICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICAgICAgQVNTRVJUKGZh
bHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgICAgIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
TGVuZ3RoVHlwZUNNOgorICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlICog
Mi41NCAvIGRwaSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVNTToKKyAg
ICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZSAqIDI1LjQgLyBkcGkoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlSU46CisgICAgICAgIG1fdmFsdWVJblNw
ZWNpZmllZFVuaXRzID0gdmFsdWUgLyBkcGkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBM
ZW5ndGhUeXBlUFQ6CisgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWUgKiA3
Mi4wIC8gZHBpKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgorICAg
ICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlIC8gNi4wICogZHBpKCk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KIAotICAgIC8v
IFVzZSB0aGUgbWFudWFsIG92ZXJyaWRlICJtX3ZpZXdwb3J0RWxlbWVudCIgd2hlbiB0aGVyZSBp
cyBubyBjb250ZXh0IGVsZW1lbnQgb2ZmIG9mIHdoaWNoIHRvIGVzdGFibGlzaCB0aGUgdmlld3Bv
cnQuCi0gICAgcmV0dXJuIFNWR0hlbHBlcjo6UGVyY2VudGFnZU9mVmlld3BvcnQodmFsdWUsIG1f
Y29udGV4dCA/IG1fY29udGV4dC0+dmlld3BvcnRFbGVtZW50KCkgOiBtX3ZpZXdwb3J0RWxlbWVu
dCwgc3RhdGljX2Nhc3Q8TGVuZ3RoTW9kZT4obV9tb2RlKSk7CisgICAgaWYgKG1fY29udGV4dCAm
JiBtX2NvbnRleHQtPm93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgIT0gbV9jb250
ZXh0KQorICAgICAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwogfQogCi12
b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKGZsb2F0IHZhbHVlSW5TcGVj
aWZpZWRVbml0cykKK3ZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMoZmxv
YXQgdmFsdWUpCiB7Ci0gICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZUluU3BlY2lm
aWVkVW5pdHM7Ci0gICAgdXBkYXRlVmFsdWUoKTsKKyAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
cyA9IHZhbHVlOworCisgICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPm93bmVyRG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgIT0gbV9jb250ZXh0KSAgICAKKyAgICAgICAgbV9jb250
ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKIH0KIAogZmxvYXQgU1ZHTGVuZ3RoOjp2YWx1
ZUluU3BlY2lmaWVkVW5pdHMoKSBjb25zdApAQCAtMTA3LDcxICsyMzgsNTEgQEAgdm9pZCBTVkdM
ZW5ndGg6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgUwogICAgIGlmIChzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRGVwcmVjYXRlZFN0cmluZyB2YWx1ZUFzUVN0cmluZyA9IHMu
ZGVwcmVjYXRlZFN0cmluZygpOwotCiAgICAgZG91YmxlIGNvbnZlcnRlZE51bWJlciA9IDA7Ci0g
ICAgY29uc3QgY2hhciogc3RhcnQgPSB2YWx1ZUFzUVN0cmluZy5sYXRpbjEoKTsKLSAgICBjb25z
dCBjaGFyKiBlbmQgPSBwYXJzZUNvb3JkKHN0YXJ0LCBjb252ZXJ0ZWROdW1iZXIpOworICAgIERl
cHJlY2F0ZWRTdHJpbmcgZGVwU3RyaW5nID0gcy5kZXByZWNhdGVkU3RyaW5nKCk7CisgICAgY29u
c3QgY2hhciogc3RhcnQgPSBkZXBTdHJpbmcubGF0aW4xKCk7CisgICAgcGFyc2VDb29yZChzdGFy
dCwgY29udmVydGVkTnVtYmVyKTsKKyAgICAKKyAgICBtX3VuaXQgPSBzdG9yZVVuaXQoZXh0cmFj
dE1vZGUobV91bml0KSwgc3RyaW5nVG9MZW5ndGhUeXBlKHMpKTsKICAgICBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0cyA9IGNvbnZlcnRlZE51bWJlcjsKLQotICAgIHVuc2lnbmVkIGludCBkaWZmID0g
ZW5kIC0gc3RhcnQ7Ci0gICAgaWYgKGRpZmYgPCB2YWx1ZUFzUVN0cmluZy5sZW5ndGgoKSkgewot
ICAgICAgICBpZiAocy5lbmRzV2l0aChVbml0VGV4dFtTVkdfTEVOR1RIVFlQRV9QWF0pKQotICAg
ICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX1BYOwotICAgICAgICBlbHNlIGlm
IChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX0NNXSkpCi0gICAgICAgICAgICBt
X3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfQ007Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dp
dGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfUENdKSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUg
PSBTVkdfTEVOR1RIVFlQRV9QQzsKLSAgICAgICAgZWxzZSBpZiAocy5lbmRzV2l0aChVbml0VGV4
dFtTVkdfTEVOR1RIVFlQRV9NTV0pKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5H
VEhUWVBFX01NOwotICAgICAgICBlbHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5H
VEhUWVBFX0lOXSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfSU47
Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfUFRd
KSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RIVFlQRV9QVDsKLSAgICAgICAg
IGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRV0p
KQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0U7Ci0g
ICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfRU1TXSkp
Ci0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfRU1TOwotICAgICAgICBl
bHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX0VYU10pKQotICAgICAg
ICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX0VYUzsKLSAgICAgICAgZWxzZSBpZiAo
cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfTlVN
QkVSOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZ
UEVfVU5LTk9XTjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xF
TkdUSFRZUEVfUFg7Ci0KLSAgICB1cGRhdGVWYWx1ZSgpOwogfQogCiBTdHJpbmcgU1ZHTGVuZ3Ro
Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgVW5pdFRleHRbbV91bml0VHlwZV07CisgICAgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIGxlbmd0aFR5cGVUb1N0
cmluZyhleHRyYWN0VHlwZShtX3VuaXQpKTsKK30KKwordm9pZCBTVkdMZW5ndGg6Om5ld1ZhbHVl
U3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdHlwZSwgZmxvYXQgdmFsdWUpCit7CisgICAg
QVNTRVJUKHR5cGUgPD0gTGVuZ3RoVHlwZVBDKTsKKworICAgIG1fdW5pdCA9IHN0b3JlVW5pdChl
eHRyYWN0TW9kZShtX3VuaXQpLCAoU1ZHTGVuZ3RoVHlwZSkgdHlwZSk7CisgICAgbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsKIH0KIAotdm9pZCBTVkdMZW5ndGg6Om5ld1ZhbHVlU3Bl
Y2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIGZsb2F0IHZhbHVlSW5TcGVjaWZp
ZWRVbml0cykKK3ZvaWQgU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25l
ZCBzaG9ydCB0eXBlKQogewotICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWVJblNw
ZWNpZmllZFVuaXRzOwotICAgIG1fdW5pdFR5cGUgPSAoU1ZHTGVuZ3RoVHlwZSl1bml0VHlwZTsK
LSAgICB1cGRhdGVWYWx1ZSgpOworICAgIEFTU0VSVCh0eXBlIDw9IExlbmd0aFR5cGVQQyk7CisK
KyAgICBmbG9hdCB2YWx1ZUluVXNlclVuaXRzID0gdmFsdWUoKTsKKyAgICBtX3VuaXQgPSBzdG9y
ZVVuaXQoZXh0cmFjdE1vZGUobV91bml0KSwgKFNWR0xlbmd0aFR5cGUpIHR5cGUpOworICAgIHNl
dFZhbHVlKHZhbHVlSW5Vc2VyVW5pdHMpOwogfQogCi12b2lkIFNWR0xlbmd0aDo6Y29udmVydFRv
U3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpCitib29sIFNWR0xlbmd0aDo6
aXNGcmFjdGlvbihjb25zdCBTVkdMZW5ndGgmIGxlbmd0aCkKIHsKLSAgICBtX3VuaXRUeXBlID0g
KFNWR0xlbmd0aFR5cGUpdW5pdFR5cGU7Ci0gICAgdXBkYXRlVmFsdWVJblNwZWNpZmllZFVuaXRz
KCk7CisgICAgcmV0dXJuIChsZW5ndGgudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlTnVtYmVyICYm
IGxlbmd0aC52YWx1ZSgpID49IDAgJiYgbGVuZ3RoLnZhbHVlKCkgPD0gMSk7CiB9CiAKIGRvdWJs
ZSBTVkdMZW5ndGg6OmRwaSgpIGNvbnN0CiB7CiAgICAgLyogRklYTUU6IERQSSBkZXRlY3Rpb24K
ICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5vd25lckRvYygpKSB7Ci0gICAgICAgIGlmICht
b2RlID09IExNX1dJRFRIKQorICAgICAgICBpZiAobW9kZSA9PSBMZW5ndGhNb2RlV2lkdGgpCiAg
ICAgICAgICAgICByZXR1cm4gMjUuNCAqIGNvbnRleHQtPm93bmVyRG9jKCktPnNjcmVlblBpeGVs
c1Blck1pbGxpbWV0ZXJYKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTE1fSEVJR0hUKQor
ICAgICAgICBlbHNlIGlmIChtb2RlID09IExlbmd0aE1vZGVIZWlnaHQpCiAgICAgICAgICAgICBy
ZXR1cm4gMjUuNCAqIGNvbnRleHQtPm93bmVyRG9jKCktPnNjcmVlblBpeGVsc1Blck1pbGxpbWV0
ZXJZKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTE1fT1RIRVIpCisgICAgICAgIGVsc2Ug
aWYgKG1vZGUgPT0gTGVuZ3RoTW9kZU90aGVyKQogICAgICAgICAgICAgcmV0dXJuIDI1LjQgKiBj
b250ZXh0LT5vd25lckRvYygpLT5zY3JlZW5QaXhlbHNQZXJNaWxsaW1ldGVyWCgpOwogICAgIH0K
ICAgICAqLwpAQCAtMTc5LDEyNiArMjkwLDggQEAgZG91YmxlIFNWR0xlbmd0aDo6ZHBpKCkgY29u
c3QKICAgICByZXR1cm4gOTAuMDsKIH0KIAotdm9pZCBTVkdMZW5ndGg6OnVwZGF0ZVZhbHVlKGJv
b2wgbm90aWZ5KQotewotICAgIHN3aXRjaCAobV91bml0VHlwZSkgewotICAgICAgICBjYXNlIFNW
R19MRU5HVEhUWVBFX1BYOgotICAgICAgICAgICAgbV92YWx1ZSA9IG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVf
Q006Ci0gICAgICAgICAgICBtX3ZhbHVlID0gKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gMi41
NCkgKiBkcGkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhU
WVBFX01NOgotICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAv
IDI1LjQpICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVO
R1RIVFlQRV9JTjoKLSAgICAgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
cyAqIGRwaSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZ
UEVfUFQ6Ci0gICAgICAgICAgICBtX3ZhbHVlID0gKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8g
NzIuMCkgKiBkcGkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5H
VEhUWVBFX1BDOgotICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
cyAvIDYuMCkgKiBkcGkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19M
RU5HVEhUWVBFX0VNUzoKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9FWFM6IHsKLSAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IDA7Ci0gICAgICAgICAgICBpZiAobV9jb250ZXh0
ICYmIG1fY29udGV4dC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICBzdHlsZSA9IG1fY29u
dGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1fdmlld3Bv
cnRFbGVtZW50ICYmIG1fdmlld3BvcnRFbGVtZW50LT5yZW5kZXJlcigpKQotICAgICAgICAgICAg
ICAgIHN0eWxlID0gbV92aWV3cG9ydEVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCk7Ci0gICAg
ICAgICAgICBpZiAoc3R5bGUpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCB1c2VTaXplID0gc3R5
bGUtPmZvbnRTaXplKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHVzZVNpemUgPiAwKTsKLSAg
ICAgICAgICAgICAgICBpZiAobV91bml0VHlwZSA9PSBTVkdfTEVOR1RIVFlQRV9FTVMpCi0gICAg
ICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAqIHVzZVNp
emU7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHhI
ZWlnaHQgPSBzdHlsZS0+Zm9udCgpLnhIZWlnaHQoKTsKLSAgICAgICAgICAgICAgICAgICAgLy8g
VXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwgbWF0Y2ggdG8gdGhlIFczQ3MgZXhwZWN0ZWQgb3V0
cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2ZwotICAgICAgICAgICAgICAgICAgICAvLyBpZiB0
aGlzIGNhdXNlcyBwcm9ibGVtcyBpbiByZWFsIHdvcmxkIGNhc2VzIG1heWJlIGl0IHdvdWxkIGJl
IGJlc3QgdG8gcmVtb3ZlIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgbV92YWx1ZSA9IG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzICogY2VpbCh4SGVpZ2h0KTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgbV9yZXF1aXJlc0xheW91dCA9IGZhbHNlOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBtX3JlcXVpcmVzTGF5b3V0ID0gdHJ1ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU1ZHX0xF
TkdUSFRZUEVfVU5LTk9XTjoKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9OVU1CRVI6Ci0g
ICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICBpZiAobm90aWZ5ICYmIG1fY29udGV4dCkKLSAgICAgICAgbV9jb250ZXh0
LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKLX0KLQotYm9vbCBTVkdMZW5ndGg6OnVwZGF0ZVZh
bHVlSW5TcGVjaWZpZWRVbml0cyhib29sIG5vdGlmeSkKLXsKLSAgICBpZiAobV91bml0VHlwZSA9
PSBTVkdfTEVOR1RIVFlQRV9VTktOT1dOKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBz
d2l0Y2ggKG1fdW5pdFR5cGUpIHsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9QRVJDRU5U
QUdFOgotICAgICAgICAgICAgLy9rZEVycm9yKCkgPDwgInVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRV
bml0cygpIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgLSBVTlNVUFBPUlRFRCEgUGxlYXNlIHJl
cG9ydCEiIDw8IGVuZGw7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2Ug
U1ZHX0xFTkdUSFRZUEVfRU1TOgotICAgICAgICAgICAgLy9rZEVycm9yKCkgPDwgInVwZGF0ZVZh
bHVlSW5TcGVjaWZpZWRVbml0cygpIFNWR19MRU5HVEhUWVBFX0VNUyAtIFVOU1VQUE9SVEVEISBQ
bGVhc2UgcmVwb3J0ISIgPDwgZW5kbDsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9FWFM6Ci0gICAgICAgICAgICAvL2tkRXJyb3IoKSA8PCAi
dXBkYXRlVmFsdWVJblNwZWNpZmllZFVuaXRzKCkgU1ZHX0xFTkdUSFRZUEVfRVhTIC0gVU5TVVBQ
T1JURUQhIFBsZWFzZSByZXBvcnQhIiA8PCBlbmRsOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1BYOgotICAgICAgICAgICAgbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgPSBtX3ZhbHVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU1ZHX0xFTkdUSFRZUEVfQ006Ci0gICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
cyA9IG1fdmFsdWUgLyBkcGkoKSAqIDIuNTQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTVkdfTEVOR1RIVFlQRV9NTToKLSAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzID0gbV92YWx1ZSAvIGRwaSgpICogMjUuNDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFNWR19MRU5HVEhUWVBFX0lOOgotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMgPSBtX3ZhbHVlIC8gZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBTVkdfTEVOR1RIVFlQRV9QVDoKLSAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRz
ID0gbV92YWx1ZSAvIGRwaSgpICogNzIuMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFNWR19MRU5HVEhUWVBFX1BDOgotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMgPSBtX3ZhbHVlIC8gZHBpKCkgKiA2LjA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTVkdfTEVOR1RIVFlQRV9VTktOT1dOOgotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBF
X05VTUJFUjoKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH07Ci0gICAgCi0gICAgaWYgKG5vdGlm
eSAmJiBtX2NvbnRleHQpCi0gICAgICAgIG1fY29udGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdl
KCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBTVkdMZW5ndGg6OmJib3hSZWxhdGl2
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmJveFJlbGF0aXZlOwotfQotCi12b2lkIFNWR0xl
bmd0aDo6c2V0QmJveFJlbGF0aXZlKGJvb2wgcmVsYXRpdmUpCi17Ci0gICAgbV9iYm94UmVsYXRp
dmUgPSByZWxhdGl2ZTsKLX0KLQotY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogU1ZHTGVuZ3RoOjpj
b250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZXh0OwogfQogCi12b2lkIFNWR0xl
bmd0aDo6c2V0Q29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KQotewotICAg
IG1fY29udGV4dCA9IGNvbnRleHQ7Ci19Ci0KLX0KLQotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlm
IC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0xlbmd0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0
aC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0y
MCw4MSArMjAsODYgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNp
Zm5kZWYgS1NWR19TVkdMZW5ndGhJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdMZW5ndGhJbXBsX0gK
KyNpZm5kZWYgU1ZHTGVuZ3RoX0gKKyNkZWZpbmUgU1ZHTGVuZ3RoX0gKKwogI2lmZGVmIFNWR19T
VVBQT1JUCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNWR0hlbHBl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBSZW5kZXJQYXRoOwotICAg
IGNsYXNzIFNWR0VsZW1lbnQ7CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKIAotICAgIGNs
YXNzIFNWR0xlbmd0aCA6IHB1YmxpYyBTaGFyZWQ8U1ZHTGVuZ3RoPiB7CisgICAgZW51bSBTVkdM
ZW5ndGhUeXBlIHsKKyAgICAgICAgTGVuZ3RoVHlwZVVua25vd24gPSAwLAorICAgICAgICBMZW5n
dGhUeXBlTnVtYmVyLAorICAgICAgICBMZW5ndGhUeXBlUGVyY2VudGFnZSwKKyAgICAgICAgTGVu
Z3RoVHlwZUVNUywKKyAgICAgICAgTGVuZ3RoVHlwZUVYUywKKyAgICAgICAgTGVuZ3RoVHlwZVBY
LAorICAgICAgICBMZW5ndGhUeXBlQ00sCisgICAgICAgIExlbmd0aFR5cGVNTSwKKyAgICAgICAg
TGVuZ3RoVHlwZUlOLAorICAgICAgICBMZW5ndGhUeXBlUFQsCisgICAgICAgIExlbmd0aFR5cGVQ
QworICAgIH07CisKKyAgICBlbnVtIFNWR0xlbmd0aE1vZGUgeworICAgICAgICBMZW5ndGhNb2Rl
V2lkdGggPSAwLAorICAgICAgICBMZW5ndGhNb2RlSGVpZ2h0LAorICAgICAgICBMZW5ndGhNb2Rl
T3RoZXIKKyAgICB9OworCisgICAgY2xhc3MgU1ZHTGVuZ3RoIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFNWR0xlbmd0aChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0LCBMZW5ndGhNb2Rl
IG1vZGUgPSBMTV9VTktOT1dOLCBjb25zdCBTVkdFbGVtZW50KiB2aWV3cG9ydCA9IDApOwotICAg
ICAgICB2aXJ0dWFsIH5TVkdMZW5ndGgoKTsKLSAgICAgICAgCi0gICAgICAgIGVudW0gU1ZHTGVu
Z3RoVHlwZSB7Ci0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9VTktOT1dOICAgICAgICAgID0g
MCwKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX05VTUJFUiAgICAgICAgICAgPSAxLAotICAg
ICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSAgICAgICA9IDIsCi0gICAgICAgICAg
ICBTVkdfTEVOR1RIVFlQRV9FTVMgICAgICAgICAgICAgID0gMywKLSAgICAgICAgICAgIFNWR19M
RU5HVEhUWVBFX0VYUyAgICAgICAgICAgICAgPSA0LAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZ
UEVfUFggICAgICAgICAgICAgICA9IDUsCi0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9DTSAg
ICAgICAgICAgICAgID0gNiwKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX01NICAgICAgICAg
ICAgICAgPSA3LAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfSU4gICAgICAgICAgICAgICA9
IDgsCi0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9QVCAgICAgICAgICAgICAgID0gOSwKLSAg
ICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BDICAgICAgICAgICAgICAgPSAxMAorICAgICAgICAv
LyBGb3J3YXJkIGRlY2xhcmUgdGhlc2UgZW51bXMgaW4gdGhlIHczYyBuYW1pbmcgc2NoZW1lLCBm
b3IgSURMIGdlbmVyYXRpb24KKyAgICAgICAgZW51bSB7CisgICAgICAgICAgICBTVkdfTEVOR1RI
VFlQRV9VTktOT1dOID0gMCwKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX05VTUJFUiwKKyAg
ICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UsCisgICAgICAgICAgICBTVkdfTEVO
R1RIVFlQRV9FTVMsCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9FWFMsCisgICAgICAgICAg
ICBTVkdfTEVOR1RIVFlQRV9QWCwKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX0NNLAorICAg
ICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTU0sCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9J
TiwKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BULAorICAgICAgICAgICAgU1ZHX0xFTkdU
SFRZUEVfUEMKICAgICAgICAgfTsKIAorICAgICAgICBTVkdMZW5ndGgoY29uc3QgU1ZHU3R5bGVk
RWxlbWVudCogY29udGV4dCA9IDAsIFNWR0xlbmd0aE1vZGUgbW9kZSA9IExlbmd0aE1vZGVPdGhl
ciwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nID0gU3RyaW5nKCkpOworCiAgICAgICAgIC8v
ICdTVkdMZW5ndGgnIGZ1bmN0aW9ucwogICAgICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlKCkg
Y29uc3Q7CiAKICAgICAgICAgZmxvYXQgdmFsdWUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRW
YWx1ZShmbG9hdCB2YWx1ZSk7CisgICAgICAgIHZvaWQgc2V0VmFsdWUoZmxvYXQpOwogCiAgICAg
ICAgIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cygpIGNvbnN0OwotICAgICAgICB2b2lkIHNl
dFZhbHVlSW5TcGVjaWZpZWRVbml0cyhmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAg
ICAgICB2b2lkIHNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyhmbG9hdCk7CiAKICAgICAgICAgU3Ry
aW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRWYWx1ZUFzU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogCi0gICAgICAgIHZvaWQgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1
bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKLSAg
ICAgICAgdm9pZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlw
ZSk7Ci0KLSAgICAgICAgLy8gSGVscGVycwotICAgICAgICBib29sIGJib3hSZWxhdGl2ZSgpIGNv
bnN0OwotICAgICAgICB2b2lkIHNldEJib3hSZWxhdGl2ZShib29sKTsKKyAgICAgICAgdm9pZCBu
ZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0LCBmbG9hdCB2YWx1ZUluU3BlY2lm
aWVkVW5pdHMpOworICAgICAgICB2b2lkIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVk
IHNob3J0KTsKIAotICAgICAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KCkgY29u
c3Q7Ci0gICAgICAgIHZvaWQgc2V0Q29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250
ZXh0KTsKKyAgICAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucworICAgICAgICBzdGF0aWMgYm9vbCBp
c0ZyYWN0aW9uKGNvbnN0IFNWR0xlbmd0aCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9v
bCB1cGRhdGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMoYm9vbCBub3RpZnkgPSB0cnVlKTsKLSAgICAg
ICAgdm9pZCB1cGRhdGVWYWx1ZShib29sIG5vdGlmeSA9IHRydWUpOwotCiAgICAgICAgIGRvdWJs
ZSBkcGkoKSBjb25zdDsKIAotICAgICAgICBmbG9hdCBtX3ZhbHVlOwogICAgICAgICBmbG9hdCBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0czsKLQotICAgICAgICBMZW5ndGhNb2RlIG1fbW9kZSA6IDI7
Ci0gICAgICAgIGJvb2wgbV9iYm94UmVsYXRpdmUgOiAxOwotICAgICAgICBTVkdMZW5ndGhUeXBl
IG1fdW5pdFR5cGUgOiA0OwotICAgICAgICBib29sIG1fcmVxdWlyZXNMYXlvdXQgOiAxOworICAg
ICAgICB1bnNpZ25lZCBpbnQgbV91bml0OwogCiAgICAgICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1l
bnQqIG1fY29udGV4dDsKLSAgICAgICAgY29uc3QgU1ZHRWxlbWVudCogbV92aWV3cG9ydEVsZW1l
bnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NV
UFBPUlQKLSNlbmRpZiAvLyBLU1ZHX1NWR0xlbmd0aEltcGxfSAorI2VuZGlmIC8vIFNWR0xlbmd0
aF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0
aC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmlkbAkocmV2
aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNl
IFtDb25kaXRpb25hbD1TVkcsIEdlbmVyYXRlQ29uc3RydWN0b3JdIFNWR0xlbmd0aCB7IAorICAg
IGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHLCBHZW5lcmF0ZUNvbnN0cnVjdG9yLCBQT0RUeXBl
PVNWR0xlbmd0aF0gU1ZHTGVuZ3RoIHsgCiAgICAgICAgIC8vIExlbmd0aCBVbml0IFR5cGVzCiAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19MRU5HVEhUWVBFX1VOS05PV04gICAgPSAw
OwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTEVOR1RIVFlQRV9OVU1CRVIgICAg
ID0gMTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuY3BwCShyZXZpc2lvbiAxODE3
NykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0xlbmd0aExpc3Q6
OlNWR0xlbmd0aExpc3QoKQotICAgIDogU1ZHTGlzdDxSZWZQdHI8U1ZHTGVuZ3RoPiA+KCkKKyAg
ICA6IFNWR0xpc3Q8U1ZHTGVuZ3RoPigpCiB7CiB9CiAKQEAgLTM3LDE3ICszNywxNCBAQCBTVkdM
ZW5ndGhMaXN0Ojp+U1ZHTGVuZ3RoTGlzdCgpCiB7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoTGlzdDo6
cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4
dCwgTGVuZ3RoTW9kZSBtb2RlKQordm9pZCBTVkdMZW5ndGhMaXN0OjpwYXJzZShjb25zdCBTdHJp
bmcmIHZhbHVlLCBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0LCBTVkdMZW5ndGhNb2Rl
IG1vZGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAKICAgICBWZWN0b3I8U3RyaW5n
PiBsZW5ndGhzID0gdmFsdWUuc3BsaXQoJyAnKTsKICAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbGVuZ3Rocy5lbmQoKTsKLSAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IGxlbmd0aHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgIFNWR0xlbmd0aCogbGVuZ3RoID0gbmV3IFNWR0xlbmd0aChjb250ZXh0LCBtb2RlKTsK
LSAgICAgICAgbGVuZ3RoLT5zZXRWYWx1ZUFzU3RyaW5nKCppdCk7Ci0gICAgICAgIGFwcGVuZEl0
ZW0obGVuZ3RoLCBlYyk7Ci0gICAgfQorICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbGVuZ3Rocy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGFw
cGVuZEl0ZW0oU1ZHTGVuZ3RoKGNvbnRleHQsIG1vZGUsICppdCksIGVjKTsKIH0KIAogfQpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuaAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwx
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZQogewotICAgIGNsYXNzIFNWR0xlbmd0aExpc3QgOiBw
dWJsaWMgU1ZHTGlzdDxSZWZQdHI8U1ZHTGVuZ3RoPiA+CisgICAgY2xhc3MgU1ZHTGVuZ3RoTGlz
dCA6IHB1YmxpYyBTVkdMaXN0PFNWR0xlbmd0aD4KICAgICB7CiAgICAgcHVibGljOgogICAgICAg
ICBTVkdMZW5ndGhMaXN0KCk7CiAgICAgICAgIHZpcnR1YWwgflNWR0xlbmd0aExpc3QoKTsKIAot
ICAgICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnQqIGNvbnRleHQsIExlbmd0aE1vZGUgbW9kZSk7CisgICAgICAgIHZvaWQgcGFyc2UoY29u
c3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCwgU1ZHTGVu
Z3RoTW9kZSBtb2RlKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdMaW5lRWxl
bWVudC5oIgogCkBAIC0zNiwxMCArMzcsMTAgQEAgU1ZHTGluZUVsZW1lbnQ6OlNWR0xpbmVFbGVt
ZW50KGNvbnN0IFF1YQogICAgICwgU1ZHVGVzdHMoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAg
ICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQotICAgICwgbV94MShuZXcgU1ZHTGVu
Z3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kxKG5ldyBT
VkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3gy
KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAs
IG1feTIobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkK
KyAgICAsIG1feDEodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95MSh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0KQorICAgICwgbV94Mih0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBt
X3kyKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTQ3LDY2ICs0OCw0MiBAQCBT
VkdMaW5lRWxlbWVudDo6flNWR0xpbmVFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3Ro
LCBYMSwgeDEsIFNWR05hbWVzOjp4MUF0dHIubG9jYWxOYW1lKCksIG1feDEuZ2V0KCkpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVu
Z3RoLCBsZW5ndGgsIFkxLCB5MSwgU1ZHTmFtZXM6OnkxQXR0ci5sb2NhbE5hbWUoKSwgbV95MS5n
ZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdM
ZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWDIsIHgyLCBTVkdOYW1lczo6eDJBdHRyLmxvY2FsTmFt
ZSgpLCBtX3gyLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVs
ZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZMiwgeTIsIFNWR05hbWVzOjp5MkF0
dHIubG9jYWxOYW1lKCksIG1feTIuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWDEsIHgxLCBTVkdO
YW1lczo6eDFBdHRyLmxvY2FsTmFtZSgpLCBtX3gxKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFkxLCB5MSwg
U1ZHTmFtZXM6OnkxQXR0ci5sb2NhbE5hbWUoKSwgbV95MSkKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYMiwg
eDIsIFNWR05hbWVzOjp4MkF0dHIubG9jYWxOYW1lKCksIG1feDIpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
WTIsIHkyLCBTVkdOYW1lczo6eTJBdHRyLmxvY2FsTmFtZSgpLCBtX3kyKQogCiB2b2lkIFNWR0xp
bmVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eDFBdHRyKQotICAgICAgICB4MUJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WDFCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OnkxQXR0cikKLSAgICAgICAgeTFCYXNlVmFsdWUoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFkxQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6eDJBdHRyKQotICAgICAgICB4MkJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3Ry
aW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WDJCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnkyQXR0cikKLSAgICAgICAgeTJCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1
ZSk7CisgICAgICAgIHNldFkyQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0LCB2YWx1ZSkpOwogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGlmIChTVkdUZXN0czo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKLSAgICAgICAgaWYgKFNWR0xhbmdTcGFj
ZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKLSAgICAgICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1
cm47CisgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKGF0dHIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9CiB9CiAKIFBhdGggU1ZHTGluZUVsZW1l
bnQ6OnRvUGF0aERhdGEoKSBjb25zdAogewotICAgIGZsb2F0IF94MSA9IHgxKCktPnZhbHVlKCks
IF95MSA9IHkxKCktPnZhbHVlKCk7Ci0gICAgZmxvYXQgX3gyID0geDIoKS0+dmFsdWUoKSwgX3ky
ID0geTIoKS0+dmFsdWUoKTsKLQotICAgIHJldHVybiBQYXRoOjpjcmVhdGVMaW5lKEZsb2F0UG9p
bnQoX3gxLCBfeTEpLCBGbG9hdFBvaW50KF94MiwgX3kyKSk7Ci19Ci0KLWNvbnN0IFNWR1N0eWxl
ZEVsZW1lbnQqIFNWR0xpbmVFbGVtZW50OjpwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdT
dHlsZWRFbGVtZW50KiBjb250ZXh0KQotewotICAgIC8vIEFsbCBhdHRyaWJ1dGUncyBjb250ZXh0
cyBhcmUgZXF1YWwgKHNvIGp1c3QgdGFrZSB0aGUgb25lIGZyb20gJ3gxJykuCi0gICAgY29uc3Qg
U1ZHU3R5bGVkRWxlbWVudCogcmVzdG9yZSA9IHgxKCktPmNvbnRleHQoKTsKLQotICAgIHgxKCkt
PnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgeTEoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAg
ICB4MigpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHkyKCktPnNldENvbnRleHQoY29udGV4
dCk7Ci0gICAgCi0gICAgU1ZHU3R5bGVkRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29u
dGV4dCk7Ci0gICAgcmV0dXJuIHJlc3RvcmU7Ci19Ci0KLWJvb2wgU1ZHTGluZUVsZW1lbnQ6Omhh
c1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdAotewotICAgIGlmICh4MSgpLT51bml0VHlwZSgpID09
IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICB5MSgpLT51
bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAg
ICAgICB4MigpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VO
VEFHRSB8fAotICAgICAgICB5MigpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdU
SFRZUEVfUEVSQ0VOVEFHRSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIFBhdGg6OmNyZWF0ZUxpbmUoRmxvYXRQb2ludCh4MSgpLnZhbHVlKCks
IHkxKCkudmFsdWUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRQb2ludCh4
MigpLnZhbHVlKCksIHkyKCkudmFsdWUoKSkpOwogfQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBr
ZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1l
cm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIw
MDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0xpbmVFbGVtZW50SW1wbF9ICi0jZGVmaW5l
IEtTVkdfU1ZHTGluZUVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHTGluZUVsZW1lbnRfSAorI2Rl
ZmluZSBTVkdMaW5lRWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAi
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNDksMjAgKzUwLDE2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChz
dHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAotICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hBdHRyaWJ1dGVDb250ZXh0
KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOwotCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdGhpczsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVz
KCkgY29uc3Q7Ci0KICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JX
QVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogIAotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xl
bmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYMSwgeDEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xl
bmd0aD4sIFkxLCB5MSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0xpbmVFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWDIsIHgyKQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xl
bmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZMiwgeTIpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgx
LCB4MSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVFbGVt
ZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWTEsIHkxKQorICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBY
MiwgeDIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxl
bWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFkyLCB5MikKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRp
ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MTc3KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFz
IFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMzcsMzUgKzM3LDM1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0dy
YWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3gxKG5ldyBTVkdMZW5ndGgodGhp
cywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feTEobmV3IFNWR0xlbmd0
aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feDIobmV3IFNW
R0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95Mihu
ZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwg
bV94MSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kxKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQpCisgICAgLCBtX3gyKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feTIodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKLSAgICAvLyBTcGVjIDogSWYgdGhlIGF0dHJpYnV0ZSBp
cyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdl
cmUgc3BlY2lmaWVkLgotICAgIG1feDItPnNldFZhbHVlQXNTdHJpbmcoIjEwMCUiKTsKKyAgICAv
LyBTcGVjOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMg
YXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCisgICAgc2V0WDJCYXNlVmFs
dWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSk7CiB9CiAKIFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudDo6flNWR0xpbmVhckdyYWRpZW50RWxlbWVudCgpCiB7CiB9CiAK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwg
U1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgxLCB4MSwgU1ZHTmFtZXM6OngxQXR0ci5sb2Nh
bE5hbWUoKSwgbV94MS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFkxLCB5MSwg
U1ZHTmFtZXM6OnkxQXR0ci5sb2NhbE5hbWUoKSwgbV95MS5nZXQoKSkKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVu
Z3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2NhbE5hbWUoKSwgbV94Mi5n
ZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFkyLCB5MiwgU1ZHTmFtZXM6OnkyQXR0
ci5sb2NhbE5hbWUoKSwgbV95Mi5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWDEs
IHgxLCBTVkdOYW1lczo6eDFBdHRyLmxvY2FsTmFtZSgpLCBtX3gxKQorQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5MUF0dHIubG9jYWxOYW1lKCksIG1feTEpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNW
R0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2NhbE5h
bWUoKSwgbV94MikKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWTIsIHkyLCBTVkdOYW1lczo6
eTJBdHRyLmxvY2FsTmFtZSgpLCBtX3kyKQogCiB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OngxQXR0cikKLSAgICAgICAgeDFCYXNlVmFsdWUoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFgxQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjp5MUF0dHIpCi0gICAgICAgIHkxQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJp
bmcodmFsdWUpOworICAgICAgICBzZXRZMUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OngyQXR0cikKLSAgICAgICAgeDJCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1
ZSk7CisgICAgICAgIHNldFgyQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MkF0
dHIpCi0gICAgICAgIHkyQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAg
ICAgICBzZXRZMkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFs
dWUpKTsKICAgICBlbHNlCiAgICAgICAgIFNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoYXR0cik7CiB9CkBAIC03NSwxNSArNzUsMzIgQEAgdm9pZCBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIHJlYnVpbGRTdG9wcygpOyAvLyByZWJ1aWxkIHN0
b3BzIGJlZm9yZSBwb3NzaWJseSBpbXBvcnRpbmcgdGhlbSBmcm9tIGFueSByZWZlcmVuY2VkIGdy
YWRpZW50LgogCiAgICAgYm9vbCBiYm94ID0gKGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpOwotICAgIAotICAgIHgxKCktPnNl
dEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICB5MSgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0g
ICAgeDIoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIHkyKCktPnNldEJib3hSZWxhdGl2
ZShiYm94KTsKLSAgICAKLSAgICBmbG9hdCBfeDEgPSB4MSgpLT52YWx1ZSgpLCBfeTEgPSB5MSgp
LT52YWx1ZSgpOwotICAgIGZsb2F0IF94MiA9IHgyKCktPnZhbHVlKCksIF95MiA9IHkyKCktPnZh
bHVlKCk7CiAKKyAgICBmbG9hdCBfeDEsIF95MSwgX3gyLCBfeTI7CisKKyAgICBpZiAoYmJveCkg
eworICAgICAgICBfeDEgPSB4MSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBp
ZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHgxKCkpKQorICAgICAgICAgICAgX3gxICo9IDEwMC4w
OworCisgICAgICAgIF95MSA9IHkxKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAg
IGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeTEoKSkpCisgICAgICAgICAgICBfeTEgKj0gMTAw
LjA7CisKKyAgICAgICAgX3gyID0geDIoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAg
ICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbih4MigpKSkKKyAgICAgICAgICAgIF94MiAqPSAx
MDAuMDsKKworICAgICAgICBfeTIgPSB5MigpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAg
ICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHkyKCkpKQorICAgICAgICAgICAgX3kyICo9
IDEwMC4wOworICAgIH0gZWxzZSB7CisgICAgICAgIF94MSA9IHgxKCkudmFsdWUoKTsKKyAgICAg
ICAgX3kxID0geTEoKS52YWx1ZSgpOworICAgICAgICBfeDIgPSB4MigpLnZhbHVlKCk7CisgICAg
ICAgIF95MiA9IHkyKCkudmFsdWUoKTsKKyAgICB9IAorIAogICAgIFJlZlB0cjxTVkdQYWludFNl
cnZlckxpbmVhckdyYWRpZW50PiBncmFkID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR1Bh
aW50U2VydmVyTGluZWFyR3JhZGllbnQ+KF9ncmFkKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0
OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9ybSgpLT5udW1iZXJPZkl0ZW1zKCkgPiAwKQpAQCAt
OTEsNDAgKzEwOCwyNyBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFk
CiAKICAgICBEZXByZWNhdGVkU3RyaW5nIHJlZiA9IGhyZWYoKS5kZXByZWNhdGVkU3RyaW5nKCk7
CiAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyPiBwc2VydmVyID0gZ2V0UGFpbnRTZXJ2ZXJCeUlk
KGRvY3VtZW50KCksIHJlZi5taWQoMSkpOwotICAgIAorCiAgICAgaWYgKHBzZXJ2ZXIgJiYgKHBz
ZXJ2ZXItPnR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFBhaW50U2VydmVyIHx8IHBzZXJ2ZXItPnR5
cGUoKSA9PSBMaW5lYXJHcmFkaWVudFBhaW50U2VydmVyKSkgewogICAgICAgICBib29sIGlzTGlu
ZWFyID0gcHNlcnZlci0+dHlwZSgpID09IExpbmVhckdyYWRpZW50UGFpbnRTZXJ2ZXI7CiAgICAg
ICAgIFNWR1BhaW50U2VydmVyR3JhZGllbnQqIGdyYWRpZW50ID0gc3RhdGljX2Nhc3Q8U1ZHUGFp
bnRTZXJ2ZXJHcmFkaWVudCo+KHBzZXJ2ZXIuZ2V0KCkpOwogCiAgICAgICAgIGlmICghaGFzQXR0
cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0cikpCiAgICAgICAgICAgICBiYm94ID0g
Z3JhZGllbnQtPmJvdW5kaW5nQm94TW9kZSgpOwotICAgICAgICAgICAgCisKICAgICAgICAgaWYg
KGlzTGluZWFyKSB7CiAgICAgICAgICAgICBTVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50KiBs
aW5lYXIgPSBzdGF0aWNfY2FzdDxTVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50Kj4ocHNlcnZl
ci5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6eDFBdHRy
KSkKICAgICAgICAgICAgICAgICBfeDEgPSBsaW5lYXItPmdyYWRpZW50U3RhcnQoKS54KCk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF94MSAqPSAxMDAuOwog
CiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6eTFBdHRyKSkKICAgICAg
ICAgICAgICAgICBfeTEgPSBsaW5lYXItPmdyYWRpZW50U3RhcnQoKS55KCk7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF95MSAqPSAxMDAuOwogCiAgICAgICAg
ICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6eDJBdHRyKSkKICAgICAgICAgICAgICAg
ICBfeDIgPSBsaW5lYXItPmdyYWRpZW50RW5kKCkueCgpOwotICAgICAgICAgICAgZWxzZSBpZiAo
YmJveCkKLSAgICAgICAgICAgICAgICBfeDIgKj0gMTAwLjsKIAogICAgICAgICAgICAgaWYgKCFo
YXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnkyQXR0cikpCiAgICAgICAgICAgICAgICAgX3kyID0gbGlu
ZWFyLT5ncmFkaWVudEVuZCgpLnkoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCi0gICAg
ICAgICAgICAgICAgX3kyICo9IDEwMC47Ci0gICAgICAgIH0gZWxzZSBpZiAoYmJveCkgewotICAg
ICAgICAgICAgX3gxICo9IDEwMC4wOwotICAgICAgICAgICAgX3kxICo9IDEwMC4wOwotICAgICAg
ICAgICAgX3gyICo9IDEwMC4wOwotICAgICAgICAgICAgX3kyICo9IDEwMC4wOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3Jt
QXR0cikpCkBAIC0xNDMsMTMgKzE0Nyw2IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
OjpidWlsZEdyYWQKICAgICAgICAgICAgIGdyYWQtPnNldEdyYWRpZW50U3ByZWFkTWV0aG9kKFNQ
UkVBRE1FVEhPRF9SRVBFQVQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBncmFkLT5zZXRH
cmFkaWVudFNwcmVhZE1ldGhvZChTUFJFQURNRVRIT0RfUEFEKTsKLQotICAgICAgICBpZiAoYmJv
eCkgewotICAgICAgICAgICAgX3gxICo9IDEwMC4wOwotICAgICAgICAgICAgX3kxICo9IDEwMC4w
OwotICAgICAgICAgICAgX3gyICo9IDEwMC4wOwotICAgICAgICAgICAgX3kyICo9IDEwMC4wOwot
ICAgICAgICB9CiAgICAgfQogCiAgICAgZ3JhZC0+c2V0R3JhZGllbnRUcmFuc2Zvcm0obWF0KTsK
QEAgLTE2MCw2ICsxNTcsNiBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6YnVpbGRH
cmFkCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRp
ZW50RWxlbWVudC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94
QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmlt
bWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwg
MjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0x
MzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50SW1w
bF9ICi0jZGVmaW5lIEtTVkdfU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50SW1wbF9ICisjaWZuZGVm
IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudF9ICisjZGVmaW5lIFNWR0xpbmVhckdSYWRpZW50RWxl
bWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSA8U1ZHR3JhZGllbnRFbGVt
ZW50Lmg+CkBAIC00NiwxMCArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmly
dHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRo
aXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5n
dGg+LCBYMSwgeDEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZMSwg
eTEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYMiwgeDIpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZMiwgeTIpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xl
bmd0aCwgU1ZHTGVuZ3RoLCBYMSwgeDEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZ
MSwgeTEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYMiwgeDIpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNW
R0xlbmd0aCwgU1ZHTGVuZ3RoLCBZMiwgeTIpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE4MTc3KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAg
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTQyLDEwICs0
MiwxMCBAQCBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KGNvbnN0CiAgICAgLCBT
VkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAg
LCBTVkdGaXRUb1ZpZXdCb3goKQotICAgICwgbV9yZWZYKG5ldyBTVkdMZW5ndGgodGhpcywgTE1f
V0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcmVmWShuZXcgU1ZHTGVuZ3RoKHRo
aXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9tYXJrZXJXaWR0aChu
ZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBt
X21hcmtlckhlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVt
ZW50KCkpKQorICAgICwgbV9yZWZYKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fcmVm
WSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV9tYXJrZXJXaWR0aCh0aGlzLCBMZW5n
dGhNb2RlV2lkdGgpCisgICAgLCBtX21hcmtlckhlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
KSAKICAgICAsIG1fbWFya2VyVW5pdHMoU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIKQogICAg
ICwgbV9vcmllbnRUeXBlKDApCiAgICAgLCBtX29yaWVudEFuZ2xlKG5ldyBTVkdBbmdsZSh0aGlz
KSkKQEAgLTU2LDYgKzU2LDE0IEBAIFNWR01hcmtlckVsZW1lbnQ6On5TVkdNYXJrZXJFbGVtZW50
KCkKIHsKIH0KIAorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUmVmWCwgcmVmWCwgU1ZHTmFtZXM6OnJlZlhB
dHRyLmxvY2FsTmFtZSgpLCBtX3JlZlgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSZWZZLCByZWZZLCBT
VkdOYW1lczo6cmVmWUF0dHIubG9jYWxOYW1lKCksIG1fcmVmWSkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0
aW9uLCBNYXJrZXJVbml0cywgbWFya2VyVW5pdHMsIFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIu
bG9jYWxOYW1lKCksIG1fbWFya2VyVW5pdHMpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBNYXJrZXJXaWR0
aCwgbWFya2VyV2lkdGgsIFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIubG9jYWxOYW1lKCksIG1f
bWFya2VyV2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBNYXJrZXJIZWlnaHQsIG1hcmtlckhlaWdo
dCwgU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1fbWFya2VySGVpZ2h0
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgaW50LCBF
bnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE9yaWVudFR5cGUsIG9yaWVudFR5cGUsICJvcmllbnRU
eXBlIiwgbV9vcmllbnRUeXBlKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfTk9OX1BP
RChTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmdsZSosIEFuZ2xlLCBhbmdsZSwgT3JpZW50QW5nbGUs
IG9yaWVudEFuZ2xlLCAib3JpZW50QW5nbGUiLCBtX29yaWVudEFuZ2xlLmdldCgpKQorCiB2b2lk
IFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSog
YXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsK
QEAgLTYzLDEzICs3MSwxMyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmliCiAgICAgICAgIGlmICh2YWx1ZSA9PSAidXNlclNwYWNlT25Vc2UiKQogICAgICAgICAgICAg
c2V0TWFya2VyVW5pdHNCYXNlVmFsdWUoU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cmVmWEF0dHIpCi0gICAg
ICAgIHJlZlhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNl
dFJlZlhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJlZllBdHRyKQotICAgICAg
ICByZWZZQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRS
ZWZZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyKQot
ICAgICAgICBtYXJrZXJXaWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsK
KyAgICAgICAgc2V0TWFya2VyV2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
Om1hcmtlckhlaWdodEF0dHIpCi0gICAgICAgIG1hcmtlckhlaWdodEJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0TWFya2VySGVpZ2h0QmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6b3JpZW50QXR0cikgewogICAgICAgICBpZiAodmFsdWUg
PT0gImF1dG8iKQogICAgICAgICAgICAgc2V0T3JpZW50VG9BdXRvKCk7CkBAIC05MCwxNCArOTgs
NiBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgfQogfQog
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5n
dGgqLCBMZW5ndGgsIGxlbmd0aCwgUmVmWCwgcmVmWCwgU1ZHTmFtZXM6OnJlZlhBdHRyLmxvY2Fs
TmFtZSgpLCBtX3JlZlguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdN
YXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgUmVmWSwgcmVmWSwgU1ZH
TmFtZXM6OnJlZllBdHRyLmxvY2FsTmFtZSgpLCBtX3JlZlkuZ2V0KCkpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVt
ZXJhdGlvbiwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdOYW1lczo6bWFya2VyVW5pdHNB
dHRyLmxvY2FsTmFtZSgpLCBtX21hcmtlclVuaXRzKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIE1hcmtl
cldpZHRoLCBtYXJrZXJXaWR0aCwgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ci5sb2NhbE5hbWUo
KSwgbV9tYXJrZXJXaWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBNYXJrZXJIZWlnaHQs
IG1hcmtlckhlaWdodCwgU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1f
bWFya2VySGVpZ2h0LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFy
a2VyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE9yaWVudFR5cGUsIG9y
aWVudFR5cGUsICJvcmllbnRUeXBlIiwgbV9vcmllbnRUeXBlKQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHQW5nbGUqLCBBbmdsZSwgYW5nbGUsIE9y
aWVudEFuZ2xlLCBvcmllbnRBbmdsZSwgIm9yaWVudEFuZ2xlIiwgbV9vcmllbnRBbmdsZS5nZXQo
KSkKLQogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0F1dG8oKQogewogICAgIHNl
dE9yaWVudFR5cGVCYXNlVmFsdWUoU1ZHX01BUktFUl9PUklFTlRfQVVUTyk7CkBAIC0xMjYsNyAr
MTI2LDcgQEAgU1ZHUmVzb3VyY2UqIFNWR01hcmtlckVsZW1lbnQ6OmNhbnZhc1JlcwogICAgIGVs
c2UKICAgICAgICAgbV9tYXJrZXItPnNldEF1dG9BbmdsZSgpOwogCi0gICAgbV9tYXJrZXItPnNl
dFJlZihyZWZYKCktPnZhbHVlKCksIHJlZlkoKS0+dmFsdWUoKSk7CisgICAgbV9tYXJrZXItPnNl
dFJlZihyZWZYKCkudmFsdWUoKSwgcmVmWSgpLnZhbHVlKCkpOwogICAgIG1fbWFya2VyLT5zZXRV
c2VTdHJva2VXaWR0aChtYXJrZXJVbml0cygpID09IFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURU
SCk7CiAgICAgCiAgICAgcmV0dXJuIG1fbWFya2VyLmdldCgpOwpAQCAtMTQ0LDYgKzE0NCw2IEBA
IFJlbmRlck9iamVjdCogU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlUmUKIAogfQogCi0vLyB2aW06
dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkocmV2aXNpb24gMTgxNzYpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1l
cm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAg
ICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2lmbmRl
ZiBTVkdNYXJrZXJFbGVtZW50X0gKICNkZWZpbmUgU1ZHTWFya2VyRWxlbWVudF9ICisKICNpZmRl
ZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VNYXJrZXIuaCIKQEAgLTM0LDgg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIHsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBj
bGFzcyBTVkdBbmdsZTsKLSAgICBjbGFzcyBTVkdBbmdsZTsKLSAgICBjbGFzcyBTVkdMZW5ndGg7
CisgICAgCiAgICAgY2xhc3MgU1ZHTWFya2VyRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVt
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwKQEAgLTc1LDEwICs3NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIEZs
b2F0UmVjdCwgVmlld0JveCwgdmlld0JveCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9S
V0FSRF9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
KiwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgUmVmUHRyPFNWR0xlbmd0aD4sIFJlZlgsIHJlZlgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZH
TGVuZ3RoPiwgUmVmWSwgcmVmWSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBNYXJr
ZXJXaWR0aCwgbWFya2VyV2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgTWFy
a2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgUmVmWCwgcmVm
WCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1l
bnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSZWZZLCByZWZZKQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBNYXJr
ZXJIZWlnaHQsIG1hcmtlckhlaWdodCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgaW50LCBNYXJrZXJVbml0cywgbWFya2VyVW5p
dHMpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVt
ZW50LCBpbnQsIGludCwgT3JpZW50VHlwZSwgb3JpZW50VHlwZSkKICAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0FuZ2xlKiwgUmVmUHRy
PFNWR0FuZ2xlPiwgT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQpJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA1IEFsZXhh
bmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAKQEAgLTQ1LDEwICs0NSwxMCBAQCBTVkdN
YXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhCiAgICAgLCBTVkdUZXN0cygpCiAg
ICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
Ci0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50
KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVs
ZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZp
ZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1f
SEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdp
ZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWln
aHQpCiAgICAgLCBtX2RpcnR5KHRydWUpCiB7CiB9CkBAIC01NywxNCArNTcsMTQgQEAgU1ZHTWFz
a0VsZW1lbnQ6On5TVkdNYXNrRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwg
eCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5n
dGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0
aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCks
IG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1l
czo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRo
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5s
b2NhbE5hbWUoKSwgbV9oZWlnaHQpCiAKIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OmF0dHJpYnV0ZUNo
YW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpCiB7Ci0gICAgSW50U2l6
ZSBuZXdTaXplID0gSW50U2l6ZShscm91bmRmKHdpZHRoKCktPnZhbHVlKCkpLCBscm91bmRmKGhl
aWdodCgpLT52YWx1ZSgpKSk7CisgICAgSW50U2l6ZSBuZXdTaXplID0gSW50U2l6ZShscm91bmRm
KHdpZHRoKCkudmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0KCkudmFsdWUoKSkpOwogICAgIGlmICgh
bV9tYXNrZXIgfHwgIW1fbWFza2VyLT5tYXNrKCkgfHwgKG1fbWFza2VyLT5tYXNrKCktPnNpemUo
KSAhPSBuZXdTaXplKSkKICAgICAgICAgbV9kaXJ0eSA9IHRydWU7CiAgICAgU1ZHU3R5bGVkTG9j
YXRhYmxlRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChhdHRyLCBwcmVzZXJ2ZURlY2xzKTsKQEAg
LTgwLDEzICs4MCwxMyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
CiB7CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhCYXNlVmFsdWUoKS0+c2V0
VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJp
bmcodmFsdWUpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6d2lkdGhBdHRyKQotICAgICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5n
KHZhbHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3Ry
aW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoU1ZHVVJJ
UmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEwNyw3ICsxMDcsNyBAQCBTVkdSZXNvdXJjZUltYWdlKiBTVkdNYXNrRWxlbWVudDo6
ZHJhd01hCiAgICAgcmV0dXJuIDA7CiAgICAgU1ZHUmVzb3VyY2VJbWFnZSogbWFza0ltYWdlID0g
bmV3IFNWR1Jlc291cmNlSW1hZ2UoKTsKIAotICAgIEludFNpemUgc2l6ZSA9IEludFNpemUobHJv
dW5kZih3aWR0aCgpLT52YWx1ZSgpKSwgbHJvdW5kZihoZWlnaHQoKS0+dmFsdWUoKSkpOworICAg
IEludFNpemUgc2l6ZSA9IEludFNpemUobHJvdW5kZih3aWR0aCgpLnZhbHVlKCkpLCBscm91bmRm
KGhlaWdodCgpLnZhbHVlKCkpKTsKICAgICBtYXNrSW1hZ2UtPmluaXQoc2l6ZSk7CiAKICAgICBP
d25QdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KGNvbnRleHRGb3JJbWFnZShtYXNrSW1hZ2Up
KTsKQEAgLTE0NCw2ICsxNDQsNiBAQCBTVkdSZXNvdXJjZSogU1ZHTWFza0VsZW1lbnQ6OmNhbnZh
c1Jlc291CiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAK
Ky8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2
aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpZm5kZWYgU1ZHTWFza0VsZW1lbnRfSAog
I2RlZmluZSBTVkdNYXNrRWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VNYXNrZXIuaCIKQEAgLTYwLDEwICs2MSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdV
UklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJlZikKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9v
bCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
ICAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50
LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8
U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgV2lkdGgsIHdp
ZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1l
bnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5n
dGgsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgs
IFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhl
aWdodCkKIAogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE3NykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBr
ZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1l
cm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIw
MDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgcHJvamVjdApAQCAtNTIsMTAgKzUyLDEwIEBAIFNWR1BhdHRlcm5FbGVtZW50OjpTVkdQ
YXR0ZXJuRWxlbWVudChjb24KICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQog
ICAgICwgU1ZHRml0VG9WaWV3Qm94KCkKICAgICAsIFNWR1Jlc291cmNlTGlzdGVuZXIoKQotICAg
ICwgbV94KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkK
LSAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50
KCkpKQotICAgICwgbV93aWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9y
dEVsZW1lbnQoKSkpCi0gICAgLCBtX2hlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdI
VCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkK
KyAgICAsIG1feSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQog
ICAgICwgbV9wYXR0ZXJuVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJP
VU5ESU5HQk9YKQogICAgICwgbV9wYXR0ZXJuQ29udGVudFVuaXRzKFNWR1VuaXRUeXBlczo6U1ZH
X1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKICAgICAsIG1fcGF0dGVyblRyYW5zZm9ybShuZXcg
U1ZHVHJhbnNmb3JtTGlzdCkKQEAgLTY5LDExICs2OSwxMSBAQCBTVkdQYXR0ZXJuRWxlbWVudDo6
flNWR1BhdHRlcm5FbGVtZW50KCkKIAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
UGF0dGVybkVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBQYXR0ZXJuVW5p
dHMsIHBhdHRlcm5Vbml0cywgU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIubG9jYWxOYW1lKCks
IG1fcGF0dGVyblVuaXRzKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVy
bkVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBQYXR0ZXJuQ29udGVudFVu
aXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0c0F0
dHIubG9jYWxOYW1lKCksIG1fcGF0dGVybkNvbnRlbnRVbml0cykKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0
aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVu
Z3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgp
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xl
bmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIu
bG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwg
aGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHVHJh
bnNmb3JtTGlzdCosIFRyYW5zZm9ybUxpc3QsIHRyYW5zZm9ybUxpc3QsIFBhdHRlcm5UcmFuc2Zv
cm0sIHBhdHRlcm5UcmFuc2Zvcm0sIFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ci5sb2Nh
bE5hbWUoKSwgbV9wYXR0ZXJuVHJhbnNmb3JtLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgs
IHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0
aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0
dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNf
Tk9OX1BPRChTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCosIFRyYW5zZm9ybUxp
c3QsIHRyYW5zZm9ybUxpc3QsIFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0sIFNW
R05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ci5sb2NhbE5hbWUoKSwgbV9wYXR0ZXJuVHJhbnNm
b3JtLmdldCgpKQogCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkBAIC05NSwxMyArOTUsMTMgQEAgdm9pZCBTVkdQ
YXR0ZXJuRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgICAgICAgICAgcGF0dGVyblRyYW5z
Zm9ybXMtPmNsZWFyKGVjKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3Ry
aW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7
CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQs
IHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0aEF0
dHIpCi0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwor
ICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0
QXR0cikKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUp
OworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChTVkdVUklSZWZlcmVuY2U6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE4
LDE5ICsxMTgsNiBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAg
ICAgfQogfQogCi1jb25zdCBTVkdTdHlsZWRFbGVtZW50KiBTVkdQYXR0ZXJuRWxlbWVudDo6cHVz
aEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCkKLXsKLSAg
ICAvLyBBbGwgYXR0cmlidXRlJ3MgY29udGV4dHMgYXJlIGVxdWFsIChzbyBqdXN0IHRha2UgdGhl
IG9uZSBmcm9tICd4JykuCi0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcmVzdG9yZSA9IHgo
KS0+Y29udGV4dCgpOwotCi0gICAgeCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHkoKS0+
c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICB3aWR0aCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwot
ICAgIGhlaWdodCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotCi0gICAgcmV0dXJuIHJlc3RvcmU7
Ci19Ci0KIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnJlc291cmNlTm90aWZpY2F0aW9uKCkgY29u
c3QKIHsKICAgICAvLyBXZSdyZSByZWZlcmVuY2VkIGJ5IGEgImNsaWVudCIsIGNhbGN1bGF0ZSB0
aGUgdGlsZSBub3cuLi4KQEAgLTE2OSwyNiArMTU2LDM4IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1l
bnQ6OmZpbGxBdHRyaWJ1dGVzRnIKIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6ZHJhd1BhdHRl
cm5Db250ZW50SW50b1RpbGUoY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQqIHRhcmdldCwgY29uc3Qg
SW50U2l6ZSYgbmV3U2l6ZSwgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm1NYXRyaXgp
CiB7Ci0gICAgU1ZHU3R5bGVkRWxlbWVudCogYWN0aXZlRWxlbWVudCA9IHN0YXRpY19jYXN0PFNW
R1N0eWxlZEVsZW1lbnQqPihtX3BhaW50U2VydmVyLT5hY3RpdmVDbGllbnQoKS0+ZWxlbWVudCgp
KTsKLQogICAgIGJvb2wgYmJveCA9IChwYXR0ZXJuVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNW
R19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpOwogCi0gICAgY29uc3QgU1ZHU3R5bGVkRWxl
bWVudCogc2F2ZWRDb250ZXh0ID0gMDsKKyAgICBmbG9hdCBfeCwgX3ksIHcsIGg7CiAgICAgaWYg
KGJib3gpIHsKLSAgICAgICAgaWYgKHdpZHRoKCktPnVuaXRUeXBlKCkgIT0gU1ZHTGVuZ3RoOjpT
VkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKQotICAgICAgICAgICAgd2lkdGgoKS0+bmV3VmFsdWVT
cGVjaWZpZWRVbml0cyhTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UsIHdpZHRo
KCktPnZhbHVlKCkgKiAxMDAuKTsKLSAgICAgICAgaWYgKGhlaWdodCgpLT51bml0VHlwZSgpICE9
IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgIGhlaWdo
dCgpLT5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVS
Q0VOVEFHRSwgaGVpZ2h0KCktPnZhbHVlKCkgKiAxMDAuKTsKLSAgICAgICAgaWYgKGFjdGl2ZUVs
ZW1lbnQpCi0gICAgICAgICAgICBzYXZlZENvbnRleHQgPSBjb25zdF9jYXN0PFNWR1BhdHRlcm5F
bGVtZW50Kj4odGhpcyktPnB1c2hBdHRyaWJ1dGVDb250ZXh0KGFjdGl2ZUVsZW1lbnQpOworICAg
ICAgICBfeCA9IHgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgaWYgKFNWR0xl
bmd0aDo6aXNGcmFjdGlvbih4KCkpKQorICAgICAgICAgICAgX3ggKj0gMTAwLjA7CisKKyAgICAg
ICAgX3kgPSB5KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGlmIChTVkdMZW5n
dGg6OmlzRnJhY3Rpb24oeSgpKSkKKyAgICAgICAgICAgIF95ICo9IDEwMC4wOworCisgICAgICAg
IHcgPSB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBpZiAoU1ZHTGVu
Z3RoOjppc0ZyYWN0aW9uKHdpZHRoKCkpKQorICAgICAgICAgICAgdyAqPSAxMDAuMDsKKworICAg
ICAgICBoID0gaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGlmIChT
VkdMZW5ndGg6OmlzRnJhY3Rpb24oaGVpZ2h0KCkpKQorICAgICAgICAgICAgaCAqPSAxMDAuMDsK
KyAgICB9IGVsc2UgeworICAgICAgICBfeCA9IHgoKS52YWx1ZSgpOworICAgICAgICBfeSA9IHko
KS52YWx1ZSgpOworICAgICAgICB3ID0gd2lkdGgoKS52YWx1ZSgpOworICAgICAgICBoID0gaGVp
Z2h0KCkudmFsdWUoKTsKICAgICB9Ci0gICAgCisKICAgICBtX3RpbGUgPSBuZXcgU1ZHUmVzb3Vy
Y2VJbWFnZSgpOwogICAgIG1fdGlsZS0+aW5pdChuZXdTaXplKTsKIAogICAgIE93blB0cjxHcmFw
aGljc0NvbnRleHQ+IHBhdHRlcm5Db250ZXh0KGNvbnRleHRGb3JJbWFnZShtX3RpbGUuZ2V0KCkp
KTsKIAotICAgIEZsb2F0UmVjdCByZWN0KHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1ZSgpLCB3aWR0
aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7CisgICAgRmxvYXRSZWN0IHJlY3QoX3gs
IF95LCB3LCBoKTsKICAgICBtX3BhaW50U2VydmVyLT5zZXRCYm94KHJlY3QpOwogICAgIG1fcGFp
bnRTZXJ2ZXItPnNldFBhdHRlcm5UcmFuc2Zvcm0ocGF0dGVyblRyYW5zZm9ybU1hdHJpeCk7CiAg
ICAgbV9wYWludFNlcnZlci0+c2V0VGlsZShtX3RpbGUuZ2V0KCkpOwpAQCAtMjQzLDkgKzI0Miw2
IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmRyYXdQYXR0ZXJuQ29udGUKICAgICAgICAgaXRl
bS0+c2V0TG9jYWxUcmFuc2Zvcm0oc2F2ZWRNYXRyaXgubWF0cml4KCkpOwogI2VuZGlmCiAgICAg
fQotCi0gICAgaWYgKHNhdmVkQ29udGV4dCkKLSAgICAgICAgY29uc3RfY2FzdDxTVkdQYXR0ZXJu
RWxlbWVudCo+KHRoaXMpLT5wdXNoQXR0cmlidXRlQ29udGV4dChzYXZlZENvbnRleHQpOwogfQog
CiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50Ojpub3RpZnlDbGllbnRzVG9SZXBhaW50KCkgY29uc3QK
QEAgLTI3MSw3ICsyNjcsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50Ojpub3RpZnlBdHRyaWJ1
dGVDCiAgICAgaWYgKCFtX3BhaW50U2VydmVyIHx8ICFtX3BhaW50U2VydmVyLT5hY3RpdmVDbGll
bnQoKSB8fCBtX2lnbm9yZUF0dHJpYnV0ZUNoYW5nZXMpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEludFNpemUgbmV3U2l6ZSA9IEludFNpemUobHJvdW5kZih3aWR0aCgpLT52YWx1ZSgpKSwgbHJv
dW5kZihoZWlnaHQoKS0+dmFsdWUoKSkpOworICAgIEludFNpemUgbmV3U2l6ZSA9IEludFNpemUo
bHJvdW5kZih3aWR0aCgpLnZhbHVlKCkpLCBscm91bmRmKGhlaWdodCgpLnZhbHVlKCkpKTsKICAg
ICBpZiAobV90aWxlICYmIChtX3RpbGUtPnNpemUoKSA9PSBuZXdTaXplKSB8fCBuZXdTaXplLndp
ZHRoKCkgPCAxIHx8IG5ld1NpemUuaGVpZ2h0KCkgPCAxKQogICAgICAgICByZXR1cm47CiAKQEAg
LTMzMSwxMiArMzI3LDEzIEBAIFNWR1Jlc291cmNlKiBTVkdQYXR0ZXJuRWxlbWVudDo6Y2FudmFz
UmUKIEFmZmluZVRyYW5zZm9ybSBTVkdQYXR0ZXJuRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OwotICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0g
dmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUo
KSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3Jt
KHdpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KCkudmFsdWUoKSk7CiAgICAgbWF0ICo9IHZpZXdCb3g7
CiAgICAgcmV0dXJuIG1hdDsKIH0KIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKKworLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiAxODE3NykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdQYXR0ZXJuRWxlbWVudEltcGxfSAotI2RlZmlu
ZSBLU1ZHX1NWR1BhdHRlcm5FbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR1BhdHRlcm5FbGVtZW50
X0gKKyNkZWZpbmUgU1ZHUGF0dGVybkVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAog
I2luY2x1ZGUgIlNWR1BhaW50U2VydmVyUGF0dGVybi5oIgpAQCAtNzQsMTAgKzc1LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR0ZpdFRvVmlld0JveCwgRmxvYXRSZWN0LCBWaWV3Qm94LCB2aWV3Qm94KQogICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdC
b3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2
ZUFzcGVjdFJhdGlvKQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRy
PFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3Ro
PiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVu
Z3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0
aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVt
ZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgaW50LCBpbnQsIFBh
dHRlcm5Vbml0cywgcGF0dGVyblVuaXRzKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIGludCwgaW50LCBQYXR0ZXJuQ29udGVudFVuaXRz
LCBwYXR0ZXJuQ29udGVudFVuaXRzKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBSZWZQdHI8U1ZHVHJh
bnNmb3JtTGlzdD4sIFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0pCkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlz
aW9uIDE4MTc3KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApA
QCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZH
X1NVUFBPUlQKICNpbmNsdWRlICJTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCIKIApAQCAtMzcs
NDEgKzM4LDQxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2Mp
Ci0gICAgLCBtX2N4KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVu
dCgpKSkKLSAgICAsIG1fY3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0
RWxlbWVudCgpKSkKLSAgICAsIG1fcihuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX09USEVSLCB2aWV3
cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2Z4KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgs
IHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fZnkobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9I
RUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1fY3godGhpcywgTGVuZ3RoTW9kZVdp
ZHRoKQorICAgICwgbV9jeSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV9yKHRoaXMs
IExlbmd0aE1vZGVPdGhlcikKKyAgICAsIG1fZngodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAg
ICwgbV9meSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIC8vIFNwZWM6IElmIHRoZSBh
dHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9m
ICI1MCUiIHdlcmUgc3BlY2lmaWVkLgotICAgIG1fY3gtPnNldFZhbHVlQXNTdHJpbmcoIjUwJSIp
OwotICAgIG1fY3ktPnNldFZhbHVlQXNTdHJpbmcoIjUwJSIpOwotICAgIG1fci0+c2V0VmFsdWVB
c1N0cmluZygiNTAlIik7CisgICAgc2V0Q3hCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCwgIjUwJSIpKTsKKyAgICBzZXRDeUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCwgIjUwJSIpKTsKKyAgICBzZXRSQmFzZVZhbHVlKFNWR0xlbmd0aCh0
aGlzLCBMZW5ndGhNb2RlT3RoZXIsICI1MCUiKSk7CiB9CiAKIFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudDo6flNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVu
Z3RoLCBsZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4QXR0ci5sb2NhbE5hbWUoKSwgbV9jeC5n
ZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0
ci5sb2NhbE5hbWUoKSwgbV9jeS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEZ4
LCBmeCwgU1ZHTmFtZXM6OmZ4QXR0ci5sb2NhbE5hbWUoKSwgbV9meC5nZXQoKSkKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgTGVuZ3RoLCBsZW5ndGgsIEZ5LCBmeSwgU1ZHTmFtZXM6OmZ5QXR0ci5sb2NhbE5hbWUoKSwg
bV9meS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFIsIHIsIFNWR05hbWVzOjpy
QXR0ci5sb2NhbE5hbWUoKSwgbV9yLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBD
eCwgY3gsIFNWR05hbWVzOjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3gpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ci5sb2NhbE5hbWUoKSwgbV9jeSkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwg
U1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgRngsIGZ4LCBTVkdOYW1lczo6ZnhBdHRyLmxvY2Fs
TmFtZSgpLCBtX2Z4KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBGeSwgZnksIFNWR05hbWVz
OjpmeUF0dHIubG9jYWxOYW1lKCksIG1fZnkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFIs
IHIsIFNWR05hbWVzOjpyQXR0ci5sb2NhbE5hbWUoKSwgbV9yKQogCiB2b2lkIFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAgY3hCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEN4QmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeUF0dHIpCi0gICAgICAgIGN5QmFzZVZhbHVlKCktPnNl
dFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRDeUJhc2VWYWx1ZShTVkdMZW5ndGgo
dGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OnJBdHRyKQotICAgICAgICByQmFzZVZhbHVlKCktPnNldFZhbHVlQXNT
dHJpbmcodmFsdWUpOworICAgICAgICBzZXRSQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5n
dGhNb2RlT3RoZXIsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjpmeEF0dHIpCi0gICAgICAgIGZ4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFs
dWUpOworICAgICAgICBzZXRGeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ZnlB
dHRyKQotICAgICAgICBmeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAg
ICAgICAgc2V0RnlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlKSk7CiAgICAgZWxzZQogICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKGF0dHIpOwogfQpAQCAtODMsMTUgKzg0LDQyIEBAIHZvaWQgU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50OjpidWlsZEdyYWQKICAgICBib29sIGJib3ggPSAoZ3JhZGllbnRVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCk7CiAgICAg
Ym9vbCBmeFNldCA9IGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6ZnhBdHRyKTsKICAgICBib29sIGZ5
U2V0ID0gaGFzQXR0cmlidXRlKFNWR05hbWVzOjpmeUF0dHIpOwotICAgIGN4KCktPnNldEJib3hS
ZWxhdGl2ZShiYm94KTsKLSAgICBjeSgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgcigp
LT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgZngoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gp
OwotICAgIGZ5KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICBmbG9hdCBfY3ggPSBjeCgp
LT52YWx1ZSgpLCBfY3kgPSBjeSgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF9yID0gcigpLT52YWx1
ZSgpOwotICAgIGZsb2F0IF9meCA9IGZ4U2V0ID8gZngoKS0+dmFsdWUoKSA6IF9jeDsKLSAgICBm
bG9hdCBfZnkgPSBmeVNldCA/IGZ5KCktPnZhbHVlKCkgOiBfY3k7CisgCisgICAgZmxvYXQgX2N4
LCBfY3ksIF9yLCBfZngsIF9meTsKKworICAgIGlmIChiYm94KSB7CisgICAgICAgIF9jeCA9IGN4
KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJh
Y3Rpb24oY3goKSkpCisgICAgICAgICAgICBfY3ggKj0gMTAwLjA7CisKKyAgICAgICAgX2N5ID0g
Y3koKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNG
cmFjdGlvbihjeSgpKSkKKyAgICAgICAgICAgIF9jeSAqPSAxMDAuMDsKKworICAgICAgICBfciA9
IHIoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNG
cmFjdGlvbihyKCkpKQorICAgICAgICAgICAgX3IgKj0gMTAwLjA7CisKKyAgICAgICAgaWYgKGZ4
U2V0KSB7CisgICAgICAgICAgICBfZnggPSBmeCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOwor
ICAgICAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbihmeCgpKSkKKyAgICAgICAgICAg
ICAgICBfZnggKj0gMTAwLjA7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgX2Z4ID0gX2N4
OworICAgICAgICAKKyAgICAgICAgaWYgKGZ5U2V0KSB7CisgICAgICAgICAgICBfZnkgPSBmeSgp
LnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNG
cmFjdGlvbihmeSgpKSkKKyAgICAgICAgICAgICAgICBfZnkgKj0gMTAwLjA7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgX2Z5ID0gX2N5OworICAgIH0gZWxzZSB7CisgICAgICAgIF9jeCA9
IGN4KCkudmFsdWUoKTsKKyAgICAgICAgX2N5ID0gY3koKS52YWx1ZSgpOworICAgICAgICBfciA9
IHIoKS52YWx1ZSgpOworICAgICAgICBfZnggPSBmeFNldCA/IGZ4KCkudmFsdWUoKSA6IF9jeDsK
KyAgICAgICAgX2Z5ID0gZnlTZXQgPyBmeSgpLnZhbHVlKCkgOiBfY3k7CisgICAgfQogCiAgICAg
UmVmUHRyPFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+IGdyYWQgPSBXVEY6OnN0YXRpY19w
b2ludGVyX2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudD4oX2dyYWQpOwogICAgIEFm
ZmluZVRyYW5zZm9ybSBtYXQ7CkBAIC0xMTIsMzIgKzE0MCwxOCBAQCB2b2lkIFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAgICAgICAgICAgICBSZWZQdHI8U1ZHUGFpbnRTZXJ2
ZXJSYWRpYWxHcmFkaWVudD4gcmFkaWFsID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR1Bh
aW50U2VydmVyUmFkaWFsR3JhZGllbnQ+KHBzZXJ2ZXIpOwogICAgICAgICAgICAgaWYgKCFoYXNB
dHRyaWJ1dGUoU1ZHTmFtZXM6OmN4QXR0cikpCiAgICAgICAgICAgICAgICAgX2N4ID0gcmFkaWFs
LT5ncmFkaWVudENlbnRlcigpLngoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCi0gICAg
ICAgICAgICAgICAgX2N4ICo9IDEwMC47CisKICAgICAgICAgICAgIGlmICghaGFzQXR0cmlidXRl
KFNWR05hbWVzOjpjeUF0dHIpKQogICAgICAgICAgICAgICAgIF9jeSA9IHJhZGlhbC0+Z3JhZGll
bnRDZW50ZXIoKS55KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAg
ICAgIF9jeSAqPSAxMDAuOwogCiAgICAgICAgICAgICBpZiAoIWZ4U2V0KQogICAgICAgICAgICAg
ICAgIF9meCA9IHJhZGlhbC0+Z3JhZGllbnRGb2NhbCgpLngoKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGJib3gpCi0gICAgICAgICAgICAgICAgX2Z4ICo9IDEwMC47CisKICAgICAgICAgICAgIGlm
ICghZnlTZXQpCiAgICAgICAgICAgICAgICAgX2Z5ID0gcmFkaWFsLT5ncmFkaWVudEZvY2FsKCku
eSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoYmJveCkKLSAgICAgICAgICAgICAgICBfZnkgKj0g
MTAwLjsKIAogICAgICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJBdHRyKSkK
ICAgICAgICAgICAgICAgICBfciA9IHJhZGlhbC0+Z3JhZGllbnRSYWRpdXMoKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKGJib3gpCi0gICAgICAgICAgICAgICAgX3IgKj0gMTAwLjsKLSAgICAgICAg
fSBlbHNlIGlmIChiYm94KSB7Ci0gICAgICAgICAgICBfY3ggKj0gMTAwLjA7Ci0gICAgICAgICAg
ICBfY3kgKj0gMTAwLjA7Ci0gICAgICAgICAgICBfZnggKj0gMTAwLjA7Ci0gICAgICAgICAgICBf
ZnkgKj0gMTAwLjA7Ci0gICAgICAgICAgICBfciAqPSAxMDAuMDsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKQpA
QCAtMTU2LDE0ICsxNzAsNiBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YnVpbGRH
cmFkCiAgICAgICAgICAgICBncmFkLT5zZXRHcmFkaWVudFNwcmVhZE1ldGhvZChTUFJFQURNRVRI
T0RfUkVQRUFUKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ3JhZC0+c2V0R3JhZGllbnRT
cHJlYWRNZXRob2QoU1BSRUFETUVUSE9EX1BBRCk7Ci0KLSAgICAgICAgaWYgKGJib3gpIHsKLSAg
ICAgICAgICAgIF9jeCAqPSAxMDAuMDsKLSAgICAgICAgICAgIF9jeSAqPSAxMDAuMDsKLSAgICAg
ICAgICAgIF9meCAqPSAxMDAuMDsKLSAgICAgICAgICAgIF9meSAqPSAxMDAuMDsKLSAgICAgICAg
ICAgIF9yICo9IDEwMC4wOwotICAgICAgICB9CiAgICAgfQogCiAgICAgZ3JhZC0+c2V0R3JhZGll
bnRUcmFuc2Zvcm0obWF0KTsKQEAgLTE3NSw2ICsxODEsNiBAQCB2b2lkIFNWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudDo6YnVpbGRHcmFkCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8v
IFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5IEBACiAgICAg
Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50SW1wbF9ICisjaWZuZGVmIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudF9ICisjZGVmaW5lIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVk
ZSA8U1ZHR3JhZGllbnRFbGVtZW50Lmg+CkBAIC00NiwxMSArNDcsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0
aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBDeCwgY3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0
cjxTVkdMZW5ndGg+LCBDeSwgY3kpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5n
dGg+LCBSLCByKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgRngsIGZ4
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgRnksIGZ5KQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgQ3gsIGN4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xl
bmd0aCwgQ3ksIGN5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgUiwgcikKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEZ4LCBmeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdM
ZW5ndGgsIEZ5LCBmeSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMzUsMTIgKzM1LDEyIEBAIFNWR1JlY3RFbGVt
ZW50OjpTVkdSZWN0RWxlbWVudChjb25zdCBRdWEKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNW
R0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAs
IG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0g
ICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgp
KSkKLSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRF
bGVtZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQs
IHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcngobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9X
SURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9yeShuZXcgU1ZHTGVuZ3RoKHRoaXMs
IExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94KHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0
aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0KQorICAgICwgbV9yeCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3J5KHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTQ4LDI4ICs0OCwyOCBAQCBTVkdSZWN0
RWxlbWVudDo6flNWR1JlY3RFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYLCB4
LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feC5nZXQoKSkKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0
aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kuZ2V0KCkpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwg
bV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVt
ZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVz
OjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodC5nZXQoKSkKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0
aCwgUngsIHJ4LCBTVkdOYW1lczo6cnhBdHRyLmxvY2FsTmFtZSgpLCBtX3J4LmdldCgpKQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIExl
bmd0aCwgbGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIubG9jYWxOYW1lKCksIG1fcnku
Z2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgp
LCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgp
LCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRy
LmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
UmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBT
VkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgUngsIHJ4LCBTVkdOYW1lczo6cnhBdHRyLmxvY2FsTmFtZSgpLCBtX3J4KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIFJ5LCByeSwgU1ZHTmFtZXM6OnJ5QXR0ci5sb2NhbE5hbWUoKSwgbV9yeSkKIAogdm9p
ZCBTVkdSZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBh
dHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZh
bHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAgICAgICAgcnhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSk7CisgICAgICAgICBzZXRSeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6cnlBdHRyKQotICAgICAgICByeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlKTsKKyAgICAgICAgIHNldFJ5QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
d2lkdGhBdHRyKQotICAgICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OmhlaWdodEF0dHIpCi0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5n
KHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoU1ZHVGVzdHM6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODMs
NDggKzgzLDIxIEBAIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKIAog
UGF0aCBTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CiB7Ci0gICAgRmxvYXRSZWN0
IHJlY3QoeCgpLT52YWx1ZSgpLCB5KCktPnZhbHVlKCksIHdpZHRoKCktPnZhbHVlKCksIGhlaWdo
dCgpLT52YWx1ZSgpKTsKKyAgICBGbG9hdFJlY3QgcmVjdCh4KCkudmFsdWUoKSwgeSgpLnZhbHVl
KCksIHdpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KCkudmFsdWUoKSk7CiAKLSAgICBib29sIGhhc1J4
ID0gaGFzQXR0cmlidXRlKCJyeCIpOwotICAgIGJvb2wgaGFzUnkgPSBoYXNBdHRyaWJ1dGUoInJ5
Iik7CisgICAgYm9vbCBoYXNSeCA9IGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6cnhBdHRyKTsKKyAg
ICBib29sIGhhc1J5ID0gaGFzQXR0cmlidXRlKFNWR05hbWVzOjpyeUF0dHIpOwogICAgIGlmICho
YXNSeCB8fCBoYXNSeSkgewotICAgICAgICBmbG9hdCBfcnggPSBoYXNSeCA/IHJ4KCktPnZhbHVl
KCkgOiByeSgpLT52YWx1ZSgpOwotICAgICAgICBmbG9hdCBfcnkgPSBoYXNSeSA/IHJ5KCktPnZh
bHVlKCkgOiByeCgpLT52YWx1ZSgpOworICAgICAgICBmbG9hdCBfcnggPSBoYXNSeCA/IHJ4KCku
dmFsdWUoKSA6IHJ5KCkudmFsdWUoKTsKKyAgICAgICAgZmxvYXQgX3J5ID0gaGFzUnkgPyByeSgp
LnZhbHVlKCkgOiByeCgpLnZhbHVlKCk7CiAgICAgICAgIHJldHVybiBQYXRoOjpjcmVhdGVSb3Vu
ZGVkUmVjdGFuZ2xlKHJlY3QsIEZsb2F0U2l6ZShfcngsIF9yeSkpOwogICAgIH0KIAogICAgIHJl
dHVybiBQYXRoOjpjcmVhdGVSZWN0YW5nbGUocmVjdCk7CiB9CiAKLWNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnQqIFNWR1JlY3RFbGVtZW50OjpwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHls
ZWRFbGVtZW50KiBjb250ZXh0KQotewotICAgIC8vIEFsbCBhdHRyaWJ1dGUncyBjb250ZXh0cyBh
cmUgZXF1YWwgKHNvIGp1c3QgdGFrZSB0aGUgb25lIGZyb20gJ3gnKS4KLSAgICBjb25zdCBTVkdT
dHlsZWRFbGVtZW50KiByZXN0b3JlID0geCgpLT5jb250ZXh0KCk7Ci0KLSAgICB4KCktPnNldENv
bnRleHQoY29udGV4dCk7Ci0gICAgeSgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHdpZHRo
KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgaGVpZ2h0KCktPnNldENvbnRleHQoY29udGV4
dCk7Ci0gICAgCi0gICAgU1ZHU3R5bGVkRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29u
dGV4dCk7Ci0gICAgcmV0dXJuIHJlc3RvcmU7Ci19Ci0KLWJvb2wgU1ZHUmVjdEVsZW1lbnQ6Omhh
c1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdAotewotICAgIGlmICh4KCktPnVuaXRUeXBlKCkgPT0g
U1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHkoKS0+dW5p
dFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAg
ICAgd2lkdGgoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNF
TlRBR0UgfHwKLSAgICAgICAgaGVpZ2h0KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdf
TEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHJ4KCktPnVuaXRUeXBlKCkgPT0gU1ZH
TGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHJ5KCktPnVuaXRU
eXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogfQogCi0vLyB2aW06dHM9NDpu
b2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRm
b3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTEx
LTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdSZWN0RWxlbWVudEltcGxfSAotI2Rl
ZmluZSBLU1ZHX1NWR1JlY3RFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR1JlY3RFbGVtZW50X0gK
KyNkZWZpbmUgU1ZHUmVjdEVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1
ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTMxLDcgKzMyLDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAgICBjbGFzcyBTVkdMZW5ndGg7CiAgICAgY2xhc3MgU1ZH
UmVjdEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLApAQCAtNDksMjIgKzQ5LDE4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRl
clN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChz
dHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAotICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hBdHRyaWJ1dGVDb250ZXh0
KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOwotCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdGhpczsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVz
KCkgY29uc3Q7Ci0KICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JX
QVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVu
Z3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0
RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdM
ZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVm
UHRyPFNWR0xlbmd0aD4sIFJ4LCByeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgUnks
IHJ5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1l
bnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQs
IFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgs
IEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSeCwgcngpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBT
VkdMZW5ndGgsIFJ5LCByeSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNzcpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdTVkdF
bGVtZW50LmgiCiAKQEAgLTUzLDE5ICs1NCwxNSBAQCBTVkdTVkdFbGVtZW50OjpTVkdTVkdFbGVt
ZW50KGNvbnN0IFF1YWxpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAg
ICAsIFNWR0ZpdFRvVmlld0JveCgpCiAgICAgLCBTVkdab29tQW5kUGFuKCkKKyAgICAsIG1feCh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkK
KyAgICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCkKICAgICAsIG1fdXNlQ3VycmVudFZpZXcoZmFsc2UpCiAgICAg
LCBtX3RpbWVTY2hlZHVsZXIobmV3IFRpbWVTY2hlZHVsZXIoZG9jKSkKIHsKLSAgICBjb25zdCBT
VkdFbGVtZW50KiB2aWV3cG9ydCA9IG93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkg
PT0gdGhpcyA/IHRoaXMgOiB2aWV3cG9ydEVsZW1lbnQoKTsKLSAgICBjb25zdCBTVkdTdHlsZWRF
bGVtZW50KiBjb250ZXh0ID0gb3duZXJEb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA9PSB0
aGlzID8gMCA6IHRoaXM7Ci0KLSAgICBtX3ggPSBuZXcgU1ZHTGVuZ3RoKGNvbnRleHQsIExNX1dJ
RFRILCB2aWV3cG9ydCk7Ci0gICAgbV95ID0gbmV3IFNWR0xlbmd0aChjb250ZXh0LCBMTV9IRUlH
SFQsIHZpZXdwb3J0KTsKLSAgICBtX3dpZHRoID0gbmV3IFNWR0xlbmd0aChjb250ZXh0LCBMTV9X
SURUSCwgdmlld3BvcnQpOwotICAgIG1faGVpZ2h0ID0gbmV3IFNWR0xlbmd0aChjb250ZXh0LCBM
TV9IRUlHSFQsIHZpZXdwb3J0KTsKLQotICAgIG1fd2lkdGgtPnNldFZhbHVlQXNTdHJpbmcoIjEw
MCUiKTsKLSAgICBtX2hlaWdodC0+c2V0VmFsdWVBc1N0cmluZygiMTAwJSIpOworICAgIHNldFdp
ZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikpOwor
ICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwg
IjEwMCUiKSk7CiB9CiAKIFNWR1NWR0VsZW1lbnQ6On5TVkdTVkdFbGVtZW50KCkKQEAgLTczLDEw
ICs3MCwxMCBAQCBTVkdTVkdFbGVtZW50Ojp+U1ZHU1ZHRWxlbWVudCgpCiAgICAgZGVsZXRlIG1f
dGltZVNjaGVkdWxlcjsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZH
RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0
ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVz
Ojp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3
aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCosIExl
bmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxO
YW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
U1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhB
dHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdT
VkdFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0
dHIubG9jYWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NW
R0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFt
ZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdo
dCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCiAK
IGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFNjcmlwdFR5cGUoKSBj
b25zdAogewpAQCAtMTA0LDEwICsxMDEsMTAgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDb250
ZW50U3R5bGVUeXBlKAogCiBGbG9hdFJlY3QgU1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQoKSBjb25z
dAogewotICAgIGRvdWJsZSBfeCA9IHgoKS0+dmFsdWUoKTsKLSAgICBkb3VibGUgX3kgPSB5KCkt
PnZhbHVlKCk7Ci0gICAgZG91YmxlIHcgPSB3aWR0aCgpLT52YWx1ZSgpOwotICAgIGRvdWJsZSBo
ID0gaGVpZ2h0KCktPnZhbHVlKCk7CisgICAgZG91YmxlIF94ID0geCgpLnZhbHVlKCk7CisgICAg
ZG91YmxlIF95ID0geSgpLnZhbHVlKCk7CisgICAgZG91YmxlIHcgPSB3aWR0aCgpLnZhbHVlKCk7
CisgICAgZG91YmxlIGggPSBoZWlnaHQoKS52YWx1ZSgpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2
aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3LCBoKTsKICAgICB2aWV3Qm94Lm1hcChf
eCwgX3ksICZfeCwgJl95KTsKICAgICB2aWV3Qm94Lm1hcCh3LCBoLCAmdywgJmgpOwpAQCAtMTkw
LDE1ICsxODcsMTUgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZQog
ICAgICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9uem9vbUF0dHIpCiAg
ICAgICAgICAgICBhZGRTVkdXaW5kb3dFdmVudExpc3RuZXIoem9vbUV2ZW50LCBhdHRyKTsKICAg
ICB9Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAg
eEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKLSAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5z
ZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRy
KQorICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgs
IHZhbHVlKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikK
KyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0
cikgeworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NfUFJPUF9X
SURUSCwgdmFsdWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpo
ZWlnaHRBdHRyKSB7Ci0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5n
KHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1Nf
UFJPUF9IRUlHSFQsIHZhbHVlKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoU1ZHVGVzdHM6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpAQCAtMjc2LDkgKzI3Myw5IEBAIGRvdWJsZSBT
VkdTVkdFbGVtZW50OjpjcmVhdGVTVkdOdW1iZXIoKQogICAgIHJldHVybiAwLjA7CiB9CiAKLVNW
R0xlbmd0aCogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTGVuZ3RoKCkKK1NWR0xlbmd0aCBTVkdT
VkdFbGVtZW50OjpjcmVhdGVTVkdMZW5ndGgoKQogewotICAgIHJldHVybiBuZXcgU1ZHTGVuZ3Ro
KDApOworICAgIHJldHVybiBTVkdMZW5ndGgoKTsKIH0KIAogU1ZHQW5nbGUqIFNWR1NWR0VsZW1l
bnQ6OmNyZWF0ZVNWR0FuZ2xlKCkKQEAgLTMxNiwxMCArMzEzLDEwIEBAIFNWR1RyYW5zZm9ybSog
U1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHIKIEFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50
OjpnZXRDVE0oKSBjb25zdAogewogICAgIEFmZmluZVRyYW5zZm9ybSBtYXQ7Ci0gICAgbWF0LnRy
YW5zbGF0ZSh4KCktPnZhbHVlKCksIHkoKS0+dmFsdWUoKSk7CisgICAgbWF0LnRyYW5zbGF0ZSh4
KCkudmFsdWUoKSwgeSgpLnZhbHVlKCkpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMoKS0+Z2V0TmFt
ZWRJdGVtKFNWR05hbWVzOjp2aWV3Qm94QXR0cikpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdo
dCgpLT52YWx1ZSgpKTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94
VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KCkudmFsdWUoKSk7CiAgICAg
ICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCkBAIC0zMjksMTAgKzMyNiwxMCBAQCBB
ZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKCkgCiBBZmZpbmVUcmFuc2Zvcm0g
U1ZHU1ZHRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKIHsKICAgICBBZmZpbmVUcmFuc2Zv
cm0gbWF0ID0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCk7Ci0gICAg
bWF0LnRyYW5zbGF0ZSh4KCktPnZhbHVlKCksIHkoKS0+dmFsdWUoKSk7CisgICAgbWF0LnRyYW5z
bGF0ZSh4KCkudmFsdWUoKSwgeSgpLnZhbHVlKCkpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMoKS0+
Z2V0TmFtZWRJdGVtKFNWR05hbWVzOjp2aWV3Qm94QXR0cikpIHsKLSAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCks
IGhlaWdodCgpLT52YWx1ZSgpKTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3ggPSB2
aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KCkudmFsdWUoKSk7
CiAgICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCkBAIC00MTAsNiArNDA3LDYg
QEAgdm9pZCBTVkdTVkdFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKEF0dAogCiB9CiAKLS8vIHZp
bTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAxODE3NykKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIsNiArMjIsNyBAQAogCiAjaWZuZGVmIFNW
R1NWR0VsZW1lbnRfSAogI2RlZmluZSBTVkdTVkdFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQ
T1JUCiAKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC0xMDQs
NyArMTA1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdm9pZCBkZXNlbGVjdEFsbCgp
OwogCiAgICAgICAgIHN0YXRpYyBkb3VibGUgY3JlYXRlU1ZHTnVtYmVyKCk7Ci0gICAgICAgIHN0
YXRpYyBTVkdMZW5ndGgqIGNyZWF0ZVNWR0xlbmd0aCgpOworICAgICAgICBzdGF0aWMgU1ZHTGVu
Z3RoIGNyZWF0ZVNWR0xlbmd0aCgpOwogICAgICAgICBzdGF0aWMgU1ZHQW5nbGUqIGNyZWF0ZVNW
R0FuZ2xlKCk7CiAgICAgICAgIHN0YXRpYyBGbG9hdFBvaW50IGNyZWF0ZVNWR1BvaW50KCk7CiAg
ICAgICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gY3JlYXRlU1ZHTWF0cml4KCk7CkBAIC0xMzks
MTAgKzE0MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIEZsb2F0UmVjdCwgVmlld0Jv
eCwgdmlld0JveCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElP
TlMoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKiwgUHJlc2VydmVBc3Bl
Y3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdF
bGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCosIFJl
ZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3Ro
PiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgU1ZH
TGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
U1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwg
U1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKIAogICAgICAgICBib29sIG1fdXNlQ3VycmVudFZp
ZXc7CiAgICAgICAgIFRpbWVTY2hlZHVsZXIqIG1fdGltZVNjaGVkdWxlcjsKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE3NykKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMs
MTQgKzEzMyw2IEBAIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6dXBkYXRlQ2FudmFzSXRlbSgKICAg
ICBtX3VwZGF0ZVZlY3RvcmlhbCA9IGZhbHNlOwogfQogCi1jb25zdCBTVkdTdHlsZWRFbGVtZW50
KiBTVkdTdHlsZWRFbGVtZW50OjpwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRF
bGVtZW50KikKLXsKLSAgICBpZiAodmlldygpKQotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJQ
YXRoKj4ocmVuZGVyZXIoKSktPnNldFBhdGgodG9QYXRoRGF0YSgpKTsKLQotICAgIHJldHVybiAw
OwotfQotCiB9CiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmgJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5
bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRl
ICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAi
U1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGFibGUuaCIKICNpbmNsdWRlICJTVkdSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIlBhdGguaCIKQEAgLTU2LDE0ICs1Nyw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBi
b29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CiAKLSAgICAgICAgLy8gSW1hZ2luZSB3ZSdyZSBh
IDxyZWN0PiBpbnNpZGUgb2YgYSA8cGF0dGVybj4gc2VjdGlvbiB3aXRoIHBhdHRlcm5Db250ZW50
VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IgotICAgICAgICAvLyBhbmQgb3VyICd3aWR0aCcgYXR0
cmlidXRlIGlzIHNldCB0byA1MCUuIFdoZW4gdGhlIHBhdHRlcm4gZ2V0cyByZWZlcmVuY2VkIGl0
IGtub3dzIHRoZSAiYmJveCIKLSAgICAgICAgLy8gb2YgaXQncyB1c2VyIGFuZCBoYXMgdG8gcHVz
aCB0aGUgImFjdGl2ZSBjbGllbnQncyBiYm94IiBhcyBuZXcgYXR0cmlidXRlIGNvbnRleHQgdG8g
YWxsIGF0dHJpYnV0ZXMKLSAgICAgICAgLy8gb2YgdGhlICdyZWN0Jy4gVGhpcyBmdW5jdGlvbiBh
bHNvIHJldHVybnMgdGhlIG9sZCBhdHRyaWJ1dGUgY29udGV4dCwgdG8gYmUgYWJsZSB0byByZXN0
b3JlIGl0Li4uCi0gICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcHVzaEF0
dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCk7Ci0KLSAgICAg
ICAgdmlydHVhbCBib29sIGhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHVwZGF0ZUNhbnZhc0l0ZW0oKTsg
Ly8gSGFuZGxlcyAicGF0aCBkYXRhIiBvYmplY3QgY2hhbmdlcy4uLiAobm90IGZvciBzdHlsZS90
cmFuc2Zvcm0hKQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODE3NykKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDgsNyArNDgsNyBAQCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6flNWR1N0eWxl
CiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3Jt
TGlzdCwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLmxvY2Fs
TmFtZSgpLCBtX3RyYW5zZm9ybS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
X05PTl9QT0QoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3Qq
LCBUcmFuc2Zvcm1MaXN0LCB0cmFuc2Zvcm1MaXN0LCBUcmFuc2Zvcm0sIHRyYW5zZm9ybSwgU1ZH
TmFtZXM6OnRyYW5zZm9ybUF0dHIubG9jYWxOYW1lKCksIG1fdHJhbnNmb3JtLmdldCgpKQogCiBB
ZmZpbmVUcmFuc2Zvcm0gU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmxvY2FsTWF0cml4
KCkgY29uc3QKIHsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIFNWR1RleHRD
b250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGUKICAgICAsIFNWR1Rlc3RzKCkKICAgICAs
IFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAg
ICAsIG1fdGV4dExlbmd0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRIKSkKKyAgICAsIG1f
dGV4dExlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCiAgICAgLCBtX2xlbmd0aEFkanVzdCgw
KQogewogfQpAQCAtNDYsNyArNDYsNyBAQCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6On5TVkdUZXh0
Q29udGVudEVsCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRD
b250ZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFRleHRMZW5ndGgsIHRl
eHRMZW5ndGgsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ci5sb2NhbE5hbWUoKSwgbV90ZXh0TGVu
Z3RoLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dENvbnRlbnRF
bGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBUZXh0TGVuZ3RoLCB0ZXh0TGVuZ3Ro
LCBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIubG9jYWxOYW1lKCksIG1fdGV4dExlbmd0aCkKIEFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgaW50LCBF
bnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIExlbmd0aEFkanVzdCwgbGVuZ3RoQWRqdXN0LCBTVkdO
YW1lczo6bGVuZ3RoQWRqdXN0QXR0ci5sb2NhbE5hbWUoKSwgbV9sZW5ndGhBZGp1c3QpCiAKIGxv
bmcgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpnZXROdW1iZXJPZkNoYXJzKCkgY29uc3QKQEAgLTk2
LDcgKzk2LDcgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnNlbGVjdFN1YlN0cgogdm9p
ZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSogYXR0cikKIHsKICAgICAvL2lmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omxlbmd0
aEFkanVzdEF0dHIpCi0gICAgLy8gICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlKTsKKyAgICAvLyAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlKSk7CiAgICAgLy9lbHNlCiAgICAgewogICAgICAgICBpZiAoU1ZHVGVzdHM6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmgJKHJldmlzaW9uIDE4MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRDb250
ZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFRleHRMZW5ndGgsIHRl
eHRMZW5ndGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0
Q29udGVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBUZXh0TGVuZ3RoLCB0ZXh0TGVu
Z3RoKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dENvbnRl
bnRFbGVtZW50LCBpbnQsIGludCwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QpCiAgICAgfTsK
IApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgxNzcp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdUZXh0LmgiCisjaW5jbHVkZSAiU1ZH
SGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR1JlbmRl
clN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHVFNwYW5FbGVtZW50LmgiCkBAIC00NSw3ICs0Niw3IEBA
IFNWR1RleHRFbGVtZW50Ojp+U1ZHVGV4dEVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0RWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCosIFRyYW5z
Zm9ybUxpc3QsIHRyYW5zZm9ybUxpc3QsIFRyYW5zZm9ybSwgdHJhbnNmb3JtLCBTVkdOYW1lczo6
dHJhbnNmb3JtQXR0ci5sb2NhbE5hbWUoKSwgbV90cmFuc2Zvcm0uZ2V0KCkpCitBTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OU19OT05fUE9EKFNWR1RleHRFbGVtZW50LCBTVkdUcmFuc2Zvcm1M
aXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0s
IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3RyYW5zZm9ybS5nZXQoKSkK
IAogQWZmaW5lVHJhbnNmb3JtIFNWR1RleHRFbGVtZW50Ojpsb2NhbE1hdHJpeCgpIGNvbnN0CiB7
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmNwcAkocmV2aXNpb24gMTgxNzYpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjQgKzQ1LDI0IEBAIFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQ6On5TVkdUZXh0UG9zaXQKIHsKIH0KIAotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3RoTGlz
dCosIExlbmd0aExpc3QsIGxlbmd0aExpc3QsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5h
bWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3RoTGlzdCosIExlbmd0aExpc3QsIGxlbmd0aExpc3Qs
IFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3Ro
TGlzdCosIExlbmd0aExpc3QsIGxlbmd0aExpc3QsIER4LCBkeCwgU1ZHTmFtZXM6OmR4QXR0ci5s
b2NhbE5hbWUoKSwgbV9keC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QqLCBMZW5ndGhMaXN0LCBsZW5n
dGhMaXN0LCBEeSwgZHksIFNWR05hbWVzOjpkeUF0dHIubG9jYWxOYW1lKCksIG1fZHkuZ2V0KCkp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LCBTVkdOdW1iZXJMaXN0KiwgTnVtYmVyTGlzdCwgbnVtYmVyTGlzdCwgUm90YXRlLCByb3RhdGUs
IFNWR05hbWVzOjpyb3RhdGVBdHRyLmxvY2FsTmFtZSgpLCBtX3JvdGF0ZS5nZXQoKSkKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TX05PTl9QT0QoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dCwgU1ZHTGVuZ3RoTGlzdCosIExlbmd0aExpc3QsIGxlbmd0aExpc3QsIFgsIHgsIFNWR05hbWVz
Ojp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlNfTk9OX1BPRChTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdMZW5ndGhMaXN0Kiwg
TGVuZ3RoTGlzdCwgbGVuZ3RoTGlzdCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgp
LCBtX3kuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19OT05fUE9EKFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QqLCBMZW5ndGhMaXN0LCBsZW5ndGhM
aXN0LCBEeCwgZHgsIFNWR05hbWVzOjpkeEF0dHIubG9jYWxOYW1lKCksIG1fZHguZ2V0KCkpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19OT05fUE9EKFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQsIFNWR0xlbmd0aExpc3QqLCBMZW5ndGhMaXN0LCBsZW5ndGhMaXN0LCBEeSwgZHksIFNW
R05hbWVzOjpkeUF0dHIubG9jYWxOYW1lKCksIG1fZHkuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OU19OT05fUE9EKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR051bWJl
ckxpc3QqLCBOdW1iZXJMaXN0LCBudW1iZXJMaXN0LCBSb3RhdGUsIHJvdGF0ZSwgU1ZHTmFtZXM6
OnJvdGF0ZUF0dHIubG9jYWxOYW1lKCksIG1fcm90YXRlLmdldCgpKQogCiB2b2lkIFNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSog
YXR0cikKIHsKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICAK
ICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VW
YWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRoaXMsIExNX1dJRFRIKTsK
KyAgICAgICAgeEJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRo
aXMsIExlbmd0aE1vZGVXaWR0aCk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVk
U3RyaW5nKCksIHRoaXMsIExNX0hFSUdIVCk7CisgICAgICAgIHlCYXNlVmFsdWUoKS0+cGFyc2Uo
dmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmR4QXR0cikKLSAgICAgICAgZHhCYXNl
VmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMTV9XSURUSCk7
CisgICAgICAgIGR4QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSwg
dGhpcywgTGVuZ3RoTW9kZVdpZHRoKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OmR5QXR0cikKLSAgICAgICAgZHlCYXNlVmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVj
YXRlZFN0cmluZygpLCB0aGlzLCBMTV9IRUlHSFQpOworICAgICAgICBkeUJhc2VWYWx1ZSgpLT5w
YXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpOwog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cm90YXRlQXR0cikKICAgICAg
ICAgcm90YXRlQmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CiAg
ICAgZWxzZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4
MTc2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAg
ICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAK
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVk
ZSAiU1ZHVXNlRWxlbWVudC5oIgogCkBAIC00MiwxMCArNDMsMTAgQEAgU1ZHVXNlRWxlbWVudDo6
U1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKLSAg
ICAsIG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkp
Ci0gICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVu
dCgpKSkKLSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3Bv
cnRFbGVtZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlH
SFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgp
CisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywg
TGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkK
IHsKIH0KIApAQCAtNTMsMjMgKzU0LDIzIEBAIFNWR1VzZUVsZW1lbnQ6On5TVkdVc2VFbGVtZW50
KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5h
bWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5s
b2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
VXNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZH
TmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVu
Z3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1f
aGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2Fs
TmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50
LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxO
YW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRo
QXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCiAKIHZvaWQgU1ZH
VXNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQog
ewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIAog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZh
bHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0
VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAg
aWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTkzLDggKzk0LDggQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpjbG9zZVJlbmRlcmVy
KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZsb2F0IF94ID0geCgpLT52YWx1ZSgp
LCBfeSA9IHkoKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfdyA9IHdpZHRoKCktPnZhbHVlKCksIF9o
ID0gaGVpZ2h0KCktPnZhbHVlKCk7CisgICAgZmxvYXQgX3ggPSB4KCkudmFsdWUoKSwgX3kgPSB5
KCkudmFsdWUoKTsKKyAgICBmbG9hdCBfdyA9IHdpZHRoKCkudmFsdWUoKSwgX2ggPSBoZWlnaHQo
KS52YWx1ZSgpOwogICAgIAogICAgIFN0cmluZyB3U3RyaW5nID0gU3RyaW5nOjpudW1iZXIoX3cp
OwogICAgIFN0cmluZyBoU3RyaW5nID0gU3RyaW5nOjpudW1iZXIoX2gpOwpAQCAtMTU4LDYgKzE1
OSw2IEBAIFJlbmRlck9iamVjdCogU1ZHVXNlRWxlbWVudDo6Y3JlYXRlUmVuZGUKIAogfQogCi0v
LyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9l
dApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2aXNpb24gMTgxNzYpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1h
bm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAy
MDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdVc2VFbGVtZW50SW1w
bF9ICi0jZGVmaW5lIEtTVkdfU1ZHVXNlRWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdVc2VFbGVt
ZW50X0gKKyNkZWZpbmUgU1ZHVXNlRWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAj
aW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNjMsMTAgKzY0LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRf
REVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3Ry
aW5nLCBIcmVmLCBocmVmKQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xl
bmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBIZWlnaHQsIGhl
aWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1l
bnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBT
VkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhl
aWdodCwgaGVpZ2h0KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxODE3NikKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjQsOCArNTY0LDggQEAgc3RhdGljIEN1cnNv
ciBzZWxlY3RDdXJzb3IoY29uc3QgTW91c2VFdgogICAgICAgICAgICAgaWYgKCFjaW1hZ2UpIHsK
ICAgICAgICAgICAgICAgICBFbGVtZW50KiBlID0gbm9kZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVu
dEJ5SWQoKCpjdXJzb3JzKVtpXS5jdXJzb3JGcmFnbWVudElkKTsKICAgICAgICAgICAgICAgICBp
ZiAoZSAmJiBlLT5oYXNUYWdOYW1lKGN1cnNvclRhZykpIHsKLSAgICAgICAgICAgICAgICAgICAg
aG90U3BvdC5zZXRYKGludChzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPngoKS0+
dmFsdWUoKSkpOwotICAgICAgICAgICAgICAgICAgICBob3RTcG90LnNldFkoaW50KHN0YXRpY19j
YXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eSgpLT52YWx1ZSgpKSk7CisgICAgICAgICAgICAg
ICAgICAgIGhvdFNwb3Quc2V0WChpbnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUp
LT54KCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBob3RTcG90LnNldFkoaW50KHN0
YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eSgpLnZhbHVlKCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgY2ltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT5j
YWNoZWRJbWFnZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCShyZXZpc2lvbiAxODE3NykK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIFJlbmRlckZvcmVpZ25PYmplY3Q6OlJlbmRlckZvcmVpZ25P
YmplY3QKIEFmZmluZVRyYW5zZm9ybSBSZW5kZXJGb3JlaWduT2JqZWN0Ojp0cmFuc2xhdGlvbkZv
ckF0dHJpYnV0ZXMoKQogewogICAgIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KiBmb3JlaWduID0g
c3RhdGljX2Nhc3Q8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqPihlbGVtZW50KCkpOwotICAgIHJl
dHVybiBBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoZm9yZWlnbi0+eCgpLT52YWx1ZSgpLCBm
b3JlaWduLT55KCktPnZhbHVlKCkpOworICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKS50cmFu
c2xhdGUoZm9yZWlnbi0+eCgpLnZhbHVlKCksIGZvcmVpZ24tPnkoKS52YWx1ZSgpKTsKIH0KIAog
dm9pZCBSZW5kZXJGb3JlaWduT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50
IHBhcmVudFgsIGludCBwYXJlbnRZKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAJKHJl
dmlzaW9uIDE4MTc3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyOCwxMSArNDI4LDYgQEAgdm9pZCBSZW5kZXJQYXRoOjpkcmF3TWFya2Vy
c0lmTmVlZGVkKEdyYQogICAgIGRyYXdNYXJrZXJXaXRoRGF0YShjb250ZXh0LCBkYXRhLnByZXZp
b3VzTWFya2VyRGF0YSk7CiB9CiAKLWJvb2wgUmVuZGVyUGF0aDo6aGFzUGVyY2VudGFnZVZhbHVl
cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPihl
bGVtZW50KCkpLT5oYXNQZXJjZW50YWdlVmFsdWVzKCk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5oCShyZXZpc2lvbiAxODE3NikKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguaAkod29ya2luZyBjb3B5KQpAQCAtOTIsOCAr
OTIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdNYXJrZXJzSWZOZWVkZWQoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUGF0aCYpIGNvbnN0OwogICAg
IHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJCb3goKSBjb25zdDsKIAotICAgIGJvb2wgaGFzUGVy
Y2VudGFnZVZhbHVlcygpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbWFwQWJz
b2x1dGVQb2ludFRvTG9jYWwoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIApJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiAxODE3NikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkK
IAogICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7CiAgICAgd2hpbGUgKGNo
aWxkKSB7Ci0gICAgICAgIGlmICghY2hpbGQtPmlzUmVuZGVyUGF0aCgpIHx8IHN0YXRpY19jYXN0
PFJlbmRlclBhdGgqPihjaGlsZCktPmhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSkKKyAgICAgICAgaWYg
KCFjaGlsZC0+aXNSZW5kZXJQYXRoKCkpCiAgICAgICAgICAgICBjaGlsZC0+c2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CiAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQpA
QCAtMjA2LDE1ICsyMDYsMTUgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmNhbGNWaWV3cG9y
dCgpCiAgICAgU1ZHRWxlbWVudCogc3ZnZWxlbSA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihl
bGVtZW50KCkpOwogICAgIGlmIChzdmdlbGVtLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcp
KSB7CiAgICAgICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NWR0VsZW1l
bnQqPihlbGVtZW50KCkpOwotICAgICAgICBkb3VibGUgeCA9IHN2Zy0+eCgpLT52YWx1ZSgpOwot
ICAgICAgICBkb3VibGUgeSA9IHN2Zy0+eSgpLT52YWx1ZSgpOwotICAgICAgICBkb3VibGUgdyA9
IHN2Zy0+d2lkdGgoKS0+dmFsdWUoKTsKLSAgICAgICAgZG91YmxlIGggPSBzdmctPmhlaWdodCgp
LT52YWx1ZSgpOworICAgICAgICBkb3VibGUgeCA9IHN2Zy0+eCgpLnZhbHVlKCk7CisgICAgICAg
IGRvdWJsZSB5ID0gc3ZnLT55KCkudmFsdWUoKTsKKyAgICAgICAgZG91YmxlIHcgPSBzdmctPndp
ZHRoKCkudmFsdWUoKTsKKyAgICAgICAgZG91YmxlIGggPSBzdmctPmhlaWdodCgpLnZhbHVlKCk7
CiAgICAgICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3QoeCwgeSwgdywgaCk7CiAgICAgfSBlbHNl
IGlmIChzdmdlbGVtLT5oYXNUYWdOYW1lKFNWR05hbWVzOjptYXJrZXJUYWcpKSB7CiAgICAgICAg
IFNWR01hcmtlckVsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihl
bGVtZW50KCkpOwotICAgICAgICAgICAgZG91YmxlIHcgPSBzdmctPm1hcmtlcldpZHRoKCktPnZh
bHVlKCk7Ci0gICAgICAgIGRvdWJsZSBoID0gc3ZnLT5tYXJrZXJIZWlnaHQoKS0+dmFsdWUoKTsK
KyAgICAgICAgZG91YmxlIHcgPSBzdmctPm1hcmtlcldpZHRoKCkudmFsdWUoKTsKKyAgICAgICAg
ZG91YmxlIGggPSBzdmctPm1hcmtlckhlaWdodCgpLnZhbHVlKCk7CiAgICAgICAgIG1fdmlld3Bv
cnQgPSBGbG9hdFJlY3QoMCwgMCwgdywgaCk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR0ltYWdlLmNwcAkocmV2aXNpb24gMTgxNzcpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw3ICsyMjQsNyBAQCB2
b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQoKQogRmxvYXRSZWN0IFJlbmRlclNWR0ltYWdlOjpy
ZWxhdGl2ZUJCb3goYm9vbCBpbmNsdWRlU3Ryb2tlKSBjb25zdAogewogICAgIFNWR0ltYWdlRWxl
bWVudCAqaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihub2RlKCkpOwotICAg
IHJldHVybiBGbG9hdFJlY3QoaW1hZ2UtPngoKS0+dmFsdWUoKSwgaW1hZ2UtPnkoKS0+dmFsdWUo
KSwgd2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIHJldHVybiBGbG9hdFJlY3QoaW1hZ2UtPngoKS52
YWx1ZSgpLCBpbWFnZS0+eSgpLnZhbHVlKCksIHdpZHRoKCksIGhlaWdodCgpKTsKIH0KIAogdm9p
ZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiBpbWFnZSkKQEAgLTIz
Nyw3ICsyMzcsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjppbWFnZUNoYW5nZWQoQ2FjaGVkCiBJ
bnRSZWN0IFJlbmRlclNWR0ltYWdlOjpnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCkKIHsKICAgICBT
VkdJbWFnZUVsZW1lbnQgKmltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9k
ZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSBhYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoRmxvYXRSZWN0KGltYWdlLT54KCktPnZhbHVlKCksIGltYWdlLT55KCktPnZhbHVlKCks
IHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gYWJzb2x1
dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0UmVjdChpbWFnZS0+eCgpLnZhbHVlKCksIGltYWdl
LT55KCkudmFsdWUoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKIAogICAgIC8vIEZpbHRlcnMgY2Fu
IGV4cGFuZCB0aGUgYm91bmRpbmcgYm94CiAgICAgU1ZHUmVzb3VyY2VGaWx0ZXIgKmZpbHRlciA9
IGdldEZpbHRlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsdGVyKCku
c3Vic3RyaW5nKDEpKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjph
YnNvbHV0ZVJlY3RzKFZlY3RvCiBBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHSW1hZ2U6OnRyYW5z
bGF0aW9uRm9yQXR0cmlidXRlcygpCiB7CiAgICAgU1ZHSW1hZ2VFbGVtZW50ICppbWFnZSA9IHN0
YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7Ci0gICAgcmV0dXJuIEFmZmluZVRy
YW5zZm9ybSgpLnRyYW5zbGF0ZShpbWFnZS0+eCgpLT52YWx1ZSgpLCBpbWFnZS0+eSgpLT52YWx1
ZSgpKTsKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRlKGltYWdlLT54KCku
dmFsdWUoKSwgaW1hZ2UtPnkoKS52YWx1ZSgpKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlzaW9uIDE4MTc3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDggQEAgdm9pZCBS
ZW5kZXJTVkdUZXh0OjpsYXlvdXQoKQogICAgICAgICBvbGRCb3VuZHMgPSBtX2Fic29sdXRlQm91
bmRzOwogICAgIFNWR1RleHRFbGVtZW50KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8U1ZHVGV4dEVsZW1l
bnQqPihlbGVtZW50KCkpOwogICAgIC8vRklYTUU6ICBuZWVkIHRvIGFsbG93IGZsb2F0aW5nIHBv
aW50IHBvc2l0aW9ucwotICAgIGludCB4T2Zmc2V0ID0gKGludCkodGV4dC0+eCgpLT5nZXRGaXJz
dCgpID8gdGV4dC0+eCgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpIDogMCk7Ci0gICAgaW50IHlPZmZz
ZXQgPSAoaW50KSh0ZXh0LT55KCktPmdldEZpcnN0KCkgPyB0ZXh0LT55KCktPmdldEZpcnN0KCkt
PnZhbHVlKCkgOiAwKTsKKyAgICBpbnQgeE9mZnNldCA9IChpbnQpKHRleHQtPngoKS0+Z2V0Rmly
c3QoKS52YWx1ZSgpKTsKKyAgICBpbnQgeU9mZnNldCA9IChpbnQpKHRleHQtPnkoKS0+Z2V0Rmly
c3QoKS52YWx1ZSgpKTsKICAgICBzZXRQb3MoeE9mZnNldCwgeU9mZnNldCk7CiAgICAgUmVuZGVy
QmxvY2s6OmxheW91dCgpOwogICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5l
Rmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxv
d0JveC5jcHAJKHJldmlzaW9uIDE4MTc3KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5l
Rmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw5ICsxMjUsOCBAQCBzdGF0aWMgYm9v
bCB0cmFuc2xhdGVCb3goSW5saW5lQm94KiBib3gsCiAgICAgICAgIElubGluZUZsb3dCb3gqIGZs
b3cgPSBzdGF0aWNfY2FzdDxJbmxpbmVGbG93Qm94Kj4oYm94KTsKICAgICAgICAgU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudCogdGV4dCA9IHN0YXRpY19jYXN0PFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQqPihib3gtPm9iamVjdCgpLT5lbGVtZW50KCkpOwogICAgICAgICAKLSAgICAgICAgaWYg
KHRvcExldmVsfHwhKHRleHQtPngoKS0+Z2V0Rmlyc3QoKSB8fCB0ZXh0LT55KCktPmdldEZpcnN0
KCkgfHwgCi0gICAgICAgICAgICAgICAgICAgICAgICAodGV4dC0+ZHgoKS0+Z2V0Rmlyc3QoKSAm
JiB0ZXh0LT5keCgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpKSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgKHRleHQtPmR5KCktPmdldEZpcnN0KCkgJiYgdGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKS0+
dmFsdWUoKSkpKSB7CisgICAgICAgIGlmICh0b3BMZXZlbCB8fCAhKHRleHQtPngoKS0+Z2V0Rmly
c3QoKS52YWx1ZSgpIHx8IHRleHQtPnkoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHQtPmR4KCktPmdldEZpcnN0KCkudmFsdWUoKSB8fCB0ZXh0
LT5keSgpLT5nZXRGaXJzdCgpLnZhbHVlKCkpKSB7CiAgICAgICAgICAgICBib3gtPnNldFhQb3Mo
Ym94LT54UG9zKCkgKyB4KTsKICAgICAgICAgICAgIGJveC0+c2V0WVBvcyhib3gtPnlQb3MoKSAr
IHkpOwogICAgICAgICAgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmbG93LT5maXJzdENoaWxk
KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIApAQCAtMTY4LDEyICsxNjcsMTMg
QEAgc3RhdGljIGludCBwbGFjZVBvc2l0aW9uZWRCb3hlc0hvcml6b250YQogICAgICAgICAgICAg
YXNzZXJ0KGN1cnItPm9iamVjdCgpLT5pc0lubGluZUZsb3coKSk7CiAgICAgICAgICAgICBJbmxp
bmVGbG93Qm94KiBmbG93ID0gc3RhdGljX2Nhc3Q8SW5saW5lRmxvd0JveCo+KGN1cnIpOwogICAg
ICAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCogdGV4dCA9IHN0YXRpY19jYXN0PFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqPihmbG93LT5vYmplY3QoKS0+ZWxlbWVudCgpKTsKLSAg
ICAgICAgICAgIHggKz0gKGludCkodGV4dC0+ZHgoKS0+Z2V0Rmlyc3QoKSA/IHRleHQtPmR4KCkt
PmdldEZpcnN0KCktPnZhbHVlKCkgOiAwKTsKLSAgICAgICAgICAgIGlmICh0ZXh0LT54KCktPmdl
dEZpcnN0KCkpCi0gICAgICAgICAgICAgICAgeCA9IChpbnQpKHRleHQtPngoKS0+Z2V0Rmlyc3Qo
KS0+dmFsdWUoKSAtIHhQb3MpOwotICAgICAgICAgICAgaWYgKHRleHQtPngoKS0+Z2V0Rmlyc3Qo
KSB8fCB0ZXh0LT55KCktPmdldEZpcnN0KCkgfHwgCi0gICAgICAgICAgICAgICAgKHRleHQtPmR4
KCktPmdldEZpcnN0KCkgJiYgdGV4dC0+ZHgoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSkgfHwKLSAg
ICAgICAgICAgICAgICAodGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKSAmJiB0ZXh0LT5keSgpLT5nZXRG
aXJzdCgpLT52YWx1ZSgpKSkgeworICAgICAgICAgICAgeCArPSAoaW50KSh0ZXh0LT5keCgpLT5n
ZXRGaXJzdCgpLnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKHRleHQtPngoKS0+bnVtYmVyT2ZJ
dGVtcygpID4gMCkKKyAgICAgICAgICAgICAgICB4ID0gKGludCkodGV4dC0+eCgpLT5nZXRGaXJz
dCgpLnZhbHVlKCkgLSB4UG9zKTsKKyAgICAgICAgICAgIGlmICh0ZXh0LT54KCktPm51bWJlck9m
SXRlbXMoKSA+IDAgfHwKKyAgICAgICAgICAgICAgICB0ZXh0LT55KCktPm51bWJlck9mSXRlbXMo
KSA+IDAgfHwKKyAgICAgICAgICAgICAgICB0ZXh0LT5keCgpLT5udW1iZXJPZkl0ZW1zKCkgPiAw
IHx8CisgICAgICAgICAgICAgICAgdGV4dC0+ZHkoKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkgewog
ICAgICAgICAgICAgICAgIHNlZW5Qb3NpdGlvbmVkRWxlbWVudCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgbmVlZHNXb3JkU3BhY2luZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGludCBpZ25v
cmVYLCBpZ25vcmVZOwpAQCAtMjM2LDkgKzIzNiw5IEBAIHN0YXRpYyB2b2lkIHBsYWNlQm94ZXNW
ZXJ0aWNhbGx5V2l0aEFic0IKICAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZsb3ctPmZpcnN0
Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAo
Y3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpIHsKICAgICAgICAgICAgIFNWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQqIHRleHQgPSBzdGF0aWNfY2FzdDxTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Kj4o
Y3Vyci0+b2JqZWN0KCktPmVsZW1lbnQoKSk7Ci0gICAgICAgICAgICBiYXNlbGluZSArPSAoaW50
KSh0ZXh0LT5keSgpLT5nZXRGaXJzdCgpID8gdGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUo
KSA6IDApOwotICAgICAgICAgICAgaWYgKHRleHQtPnkoKS0+Z2V0Rmlyc3QoKSkgewotICAgICAg
ICAgICAgICAgIGJhc2VsaW5lID0gKGludCkodGV4dC0+eSgpLT5nZXRGaXJzdCgpLT52YWx1ZSgp
IC0geVBvcyk7CisgICAgICAgICAgICBiYXNlbGluZSArPSAoaW50KSh0ZXh0LT5keSgpLT5nZXRG
aXJzdCgpLnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKHRleHQtPnkoKS0+bnVtYmVyT2ZJdGVt
cygpID4gMCkgeworICAgICAgICAgICAgICAgIGJhc2VsaW5lID0gKGludCkodGV4dC0+eSgpLT5n
ZXRGaXJzdCgpLnZhbHVlKCkgLSB5UG9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBs
YWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFic0Jhc2VsaW5lKHN0YXRpY19jYXN0PElubGluZUZsb3dC
b3gqPihjdXJyKSwgaGVpZ2h0T2ZCbG9jaywgbWluX3ksIG1heF95LCBiYXNlbGluZSwgeVBvcyk7
CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11846</attachid>
            <date>2006-12-14 15:57:53 -0800</date>
            <delta_ts>2006-12-16 13:01:19 -0800</delta_ts>
            <desc>Second patch, not ready for review yet</desc>
            <filename>KillSVGLength.diff</filename>
            <type>text/plain</type>
            <size>159858</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lv
biAxODIyMSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG15ICVwcmltaXRpdmVUeXBlSGFzaCA9ICgi
aW50IiA9PiAxLCAic2gKICAgICAgICAgICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyIg
PT4gMSwgImZsb2F0IiA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkb3VibGUiID0+
IDEsICJib29sZWFuIiA9PiAxLCAidm9pZCIgPT4gMSk7CiAKLW15ICVwb2RUeXBlSGFzaCA9ICgi
UkdCQ29sb3IiID0+IDEsICJTVkdQb2ludCIgPT4gMSwgIlNWR1JlY3QiID0+IDEsICJTVkdOdW1i
ZXIiID0+IDEsICJTVkdNYXRyaXgiID0+IDEpOworbXkgJXBvZFR5cGVIYXNoID0gKCJSR0JDb2xv
ciIgPT4gMSwgIlNWR0xlbmd0aCIgPT4gMSwgIlNWR1BvaW50IiA9PiAxLCAiU1ZHUmVjdCIgPT4g
MSwgIlNWR051bWJlciIgPT4gMSwgIlNWR01hdHJpeCIgPT4gMSk7CiAgCiBteSAlc3RyaW5nVHlw
ZUhhc2ggPSAoIkRPTVN0cmluZyIgPT4gMSwgIkF0b21pY1N0cmluZyIgPT4gMSk7CiAKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24g
MTgyMjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDk4LDYgKzEwOTgsNyBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAg
IHJldHVybiAiRmxvYXRSZWN0IiBpZiAkdHlwZSBlcSAiU1ZHUmVjdCI7CiAgICAgcmV0dXJuICJG
bG9hdFBvaW50IiBpZiAkdHlwZSBlcSAiU1ZHUG9pbnQiOwogICAgIHJldHVybiAiQWZmaW5lVHJh
bnNmb3JtIiBpZiAkdHlwZSBlcSAiU1ZHTWF0cml4IjsKKyAgICByZXR1cm4gIlNWR0xlbmd0aCIg
aWYgJHR5cGUgZXEgIlNWR0xlbmd0aCI7CiAgICAgcmV0dXJuICJkb3VibGUiIGlmICR0eXBlIGVx
ICJTVkdOdW1iZXIiOwogICAgIHJldHVybiAiU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSIgaWYgJHR5
cGUgZXEgIlNWR1BhaW50VHlwZSI7CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvbWlzYy9LQ2FudmFz
UmVuZGVyaW5nU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvbWlzYy9LQ2Fu
dmFzUmVuZGVyaW5nU3R5bGUuY3BwCShyZXZpc2lvbiAxODIyMSkKKysrIFdlYkNvcmUva3N2ZzIv
bWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXJTb2xpZC5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKKyNpbmNsdWRlICJTVkdIZWxwZXIu
aCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgog
I2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKQEAgLTExMiw3ICsxMTMsNyBAQCBkb3VibGUg
S1NWR1BhaW50ZXJGYWN0b3J5Ojpjc3NQcmltaXRpdmVUCiAgICAgICAgIFNWR0VsZW1lbnQqIHZp
ZXdwb3J0RWxlbWVudCA9IChlbGVtZW50ID8gZWxlbWVudC0+dmlld3BvcnRFbGVtZW50KCkgOiAw
KTsKICAgICAgICAgaWYgKHZpZXdwb3J0RWxlbWVudCkgewogICAgICAgICAgICAgZG91YmxlIHJl
c3VsdCA9IHByaW1pdGl2ZS0+Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwLjA7Ci0gICAgICAgICAgICBy
ZXR1cm4gU1ZHSGVscGVyOjpQZXJjZW50YWdlT2ZWaWV3cG9ydChyZXN1bHQsIHZpZXdwb3J0RWxl
bWVudCwgTE1fT1RIRVIpOworICAgICAgICAgICAgcmV0dXJuIFNWR0hlbHBlcjo6UGVyY2VudGFn
ZU9mVmlld3BvcnQocmVzdWx0LCB2aWV3cG9ydEVsZW1lbnQsIExlbmd0aE1vZGVPdGhlcik7CiAg
ICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkVGVt
cGxhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFRlbXBs
YXRlLmgJKHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRU
ZW1wbGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8Ym9vbD4gU1ZHQW5pbWF0ZWRC
b29sZWFuOwogICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxpbnQ+IFNWR0FuaW1hdGVk
RW51bWVyYXRpb247CiAgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGxvbmc+IFNWR0Fu
aW1hdGVkSW50ZWdlcjsKLSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTGVuZ3Ro
Kj4gU1ZHQW5pbWF0ZWRMZW5ndGg7CisgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNW
R0xlbmd0aD4gU1ZHQW5pbWF0ZWRMZW5ndGg7CiAgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBs
YXRlPFNWR0xlbmd0aExpc3QqPiBTVkdBbmltYXRlZExlbmd0aExpc3Q7CiAgICAgdHlwZWRlZiBT
VkdBbmltYXRlZFRlbXBsYXRlPGRvdWJsZT4gU1ZHQW5pbWF0ZWROdW1iZXI7CiAgICAgdHlwZWRl
ZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR051bWJlckxpc3QqPiBTVkdBbmltYXRlZE51bWJlckxp
c3Q7IApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE4MjIxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDEy
ICsyMSwxMiBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBP
UlQKICNpbmNsdWRlICJTVkdDaXJjbGVFbGVtZW50LmgiCiAKICNpbmNsdWRlICJGbG9hdFBvaW50
LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsOSArMzYsOSBA
QCBTVkdDaXJjbGVFbGVtZW50OjpTVkdDaXJjbGVFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdUZXN0
cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpCi0gICAgLCBtX2N4KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0
RWxlbWVudCgpKSkKLSAgICAsIG1fY3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZp
ZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcihuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX09USEVS
LCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX2N4KFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgpKQorICAgICwgbV9jeShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkp
CisgICAgLCBtX3IoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVPdGhlcikpCiB7CiB9CiAKQEAg
LTQ2LDE5ICs0NiwxOSBAQCBTVkdDaXJjbGVFbGVtZW50Ojp+U1ZHQ2lyY2xlRWxlbWVudCgpCiB7
CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNW
R0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIubG9jYWxO
YW1lKCksIG1fY3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDaXJj
bGVFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1lczo6
Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFIsIHIs
IFNWR05hbWVzOjpyQXR0ci5sb2NhbE5hbWUoKSwgbV9yLmdldCgpKQorQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLmxvY2FsTmFtZSgpLCBtX2N4KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5KQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgUiwgciwgU1ZHTmFtZXM6OnJBdHRyLmxvY2FsTmFtZSgpLCBtX3IpCiAK
IHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKiBhdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1
ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAg
Y3hCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEN4QmFz
ZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7ICAgICAgIAog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3lBdHRyKQotICAgICAgICBj
eUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0Q3lCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyQXR0cikKLSAgICAgICAgckJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0UkJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAgICAg
ICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNzIsMzcgKzcyLDExIEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWIKIAogUGF0aCBTVkdDaXJjbGVFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QK
IHsKLSAgICBmbG9hdCBfY3ggPSBjeCgpLT52YWx1ZSgpLCBfY3kgPSBjeSgpLT52YWx1ZSgpOwot
ICAgIGZsb2F0IF9yID0gcigpLT52YWx1ZSgpOwotCi0gICAgcmV0dXJuIFBhdGg6OmNyZWF0ZUNp
cmNsZShGbG9hdFBvaW50KF9jeCwgX2N5KSwgX3IpOwotfQotCi1jb25zdCBTVkdTdHlsZWRFbGVt
ZW50KiBTVkdDaXJjbGVFbGVtZW50OjpwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHls
ZWRFbGVtZW50KiBjb250ZXh0KQotewotICAgIC8vIEFsbCBhdHRyaWJ1dGUncyBjb250ZXh0cyBh
cmUgZXF1YWwgKHNvIGp1c3QgdGFrZSB0aGUgb25lIGZyb20gJ2N4JykuCi0gICAgY29uc3QgU1ZH
U3R5bGVkRWxlbWVudCogcmVzdG9yZSA9IGN4KCktPmNvbnRleHQoKTsKLQotICAgIGN4KCktPnNl
dENvbnRleHQoY29udGV4dCk7Ci0gICAgY3koKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICBy
KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgCi0gICAgU1ZHU3R5bGVkRWxlbWVudDo6cHVz
aEF0dHJpYnV0ZUNvbnRleHQoY29udGV4dCk7Ci0gICAgcmV0dXJuIHJlc3RvcmU7Ci19Ci0KLWJv
b2wgU1ZHQ2lyY2xlRWxlbWVudDo6aGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0Ci17Ci0gICAg
aWYgKGN4KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5U
QUdFIHx8Ci0gICAgICAgIGN5KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RI
VFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHIoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6
OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBQYXRoOjpjcmVhdGVDaXJjbGUoRmxvYXRQb2ludChj
eCgpLnZhbHVlKCksIGN5KCkudmFsdWUoKSksIHIoKS52YWx1ZSgpKTsKIH0KIAogfQogCi0vLyB2
aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkocmV2aXNpb24gMTgyMjEpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAg
ICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAg
ICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdDaXJj
bGVFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHQ2lyY2xlRWxlbWVudEltcGxfSAorI2lm
bmRlZiBTVkdDaXJjbGVFbGVtZW50X0gKKyNkZWZpbmUgU1ZHQ2lyY2xlRWxlbWVudF9ICisKICNp
ZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5oIgpAQCAtMzEsNyArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZQogewotICAgIGNsYXNz
IFNWR0xlbmd0aDsKICAgICBjbGFzcyBTVkdDaXJjbGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5n
U3BhY2UsCkBAIC00OSwyNCArNDksMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBT
dHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFs
IFBhdGggdG9QYXRoRGF0YSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHU3R5
bGVkRWxlbWVudCogcHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCog
Y29udGV4dCk7Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxl
bWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKLSAgICAgICAg
dmlydHVhbCBib29sIGhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdDsKLQogICAgIHByaXZhdGU6
CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+
LCBDeCwgY3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJj
bGVFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgQ3ksIGN5KQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFIsIHIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgQ3gs
IGN4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxl
bWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN5LCBjeSkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3Ro
LCBSLCByKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBTVkdDaXJjbGVFbGVtZW50X0gKIAogLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+
CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtMjEs
NiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBP
UlQKICNpbmNsdWRlICJTVkdDdXJzb3JFbGVtZW50LmgiCiAKQEAgLTQwLDggKzQxLDggQEAgU1ZH
Q3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudChjb25zdAogICAgICwgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdVUklSZWZlcmVuY2UoKQogICAgICwgQ2FjaGVk
UmVzb3VyY2VDbGllbnQoKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgoMCwgTE1fV0lEVEgsIHZp
ZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKDAsIExNX0hFSUdIVCwg
dmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94KDAsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAs
IG1feSgwLCBMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIG1fY2FjaGVkSW1hZ2UgPSAwOwogfQpA
QCAtNTIsMTYgKzUzLDE2IEBAIFNWR0N1cnNvckVsZW1lbnQ6On5TVkdDdXJzb3JFbGVtZW50KCkK
ICAgICAgICAgbV9jYWNoZWRJbWFnZS0+ZGVyZWYodGhpcyk7CiB9CiAKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVu
Z3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feC5nZXQoKSkKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCosIExl
bmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQo
KSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwg
bV94KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgp
LCBtX3kpCiAKIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlICphdHRyKQogewotICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0g
YXR0ci0+dmFsdWUoKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFs
dWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAg
eEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VW
YWx1ZShTVkdMZW5ndGgoMCwgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+
c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3Ro
KDAsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChT
VkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC04Miw2ICs4Myw2IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWIKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8g
dmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkocmV2
aXNpb24gMTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KLSAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Cisg
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtMjAsMTIg
KzIwLDE0IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVm
IEtTVkdfU1ZHQ3Vyc29yRWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0N1cnNvckVsZW1l
bnRJbXBsX0gKKyNpZm5kZWYgU1ZHQ3Vyc29yRWxlbWVudF9ICisjZGVmaW5lIFNWR0N1cnNvckVs
ZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIkltYWdlLmgiCiAKKyNp
bmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U1ZHVGVzdHMuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKQEAgLTM0LDggKzM2LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAgICBjbGFzcyBTVkdMZW5ndGg7Ci0KICAgICBj
bGFzcyBTVkdDdXJzb3JFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKQEAgLTYw
LDggKzYwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
Rk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwg
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJl
bmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+
LCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ3Vyc29y
RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdMZW5ndGgs
IFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQogCiAgICAgICAg
IENhY2hlZEltYWdlICptX2NhY2hlZEltYWdlOwogICAgIH07CkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdF
bGVtZW50LmNwcAkocmV2aXNpb24gMTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJv
amVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZk
ZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2ICsyMSw3IEBACiAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR0VsbGlw
c2VFbGVtZW50LmgiCiAKQEAgLTM2LDEwICszNywxMCBAQCBTVkdFbGxpcHNlRWxlbWVudDo6U1ZH
RWxsaXBzZUVsZW1lbnQoY29uCiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2Uo
KQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX2N4KG5ldyBT
VkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fY3ko
bmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAs
IG1fcngobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQot
ICAgICwgbV9yeShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50
KCkpKQorICAgICwgbV9jeCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2N5KHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3J4KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAg
ICAsIG1fcnkodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0gICAgCiAKQEAgLTQ3LDIyICs0
OCwyMiBAQCBTVkdFbGxpcHNlRWxlbWVudDo6flNWR0VsbGlwc2VFbGVtZW50KCkKIHsKIH0KIAot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0
aCosIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIubG9jYWxOYW1lKCks
IG1fY3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0
ci5sb2NhbE5hbWUoKSwgbV9jeS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgUngsIHJ4LCBT
VkdOYW1lczo6cnhBdHRyLmxvY2FsTmFtZSgpLCBtX3J4LmdldCgpKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVu
Z3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIubG9jYWxOYW1lKCksIG1fcnkuZ2V0KCkpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLmxvY2FsTmFtZSgpLCBt
X2N4KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNW
R0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ci5sb2NhbE5h
bWUoKSwgbV9jeSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSeCwgcngsIFNWR05hbWVzOjpyeEF0dHIu
bG9jYWxOYW1lKCksIG1fcngpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxp
cHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUnksIHJ5LCBTVkdOYW1lczo6
cnlBdHRyLmxvY2FsTmFtZSgpLCBtX3J5KQogCiB2b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6Y3hBdHRyKQotICAgICAgICBjeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3Ry
aW5nKHZhbHVlKTsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeUF0dHIpCi0g
ICAgICAgIGN5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwotICAgIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAgICAgICAgcnhCYXNlVmFsdWUoKS0+
c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6cnlBdHRyKQotICAgICAgICByeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVl
KTsKKyAgICAgICAgc2V0Q3hCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0
aCwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN5QXR0
cikKKyAgICAgICAgc2V0Q3lCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyeEF0
dHIpCisgICAgICAgIHNldFJ4QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyeUF0
dHIpCisgICAgICAgIHNldFJ5QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzYsMzkgKzc3LDEy
IEBAIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKIAogUGF0aCBTVkdF
bGxpcHNlRWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CiB7Ci0gICAgZmxvYXQgX2N4ID0gY3go
KS0+dmFsdWUoKSwgX2N5ID0gY3koKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfcnggPSByeCgpLT52
YWx1ZSgpLCBfcnkgPSByeSgpLT52YWx1ZSgpOwotCi0gICAgcmV0dXJuIFBhdGg6OmNyZWF0ZUVs
bGlwc2UoRmxvYXRQb2ludChfY3gsIF9jeSksIF9yeCwgX3J5KTsKKyAgICByZXR1cm4gUGF0aDo6
Y3JlYXRlRWxsaXBzZShGbG9hdFBvaW50KGN4KCkudmFsdWUoKSwgY3koKS52YWx1ZSgpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeCgpLnZhbHVlKCksIHJ5KCkudmFsdWUoKSk7
CiB9CiAKLWNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIFNWR0VsbGlwc2VFbGVtZW50OjpwdXNoQXR0
cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KQotewotICAgIC8v
IEFsbCBhdHRyaWJ1dGUncyBjb250ZXh0cyBhcmUgZXF1YWwgKHNvIGp1c3QgdGFrZSB0aGUgb25l
IGZyb20gJ2N4JykuCi0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcmVzdG9yZSA9IGN4KCkt
PmNvbnRleHQoKTsKLQotICAgIGN4KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgY3koKS0+
c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICByeCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAg
IHJ5KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpwdXNo
QXR0cmlidXRlQ29udGV4dChjb250ZXh0KTsKLSAgICByZXR1cm4gcmVzdG9yZTsKIH0KIAotYm9v
bCBTVkdFbGxpcHNlRWxlbWVudDo6aGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0Ci17Ci0gICAg
aWYgKGN4KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5U
QUdFIHx8Ci0gICAgICAgIGN5KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RI
VFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHJ4KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3Ro
OjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHJ5KCktPnVuaXRUeXBlKCkg
PT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfQotCi0vLyB2aW06dHM9NDpub2V0CiAj
ZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCShyZXZpc2lvbiAxODIyMSkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBCb3N0b24sIE1BIDAy
MTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdFbGxpcHNlRWxlbWVudEltcGxf
SAotI2RlZmluZSBLU1ZHX1NWR0VsbGlwc2VFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0VsbGlw
c2VFbGVtZW50X0gKKyNkZWZpbmUgU1ZHRWxsaXBzZUVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NV
UFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTMx
LDcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAgICBjbGFzcyBTVkdMZW5ndGg7
CiAgICAgY2xhc3MgU1ZHRWxsaXBzZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVz
dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLApA
QCAtNDksMjAgKzQ5LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRv
UGF0aERhdGEoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1l
bnQqIHB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQp
OwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3Q7Ci0KICAgICBwcml2YXRlOgogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQogIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBDeCwg
Y3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEN5LCBjeSkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgUngsIHJ4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5n
dGg+LCBSeSwgcnkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdF
bGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN4LCBjeCkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgs
IFNWR0xlbmd0aCwgQ3ksIGN5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSeCwgcngpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIFJ5LCByeSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24g
MTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
ICAgICBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5j
b20+CiAKQEAgLTQzLDIxICs0MywyMCBAQCBTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVt
ZW50KGNvbnN0CiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIG1f
ZmlsdGVyVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9Y
KQogICAgICwgbV9wcmltaXRpdmVVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNF
UlNQQUNFT05VU0UpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmll
d3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hU
LCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywg
TE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5n
dGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywg
TGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAg
LCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQpCiAgICAgLCBtX2ZpbHRlclJlc1goMCkKICAgICAsIG1fZmlsdGVyUmVz
WSgwKQotCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVk
LCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIi0xMCUiIHdlcmUgc3BlY2lmaWVkLgot
ICAgIG1feC0+c2V0VmFsdWVBc1N0cmluZygiLTEwJSIpOwotICAgIG1feS0+c2V0VmFsdWVBc1N0
cmluZygiLTEwJSIpOwotCisgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoLCAiLTEwJSIpKTsKKyAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIpKTsKKyAKICAgICAvLyBTcGVjOiBJZiB0aGUgYXR0cmli
dXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTIw
JSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgbV93aWR0aC0+c2V0VmFsdWVBc1N0cmluZygiMTIwJSIp
OwotICAgIG1faGVpZ2h0LT5zZXRWYWx1ZUFzU3RyaW5nKCIxMjAlIik7CisgICAgc2V0V2lkdGhC
YXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKSk7CisgICAg
c2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTIw
JSIpKTsKIH0KIAogU1ZHRmlsdGVyRWxlbWVudDo6flNWR0ZpbHRlckVsZW1lbnQoKQpAQCAtNjYs
MTAgKzY1LDEwIEBAIFNWR0ZpbHRlckVsZW1lbnQ6On5TVkdGaWx0ZXJFbGVtZW50KCkKIAogQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgaW50LCBFbnVtZXJh
dGlvbiwgZW51bWVyYXRpb24sIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cywgU1ZHTmFtZXM6OmZp
bHRlclVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9maWx0ZXJVbml0cykKIEFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1l
cmF0aW9uLCBQcmltaXRpdmVVbml0cywgcHJpbWl0aXZlVW5pdHMsIFNWR05hbWVzOjpwcmltaXRp
dmVVbml0c0F0dHIubG9jYWxOYW1lKCksIG1fcHJpbWl0aXZlVW5pdHMpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBM
ZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kuZ2V0
KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdM
ZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRy
LmxvY2FsTmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwg
aGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1f
eCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwg
bV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRy
LmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQs
IFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodCkKIEFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcsIEludGVnZXIsIGludGVn
ZXIsIEZpbHRlclJlc1gsIGZpbHRlclJlc1gsICJmaWx0ZXJSZXNYIiwgbV9maWx0ZXJSZXNYKQog
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgbG9uZywgSW50
ZWdlciwgaW50ZWdlciwgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSwgImZpbHRlclJlc1kiLCBtX2Zp
bHRlclJlc1kpCiAKQEAgLTkxLDEzICs5MCwxMyBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmliCiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJvYmplY3RCb3VuZGlu
Z0JveCIpCiAgICAgICAgICAgICBzZXRQcmltaXRpdmVVbml0c0Jhc2VWYWx1ZShTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmlu
Zyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
Ojp3aWR0aEF0dHIpCi0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJp
bmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChTVkdVUklS
ZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAgICAgICAgIGlm
IChTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47CkBAIC0x
MTcsMTMgKzExNiwzMSBAQCBTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVz
CiAKICAgICBib29sIGZpbHRlckJCb3hNb2RlID0gZmlsdGVyVW5pdHMoKSA9PSBTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7CiAgICAgbV9maWx0ZXItPnNldEZp
bHRlckJvdW5kaW5nQm94TW9kZShmaWx0ZXJCQm94TW9kZSk7Ci0gICAgCi0gICAgeCgpLT5zZXRC
Ym94UmVsYXRpdmUoZmlsdGVyQkJveE1vZGUpOwotICAgIHkoKS0+c2V0QmJveFJlbGF0aXZlKGZp
bHRlckJCb3hNb2RlKTsKLSAgICB3aWR0aCgpLT5zZXRCYm94UmVsYXRpdmUoZmlsdGVyQkJveE1v
ZGUpOwotICAgIGhlaWdodCgpLT5zZXRCYm94UmVsYXRpdmUoZmlsdGVyQkJveE1vZGUpOwotICAg
IG1fZmlsdGVyLT5zZXRGaWx0ZXJSZWN0KEZsb2F0UmVjdCh4KCktPnZhbHVlKCksIHkoKS0+dmFs
dWUoKSwgd2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkpKTsKLSAgICAKKworICAg
IGZsb2F0IF94LCBfeSwgdywgaDsKKworICAgIGlmIChmaWx0ZXJCQm94TW9kZSAmJiB4KCkudW5p
dFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAgX3ggPSB4KCkudmFsdWVJ
blNwZWNpZmllZFVuaXRzKCkgLyAxMDAuMDsKKyAgICBlbHNlCisgICAgICAgIF94ID0geCgpLnZh
bHVlKCk7CisKKyAgICBpZiAoZmlsdGVyQkJveE1vZGUgJiYgeSgpLnVuaXRUeXBlKCkgPT0gTGVu
Z3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgIF95ID0geSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0
cygpIC8gMTAwLjA7CisgICAgZWxzZQorICAgICAgICBfeSA9IHkoKS52YWx1ZSgpOworCisgICAg
aWYgKGZpbHRlckJCb3hNb2RlICYmIHdpZHRoKCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVy
Y2VudGFnZSkKKyAgICAgICAgdyA9IHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgLyAx
MDAuMDsKKyAgICBlbHNlCisgICAgICAgIHcgPSB3aWR0aCgpLnZhbHVlKCk7CisKKyAgICBpZiAo
ZmlsdGVyQkJveE1vZGUgJiYgaGVpZ2h0KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2Vu
dGFnZSkKKyAgICAgICAgaCA9IGhlaWdodCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpIC8gMTAw
LjA7CisgICAgZWxzZQorICAgICAgICBoID0gaGVpZ2h0KCkudmFsdWUoKTsKKworICAgIG1fZmls
dGVyLT5zZXRGaWx0ZXJSZWN0KEZsb2F0UmVjdChfeCwgX3ksIHcsIGgpKTsKKwogICAgIGJvb2wg
cHJpbWl0aXZlQkJveE1vZGUgPSBwcmltaXRpdmVVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZH
X1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKICAgICBtX2ZpbHRlci0+c2V0RWZmZWN0Qm91
bmRpbmdCb3hNb2RlKHByaW1pdGl2ZUJCb3hNb2RlKTsKICAgICAvLyBGSVhNRTogV2hlbiBkb2Vz
IHRoaXMgaW5mbyBnZXQgcGFzc2VkIHRvIHRoZSBmaWx0ZXJzIGVsZW1lbnRzPwpAQCAtMTQzLDYg
KzE2MCw2IEBAIFNWR1Jlc291cmNlKiBTVkdGaWx0ZXJFbGVtZW50OjpjYW52YXNSZXMKIAogfQog
Ci0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24gMTgy
MjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAg
Q29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgog
CkBAIC0yMSw4ICsyMSw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwog
Ci0jaWZuZGVmIEtTVkdfU1ZHRmlsdGVyRWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0Zp
bHRlckVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHRmlsdGVyRWxlbWVudF9ICisjZGVmaW5lIFNW
R0ZpbHRlckVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1Jl
c291cmNlRmlsdGVyLmgiCkBAIC01OSwxMCArNjAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
IAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVu
dCwgaW50LCBpbnQsIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cykKICAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGludCwgaW50LCBQcmltaXRp
dmVVbml0cywgcHJpbWl0aXZlVW5pdHMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwg
WCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVs
ZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoKiwg
UmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lkdGgsIHdp
ZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxl
bWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgbG9uZywgbG9uZywg
RmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcsIGxvbmcsIEZpbHRlclJlc1ksIGZpbHRlclJl
c1kpCiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gMTgyMjEpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2
ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9S
VAogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkBA
IC0zNSwzNyArMzYsMzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZH
U3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgo
dGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBT
VkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVp
Z2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisg
ICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1f
aGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7Ci0gICAgLy8gU3BlYyA6IElmIHRoZSBh
dHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9m
ICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KLSAgICBtX3dpZHRoLT5zZXRWYWx1ZUFzU3RyaW5nKCIx
MDAlIik7Ci0gICAgbV9oZWlnaHQtPnNldFZhbHVlQXNTdHJpbmcoIjEwMCUiKTsKKyAgICAvLyBT
cGVjOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCisgICAgc2V0V2lkdGhCYXNlVmFs
dWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSk7CisgICAgc2V0SGVp
Z2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSIpKTsK
IH0KIAogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjp+U1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgq
LCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gu
Z2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdO
YW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3Ro
KiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2Nh
bE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBs
ZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwg
bV9oZWlnaHQuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgs
IHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1f
eSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBT
VkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0
dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTdHJpbmcsIFN0cmluZywgc3Ry
aW5nLCBSZXN1bHQsIHJlc3VsdCwgU1ZHTmFtZXM6OnJlc3VsdEF0dHIubG9jYWxOYW1lKCksIG1f
cmVzdWx0KQogCiB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJp
bmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
Ojp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsK
KyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0
cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Cisg
ICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgs
IHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRB
dHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7
CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJl
c3VsdEF0dHIpCiAgICAgICAgIHNldFJlc3VsdEJhc2VWYWx1ZSh2YWx1ZSk7CiAgICAgZWxzZQpA
QCAtNzcsMjYgKzc4LDMxIEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGUKICAgICBBU1NFUlQoZmlsdGVyRWZmZWN0KTsKICAgICBpZiAoIWZpbHRlckVmZmVjdCkKICAg
ICAgICAgcmV0dXJuOworCiAgICAgYm9vbCBiYm94ID0gZmFsc2U7CiAgICAgaWYgKHBhcmVudE5v
ZGUoKSAmJiBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZpbHRlclRhZykpCiAg
ICAgICAgIGJib3ggPSBzdGF0aWNfY2FzdDxTVkdGaWx0ZXJFbGVtZW50Kj4ocGFyZW50Tm9kZSgp
KS0+cHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1g7CiAKLSAgICB4KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICB5KCkt
PnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICB3aWR0aCgpLT5zZXRCYm94UmVsYXRpdmUoYmJv
eCk7Ci0gICAgaGVpZ2h0KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICBmbG9hdCBfeCA9
IHgoKS0+dmFsdWUoKSwgX3kgPSB5KCktPnZhbHVlKCk7Ci0gICAgZmxvYXQgX3dpZHRoID0gd2lk
dGgoKS0+dmFsdWUoKSwgX2hlaWdodCA9IGhlaWdodCgpLT52YWx1ZSgpOwotICAgIGlmIChiYm94
KQotICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldFN1YlJlZ2lvbihGbG9hdFJlY3QoX3ggKiAxMDAu
ZiwgX3kgKiAxMDAuZiwgX3dpZHRoICogMTAwLmYsIF9oZWlnaHQgKiAxMDAuZikpOwotICAgIGVs
c2UKLSAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRTdWJSZWdpb24oRmxvYXRSZWN0KF94LCBfeSwg
X3dpZHRoLCBfaGVpZ2h0KSk7Ci0KKyAgICBmbG9hdCBfeCwgX3ksIF93aWR0aCwgX2hlaWdodDsK
KyAgCisgICAgaWYgKGJib3gpIHsKKyAgICAgICAgX3ggPSB4KCkudmFsdWVJblNwZWNpZmllZFVu
aXRzKCk7CisgICAgICAgIF95ID0geSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAg
ICBfd2lkdGggPSB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBfaGVp
Z2h0ID0gaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgX3ggPSB4KCkudmFsdWUoKTsKKyAgICAgICAgX3kgPSB5KCkudmFsdWUoKTsKKyAgICAg
ICAgX3dpZHRoID0gd2lkdGgoKS52YWx1ZSgpOworICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0KCku
dmFsdWUoKTsKKyAgICB9IAorICAgIAorICAgIGZpbHRlckVmZmVjdC0+c2V0U3ViUmVnaW9uKEZs
b2F0UmVjdChfeCwgX3ksIF93aWR0aCwgX2hlaWdodCkpOwogICAgIGZpbHRlckVmZmVjdC0+c2V0
UmVzdWx0KHJlc3VsdCgpKTsKIH0KIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHJl
dmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKQEAgLTIwLDE1ICsyMCwxNSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlc0ltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlc0ltcGxfSAorI2lmbmRlZiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXNfSAorI2RlZmluZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNfSAorCiAj
aWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNWR0ZpbHRlckVmZmVjdDsKLSAgICBjbGFzcyBT
VkdMZW5ndGg7CiAKICAgICBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudAogICAgIHsKQEAgLTUwLDEwICs1MCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwg
d2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+
LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRo
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWln
aHQpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFN0cmluZywgU3RyaW5nLCBSZXN1bHQsIHJlc3VsdCkK
ICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJKHJldmlz
aW9uIDE4MjIxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VW
aWV3Qm94KGNvbnN0CiAgICAgCiAgICAgaWYgKHAgPCBlbmQpIC8vIG5vdGhpbmcgc2hvdWxkIGNv
bWUgYWZ0ZXIgdGhlIGxhc3QsIGZvdXJ0aCBudW1iZXIKICAgICAgICAgZ290byBiYWlsX291dDsK
LQorICAgIAogICAgIHNldFZpZXdCb3hCYXNlVmFsdWUoRmxvYXRSZWN0KHgsIHksIHcsIGgpKTsK
ICAgICByZXR1cm47CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBA
CiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5j
bHVkZSAiU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCIKQEAgLTQwLDEwICs0MSwxMCBAQCBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjCiAgICAgLCBTVkdUZXN0cygpCiAg
ICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
Ci0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50
KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVs
ZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZp
ZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1f
SEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdp
ZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWln
aHQpCiB7CiB9CiAKQEAgLTUxLDIzICs1MiwyMyBAQCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6
flNWR0ZvcmVpZ25PYmplCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwg
U1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNW
R0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0
dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgs
IEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWln
aHQuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0
RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRy
LmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFt
ZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lk
dGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0
ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCiAKIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFz
U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1
ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0
aEF0dHIpIHsKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1
ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlKSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU19QUk9QX1dJ
RFRILCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omhl
aWdodEF0dHIpIHsKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU19Q
Uk9QX0hFSUdIVCwgdmFsdWUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChTVkdUZXN0czo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCkBAIC04MCwxMiArODEsMTIgQEAgdm9pZCBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZQogICAgIH0KIH0KIAotUmVuZGVyT2JqZWN0
ICpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEgKmFy
ZW5hLCBSZW5kZXJTdHlsZSAqc3R5bGUpCitSZW5kZXJPYmplY3QqIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBz
dHlsZSkKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRm9yZWlnbk9iamVjdCh0aGlz
KTsKIH0KIAotYm9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihOb2RlICpjaGlsZCkgY29uc3QKK2Jvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hpbGQpIGNvbnN0CiB7CiAgICAgLy8g
U2tpcCBvdmVyIFNWRyBydWxlcyB3aGljaCBkaXNhbGxvdyBub24tU1ZHIGtpZHMKICAgICByZXR1
cm4gU3R5bGVkRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZCk7CkBAIC05
Myw2ICs5NCw2IEBAIGJvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNoaWxkU2hvdWwKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxODIyMSkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDgg
KzE5LDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYg
S1NWR19TVkdGb3JlaWduT2JqZWN0RWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50X0gK
KyNkZWZpbmUgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQK
IAogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCkBAIC01OCwxMCArNTksMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkgCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVm
KQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwg
U1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwg
UmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQ
dHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xl
bmd0aCwgSGVpZ2h0LCBoZWlnaHQpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSGVscGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdIZWxwZXIuY3BwCShyZXZpc2lvbiAxODIyMSkKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0hlbHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRm
b3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAKQEAgLTM2LDIy
ICszNywxOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWZsb2F0IFNWR0hlbHBlcjo6UGVyY2VudGFnZU9mVmlld3BvcnQoZmxvYXQgdmFsdWUsIGNvbnN0
IFNWR0VsZW1lbnQqIHZpZXdwb3J0RWxlbWVudCwgTGVuZ3RoTW9kZSBtb2RlKQorZmxvYXQgU1ZH
SGVscGVyOjpQZXJjZW50YWdlT2ZWaWV3cG9ydChmbG9hdCB2YWx1ZSwgY29uc3QgU1ZHRWxlbWVu
dCogdmlld3BvcnRFbGVtZW50LCBTVkdMZW5ndGhNb2RlIG1vZGUpCiB7CiAgICAgZmxvYXQgd2lk
dGggPSAwLCBoZWlnaHQgPSAwOwogICAgIGlmICghdmlld3BvcnRFbGVtZW50KQogICAgICAgICBy
ZXR1cm4gMC4wOwotIAorCiAgICAgaWYgKHZpZXdwb3J0RWxlbWVudC0+aXNTVkcoKSkgewogICAg
ICAgICBjb25zdCBTVkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxjb25zdCBTVkdTVkdF
bGVtZW50Kj4odmlld3BvcnRFbGVtZW50KTsKLSAgICAgICAgaWYgKHN2Zy0+aGFzQXR0cmlidXRl
KFNWR05hbWVzOjp2aWV3Qm94QXR0cikpIHsKLSAgICAgICAgICAgIHdpZHRoID0gc3ZnLT52aWV3
Qm94KCkud2lkdGgoKTsKLSAgICAgICAgICAgIGhlaWdodCA9IHN2Zy0+dmlld0JveCgpLmhlaWdo
dCgpOwotICAgICAgICB9IGVsc2UgaWYgKHN2Zy0+d2lkdGgoKS0+dW5pdFR5cGUoKSA9PSBTVkdM
ZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgICAgICAgICBzdmct
PmhlaWdodCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VO
VEFHRSkgewotICAgICAgICAgICAgLy8gVE9ETzogU2hvdWxkbid0IHcvaCBiZSBtdWx0aXBsaWVk
IHdpdGggdGhlIHBlcmNlbnRhZ2UgdmFsdWVzPyEKLSAgICAgICAgICAgIC8vIEFGQUlLLCB0aGlz
IGFzc3VtZXMgd2lkdGggJiBoZWlnaHQgPT0gMTAwJSwgUm9iPz8KLSAgICAgICAgICAgIERvY3Vt
ZW50ICpkb2MgPSBzdmctPmRvY3VtZW50KCk7CisKKyAgICAgICAgaWYgKHN2Zy0+d2lkdGgoKS51
bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8CisgICAgICAgICAgICBzdmctPmhl
aWdodCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpIHsKKyAgICAgICAgICAg
IERvY3VtZW50KiBkb2MgPSBzdmctPmRvY3VtZW50KCk7CiAgICAgICAgICAgICBpZiAoZG9jLT5k
b2N1bWVudEVsZW1lbnQoKSA9PSBzdmcpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRv
IGFzayB0aGUgY2FudmFzIGZvciB0aGUgZnVsbCAiY2FudmFzIHNpemUiLi4uCiAgICAgICAgICAg
ICAgICAgUmVuZGVyVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFJlbmRlclZpZXcgKj4oZG9jLT5y
ZW5kZXJlcigpKTsKQEAgLTYxLDIyICs1OCwyMiBAQCBmbG9hdCBTVkdIZWxwZXI6OlBlcmNlbnRh
Z2VPZlZpZXdwb3J0KGZsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgd2lkdGggPSBzdmctPndpZHRoKCktPnZhbHVlKCk7Ci0g
ICAgICAgICAgICBoZWlnaHQgPSBzdmctPmhlaWdodCgpLT52YWx1ZSgpOworICAgICAgICAgICAg
d2lkdGggPSBzdmctPndpZHRoKCkudmFsdWUoKTsKKyAgICAgICAgICAgIGhlaWdodCA9IHN2Zy0+
aGVpZ2h0KCkudmFsdWUoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtb2RlID09IExN
X1dJRFRIKQorICAgIGlmIChtb2RlID09IExlbmd0aE1vZGVXaWR0aCkKICAgICAgICAgcmV0dXJu
IHZhbHVlICogd2lkdGg7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBMTV9IRUlHSFQpCisgICAgZWxz
ZSBpZiAobW9kZSA9PSBMZW5ndGhNb2RlSGVpZ2h0KQogICAgICAgICByZXR1cm4gdmFsdWUgKiBo
ZWlnaHQ7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBMTV9PVEhFUikKKyAgICBlbHNlIGlmIChtb2Rl
ID09IExlbmd0aE1vZGVPdGhlcikKICAgICAgICAgcmV0dXJuIHZhbHVlICogc3FydChwb3coZG91
YmxlKHdpZHRoKSwgMikgKyBwb3coZG91YmxlKGhlaWdodCksIDIpKSAvIHNxcnQoMi4wKTsKICAg
ICAKICAgICByZXR1cm4gMC4wOwogfQogCi12b2lkIFNWR0hlbHBlcjo6cGFyc2VTZXBhcmF0ZWRM
aXN0KFNWR1N0cmluZ0xpc3QgKmxpc3QsIGNvbnN0IFN0cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1p
dGVyKQordm9pZCBTVkdIZWxwZXI6OnBhcnNlU2VwYXJhdGVkTGlzdChTVkdTdHJpbmdMaXN0KiBs
aXN0LCBjb25zdCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikKIHsKICAgICAvLyBUT0RP
IDogbW9yZSBlcnJvciBjaGVja2luZy9yZXBvcnRpbmcKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKQEAgLTkxLDYgKzg4LDYgQEAgdm9pZCBTVkdIZWxwZXI6OnBhcnNlU2VwYXJhdGVkTGlzdChT
VkdTdAogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisv
LyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdIZWxwZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdIZWxwZXIuaAkocmV2aXNpb24gMTgyMjEp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NiArMjQsNyBAQAogI2RlZmluZSBLU1ZHX1NWR0hlbHBlcl9ICiAjaWZkZWYgU1ZHX1NVUFBPUlQK
IAorI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMyLDE2ICszMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBTVkdTdHJpbmdMaXN0OwogCiAgICAgLy8gS1NWRyBleHRlbnNpb24KLSAg
ICBlbnVtIExlbmd0aE1vZGUgewotICAgICAgICBMTV9VTktOT1dOID0gMCwKLSAgICAgICAgTE1f
V0lEVEgsCi0gICAgICAgIExNX0hFSUdIVCwKLSAgICAgICAgTE1fT1RIRVIKLSAgICB9OwotCiAg
ICAgY2xhc3MgU1ZHSGVscGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBmbG9hdCBQ
ZXJjZW50YWdlT2ZWaWV3cG9ydChmbG9hdCB2YWx1ZSwgY29uc3QgU1ZHRWxlbWVudCAqdmlld3Bv
cnRFbGVtZW50LCBMZW5ndGhNb2RlIG1vZGUpOworICAgICAgICBzdGF0aWMgZmxvYXQgUGVyY2Vu
dGFnZU9mVmlld3BvcnQoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQgKnZpZXdwb3J0RWxl
bWVudCwgU1ZHTGVuZ3RoTW9kZSBtb2RlKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBwYXJzZVNl
cGFyYXRlZExpc3QoU1ZHU3RyaW5nTGlzdCAqbGlzdCwgY29uc3QgU3RyaW5nICZkYXRhLCBVQ2hh
ciBkZWxpbWl0ZXIgPSAnLCcpOwogICAgIH07CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDYgICAgICAgQWxleGFu
ZGVyIEtlbGxldHQgPGx5cGFub3ZAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDYgQWxl
eGFuZGVyIEtlbGxldHQgPGx5cGFub3ZAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yMiw2ICsyMiw3IEBACiAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVu
dC5oIgogCkBAIC00NSwxMCArNDYsMTAgQEAgU1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVsZW1l
bnQoY29uc3QgUQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQoKQogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKLSAgICAsIG1feChuZXcgU1ZH
TGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kobmV3
IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1f
d2lkdGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQot
ICAgICwgbV9oZWlnaHQobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxl
bWVudCgpKSkKKyAgICAsIG1feCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRo
KQorICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKICAgICAsIG1fcHJlc2Vy
dmVBc3BlY3RSYXRpbyhuZXcgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyh0aGlzKSkKICAgICAsIG1f
aW1hZ2VMb2FkZXIodGhpcykKIHsKQEAgLTU4LDI2ICs1OSwyNiBAQCBTVkdJbWFnZUVsZW1lbnQ6
On5TVkdJbWFnZUVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdO
YW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFks
IHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dp
ZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50
LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpo
ZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodC5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
WCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGgp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5s
b2NhbE5hbWUoKSwgbV9oZWlnaHQpCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJ
bWFnZUVsZW1lbnQsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qLCBQcmVzZXJ2ZUFzcGVjdFJhdGlv
LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIubG9jYWxOYW1lKCksIG1f
cHJlc2VydmVBc3BlY3RSYXRpby5nZXQoKSkKIAogdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5n
KHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Cisg
ICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0cikKICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1ZSgpLT5w
YXJzZVByZXNlcnZlQXNwZWN0UmF0aW8odmFsdWUuaW1wbCgpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICB3aWR0aEJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUo
U1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICAgICAgYWRkQ1NT
UHJvcGVydHkoYXR0ciwgQ1NTX1BST1BfV0lEVEgsIHZhbHVlKTsKICAgICB9IGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBoZWlnaHRCYXNl
VmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTX1BST1BfSEVJR0hULCB2YWx1ZSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKQEAg
LTExNCw2ICsxMTUsNiBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6YXR0YWNoKCkKIAogfQogCi0v
LyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9l
dApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDE4MjIxKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdJbWFnZUVs
ZW1lbnRJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdJbWFnZUVsZW1lbnRJbXBsX0gKKyNpZm5kZWYg
U1ZHSW1hZ2VFbGVtZW50X0gKKyNkZWZpbmUgU1ZHSW1hZ2VFbGVtZW50X0gKKwogI2lmZGVmIFNW
R19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBA
IC02NiwxMCArNjcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
Ym9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkgCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VS
SVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
SW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRy
PFNWR0xlbmd0aD4sIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwg
U1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBXaWR0aCwg
d2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVs
ZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKICAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbyosIFJlZlB0cjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiwgUHJlc2VydmVBc3Bl
Y3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAogICAgICAgICBTVkdJbWFnZUxvYWRlciBt
X2ltYWdlTG9hZGVyOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguY3BwCShyZXZpc2lvbiAxODIy
MSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAg
ICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTEwLDcgKzEwLDcgQEAKICAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbiBvZgogICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CiAgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAK
QEAgLTIxLDgwICsyMSwyMTEgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVm
IFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAKLSNpbmNsdWRlICJJbnRSZWN0
LmgiCi0jaW5jbHVkZSAiUmVuZGVyUGF0aC5oIgotI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNp
bmNsdWRlICJTVkdMZW5ndGguaCIKLSNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVk
ZSAiRGVwcmVjYXRlZFN0cmluZy5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1
ZGUgIlNWR0hlbHBlci5oIgorI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJzdmdwYXRocGFyc2VyLmgiCi0jaW5jbHVkZSA8bWF0aC5oPgogCi11c2luZyBuYW1lc3BhY2Ug
c3RkOwotCi0vLyBrZWVwIHRyYWNrIG9mIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhlIHVuaXQg
dHlwZQotc3RhdGljIGNvbnN0IGNoYXIqIFVuaXRUZXh0W10gPQotewotICAgICIiLCAiIiwKLSAg
ICAiJSIsICJlbSIsCi0gICAgImV4IiwgInB4IiwKLSAgICAiY20iLCAibW0iLAotICAgICJpbiIs
ICJwdCIsCi0gICAgInBjIgotfTsKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVNWR0xlbmd0aDo6U1ZHTGVuZ3RoKGNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnQqIGNvbnRleHQsIExlbmd0aE1vZGUgbW9kZSwgY29uc3QgU1ZHRWxlbWVudCogdmlld3Bv
cnQpCi0gICAgOiBTaGFyZWQ8U1ZHTGVuZ3RoPigpCi0gICAgLCBtX3ZhbHVlKDApCi0gICAgLCBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0cygwKQotICAgICwgbV9tb2RlKG1vZGUpCi0gICAgLCBtX2Ji
b3hSZWxhdGl2ZShmYWxzZSkKLSAgICAsIG1fdW5pdFR5cGUoU1ZHX0xFTkdUSFRZUEVfVU5LTk9X
TikKLSAgICAsIG1fcmVxdWlyZXNMYXlvdXQoZmFsc2UpCi0gICAgLCBtX2NvbnRleHQoY29udGV4
dCkKLSAgICAsIG1fdmlld3BvcnRFbGVtZW50KHZpZXdwb3J0KQorLy8gSGVscGVyIGZ1bmN0aW9u
cworaW5saW5lIHVuc2lnbmVkIGludCBzdG9yZVVuaXQoU1ZHTGVuZ3RoTW9kZSBtb2RlLCBTVkdM
ZW5ndGhUeXBlIHR5cGUpCiB7CisgICAgcmV0dXJuIChtb2RlIDw8IDQpIHwgdHlwZTsKIH0KIAot
U1ZHTGVuZ3RoOjp+U1ZHTGVuZ3RoKCkKK2lubGluZSBTVkdMZW5ndGhNb2RlIGV4dHJhY3RNb2Rl
KHVuc2lnbmVkIGludCB1bml0KQogeworICAgIHVuc2lnbmVkIGludCBtb2RlID0gdW5pdCA+PiA0
OyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoTW9kZT4obW9kZSk7Cit9CisK
K2lubGluZSBTVkdMZW5ndGhUeXBlIGV4dHJhY3RUeXBlKHVuc2lnbmVkIGludCB1bml0KQorewor
ICAgIHVuc2lnbmVkIGludCBtb2RlID0gdW5pdCA+PiA0OworICAgIHVuc2lnbmVkIGludCB0eXBl
ID0gdW5pdCBeIChtb2RlIDw8IDQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMZW5ndGhU
eXBlPih0eXBlKTsKK30KKworaW5saW5lIFN0cmluZyBsZW5ndGhUeXBlVG9TdHJpbmcoU1ZHTGVu
Z3RoVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTGVuZ3RoVHlw
ZVVua25vd246CisgICAgY2FzZSBMZW5ndGhUeXBlTnVtYmVyOgorICAgICAgICByZXR1cm4gIiI7
ICAgIAorICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6CisgICAgICAgIHJldHVybiAiJSI7
CisgICAgY2FzZSBMZW5ndGhUeXBlRU1TOgorICAgICAgICByZXR1cm4gImVtIjsKKyAgICBjYXNl
IExlbmd0aFR5cGVFWFM6CisgICAgICAgIHJldHVybiAiZXgiOworICAgIGNhc2UgTGVuZ3RoVHlw
ZVBYOgorICAgICAgICByZXR1cm4gInB4IjsKKyAgICBjYXNlIExlbmd0aFR5cGVDTToKKyAgICAg
ICAgcmV0dXJuICJjbSI7CisgICAgY2FzZSBMZW5ndGhUeXBlTU06CisgICAgICAgIHJldHVybiAi
bW0iOworICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgorICAgICAgICByZXR1cm4gImluIjsKKyAgICBj
YXNlIExlbmd0aFR5cGVQVDoKKyAgICAgICAgcmV0dXJuICJwdCI7CisgICAgY2FzZSBMZW5ndGhU
eXBlUEM6CisgICAgICAgIHJldHVybiAicGMiOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotU1ZHTGVuZ3RoOjpTVkdMZW5ndGhUeXBlIFNWR0xlbmd0aDo6dW5pdFR5cGUoKSBj
b25zdAoraW5saW5lIFNWR0xlbmd0aFR5cGUgc3RyaW5nVG9MZW5ndGhUeXBlKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewotICAgIHJldHVybiBtX3VuaXRUeXBlOworICAgIGlmIChzdHJpbmcuZW5k
c1dpdGgoIiUiKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVQZXJjZW50YWdlOworICAgIGVs
c2UgaWYgKHN0cmluZy5lbmRzV2l0aCgiZW0iKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVF
TVM7CisgICAgZWxzZSBpZiAoc3RyaW5nLmVuZHNXaXRoKCJleCIpKQorICAgICAgICByZXR1cm4g
TGVuZ3RoVHlwZUVYUzsKKyAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dpdGgoInB4IikpCisgICAg
ICAgIHJldHVybiBMZW5ndGhUeXBlUFg7CisgICAgZWxzZSBpZiAoc3RyaW5nLmVuZHNXaXRoKCJj
bSIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZUNNOworICAgIGVsc2UgaWYgKHN0cmluZy5l
bmRzV2l0aCgibW0iKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVNTTsKKyAgICBlbHNlIGlm
IChzdHJpbmcuZW5kc1dpdGgoImluIikpCisgICAgICAgIHJldHVybiBMZW5ndGhUeXBlSU47Cisg
ICAgZWxzZSBpZiAoc3RyaW5nLmVuZHNXaXRoKCJwdCIpKQorICAgICAgICByZXR1cm4gTGVuZ3Ro
VHlwZVBUOworICAgIGVsc2UgaWYgKHN0cmluZy5lbmRzV2l0aCgicGMiKSkKKyAgICAgICAgcmV0
dXJuIExlbmd0aFR5cGVQQzsKKyAgICBlbHNlIGlmICghc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIExlbmd0aFR5cGVOdW1iZXI7CisKKyAgICByZXR1cm4gTGVuZ3RoVHlwZVVua25v
d247Cit9CisKK1NWR0xlbmd0aDo6U1ZHTGVuZ3RoKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNv
bnRleHQsIFNWR0xlbmd0aE1vZGUgbW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQor
ICAgIDogbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMoMC4wKQorICAgICwgbV91bml0KHN0b3JlVW5p
dChtb2RlLCBMZW5ndGhUeXBlTnVtYmVyKSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorewor
ICAgIHNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZyk7CiB9CiAKLXZvaWQgU1ZHTGVuZ3Ro
OjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkKK1NWR0xlbmd0aFR5cGUgU1ZHTGVuZ3RoOjp1bml0VHlw
ZSgpIGNvbnN0CiB7Ci0gICAgbV92YWx1ZSA9IHZhbHVlOwotICAgIHVwZGF0ZVZhbHVlSW5TcGVj
aWZpZWRVbml0cygpOworICAgIHJldHVybiBleHRyYWN0VHlwZShtX3VuaXQpOwogfQogCiBmbG9h
dCBTVkdMZW5ndGg6OnZhbHVlKCkgY29uc3QKIHsKLSAgICBpZiAobV9yZXF1aXJlc0xheW91dCkK
LSAgICAgICAgY29uc3RfY2FzdDxTVkdMZW5ndGgqPih0aGlzKS0+dXBkYXRlVmFsdWUoZmFsc2Up
OworICAgIFNWR0xlbmd0aFR5cGUgdHlwZSA9IGV4dHJhY3RUeXBlKG1fdW5pdCk7CisgICAgaWYg
KHR5cGUgPT0gTGVuZ3RoVHlwZVVua25vd24pCisgICAgICAgIHJldHVybiAwLjA7CisKKyAgICBz
d2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6CisgICAgICAgIHJldHVy
biBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsKKyAgICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdl
OgorICAgIHsKKyAgICAgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBvdXRlcm1vc3QgPHN2Zz4gZWxl
bWVudCAgICAgIAorICAgICAgICBjb25zdCBTVkdFbGVtZW50KiB2aWV3cG9ydCA9IG1fY29udGV4
dCA/IG1fY29udGV4dC0+dmlld3BvcnRFbGVtZW50KCkgOiAwOworICAgICAgICBpZiAobV9jb250
ZXh0ICYmICF2aWV3cG9ydCAmJiBtX2NvbnRleHQtPm93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRF
bGVtZW50KCkgPT0gbV9jb250ZXh0KQorICAgICAgICAgICAgdmlld3BvcnQgPSBtX2NvbnRleHQ7
CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIFNWR0hlbHBlcjo6UGVy
Y2VudGFnZU9mVmlld3BvcnQobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAxMDAuMCwgdmlld3Bv
cnQsIGV4dHJhY3RNb2RlKG1fdW5pdCkpOworICAgIH0gCisgICAgY2FzZSBMZW5ndGhUeXBlRU1T
OgorICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICB7CisgICAgICAgIFJlbmRlclN0eWxlKiBz
dHlsZSA9IDA7CisgICAgICAgIGlmIChtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5yZW5kZXJlcigp
KQorICAgICAgICAgICAgc3R5bGUgPSBtX2NvbnRleHQtPnJlbmRlcmVyKCktPnN0eWxlKCk7Cisg
ICAgICAgIGlmIChzdHlsZSkgeworICAgICAgICAgICAgZmxvYXQgdXNlU2l6ZSA9IHN0eWxlLT5m
b250U2l6ZSgpOworICAgICAgICAgICAgQVNTRVJUKHVzZVNpemUgPiAwKTsKKyAgICAgICAgICAg
IGlmICh0eXBlID09IExlbmd0aFR5cGVFTVMpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzICogdXNlU2l6ZTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGZsb2F0IHhIZWlnaHQgPSBzdHlsZS0+Zm9udCgpLnhIZWlnaHQoKTsKKyAgICAg
ICAgICAgICAgICAvLyBVc2Ugb2YgY2VpbCBhbGxvd3MgYSBwaXhlbCBtYXRjaCB0byB0aGUgVzND
cyBleHBlY3RlZCBvdXRwdXQgb2YgY29vcmRzLXVuaXRzLTAzLWIuc3ZnCisgICAgICAgICAgICAg
ICAgLy8gaWYgdGhpcyBjYXVzZXMgcHJvYmxlbXMgaW4gcmVhbCB3b3JsZCBjYXNlcyBtYXliZSBp
dCB3b3VsZCBiZSBiZXN0IHRvIHJlbW92ZSB0aGlzCisgICAgICAgICAgICAgICAgcmV0dXJuIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzICogY2VpbCh4SGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gMC4wOworICAgIH0KKyAgICBjYXNlIExlbmd0aFR5cGVQ
WDoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzOworICAgIGNhc2UgTGVu
Z3RoVHlwZUNNOgorICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAyLjU0
ICogZHBpKCk7CisgICAgY2FzZSBMZW5ndGhUeXBlTU06CisgICAgICAgIHJldHVybiBtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0cyAvIDI1LjQgKiBkcGkoKTsKKyAgICBjYXNlIExlbmd0aFR5cGVJTjoK
KyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzICogZHBpKCk7CisgICAgY2Fz
ZSBMZW5ndGhUeXBlUFQ6CisgICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAv
IDcyLjAgKiBkcGkoKTsKKyAgICBjYXNlIExlbmd0aFR5cGVQQzoKKyAgICAgICAgcmV0dXJuIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzIC8gNi4wICogZHBpKCk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgQVNTRVJUKGZhbHNlKTsKKyAgICByZXR1cm4gMC4wOwor
fQogCi0gICAgaWYgKG1fdW5pdFR5cGUgIT0gU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSkKLSAg
ICAgICAgcmV0dXJuIG1fdmFsdWU7Cit2b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWUoZmxvYXQgdmFs
dWUpCit7CisgICAgU1ZHTGVuZ3RoVHlwZSB0eXBlID0gZXh0cmFjdFR5cGUobV91bml0KTsKKyAg
ICBBU1NFUlQodHlwZSAhPSBMZW5ndGhUeXBlVW5rbm93bik7CiAKLSAgICBmbG9hdCB2YWx1ZSA9
IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gMTAwLjA7Ci0gICAgaWYgKG1fYmJveFJlbGF0aXZl
KQotICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBM
ZW5ndGhUeXBlTnVtYmVyOgorICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdlOgorICAgIGNh
c2UgTGVuZ3RoVHlwZUVNUzoKKyAgICBjYXNlIExlbmd0aFR5cGVFWFM6CisgICAgICAgIEFTU0VS
VChmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgorICAgICAg
ICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIExlbmd0aFR5cGVDTToKKyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1
ZSAqIDIuNTQgLyBkcGkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlTU06
CisgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWUgKiAyNS40IC8gZHBpKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgorICAgICAgICBtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlIC8gZHBpKCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTGVuZ3RoVHlwZVBUOgorICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVl
ICogNzIuMCAvIGRwaSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVQQzoK
KyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZSAvIDYuMCAqIGRwaSgpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CiAKLSAg
ICAvLyBVc2UgdGhlIG1hbnVhbCBvdmVycmlkZSAibV92aWV3cG9ydEVsZW1lbnQiIHdoZW4gdGhl
cmUgaXMgbm8gY29udGV4dCBlbGVtZW50IG9mZiBvZiB3aGljaCB0byBlc3RhYmxpc2ggdGhlIHZp
ZXdwb3J0LgotICAgIHJldHVybiBTVkdIZWxwZXI6OlBlcmNlbnRhZ2VPZlZpZXdwb3J0KHZhbHVl
LCBtX2NvbnRleHQgPyBtX2NvbnRleHQtPnZpZXdwb3J0RWxlbWVudCgpIDogbV92aWV3cG9ydEVs
ZW1lbnQsIHN0YXRpY19jYXN0PExlbmd0aE1vZGU+KG1fbW9kZSkpOworICAgIGlmIChtX2NvbnRl
eHQgJiYgbV9jb250ZXh0LT5vd25lckRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpICE9IG1f
Y29udGV4dCkKKyAgICAgICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKIH0K
IAotdm9pZCBTVkdMZW5ndGg6OnNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyhmbG9hdCB2YWx1ZUlu
U3BlY2lmaWVkVW5pdHMpCit2b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWVJblNwZWNpZmllZFVuaXRz
KGZsb2F0IHZhbHVlKQogewotICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWVJblNw
ZWNpZmllZFVuaXRzOwotICAgIHVwZGF0ZVZhbHVlKCk7CisgICAgbV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMgPSB2YWx1ZTsKKworICAgIGlmIChtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5vd25lckRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpICE9IG1fY29udGV4dCkgICAgCisgICAgICAgIG1f
Y29udGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CiB9CiAKIGZsb2F0IFNWR0xlbmd0aDo6
dmFsdWVJblNwZWNpZmllZFVuaXRzKCkgY29uc3QKQEAgLTEwNyw3MSArMjM4LDUxIEBAIHZvaWQg
U1ZHTGVuZ3RoOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFMKICAgICBpZiAocy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIERlcHJlY2F0ZWRTdHJpbmcgdmFsdWVBc1FTdHJpbmcg
PSBzLmRlcHJlY2F0ZWRTdHJpbmcoKTsKLQogICAgIGRvdWJsZSBjb252ZXJ0ZWROdW1iZXIgPSAw
OwotICAgIGNvbnN0IGNoYXIqIHN0YXJ0ID0gdmFsdWVBc1FTdHJpbmcubGF0aW4xKCk7Ci0gICAg
Y29uc3QgY2hhciogZW5kID0gcGFyc2VDb29yZChzdGFydCwgY29udmVydGVkTnVtYmVyKTsKKyAg
ICBEZXByZWNhdGVkU3RyaW5nIGRlcFN0cmluZyA9IHMuZGVwcmVjYXRlZFN0cmluZygpOworICAg
IGNvbnN0IGNoYXIqIHN0YXJ0ID0gZGVwU3RyaW5nLmxhdGluMSgpOworICAgIHBhcnNlQ29vcmQo
c3RhcnQsIGNvbnZlcnRlZE51bWJlcik7CisgICAgCisgICAgbV91bml0ID0gc3RvcmVVbml0KGV4
dHJhY3RNb2RlKG1fdW5pdCksIHN0cmluZ1RvTGVuZ3RoVHlwZShzKSk7CiAgICAgbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgPSBjb252ZXJ0ZWROdW1iZXI7Ci0KLSAgICB1bnNpZ25lZCBpbnQgZGlm
ZiA9IGVuZCAtIHN0YXJ0OwotICAgIGlmIChkaWZmIDwgdmFsdWVBc1FTdHJpbmcubGVuZ3RoKCkp
IHsKLSAgICAgICAgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfUFhdKSkK
LSAgICAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RIVFlQRV9QWDsKLSAgICAgICAgZWxz
ZSBpZiAocy5lbmRzV2l0aChVbml0VGV4dFtTVkdfTEVOR1RIVFlQRV9DTV0pKQotICAgICAgICAg
ICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX0NNOwotICAgICAgICBlbHNlIGlmIChzLmVu
ZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX1BDXSkpCi0gICAgICAgICAgICBtX3VuaXRU
eXBlID0gU1ZHX0xFTkdUSFRZUEVfUEM7Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5p
dFRleHRbU1ZHX0xFTkdUSFRZUEVfTU1dKSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdf
TEVOR1RIVFlQRV9NTTsKLSAgICAgICAgZWxzZSBpZiAocy5lbmRzV2l0aChVbml0VGV4dFtTVkdf
TEVOR1RIVFlQRV9JTl0pKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBF
X0lOOwotICAgICAgICBlbHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBF
X1BUXSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfUFQ7Ci0gICAg
ICAgICBlbHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX1BFUkNFTlRB
R0VdKSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdF
OwotICAgICAgICBlbHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX0VN
U10pKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX0VNUzsKLSAgICAg
ICAgZWxzZSBpZiAocy5lbmRzV2l0aChVbml0VGV4dFtTVkdfTEVOR1RIVFlQRV9FWFNdKSkKLSAg
ICAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RIVFlQRV9FWFM7Ci0gICAgICAgIGVsc2Ug
aWYgKHMuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBF
X05VTUJFUjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5H
VEhUWVBFX1VOS05PV047Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgbV91bml0VHlwZSA9IFNW
R19MRU5HVEhUWVBFX1BYOwotCi0gICAgdXBkYXRlVmFsdWUoKTsKIH0KIAogU3RyaW5nIFNWR0xl
bmd0aDo6dmFsdWVBc1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIFVuaXRUZXh0W21fdW5pdFR5cGVdOworICAgIHJl
dHVybiBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyBsZW5ndGhUeXBl
VG9TdHJpbmcoZXh0cmFjdFR5cGUobV91bml0KSk7Cit9CisKK3ZvaWQgU1ZHTGVuZ3RoOjpuZXdW
YWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHR5cGUsIGZsb2F0IHZhbHVlKQorewor
ICAgIEFTU0VSVCh0eXBlIDw9IExlbmd0aFR5cGVQQyk7CisKKyAgICBtX3VuaXQgPSBzdG9yZVVu
aXQoZXh0cmFjdE1vZGUobV91bml0KSwgKFNWR0xlbmd0aFR5cGUpIHR5cGUpOworICAgIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWU7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjpuZXdWYWx1
ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBmbG9hdCB2YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMpCit2b2lkIFNWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHModW5z
aWduZWQgc2hvcnQgdHlwZSkKIHsKLSAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVl
SW5TcGVjaWZpZWRVbml0czsKLSAgICBtX3VuaXRUeXBlID0gKFNWR0xlbmd0aFR5cGUpdW5pdFR5
cGU7Ci0gICAgdXBkYXRlVmFsdWUoKTsKKyAgICBBU1NFUlQodHlwZSA8PSBMZW5ndGhUeXBlUEMp
OworCisgICAgZmxvYXQgdmFsdWVJblVzZXJVbml0cyA9IHZhbHVlKCk7CisgICAgbV91bml0ID0g
c3RvcmVVbml0KGV4dHJhY3RNb2RlKG1fdW5pdCksIChTVkdMZW5ndGhUeXBlKSB0eXBlKTsKKyAg
ICBzZXRWYWx1ZSh2YWx1ZUluVXNlclVuaXRzKTsKIH0KIAotdm9pZCBTVkdMZW5ndGg6OmNvbnZl
cnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKQorYm9vbCBTVkdMZW5n
dGg6OmlzRnJhY3Rpb24oY29uc3QgU1ZHTGVuZ3RoJiBsZW5ndGgpCiB7Ci0gICAgbV91bml0VHlw
ZSA9IChTVkdMZW5ndGhUeXBlKXVuaXRUeXBlOwotICAgIHVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRV
bml0cygpOworICAgIHJldHVybiAobGVuZ3RoLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZU51bWJl
ciAmJiBsZW5ndGgudmFsdWUoKSA+PSAwICYmIGxlbmd0aC52YWx1ZSgpIDw9IDEpOwogfQogCiBk
b3VibGUgU1ZHTGVuZ3RoOjpkcGkoKSBjb25zdAogewogICAgIC8qIEZJWE1FOiBEUEkgZGV0ZWN0
aW9uCiAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+b3duZXJEb2MoKSkgewotICAgICAgICBp
ZiAobW9kZSA9PSBMTV9XSURUSCkKKyAgICAgICAgaWYgKG1vZGUgPT0gTGVuZ3RoTW9kZVdpZHRo
KQogICAgICAgICAgICAgcmV0dXJuIDI1LjQgKiBjb250ZXh0LT5vd25lckRvYygpLT5zY3JlZW5Q
aXhlbHNQZXJNaWxsaW1ldGVyWCgpOwotICAgICAgICBlbHNlIGlmIChtb2RlID09IExNX0hFSUdI
VCkKKyAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBMZW5ndGhNb2RlSGVpZ2h0KQogICAgICAgICAg
ICAgcmV0dXJuIDI1LjQgKiBjb250ZXh0LT5vd25lckRvYygpLT5zY3JlZW5QaXhlbHNQZXJNaWxs
aW1ldGVyWSgpOwotICAgICAgICBlbHNlIGlmIChtb2RlID09IExNX09USEVSKQorICAgICAgICBl
bHNlIGlmIChtb2RlID09IExlbmd0aE1vZGVPdGhlcikKICAgICAgICAgICAgIHJldHVybiAyNS40
ICogY29udGV4dC0+b3duZXJEb2MoKS0+c2NyZWVuUGl4ZWxzUGVyTWlsbGltZXRlclgoKTsKICAg
ICB9CiAgICAgKi8KQEAgLTE3OSwxMjYgKzI5MCw4IEBAIGRvdWJsZSBTVkdMZW5ndGg6OmRwaSgp
IGNvbnN0CiAgICAgcmV0dXJuIDkwLjA7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjp1cGRhdGVWYWx1
ZShib29sIG5vdGlmeSkKLXsKLSAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBTVkdfTEVOR1RIVFlQRV9QWDoKLSAgICAgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0czsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhU
WVBFX0NNOgotICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAv
IDIuNTQpICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVO
R1RIVFlQRV9NTToKLSAgICAgICAgICAgIG1fdmFsdWUgPSAobV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMgLyAyNS40KSAqIGRwaSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZH
X0xFTkdUSFRZUEVfSU46Ci0gICAgICAgICAgICBtX3ZhbHVlID0gbV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMgKiBkcGkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5H
VEhUWVBFX1BUOgotICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
cyAvIDcyLjApICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdf
TEVOR1RIVFlQRV9QQzoKLSAgICAgICAgICAgIG1fdmFsdWUgPSAobV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMgLyA2LjApICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdfTEVOR1RIVFlQRV9FTVM6Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfRVhTOiB7Ci0g
ICAgICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSAwOwotICAgICAgICAgICAgaWYgKG1fY29u
dGV4dCAmJiBtX2NvbnRleHQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgc3R5bGUgPSBt
X2NvbnRleHQtPnJlbmRlcmVyKCktPnN0eWxlKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX3Zp
ZXdwb3J0RWxlbWVudCAmJiBtX3ZpZXdwb3J0RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAg
ICAgICAgICBzdHlsZSA9IG1fdmlld3BvcnRFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpOwot
ICAgICAgICAgICAgaWYgKHN0eWxlKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgdXNlU2l6ZSA9
IHN0eWxlLT5mb250U2l6ZSgpOwotICAgICAgICAgICAgICAgIEFTU0VSVCh1c2VTaXplID4gMCk7
Ci0gICAgICAgICAgICAgICAgaWYgKG1fdW5pdFR5cGUgPT0gU1ZHX0xFTkdUSFRZUEVfRU1TKQot
ICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlID0gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgKiB1
c2VTaXplOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmbG9h
dCB4SGVpZ2h0ID0gc3R5bGUtPmZvbnQoKS54SGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFVzZSBvZiBjZWlsIGFsbG93cyBhIHBpeGVsIG1hdGNoIHRvIHRoZSBXM0NzIGV4cGVjdGVk
IG91dHB1dCBvZiBjb29yZHMtdW5pdHMtMDMtYi5zdmcKLSAgICAgICAgICAgICAgICAgICAgLy8g
aWYgdGhpcyBjYXVzZXMgcHJvYmxlbXMgaW4gcmVhbCB3b3JsZCBjYXNlcyBtYXliZSBpdCB3b3Vs
ZCBiZSBiZXN0IHRvIHJlbW92ZSB0aGlzCi0gICAgICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAqIGNlaWwoeEhlaWdodCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIG1fcmVxdWlyZXNMYXlvdXQgPSBmYWxzZTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9yZXF1aXJlc0xheW91dCA9IHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNW
R19MRU5HVEhUWVBFX1VOS05PV046Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfTlVNQkVS
OgotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0U6Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgaWYgKG5vdGlmeSAmJiBtX2NvbnRleHQpCi0gICAgICAgIG1fY29u
dGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7Ci19Ci0KLWJvb2wgU1ZHTGVuZ3RoOjp1cGRh
dGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMoYm9vbCBub3RpZnkpCi17Ci0gICAgaWYgKG1fdW5pdFR5
cGUgPT0gU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgc3dpdGNoIChtX3VuaXRUeXBlKSB7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfUEVS
Q0VOVEFHRToKLSAgICAgICAgICAgIC8va2RFcnJvcigpIDw8ICJ1cGRhdGVWYWx1ZUluU3BlY2lm
aWVkVW5pdHMoKSBTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIC0gVU5TVVBQT1JURUQhIFBsZWFz
ZSByZXBvcnQhIiA8PCBlbmRsOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBj
YXNlIFNWR19MRU5HVEhUWVBFX0VNUzoKLSAgICAgICAgICAgIC8va2RFcnJvcigpIDw8ICJ1cGRh
dGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBTVkdfTEVOR1RIVFlQRV9FTVMgLSBVTlNVUFBPUlRF
RCEgUGxlYXNlIHJlcG9ydCEiIDw8IGVuZGw7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfRVhTOgotICAgICAgICAgICAgLy9rZEVycm9yKCkg
PDwgInVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRVbml0cygpIFNWR19MRU5HVEhUWVBFX0VYUyAtIFVO
U1VQUE9SVEVEISBQbGVhc2UgcmVwb3J0ISIgPDwgZW5kbDsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9QWDoKLSAgICAgICAgICAgIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzID0gbV92YWx1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFNWR19MRU5HVEhUWVBFX0NNOgotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMgPSBtX3ZhbHVlIC8gZHBpKCkgKiAyLjU0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfTU06Ci0gICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZp
ZWRVbml0cyA9IG1fdmFsdWUgLyBkcGkoKSAqIDI1LjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9JTjoKLSAgICAgICAgICAgIG1fdmFsdWVJblNwZWNp
ZmllZFVuaXRzID0gbV92YWx1ZSAvIGRwaSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU1ZHX0xFTkdUSFRZUEVfUFQ6Ci0gICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRV
bml0cyA9IG1fdmFsdWUgLyBkcGkoKSAqIDcyLjA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9QQzoKLSAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzID0gbV92YWx1ZSAvIGRwaSgpICogNi4wOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTjoKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RI
VFlQRV9OVU1CRVI6Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9OwotICAgIAotICAgIGlmIChu
b3RpZnkgJiYgbV9jb250ZXh0KQotICAgICAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNo
YW5nZSgpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgU1ZHTGVuZ3RoOjpiYm94UmVs
YXRpdmUoKSBjb25zdAotewotICAgIHJldHVybiBtX2Jib3hSZWxhdGl2ZTsKLX0KLQotdm9pZCBT
VkdMZW5ndGg6OnNldEJib3hSZWxhdGl2ZShib29sIHJlbGF0aXZlKQotewotICAgIG1fYmJveFJl
bGF0aXZlID0gcmVsYXRpdmU7Ci19Ci0KLWNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIFNWR0xlbmd0
aDo6Y29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29udGV4dDsKIH0KIAotdm9pZCBT
VkdMZW5ndGg6OnNldENvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCkKLXsK
LSAgICBtX2NvbnRleHQgPSBjb250ZXh0OwotfQotCi19Ci0KLS8vIHZpbTp0cz00Om5vZXQKICNl
bmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdMZW5ndGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdM
ZW5ndGguaAkocmV2aXNpb24gMTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGgu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApA
QCAtMjAsODEgKzIwLDg2IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwog
Ci0jaWZuZGVmIEtTVkdfU1ZHTGVuZ3RoSW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHTGVuZ3RoSW1w
bF9ICisjaWZuZGVmIFNWR0xlbmd0aF9ICisjZGVmaW5lIFNWR0xlbmd0aF9ICisKICNpZmRlZiBT
VkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTVkdI
ZWxwZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgUmVuZGVyUGF0aDsK
LSAgICBjbGFzcyBTVkdFbGVtZW50OwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKLSAg
ICBjbGFzcyBTVkdMZW5ndGggOiBwdWJsaWMgU2hhcmVkPFNWR0xlbmd0aD4geworICAgIGVudW0g
U1ZHTGVuZ3RoVHlwZSB7CisgICAgICAgIExlbmd0aFR5cGVVbmtub3duID0gMCwKKyAgICAgICAg
TGVuZ3RoVHlwZU51bWJlciwKKyAgICAgICAgTGVuZ3RoVHlwZVBlcmNlbnRhZ2UsCisgICAgICAg
IExlbmd0aFR5cGVFTVMsCisgICAgICAgIExlbmd0aFR5cGVFWFMsCisgICAgICAgIExlbmd0aFR5
cGVQWCwKKyAgICAgICAgTGVuZ3RoVHlwZUNNLAorICAgICAgICBMZW5ndGhUeXBlTU0sCisgICAg
ICAgIExlbmd0aFR5cGVJTiwKKyAgICAgICAgTGVuZ3RoVHlwZVBULAorICAgICAgICBMZW5ndGhU
eXBlUEMKKyAgICB9OworCisgICAgZW51bSBTVkdMZW5ndGhNb2RlIHsKKyAgICAgICAgTGVuZ3Ro
TW9kZVdpZHRoID0gMCwKKyAgICAgICAgTGVuZ3RoTW9kZUhlaWdodCwKKyAgICAgICAgTGVuZ3Ro
TW9kZU90aGVyCisgICAgfTsKKworICAgIGNsYXNzIFNWR0xlbmd0aCB7CiAgICAgcHVibGljOgot
ICAgICAgICBTVkdMZW5ndGgoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCwgTGVuZ3Ro
TW9kZSBtb2RlID0gTE1fVU5LTk9XTiwgY29uc3QgU1ZHRWxlbWVudCogdmlld3BvcnQgPSAwKTsK
LSAgICAgICAgdmlydHVhbCB+U1ZHTGVuZ3RoKCk7Ci0gICAgICAgIAotICAgICAgICBlbnVtIFNW
R0xlbmd0aFR5cGUgewotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTiAgICAgICAg
ICA9IDAsCi0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9OVU1CRVIgICAgICAgICAgID0gMSwK
LSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgICAgICAgPSAyLAotICAgICAg
ICAgICAgU1ZHX0xFTkdUSFRZUEVfRU1TICAgICAgICAgICAgICA9IDMsCi0gICAgICAgICAgICBT
VkdfTEVOR1RIVFlQRV9FWFMgICAgICAgICAgICAgID0gNCwKLSAgICAgICAgICAgIFNWR19MRU5H
VEhUWVBFX1BYICAgICAgICAgICAgICAgPSA1LAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVf
Q00gICAgICAgICAgICAgICA9IDYsCi0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9NTSAgICAg
ICAgICAgICAgID0gNywKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX0lOICAgICAgICAgICAg
ICAgPSA4LAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUFQgICAgICAgICAgICAgICA9IDks
Ci0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9QQyAgICAgICAgICAgICAgID0gMTAKKyAgICAg
ICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNlIGVudW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVt
ZSwgZm9yIElETCBnZW5lcmF0aW9uCisgICAgICAgIGVudW0geworICAgICAgICAgICAgU1ZHX0xF
TkdUSFRZUEVfVU5LTk9XTiA9IDAsCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9OVU1CRVIs
CisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFLAorICAgICAgICAgICAgU1ZH
X0xFTkdUSFRZUEVfRU1TLAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfRVhTLAorICAgICAg
ICAgICAgU1ZHX0xFTkdUSFRZUEVfUFgsCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9DTSwK
KyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX01NLAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZ
UEVfSU4sCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9QVCwKKyAgICAgICAgICAgIFNWR19M
RU5HVEhUWVBFX1BDCiAgICAgICAgIH07CiAKKyAgICAgICAgU1ZHTGVuZ3RoKGNvbnN0IFNWR1N0
eWxlZEVsZW1lbnQqIGNvbnRleHQgPSAwLCBTVkdMZW5ndGhNb2RlIG1vZGUgPSBMZW5ndGhNb2Rl
T3RoZXIsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZyA9IFN0cmluZygpKTsKKwogICAgICAg
ICAvLyAnU1ZHTGVuZ3RoJyBmdW5jdGlvbnMKICAgICAgICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlw
ZSgpIGNvbnN0OwogCiAgICAgICAgIGZsb2F0IHZhbHVlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQg
c2V0VmFsdWUoZmxvYXQgdmFsdWUpOworICAgICAgICB2b2lkIHNldFZhbHVlKGZsb2F0KTsKIAog
ICAgICAgICBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBjb25zdDsKLSAgICAgICAgdm9p
ZCBzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMoZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsK
KyAgICAgICAgdm9pZCBzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMoZmxvYXQpOwogCiAgICAgICAg
IFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VmFsdWVBc1N0
cmluZyhjb25zdCBTdHJpbmcmKTsKIAotICAgICAgICB2b2lkIG5ld1ZhbHVlU3BlY2lmaWVkVW5p
dHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7
Ci0gICAgICAgIHZvaWQgY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5p
dFR5cGUpOwotCi0gICAgICAgIC8vIEhlbHBlcnMKLSAgICAgICAgYm9vbCBiYm94UmVsYXRpdmUo
KSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRCYm94UmVsYXRpdmUoYm9vbCk7CisgICAgICAgIHZv
aWQgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCwgZmxvYXQgdmFsdWVJblNw
ZWNpZmllZFVuaXRzKTsKKyAgICAgICAgdm9pZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNp
Z25lZCBzaG9ydCk7CiAKLSAgICAgICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCgp
IGNvbnN0OwotICAgICAgICB2b2lkIHNldENvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCog
Y29udGV4dCk7CisgICAgICAgIC8vIEhlbHBlciBmdW5jdGlvbnMKKyAgICAgICAgc3RhdGljIGJv
b2wgaXNGcmFjdGlvbihjb25zdCBTVkdMZW5ndGgmKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IGJvb2wgdXBkYXRlVmFsdWVJblNwZWNpZmllZFVuaXRzKGJvb2wgbm90aWZ5ID0gdHJ1ZSk7Ci0g
ICAgICAgIHZvaWQgdXBkYXRlVmFsdWUoYm9vbCBub3RpZnkgPSB0cnVlKTsKLQogICAgICAgICBk
b3VibGUgZHBpKCkgY29uc3Q7CiAKLSAgICAgICAgZmxvYXQgbV92YWx1ZTsKICAgICAgICAgZmxv
YXQgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7Ci0KLSAgICAgICAgTGVuZ3RoTW9kZSBtX21vZGUg
OiAyOwotICAgICAgICBib29sIG1fYmJveFJlbGF0aXZlIDogMTsKLSAgICAgICAgU1ZHTGVuZ3Ro
VHlwZSBtX3VuaXRUeXBlIDogNDsKLSAgICAgICAgYm9vbCBtX3JlcXVpcmVzTGF5b3V0IDogMTsK
KyAgICAgICAgdW5zaWduZWQgaW50IG1fdW5pdDsKIAogICAgICAgICBjb25zdCBTVkdTdHlsZWRF
bGVtZW50KiBtX2NvbnRleHQ7Ci0gICAgICAgIGNvbnN0IFNWR0VsZW1lbnQqIG1fdmlld3BvcnRF
bGVtZW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCi0jZW5kaWYgLy8gS1NWR19TVkdMZW5ndGhJbXBsX0gKKyNlbmRpZiAvLyBTVkdM
ZW5ndGhfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdM
ZW5ndGguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aC5pZGwJ
KHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiBtb2R1bGUgc3ZnIHsKIAotICAgIGludGVy
ZmFjZSBbQ29uZGl0aW9uYWw9U1ZHLCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBTVkdMZW5ndGggeyAK
KyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRywgR2VuZXJhdGVDb25zdHJ1Y3RvciwgUE9E
VHlwZT1TVkdMZW5ndGhdIFNWR0xlbmd0aCB7IAogICAgICAgICAvLyBMZW5ndGggVW5pdCBUeXBl
cwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTEVOR1RIVFlQRV9VTktOT1dOICAg
ID0gMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0xFTkdUSFRZUEVfTlVNQkVS
ICAgICA9IDE7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAkocmV2aXNpb24g
MTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdMZW5ndGhM
aXN0OjpTVkdMZW5ndGhMaXN0KCkKLSAgICA6IFNWR0xpc3Q8UmVmUHRyPFNWR0xlbmd0aD4gPigp
CisgICAgOiBTVkdMaXN0PFNWR0xlbmd0aD4oKQogewogfQogCkBAIC0zNywxNyArMzcsMTQgQEAg
U1ZHTGVuZ3RoTGlzdDo6flNWR0xlbmd0aExpc3QoKQogewogfQogCi12b2lkIFNWR0xlbmd0aExp
c3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNv
bnRleHQsIExlbmd0aE1vZGUgbW9kZSkKK3ZvaWQgU1ZHTGVuZ3RoTGlzdDo6cGFyc2UoY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCwgU1ZHTGVuZ3Ro
TW9kZSBtb2RlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCiAgICAgVmVjdG9yPFN0
cmluZz4gbGVuZ3RocyA9IHZhbHVlLnNwbGl0KCcgJyk7CiAgICAgVmVjdG9yPFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGxlbmd0aHMuZW5kKCk7Ci0gICAgZm9yIChWZWN0b3I8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsZW5ndGhzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBTVkdMZW5ndGgqIGxlbmd0aCA9IG5ldyBTVkdMZW5ndGgoY29udGV4dCwgbW9k
ZSk7Ci0gICAgICAgIGxlbmd0aC0+c2V0VmFsdWVBc1N0cmluZygqaXQpOwotICAgICAgICBhcHBl
bmRJdGVtKGxlbmd0aCwgZWMpOwotICAgIH0KKyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IGxlbmd0aHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAg
ICBhcHBlbmRJdGVtKFNWR0xlbmd0aChjb250ZXh0LCBtb2RlLCAqaXQpLCBlYyk7CiB9CiAKIH0K
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmgJKHJldmlzaW9uIDE4MjIxKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyAr
MzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAgICBjbGFzcyBTVkdMZW5ndGhMaXN0
IDogcHVibGljIFNWR0xpc3Q8UmVmUHRyPFNWR0xlbmd0aD4gPgorICAgIGNsYXNzIFNWR0xlbmd0
aExpc3QgOiBwdWJsaWMgU1ZHTGlzdDxTVkdMZW5ndGg+CiAgICAgewogICAgIHB1YmxpYzoKICAg
ICAgICAgU1ZHTGVuZ3RoTGlzdCgpOwogICAgICAgICB2aXJ0dWFsIH5TVkdMZW5ndGhMaXN0KCk7
CiAKLSAgICAgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTVkdTdHls
ZWRFbGVtZW50KiBjb250ZXh0LCBMZW5ndGhNb2RlIG1vZGUpOworICAgICAgICB2b2lkIHBhcnNl
KGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQsIFNW
R0xlbmd0aE1vZGUgbW9kZSk7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyMjEpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1l
cm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAg
ICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHTGlu
ZUVsZW1lbnQuaCIKIApAQCAtMzYsMTAgKzM3LDEwIEBAIFNWR0xpbmVFbGVtZW50OjpTVkdMaW5l
RWxlbWVudChjb25zdCBRdWEKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgp
CiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1feDEobmV3IFNW
R0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95MShu
ZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwg
bV94MihuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0g
ICAgLCBtX3kyKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQo
KSkpCisgICAgLCBtX3gxKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feTEodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1feDIodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAg
ICwgbV95Mih0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewogfQogCkBAIC00Nyw2NiArNDgsNDIg
QEAgU1ZHTGluZUVsZW1lbnQ6On5TVkdMaW5lRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgWDEsIHgxLCBTVkdOYW1lczo6eDFBdHRyLmxvY2FsTmFtZSgpLCBtX3gxLmdldCgpKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCos
IExlbmd0aCwgbGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5MUF0dHIubG9jYWxOYW1lKCksIG1f
eTEuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2Nh
bE5hbWUoKSwgbV94Mi5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xp
bmVFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWTIsIHkyLCBTVkdOYW1lczo6
eTJBdHRyLmxvY2FsTmFtZSgpLCBtX3kyLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgxLCB4MSwg
U1ZHTmFtZXM6OngxQXR0ci5sb2NhbE5hbWUoKSwgbV94MSkKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZMSwg
eTEsIFNWR05hbWVzOjp5MUF0dHIubG9jYWxOYW1lKCksIG1feTEpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
WDIsIHgyLCBTVkdOYW1lczo6eDJBdHRyLmxvY2FsTmFtZSgpLCBtX3gyKQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIFkyLCB5MiwgU1ZHTmFtZXM6OnkyQXR0ci5sb2NhbE5hbWUoKSwgbV95MikKIAogdm9pZCBT
VkdMaW5lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngxQXR0cikKLSAgICAgICAgeDFCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFgxQmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MUF0dHIpCi0gICAgICAgIHkxQmFzZVZhbHVlKCktPnNl
dFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZMUJhc2VWYWx1ZShTVkdMZW5ndGgo
dGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OngyQXR0cikKLSAgICAgICAgeDJCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFgyQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp5MkF0dHIpCi0gICAgICAgIHkyQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgICAgICBzZXRZMkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlCiAgICAgewotICAgICAgICBpZiAoU1ZHVGVzdHM6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47Ci0gICAgICAgIGlmIChTVkdMYW5n
U3BhY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47Ci0gICAgICAgIGlmIChT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkg
cmV0dXJuOworICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAgICAgfQogfQogCiBQYXRoIFNWR0xpbmVF
bGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QKIHsKLSAgICBmbG9hdCBfeDEgPSB4MSgpLT52YWx1
ZSgpLCBfeTEgPSB5MSgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF94MiA9IHgyKCktPnZhbHVlKCks
IF95MiA9IHkyKCktPnZhbHVlKCk7Ci0KLSAgICByZXR1cm4gUGF0aDo6Y3JlYXRlTGluZShGbG9h
dFBvaW50KF94MSwgX3kxKSwgRmxvYXRQb2ludChfeDIsIF95MikpOwotfQotCi1jb25zdCBTVkdT
dHlsZWRFbGVtZW50KiBTVkdMaW5lRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3Qg
U1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCkKLXsKLSAgICAvLyBBbGwgYXR0cmlidXRlJ3MgY29u
dGV4dHMgYXJlIGVxdWFsIChzbyBqdXN0IHRha2UgdGhlIG9uZSBmcm9tICd4MScpLgotICAgIGNv
bnN0IFNWR1N0eWxlZEVsZW1lbnQqIHJlc3RvcmUgPSB4MSgpLT5jb250ZXh0KCk7Ci0KLSAgICB4
MSgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHkxKCktPnNldENvbnRleHQoY29udGV4dCk7
Ci0gICAgeDIoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICB5MigpLT5zZXRDb250ZXh0KGNv
bnRleHQpOwotICAgIAotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0
KGNvbnRleHQpOwotICAgIHJldHVybiByZXN0b3JlOwotfQotCi1ib29sIFNWR0xpbmVFbGVtZW50
OjpoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3QKLXsKLSAgICBpZiAoeDEoKS0+dW5pdFR5cGUo
KSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgeTEo
KS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwK
LSAgICAgICAgeDIoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BF
UkNFTlRBR0UgfHwKLSAgICAgICAgeTIoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19M
RU5HVEhUWVBFX1BFUkNFTlRBR0UpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBQYXRoOjpjcmVhdGVMaW5lKEZsb2F0UG9pbnQoeDEoKS52YWx1
ZSgpLCB5MSgpLnZhbHVlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UG9p
bnQoeDIoKS52YWx1ZSgpLCB5MigpLnZhbHVlKCkpKTsKIH0KIAogfQogCi0vLyB2aW06dHM9NDpu
b2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCShyZXZpc2lvbiAxODIyMSkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRm
b3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTEx
LTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdMaW5lRWxlbWVudEltcGxfSAotI2Rl
ZmluZSBLU1ZHX1NWR0xpbmVFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0xpbmVFbGVtZW50X0gK
KyNkZWZpbmUgU1ZHTGluZUVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1
ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTQ5LDIwICs1MCwxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChS
ZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29uc3Q7CiAK
LSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBwdXNoQXR0cmlidXRlQ29u
dGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KTsKLQogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRoaXM7IH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVyY2VudGFnZVZh
bHVlcygpIGNvbnN0OwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
Rk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwg
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAK
LSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVFbGVtZW50LCBT
VkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWDEsIHgxKQotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxT
VkdMZW5ndGg+LCBZMSwgeTEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgyLCB4MikK
LSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVFbGVtZW50LCBT
VkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWTIsIHkyKQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3Ro
LCBYMSwgeDEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5l
RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFkxLCB5MSkKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0
aCwgWDIsIHgyKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGlu
ZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZMiwgeTIpCiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODIyMSkKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlr
b2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTM3LDM1ICszNywzNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6U1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBT
VkdHcmFkaWVudEVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgbV94MShuZXcgU1ZHTGVuZ3Ro
KHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kxKG5ldyBTVkdM
ZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3gyKG5l
dyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1f
eTIobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAg
ICAsIG1feDEodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95MSh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0KQorICAgICwgbV94Mih0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3ky
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7Ci0gICAgLy8gU3BlYyA6IElmIHRoZSBhdHRyaWJ1
dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMDAl
IiB3ZXJlIHNwZWNpZmllZC4KLSAgICBtX3gyLT5zZXRWYWx1ZUFzU3RyaW5nKCIxMDAlIik7Cisg
ICAgLy8gU3BlYzogSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0
IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgorICAgIHNldFgyQmFz
ZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikpOwogfQogCiBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6On5TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQoKQogewog
fQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYMSwgeDEsIFNWR05hbWVzOjp4MUF0dHIu
bG9jYWxOYW1lKCksIG1feDEuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZMSwg
eTEsIFNWR05hbWVzOjp5MUF0dHIubG9jYWxOYW1lKCksIG1feTEuZ2V0KCkpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCos
IExlbmd0aCwgbGVuZ3RoLCBYMiwgeDIsIFNWR05hbWVzOjp4MkF0dHIubG9jYWxOYW1lKCksIG1f
eDIuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZMiwgeTIsIFNWR05hbWVzOjp5
MkF0dHIubG9jYWxOYW1lKCksIG1feTIuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFgxLCB4MSwgU1ZHTmFtZXM6OngxQXR0ci5sb2NhbE5hbWUoKSwgbV94MSkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgWTEsIHkxLCBTVkdOYW1lczo6eTFBdHRyLmxvY2FsTmFtZSgpLCBtX3kx
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYMiwgeDIsIFNWR05hbWVzOjp4MkF0dHIubG9j
YWxOYW1lKCksIG1feDIpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFkyLCB5MiwgU1ZHTmFt
ZXM6OnkyQXR0ci5sb2NhbE5hbWUoKSwgbV95MikKIAogdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp4MUF0dHIpCi0gICAgICAgIHgxQmFzZVZhbHVlKCktPnNl
dFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYMUJhc2VWYWx1ZShTVkdMZW5ndGgo
dGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6eTFBdHRyKQotICAgICAgICB5MUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFz
U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WTFCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp4MkF0dHIpCi0gICAgICAgIHgyQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgICAgICBzZXRYMkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
eTJBdHRyKQotICAgICAgICB5MkJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsK
KyAgICAgICAgc2V0WTJCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQs
IHZhbHVlKSk7CiAgICAgZWxzZQogICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtNzUsMTUgKzc1LDMyIEBAIHZvaWQgU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWQKICAgICByZWJ1aWxkU3RvcHMoKTsgLy8gcmVidWls
ZCBzdG9wcyBiZWZvcmUgcG9zc2libHkgaW1wb3J0aW5nIHRoZW0gZnJvbSBhbnkgcmVmZXJlbmNl
ZCBncmFkaWVudC4KIAogICAgIGJvb2wgYmJveCA9IChncmFkaWVudFVuaXRzKCkgPT0gU1ZHVW5p
dFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKTsKLSAgICAKLSAgICB4MSgp
LT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgeTEoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gp
OwotICAgIHgyKCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICB5MigpLT5zZXRCYm94UmVs
YXRpdmUoYmJveCk7Ci0gICAgCi0gICAgZmxvYXQgX3gxID0geDEoKS0+dmFsdWUoKSwgX3kxID0g
eTEoKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfeDIgPSB4MigpLT52YWx1ZSgpLCBfeTIgPSB5Migp
LT52YWx1ZSgpOwogCisgICAgZmxvYXQgX3gxLCBfeTEsIF94MiwgX3kyOworCisgICAgaWYgKGJi
b3gpIHsKKyAgICAgICAgX3gxID0geDEoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAg
ICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbih4MSgpKSkKKyAgICAgICAgICAgIF94MSAqPSAx
MDAuMDsKKworICAgICAgICBfeTEgPSB5MSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAg
ICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHkxKCkpKQorICAgICAgICAgICAgX3kxICo9
IDEwMC4wOworCisgICAgICAgIF94MiA9IHgyKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7Cisg
ICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeDIoKSkpCisgICAgICAgICAgICBfeDIg
Kj0gMTAwLjA7CisKKyAgICAgICAgX3kyID0geTIoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsK
KyAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbih5MigpKSkKKyAgICAgICAgICAgIF95
MiAqPSAxMDAuMDsKKyAgICB9IGVsc2UgeworICAgICAgICBfeDEgPSB4MSgpLnZhbHVlKCk7Cisg
ICAgICAgIF95MSA9IHkxKCkudmFsdWUoKTsKKyAgICAgICAgX3gyID0geDIoKS52YWx1ZSgpOwor
ICAgICAgICBfeTIgPSB5MigpLnZhbHVlKCk7CisgICAgfSAKKyAKICAgICBSZWZQdHI8U1ZHUGFp
bnRTZXJ2ZXJMaW5lYXJHcmFkaWVudD4gZ3JhZCA9IFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDxT
VkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50PihfZ3JhZCk7CiAgICAgQWZmaW5lVHJhbnNmb3Jt
IG1hdDsKICAgICBpZiAoZ3JhZGllbnRUcmFuc2Zvcm0oKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkK
QEAgLTkxLDQwICsxMDgsMjcgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmJ1aWxk
R3JhZAogCiAgICAgRGVwcmVjYXRlZFN0cmluZyByZWYgPSBocmVmKCkuZGVwcmVjYXRlZFN0cmlu
ZygpOwogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlcj4gcHNlcnZlciA9IGdldFBhaW50U2VydmVy
QnlJZChkb2N1bWVudCgpLCByZWYubWlkKDEpKTsKLSAgICAKKwogICAgIGlmIChwc2VydmVyICYm
IChwc2VydmVyLT50eXBlKCkgPT0gUmFkaWFsR3JhZGllbnRQYWludFNlcnZlciB8fCBwc2VydmVy
LT50eXBlKCkgPT0gTGluZWFyR3JhZGllbnRQYWludFNlcnZlcikpIHsKICAgICAgICAgYm9vbCBp
c0xpbmVhciA9IHBzZXJ2ZXItPnR5cGUoKSA9PSBMaW5lYXJHcmFkaWVudFBhaW50U2VydmVyOwog
ICAgICAgICBTVkdQYWludFNlcnZlckdyYWRpZW50KiBncmFkaWVudCA9IHN0YXRpY19jYXN0PFNW
R1BhaW50U2VydmVyR3JhZGllbnQqPihwc2VydmVyLmdldCgpKTsKIAogICAgICAgICBpZiAoIWhh
c0F0dHJpYnV0ZShTVkdOYW1lczo6Z3JhZGllbnRVbml0c0F0dHIpKQogICAgICAgICAgICAgYmJv
eCA9IGdyYWRpZW50LT5ib3VuZGluZ0JveE1vZGUoKTsKLSAgICAgICAgICAgIAorCiAgICAgICAg
IGlmIChpc0xpbmVhcikgewogICAgICAgICAgICAgU1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVu
dCogbGluZWFyID0gc3RhdGljX2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudCo+KHBz
ZXJ2ZXIuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6Ongx
QXR0cikpCiAgICAgICAgICAgICAgICAgX3gxID0gbGluZWFyLT5ncmFkaWVudFN0YXJ0KCkueCgp
OwotICAgICAgICAgICAgZWxzZSBpZiAoYmJveCkKLSAgICAgICAgICAgICAgICBfeDEgKj0gMTAw
LjsKIAogICAgICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnkxQXR0cikpCiAg
ICAgICAgICAgICAgICAgX3kxID0gbGluZWFyLT5ncmFkaWVudFN0YXJ0KCkueSgpOwotICAgICAg
ICAgICAgZWxzZSBpZiAoYmJveCkKLSAgICAgICAgICAgICAgICBfeTEgKj0gMTAwLjsKIAogICAg
ICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OngyQXR0cikpCiAgICAgICAgICAg
ICAgICAgX3gyID0gbGluZWFyLT5ncmFkaWVudEVuZCgpLngoKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGJib3gpCi0gICAgICAgICAgICAgICAgX3gyICo9IDEwMC47CiAKICAgICAgICAgICAgIGlm
ICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjp5MkF0dHIpKQogICAgICAgICAgICAgICAgIF95MiA9
IGxpbmVhci0+Z3JhZGllbnRFbmQoKS55KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQot
ICAgICAgICAgICAgICAgIF95MiAqPSAxMDAuOwotICAgICAgICB9IGVsc2UgaWYgKGJib3gpIHsK
LSAgICAgICAgICAgIF94MSAqPSAxMDAuMDsKLSAgICAgICAgICAgIF95MSAqPSAxMDAuMDsKLSAg
ICAgICAgICAgIF94MiAqPSAxMDAuMDsKLSAgICAgICAgICAgIF95MiAqPSAxMDAuMDsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFRyYW5z
Zm9ybUF0dHIpKQpAQCAtMTQzLDEzICsxNDcsNiBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6YnVpbGRHcmFkCiAgICAgICAgICAgICBncmFkLT5zZXRHcmFkaWVudFNwcmVhZE1ldGhv
ZChTUFJFQURNRVRIT0RfUkVQRUFUKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ3JhZC0+
c2V0R3JhZGllbnRTcHJlYWRNZXRob2QoU1BSRUFETUVUSE9EX1BBRCk7Ci0KLSAgICAgICAgaWYg
KGJib3gpIHsKLSAgICAgICAgICAgIF94MSAqPSAxMDAuMDsKLSAgICAgICAgICAgIF95MSAqPSAx
MDAuMDsKLSAgICAgICAgICAgIF94MiAqPSAxMDAuMDsKLSAgICAgICAgICAgIF95MiAqPSAxMDAu
MDsKLSAgICAgICAgfQogICAgIH0KIAogICAgIGdyYWQtPnNldEdyYWRpZW50VHJhbnNmb3JtKG1h
dCk7CkBAIC0xNjAsNiArMTU3LDYgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmJ1
aWxkR3JhZAogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAog
CisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gMTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFz
IFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0xpbmVhckdyYWRpZW50RWxlbWVudEltcGxfSAorI2lm
bmRlZiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnRfSAorI2RlZmluZSBTVkdMaW5lYXJHUmFkaWVu
dEVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgPFNWR0dyYWRpZW50
RWxlbWVudC5oPgpAQCAtNDYsMTAgKzQ3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAg
IHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZH
TGVuZ3RoPiwgWDEsIHgxKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwg
WTEsIHkxKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWDIsIHgyKQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWTIsIHkyKQorICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBT
VkdMZW5ndGgsIFNWR0xlbmd0aCwgWDEsIHgxKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0
aCwgWTEsIHkxKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWDIsIHgyKQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWTIsIHkyKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxODIyMSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC00Miwx
MCArNDIsMTAgQEAgU1ZHTWFya2VyRWxlbWVudDo6U1ZHTWFya2VyRWxlbWVudChjb25zdAogICAg
ICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQog
ICAgICwgU1ZHRml0VG9WaWV3Qm94KCkKLSAgICAsIG1fcmVmWChuZXcgU1ZHTGVuZ3RoKHRoaXMs
IExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3JlZlkobmV3IFNWR0xlbmd0
aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fbWFya2VyV2lk
dGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAg
ICwgbV9tYXJrZXJIZWlnaHQobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0
RWxlbWVudCgpKSkKKyAgICAsIG1fcmVmWCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBt
X3JlZlkodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fbWFya2VyV2lkdGgodGhpcywg
TGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9tYXJrZXJIZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCkgCiAgICAgLCBtX21hcmtlclVuaXRzKFNWR19NQVJLRVJVTklUU19TVFJPS0VXSURUSCkK
ICAgICAsIG1fb3JpZW50VHlwZSgwKQogICAgICwgbV9vcmllbnRBbmdsZShuZXcgU1ZHQW5nbGUo
dGhpcykpCkBAIC01Niw2ICs1NiwxNCBAQCBTVkdNYXJrZXJFbGVtZW50Ojp+U1ZHTWFya2VyRWxl
bWVudCgpCiB7CiB9CiAKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVs
ZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFJlZlgsIHJlZlgsIFNWR05hbWVzOjpy
ZWZYQXR0ci5sb2NhbE5hbWUoKSwgbV9yZWZYKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUmVmWSwgcmVm
WSwgU1ZHTmFtZXM6OnJlZllBdHRyLmxvY2FsTmFtZSgpLCBtX3JlZlkpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVt
ZXJhdGlvbiwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdOYW1lczo6bWFya2VyVW5pdHNB
dHRyLmxvY2FsTmFtZSgpLCBtX21hcmtlclVuaXRzKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgTWFya2Vy
V2lkdGgsIG1hcmtlcldpZHRoLCBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyLmxvY2FsTmFtZSgp
LCBtX21hcmtlcldpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2Vy
RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgTWFya2VySGVpZ2h0LCBtYXJrZXJI
ZWlnaHQsIFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX21hcmtlckhl
aWdodCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGlu
dCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBPcmllbnRUeXBlLCBvcmllbnRUeXBlLCAib3Jp
ZW50VHlwZSIsIG1fb3JpZW50VHlwZSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R01hcmtlckVsZW1lbnQsIFNWR0FuZ2xlKiwgQW5nbGUsIGFuZ2xlLCBPcmllbnRBbmdsZSwgb3Jp
ZW50QW5nbGUsICJvcmllbnRBbmdsZSIsIG1fb3JpZW50QW5nbGUuZ2V0KCkpCisKIHZvaWQgU1ZH
TWFya2VyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwpAQCAt
NjMsMTMgKzcxLDEzIEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIK
ICAgICAgICAgaWYgKHZhbHVlID09ICJ1c2VyU3BhY2VPblVzZSIpCiAgICAgICAgICAgICBzZXRN
YXJrZXJVbml0c0Jhc2VWYWx1ZShTVkdfTUFSS0VSVU5JVFNfVVNFUlNQQUNFT05VU0UpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyZWZYQXR0cikKLSAgICAgICAg
cmVmWEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0UmVm
WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cmVmWUF0dHIpCi0gICAgICAgIHJl
ZllCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFJlZllC
YXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIpCi0gICAg
ICAgIG1hcmtlcldpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAg
ICAgICBzZXRNYXJrZXJXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6bWFy
a2VySGVpZ2h0QXR0cikKLSAgICAgICAgbWFya2VySGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRNYXJrZXJIZWlnaHRCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjpvcmllbnRBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAi
YXV0byIpCiAgICAgICAgICAgICBzZXRPcmllbnRUb0F1dG8oKTsKQEAgLTkwLDE0ICs5OCw2IEBA
IHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICB9CiB9CiAKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCos
IExlbmd0aCwgbGVuZ3RoLCBSZWZYLCByZWZYLCBTVkdOYW1lczo6cmVmWEF0dHIubG9jYWxOYW1l
KCksIG1fcmVmWC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtl
ckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBSZWZZLCByZWZZLCBTVkdOYW1l
czo6cmVmWUF0dHIubG9jYWxOYW1lKCksIG1fcmVmWS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0
aW9uLCBNYXJrZXJVbml0cywgbWFya2VyVW5pdHMsIFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIu
bG9jYWxOYW1lKCksIG1fbWFya2VyVW5pdHMpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgTWFya2VyV2lk
dGgsIG1hcmtlcldpZHRoLCBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBt
X21hcmtlcldpZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFy
a2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIE1hcmtlckhlaWdodCwgbWFy
a2VySGVpZ2h0LCBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9tYXJr
ZXJIZWlnaHQuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJF
bGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgT3JpZW50VHlwZSwgb3JpZW50
VHlwZSwgIm9yaWVudFR5cGUiLCBtX29yaWVudFR5cGUpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmdsZSosIEFuZ2xlLCBhbmdsZSwgT3JpZW50
QW5nbGUsIG9yaWVudEFuZ2xlLCAib3JpZW50QW5nbGUiLCBtX29yaWVudEFuZ2xlLmdldCgpKQot
CiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQXV0bygpCiB7CiAgICAgc2V0T3Jp
ZW50VHlwZUJhc2VWYWx1ZShTVkdfTUFSS0VSX09SSUVOVF9BVVRPKTsKQEAgLTEyNiw3ICsxMjYs
NyBAQCBTVkdSZXNvdXJjZSogU1ZHTWFya2VyRWxlbWVudDo6Y2FudmFzUmVzCiAgICAgZWxzZQog
ICAgICAgICBtX21hcmtlci0+c2V0QXV0b0FuZ2xlKCk7CiAKLSAgICBtX21hcmtlci0+c2V0UmVm
KHJlZlgoKS0+dmFsdWUoKSwgcmVmWSgpLT52YWx1ZSgpKTsKKyAgICBtX21hcmtlci0+c2V0UmVm
KHJlZlgoKS52YWx1ZSgpLCByZWZZKCkudmFsdWUoKSk7CiAgICAgbV9tYXJrZXItPnNldFVzZVN0
cm9rZVdpZHRoKG1hcmtlclVuaXRzKCkgPT0gU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIKTsK
ICAgICAKICAgICByZXR1cm4gbV9tYXJrZXIuZ2V0KCk7CkBAIC0xNDQsNiArMTQ0LDYgQEAgUmVu
ZGVyT2JqZWN0KiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVSZQogCiB9CiAKLS8vIHZpbTp0cz00
Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiAxODIyMSkKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIsNiArMjIsNyBAQAogCiAjaWZuZGVmIFNW
R01hcmtlckVsZW1lbnRfSAogI2RlZmluZSBTVkdNYXJrZXJFbGVtZW50X0gKKwogI2lmZGVmIFNW
R19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdSZXNvdXJjZU1hcmtlci5oIgpAQCAtMzQsOCArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogewogICAgIGNsYXNzIERvY3VtZW50OwogICAgIGNsYXNz
IFNWR0FuZ2xlOwotICAgIGNsYXNzIFNWR0FuZ2xlOwotICAgIGNsYXNzIFNWR0xlbmd0aDsKKyAg
ICAKICAgICBjbGFzcyBTVkdNYXJrZXJFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLApAQCAtNzUsMTAgKzc1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0ZpdFRvVmlld0JveCwgRmxvYXRS
ZWN0LCBWaWV3Qm94LCB2aWV3Qm94KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJE
X0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qLCBQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgUmVmWCwgcmVmWCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5n
dGg+LCBSZWZZLCByZWZZKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIE1hcmtlcldp
ZHRoLCBtYXJrZXJXaWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBNYXJrZXJI
ZWlnaHQsIG1hcmtlckhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSZWZYLCByZWZYKQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwg
U1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFJlZlksIHJlZlkpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwg
TWFya2VyV2lkdGgsIG1hcmtlcldpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIE1hcmtlckhl
aWdodCwgbWFya2VySGVpZ2h0KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHTWFya2VyRWxlbWVudCwgaW50LCBpbnQsIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cykK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQs
IGludCwgaW50LCBPcmllbnRUeXBlLCBvcmllbnRUeXBlKQogICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHQW5nbGUqLCBSZWZQdHI8U1ZH
QW5nbGU+LCBPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUpCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxODIyMSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R01hc2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUu
b3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1h
bm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDUgQWxleGFuZGVy
IEtlbGxldHQgPGx5cGFub3ZAa2RlLm9yZz4KIApAQCAtNDUsMTAgKzQ1LDEwIEBAIFNWR01hc2tF
bGVtZW50OjpTVkdNYXNrRWxlbWVudChjb25zdCBRdWEKICAgICAsIFNWR1Rlc3RzKCkKICAgICAs
IFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAg
ICAsIG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkp
Ci0gICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVu
dCgpKSkKLSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3Bv
cnRFbGVtZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlH
SFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgp
CisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywg
TGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkK
ICAgICAsIG1fZGlydHkodHJ1ZSkKIHsKIH0KQEAgLTU3LDE0ICs1NywxNCBAQCBTVkdNYXNrRWxl
bWVudDo6flNWR01hc2tFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBT
VkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwg
WSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kuZ2V0KCkpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBs
ZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93
aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50
LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpo
ZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodC5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBY
LCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZ
LCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBX
aWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGgpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2Fs
TmFtZSgpLCBtX2hlaWdodCkKIAogdm9pZCBTVkdNYXNrRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdl
ZChBdHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJlc2VydmVEZWNscykKIHsKLSAgICBJbnRTaXplIG5l
d1NpemUgPSBJbnRTaXplKGxyb3VuZGYod2lkdGgoKS0+dmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0
KCktPnZhbHVlKCkpKTsKKyAgICBJbnRTaXplIG5ld1NpemUgPSBJbnRTaXplKGxyb3VuZGYod2lk
dGgoKS52YWx1ZSgpKSwgbHJvdW5kZihoZWlnaHQoKS52YWx1ZSgpKSk7CiAgICAgaWYgKCFtX21h
c2tlciB8fCAhbV9tYXNrZXItPm1hc2soKSB8fCAobV9tYXNrZXItPm1hc2soKS0+c2l6ZSgpICE9
IG5ld1NpemUpKQogICAgICAgICBtX2RpcnR5ID0gdHJ1ZTsKICAgICBTVkdTdHlsZWRMb2NhdGFi
bGVFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwpAQCAtODAs
MTMgKzgwLDEzIEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKIHsK
ICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1
ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2
YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3
aWR0aEF0dHIpCi0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFs
dWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
aGVpZ2h0QXR0cikKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChTVkdVUklSZWZl
cmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTA3LDcgKzEwNyw3IEBAIFNWR1Jlc291cmNlSW1hZ2UqIFNWR01hc2tFbGVtZW50OjpkcmF3
TWEKICAgICByZXR1cm4gMDsKICAgICBTVkdSZXNvdXJjZUltYWdlKiBtYXNrSW1hZ2UgPSBuZXcg
U1ZHUmVzb3VyY2VJbWFnZSgpOwogCi0gICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShscm91bmRm
KHdpZHRoKCktPnZhbHVlKCkpLCBscm91bmRmKGhlaWdodCgpLT52YWx1ZSgpKSk7CisgICAgSW50
U2l6ZSBzaXplID0gSW50U2l6ZShscm91bmRmKHdpZHRoKCkudmFsdWUoKSksIGxyb3VuZGYoaGVp
Z2h0KCkudmFsdWUoKSkpOwogICAgIG1hc2tJbWFnZS0+aW5pdChzaXplKTsKIAogICAgIE93blB0
cjxHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQoY29udGV4dEZvckltYWdlKG1hc2tJbWFnZSkpOwpA
QCAtMTQ0LDYgKzE0NCw2IEBAIFNWR1Jlc291cmNlKiBTVkdNYXNrRWxlbWVudDo6Y2FudmFzUmVz
b3UKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8g
dmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oCShyZXZpc2lv
biAxODIyMSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2lmbmRlZiBTVkdNYXNrRWxlbWVudF9ICiAjZGVm
aW5lIFNWR01hc2tFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJT
VkdSZXNvdXJjZU1hc2tlci5oIgpAQCAtNjAsMTAgKzYxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJl
ZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9G
T1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogIAot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNW
R0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
TWFza0VsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwg
U1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgU1ZH
TGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0
KQogCiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiB0aGlzOyB9CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJu
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5v
cmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CkBAIC01MiwxMCArNTIsMTAgQEAgU1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRl
cm5FbGVtZW50KGNvbgogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAg
LCBTVkdGaXRUb1ZpZXdCb3goKQogICAgICwgU1ZHUmVzb3VyY2VMaXN0ZW5lcigpCi0gICAgLCBt
X3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAg
ICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkp
Ci0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxl
bWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2
aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAg
ICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiAgICAg
LCBtX3BhdHRlcm5Vbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJ
TkdCT1gpCiAgICAgLCBtX3BhdHRlcm5Db250ZW50VW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX1VTRVJTUEFDRU9OVVNFKQogICAgICwgbV9wYXR0ZXJuVHJhbnNmb3JtKG5ldyBTVkdU
cmFuc2Zvcm1MaXN0KQpAQCAtNjksMTAgKzY5LDEwIEBAIFNWR1BhdHRlcm5FbGVtZW50Ojp+U1ZH
UGF0dGVybkVsZW1lbnQoKQogCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0
ZXJuRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIFBhdHRlcm5Vbml0cywg
cGF0dGVyblVuaXRzLCBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9w
YXR0ZXJuVW5pdHMpCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxl
bWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIFBhdHRlcm5Db250ZW50VW5pdHMs
IHBhdHRlcm5Db250ZW50VW5pdHMsIFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0ci5s
b2NhbE5hbWUoKSwgbV9wYXR0ZXJuQ29udGVudFVuaXRzKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBY
LCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feC5nZXQoKSkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgs
IGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kuZ2V0KCkpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2Nh
bE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWln
aHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodC5nZXQoKSkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1f
eSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIu
bG9jYWxOYW1lKCksIG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQ
YXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQs
IFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodCkKIEFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0Kiwg
VHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRy
YW5zZm9ybSwgU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3Bh
dHRlcm5UcmFuc2Zvcm0uZ2V0KCkpCiAKIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKQEAgLTk1LDEzICs5NSwxMyBAQCB2
b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgICAgICBwYXR0
ZXJuVHJhbnNmb3Jtcy0+Y2xlYXIoZWMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZh
bHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5n
KHZhbHVlKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OndpZHRoQXR0cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2
YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
OjpoZWlnaHRBdHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmlu
Zyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKFNWR1VSSVJl
ZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMTgsMTkgKzExOCw2IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmkKICAgICB9CiB9CiAKLWNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIFNWR1BhdHRlcm5FbGVt
ZW50OjpwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0
KQotewotICAgIC8vIEFsbCBhdHRyaWJ1dGUncyBjb250ZXh0cyBhcmUgZXF1YWwgKHNvIGp1c3Qg
dGFrZSB0aGUgb25lIGZyb20gJ3gnKS4KLSAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiByZXN0
b3JlID0geCgpLT5jb250ZXh0KCk7Ci0KLSAgICB4KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0g
ICAgeSgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHdpZHRoKCktPnNldENvbnRleHQoY29u
dGV4dCk7Ci0gICAgaGVpZ2h0KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0KLSAgICByZXR1cm4g
cmVzdG9yZTsKLX0KLQogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cmVzb3VyY2VOb3RpZmljYXRp
b24oKSBjb25zdAogewogICAgIC8vIFdlJ3JlIHJlZmVyZW5jZWQgYnkgYSAiY2xpZW50IiwgY2Fs
Y3VsYXRlIHRoZSB0aWxlIG5vdy4uLgpAQCAtMTY5LDI2ICsxNTYsMzggQEAgdm9pZCBTVkdQYXR0
ZXJuRWxlbWVudDo6ZmlsbEF0dHJpYnV0ZXNGcgogCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50Ojpk
cmF3UGF0dGVybkNvbnRlbnRJbnRvVGlsZShjb25zdCBTVkdQYXR0ZXJuRWxlbWVudCogdGFyZ2V0
LCBjb25zdCBJbnRTaXplJiBuZXdTaXplLCBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9y
bU1hdHJpeCkKIHsKLSAgICBTVkdTdHlsZWRFbGVtZW50KiBhY3RpdmVFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KG1fcGFpbnRTZXJ2ZXItPmFjdGl2ZUNsaWVudCgpLT5l
bGVtZW50KCkpOwotCiAgICAgYm9vbCBiYm94ID0gKHBhdHRlcm5Vbml0cygpID09IFNWR1VuaXRU
eXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCk7CiAKLSAgICBjb25zdCBTVkdT
dHlsZWRFbGVtZW50KiBzYXZlZENvbnRleHQgPSAwOworICAgIGZsb2F0IF94LCBfeSwgdywgaDsK
ICAgICBpZiAoYmJveCkgewotICAgICAgICBpZiAod2lkdGgoKS0+dW5pdFR5cGUoKSAhPSBTVkdM
ZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UpCi0gICAgICAgICAgICB3aWR0aCgpLT5u
ZXdWYWx1ZVNwZWNpZmllZFVuaXRzKFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFH
RSwgd2lkdGgoKS0+dmFsdWUoKSAqIDEwMC4pOwotICAgICAgICBpZiAoaGVpZ2h0KCktPnVuaXRU
eXBlKCkgIT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKQotICAgICAgICAg
ICAgaGVpZ2h0KCktPm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoU1ZHTGVuZ3RoOjpTVkdfTEVOR1RI
VFlQRV9QRVJDRU5UQUdFLCBoZWlnaHQoKS0+dmFsdWUoKSAqIDEwMC4pOwotICAgICAgICBpZiAo
YWN0aXZlRWxlbWVudCkKLSAgICAgICAgICAgIHNhdmVkQ29udGV4dCA9IGNvbnN0X2Nhc3Q8U1ZH
UGF0dGVybkVsZW1lbnQqPih0aGlzKS0+cHVzaEF0dHJpYnV0ZUNvbnRleHQoYWN0aXZlRWxlbWVu
dCk7CisgICAgICAgIF94ID0geCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBp
ZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHgoKSkpCisgICAgICAgICAgICBfeCAqPSAxMDAuMDsK
KworICAgICAgICBfeSA9IHkoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgaWYg
KFNWR0xlbmd0aDo6aXNGcmFjdGlvbih5KCkpKQorICAgICAgICAgICAgX3kgKj0gMTAwLjA7CisK
KyAgICAgICAgdyA9IHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGlm
IChTVkdMZW5ndGg6OmlzRnJhY3Rpb24od2lkdGgoKSkpCisgICAgICAgICAgICB3ICo9IDEwMC4w
OworCisgICAgICAgIGggPSBoZWlnaHQoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAg
ICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbihoZWlnaHQoKSkpCisgICAgICAgICAgICBoICo9
IDEwMC4wOworICAgIH0gZWxzZSB7CisgICAgICAgIF94ID0geCgpLnZhbHVlKCk7CisgICAgICAg
IF95ID0geSgpLnZhbHVlKCk7CisgICAgICAgIHcgPSB3aWR0aCgpLnZhbHVlKCk7CisgICAgICAg
IGggPSBoZWlnaHQoKS52YWx1ZSgpOwogICAgIH0KLSAgICAKKwogICAgIG1fdGlsZSA9IG5ldyBT
VkdSZXNvdXJjZUltYWdlKCk7CiAgICAgbV90aWxlLT5pbml0KG5ld1NpemUpOwogCiAgICAgT3du
UHRyPEdyYXBoaWNzQ29udGV4dD4gcGF0dGVybkNvbnRleHQoY29udGV4dEZvckltYWdlKG1fdGls
ZS5nZXQoKSkpOwogCi0gICAgRmxvYXRSZWN0IHJlY3QoeCgpLT52YWx1ZSgpLCB5KCktPnZhbHVl
KCksIHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52YWx1ZSgpKTsKKyAgICBGbG9hdFJlY3Qg
cmVjdChfeCwgX3ksIHcsIGgpOwogICAgIG1fcGFpbnRTZXJ2ZXItPnNldEJib3gocmVjdCk7CiAg
ICAgbV9wYWludFNlcnZlci0+c2V0UGF0dGVyblRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtTWF0
cml4KTsKICAgICBtX3BhaW50U2VydmVyLT5zZXRUaWxlKG1fdGlsZS5nZXQoKSk7CkBAIC0yNDMs
OSArMjQyLDYgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6ZHJhd1BhdHRlcm5Db250ZQogICAg
ICAgICBpdGVtLT5zZXRMb2NhbFRyYW5zZm9ybShzYXZlZE1hdHJpeC5tYXRyaXgoKSk7CiAjZW5k
aWYKICAgICB9Ci0KLSAgICBpZiAoc2F2ZWRDb250ZXh0KQotICAgICAgICBjb25zdF9jYXN0PFNW
R1BhdHRlcm5FbGVtZW50Kj4odGhpcyktPnB1c2hBdHRyaWJ1dGVDb250ZXh0KHNhdmVkQ29udGV4
dCk7CiB9CiAKIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6Om5vdGlmeUNsaWVudHNUb1JlcGFpbnQo
KSBjb25zdApAQCAtMjcxLDcgKzI2Nyw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6Om5vdGlm
eUF0dHJpYnV0ZUMKICAgICBpZiAoIW1fcGFpbnRTZXJ2ZXIgfHwgIW1fcGFpbnRTZXJ2ZXItPmFj
dGl2ZUNsaWVudCgpIHx8IG1faWdub3JlQXR0cmlidXRlQ2hhbmdlcykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgSW50U2l6ZSBuZXdTaXplID0gSW50U2l6ZShscm91bmRmKHdpZHRoKCktPnZhbHVl
KCkpLCBscm91bmRmKGhlaWdodCgpLT52YWx1ZSgpKSk7CisgICAgSW50U2l6ZSBuZXdTaXplID0g
SW50U2l6ZShscm91bmRmKHdpZHRoKCkudmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0KCkudmFsdWUo
KSkpOwogICAgIGlmIChtX3RpbGUgJiYgKG1fdGlsZS0+c2l6ZSgpID09IG5ld1NpemUpIHx8IG5l
d1NpemUud2lkdGgoKSA8IDEgfHwgbmV3U2l6ZS5oZWlnaHQoKSA8IDEpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMzMxLDEyICszMjcsMTMgQEAgU1ZHUmVzb3VyY2UqIFNWR1BhdHRlcm5FbGVtZW50
OjpjYW52YXNSZQogQWZmaW5lVHJhbnNmb3JtIFNWR1BhdHRlcm5FbGVtZW50OjpnZXRDVE0oKSBj
b25zdAogewogICAgIEFmZmluZVRyYW5zZm9ybSBtYXQ7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHZp
ZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgp
LT52YWx1ZSgpKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdU
cmFuc2Zvcm0od2lkdGgoKS52YWx1ZSgpLCBoZWlnaHQoKS52YWx1ZSgpKTsKICAgICBtYXQgKj0g
dmlld0JveDsKICAgICByZXR1cm4gbWF0OwogfQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNl
bmRpZiAvLyBTVkdfU1VQUE9SVAorCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFz
IFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR1BhdHRlcm5FbGVtZW50SW1wbF9I
Ci0jZGVmaW5lIEtTVkdfU1ZHUGF0dGVybkVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHUGF0dGVy
bkVsZW1lbnRfSAorI2RlZmluZSBTVkdQYXR0ZXJuRWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQ
UE9SVAogCiAjaW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXJQYXR0ZXJuLmgiCkBAIC03NCwxMCArNzUs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FS
RF9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdC
b3gpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0Zp
dFRvVmlld0JveCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0aW8s
IHByZXNlcnZlQXNwZWN0UmF0aW8pCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwg
WCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5F
bGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxT
VkdMZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50
LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lk
dGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0
dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKICAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQs
IGludCwgUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMpCiAgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgaW50LCBpbnQsIFBhdHRlcm5Db250
ZW50VW5pdHMsIHBhdHRlcm5Db250ZW50VW5pdHMpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHVHJhbnNmb3JtTGlzdCosIFJlZlB0
cjxTVkdUcmFuc2Zvcm1MaXN0PiwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSkK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNw
cAkocmV2aXNpb24gMTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+
CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0CkBAIC0yMSw2ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNp
ZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIgog
CkBAIC0zNyw0MSArMzgsNDEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHR3JhZGllbnRFbGVtZW50KHRhZ05h
bWUsIGRvYykKLSAgICAsIG1fY3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3Bv
cnRFbGVtZW50KCkpKQotICAgICwgbV9jeShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwg
dmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9yKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fT1RI
RVIsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fZngobmV3IFNWR0xlbmd0aCh0aGlzLCBM
TV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9meShuZXcgU1ZHTGVuZ3RoKHRo
aXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV9jeCh0aGlzLCBMZW5n
dGhNb2RlV2lkdGgpCisgICAgLCBtX2N5KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBt
X3IodGhpcywgTGVuZ3RoTW9kZU90aGVyKQorICAgICwgbV9meCh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgpCisgICAgLCBtX2Z5KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiAgICAgLy8gU3BlYzog
SWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEg
dmFsdWUgb2YgIjUwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgbV9jeC0+c2V0VmFsdWVBc1N0cmlu
ZygiNTAlIik7Ci0gICAgbV9jeS0+c2V0VmFsdWVBc1N0cmluZygiNTAlIik7Ci0gICAgbV9yLT5z
ZXRWYWx1ZUFzU3RyaW5nKCI1MCUiKTsKKyAgICBzZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZVdpZHRoLCAiNTAlIikpOworICAgIHNldEN5QmFzZVZhbHVlKFNWR0xlbmd0
aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiNTAlIikpOworICAgIHNldFJCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVPdGhlciwgIjUwJSIpKTsKIH0KIAogU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50Ojp+U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5n
dGgqLCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLmxvY2FsTmFtZSgp
LCBtX2N4LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1l
czo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgRngsIGZ4LCBTVkdOYW1lczo6ZnhBdHRyLmxvY2FsTmFtZSgpLCBtX2Z4LmdldCgpKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBT
VkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgRnksIGZ5LCBTVkdOYW1lczo6ZnlBdHRyLmxvY2Fs
TmFtZSgpLCBtX2Z5LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgUiwgciwgU1ZH
TmFtZXM6OnJBdHRyLmxvY2FsTmFtZSgpLCBtX3IuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4QXR0ci5sb2NhbE5hbWUoKSwgbV9jeCkKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVu
Z3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgp
LCBtX2N5KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBGeCwgZngsIFNWR05hbWVzOjpmeEF0
dHIubG9jYWxOYW1lKCksIG1fZngpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEZ5LCBmeSwg
U1ZHTmFtZXM6OmZ5QXR0ci5sb2NhbE5hbWUoKSwgbV9meSkKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxl
bmd0aCwgUiwgciwgU1ZHTmFtZXM6OnJBdHRyLmxvY2FsTmFtZSgpLCBtX3IpCiAKIHZvaWQgU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVl
KCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3hBdHRyKQotICAgICAgICBj
eEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0Q3hCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN5QXR0cikKLSAgICAgICAgY3lCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEN5QmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ckF0dHIpCi0gICAgICAgIHJCYXNlVmFsdWUoKS0+c2V0
VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFJCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVPdGhlciwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OmZ4QXR0cikKLSAgICAgICAgZnhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEZ4QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5n
dGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjpmeUF0dHIpCi0gICAgICAgIGZ5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFs
dWUpOworICAgICAgICBzZXRGeUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUpKTsKICAgICBlbHNlCiAgICAgICAgIFNWR0dyYWRpZW50RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkBAIC04MywxNSArODQsNDIgQEAgdm9pZCBTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIGJvb2wgYmJveCA9IChncmFkaWVu
dFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9Y
KTsKICAgICBib29sIGZ4U2V0ID0gaGFzQXR0cmlidXRlKFNWR05hbWVzOjpmeEF0dHIpOwogICAg
IGJvb2wgZnlTZXQgPSBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZ5QXR0cik7Ci0gICAgY3goKS0+
c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIGN5KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsK
LSAgICByKCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICBmeCgpLT5zZXRCYm94UmVsYXRp
dmUoYmJveCk7Ci0gICAgZnkoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIGZsb2F0IF9j
eCA9IGN4KCktPnZhbHVlKCksIF9jeSA9IGN5KCktPnZhbHVlKCk7Ci0gICAgZmxvYXQgX3IgPSBy
KCktPnZhbHVlKCk7Ci0gICAgZmxvYXQgX2Z4ID0gZnhTZXQgPyBmeCgpLT52YWx1ZSgpIDogX2N4
OwotICAgIGZsb2F0IF9meSA9IGZ5U2V0ID8gZnkoKS0+dmFsdWUoKSA6IF9jeTsKKyAKKyAgICBm
bG9hdCBfY3gsIF9jeSwgX3IsIF9meCwgX2Z5OworCisgICAgaWYgKGJib3gpIHsKKyAgICAgICAg
X2N4ID0gY3goKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgaWYgKFNWR0xlbmd0
aDo6aXNGcmFjdGlvbihjeCgpKSkKKyAgICAgICAgICAgIF9jeCAqPSAxMDAuMDsKKworICAgICAg
ICBfY3kgPSBjeSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBpZiAoU1ZHTGVu
Z3RoOjppc0ZyYWN0aW9uKGN5KCkpKQorICAgICAgICAgICAgX2N5ICo9IDEwMC4wOworCisgICAg
ICAgIF9yID0gcigpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBpZiAoU1ZHTGVu
Z3RoOjppc0ZyYWN0aW9uKHIoKSkpCisgICAgICAgICAgICBfciAqPSAxMDAuMDsKKworICAgICAg
ICBpZiAoZnhTZXQpIHsKKyAgICAgICAgICAgIF9meCA9IGZ4KCkudmFsdWVJblNwZWNpZmllZFVu
aXRzKCk7CisgICAgICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKGZ4KCkpKQorICAg
ICAgICAgICAgICAgIF9meCAqPSAxMDAuMDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBf
ZnggPSBfY3g7CisgICAgICAgIAorICAgICAgICBpZiAoZnlTZXQpIHsKKyAgICAgICAgICAgIF9m
eSA9IGZ5KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgICAgICBpZiAoU1ZHTGVu
Z3RoOjppc0ZyYWN0aW9uKGZ5KCkpKQorICAgICAgICAgICAgICAgIF9meSAqPSAxMDAuMDsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBfZnkgPSBfY3k7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgX2N4ID0gY3goKS52YWx1ZSgpOworICAgICAgICBfY3kgPSBjeSgpLnZhbHVlKCk7CisgICAg
ICAgIF9yID0gcigpLnZhbHVlKCk7CisgICAgICAgIF9meCA9IGZ4U2V0ID8gZngoKS52YWx1ZSgp
IDogX2N4OworICAgICAgICBfZnkgPSBmeVNldCA/IGZ5KCkudmFsdWUoKSA6IF9jeTsKKyAgICB9
CiAKICAgICBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudD4gZ3JhZCA9IFdURjo6
c3RhdGljX3BvaW50ZXJfY2FzdDxTVkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50PihfZ3JhZCk7
CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKQEAgLTExMiwzMiArMTQwLDE4IEBAIHZvaWQgU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWQKICAgICAgICAgICAgIFJlZlB0cjxTVkdQ
YWludFNlcnZlclJhZGlhbEdyYWRpZW50PiByYWRpYWwgPSBXVEY6OnN0YXRpY19wb2ludGVyX2Nh
c3Q8U1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudD4ocHNlcnZlcik7CiAgICAgICAgICAgICBp
ZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6Y3hBdHRyKSkKICAgICAgICAgICAgICAgICBfY3gg
PSByYWRpYWwtPmdyYWRpZW50Q2VudGVyKCkueCgpOwotICAgICAgICAgICAgZWxzZSBpZiAoYmJv
eCkKLSAgICAgICAgICAgICAgICBfY3ggKj0gMTAwLjsKKwogICAgICAgICAgICAgaWYgKCFoYXNB
dHRyaWJ1dGUoU1ZHTmFtZXM6OmN5QXR0cikpCiAgICAgICAgICAgICAgICAgX2N5ID0gcmFkaWFs
LT5ncmFkaWVudENlbnRlcigpLnkoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCi0gICAg
ICAgICAgICAgICAgX2N5ICo9IDEwMC47CiAKICAgICAgICAgICAgIGlmICghZnhTZXQpCiAgICAg
ICAgICAgICAgICAgX2Z4ID0gcmFkaWFsLT5ncmFkaWVudEZvY2FsKCkueCgpOwotICAgICAgICAg
ICAgZWxzZSBpZiAoYmJveCkKLSAgICAgICAgICAgICAgICBfZnggKj0gMTAwLjsKKwogICAgICAg
ICAgICAgaWYgKCFmeVNldCkKICAgICAgICAgICAgICAgICBfZnkgPSByYWRpYWwtPmdyYWRpZW50
Rm9jYWwoKS55KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAg
IF9meSAqPSAxMDAuOwogCiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6
ckF0dHIpKQogICAgICAgICAgICAgICAgIF9yID0gcmFkaWFsLT5ncmFkaWVudFJhZGl1cygpOwot
ICAgICAgICAgICAgZWxzZSBpZiAoYmJveCkKLSAgICAgICAgICAgICAgICBfciAqPSAxMDAuOwot
ICAgICAgICB9IGVsc2UgaWYgKGJib3gpIHsKLSAgICAgICAgICAgIF9jeCAqPSAxMDAuMDsKLSAg
ICAgICAgICAgIF9jeSAqPSAxMDAuMDsKLSAgICAgICAgICAgIF9meCAqPSAxMDAuMDsKLSAgICAg
ICAgICAgIF9meSAqPSAxMDAuMDsKLSAgICAgICAgICAgIF9yICo9IDEwMC4wOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3Jt
QXR0cikpCkBAIC0xNTYsMTQgKzE3MCw2IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
OjpidWlsZEdyYWQKICAgICAgICAgICAgIGdyYWQtPnNldEdyYWRpZW50U3ByZWFkTWV0aG9kKFNQ
UkVBRE1FVEhPRF9SRVBFQVQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBncmFkLT5zZXRH
cmFkaWVudFNwcmVhZE1ldGhvZChTUFJFQURNRVRIT0RfUEFEKTsKLQotICAgICAgICBpZiAoYmJv
eCkgewotICAgICAgICAgICAgX2N4ICo9IDEwMC4wOwotICAgICAgICAgICAgX2N5ICo9IDEwMC4w
OwotICAgICAgICAgICAgX2Z4ICo9IDEwMC4wOwotICAgICAgICAgICAgX2Z5ICo9IDEwMC4wOwot
ICAgICAgICAgICAgX3IgKj0gMTAwLjA7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBncmFkLT5z
ZXRHcmFkaWVudFRyYW5zZm9ybShtYXQpOwpAQCAtMTc1LDYgKzE4MSw2IEBAIHZvaWQgU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWQKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAj
ZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDE4MjIxKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAg
ICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAK
ICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkg
QEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnRJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50X0gKKyNk
ZWZpbmUgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAK
ICNpbmNsdWRlIDxTVkdHcmFkaWVudEVsZW1lbnQuaD4KQEAgLTQ2LDExICs0NywxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwg
U1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEN4LCBjeCkKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgUmVmUHRyPFNWR0xlbmd0aD4sIEN5LCBjeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRy
PFNWR0xlbmd0aD4sIFIsIHIpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+
LCBGeCwgZngpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBGeSwgZnkp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBDeCwgY3gpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0
aCwgU1ZHTGVuZ3RoLCBDeSwgY3kpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSLCBy
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgRngsIGZ4KQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5n
dGgsIFNWR0xlbmd0aCwgRnksIGZ5KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjIxKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0zNSwxMiArMzUsMTIgQEAgU1ZH
UmVjdEVsZW1lbnQ6OlNWR1JlY3RFbGVtZW50KGNvbnN0IFF1YQogICAgICwgU1ZHVGVzdHMoKQog
ICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVu
dCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRF
bGVtZW50KCkpKQotICAgICwgbV93aWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2
aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2hlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExN
X0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9yeChuZXcgU1ZHTGVuZ3RoKHRo
aXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3J5KG5ldyBTVkdMZW5n
dGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywg
TGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAg
LCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3J4KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAs
IG1fcnkodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0KIApAQCAtNDgsMjggKzQ4LDI4IEBA
IFNWR1JlY3RFbGVtZW50Ojp+U1ZHUmVjdEVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5n
dGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0
aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgq
LCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2Fs
TmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
UmVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwg
U1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0
aCwgbGVuZ3RoLCBSeCwgcngsIFNWR05hbWVzOjpyeEF0dHIubG9jYWxOYW1lKCksIG1fcnguZ2V0
KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVu
Z3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFJ5LCByeSwgU1ZHTmFtZXM6OnJ5QXR0ci5sb2NhbE5hbWUo
KSwgbV9yeS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9j
YWxOYW1lKCksIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9j
YWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3
aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBo
ZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodCkKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBSeCwgcngsIFNWR05hbWVzOjpyeEF0dHIubG9jYWxOYW1lKCksIG1fcngpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgUnksIHJ5LCBTVkdOYW1lczo6cnlBdHRyLmxvY2FsTmFtZSgpLCBtX3J5
KQogCiB2b2lkIFNWR1JlY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZh
bHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAg
IHhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZhbHVl
KCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6cnhBdHRyKQotICAgICAgICByeEJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgIHNldFJ4QmFzZVZhbHVlKFNWR0xlbmd0aCh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpyeUF0dHIpCi0gICAgICAgIHJ5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNT
dHJpbmcodmFsdWUpOworICAgICAgICAgc2V0UnlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNT
dHJpbmcodmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChT
VkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC04Myw0OCArODMsMjEgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dAogCiBQYXRoIFNWR1JlY3RFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QKIHsKLSAgICBG
bG9hdFJlY3QgcmVjdCh4KCktPnZhbHVlKCksIHkoKS0+dmFsdWUoKSwgd2lkdGgoKS0+dmFsdWUo
KSwgaGVpZ2h0KCktPnZhbHVlKCkpOworICAgIEZsb2F0UmVjdCByZWN0KHgoKS52YWx1ZSgpLCB5
KCkudmFsdWUoKSwgd2lkdGgoKS52YWx1ZSgpLCBoZWlnaHQoKS52YWx1ZSgpKTsKIAotICAgIGJv
b2wgaGFzUnggPSBoYXNBdHRyaWJ1dGUoInJ4Iik7Ci0gICAgYm9vbCBoYXNSeSA9IGhhc0F0dHJp
YnV0ZSgicnkiKTsKKyAgICBib29sIGhhc1J4ID0gaGFzQXR0cmlidXRlKFNWR05hbWVzOjpyeEF0
dHIpOworICAgIGJvb2wgaGFzUnkgPSBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJ5QXR0cik7CiAg
ICAgaWYgKGhhc1J4IHx8IGhhc1J5KSB7Ci0gICAgICAgIGZsb2F0IF9yeCA9IGhhc1J4ID8gcngo
KS0+dmFsdWUoKSA6IHJ5KCktPnZhbHVlKCk7Ci0gICAgICAgIGZsb2F0IF9yeSA9IGhhc1J5ID8g
cnkoKS0+dmFsdWUoKSA6IHJ4KCktPnZhbHVlKCk7CisgICAgICAgIGZsb2F0IF9yeCA9IGhhc1J4
ID8gcngoKS52YWx1ZSgpIDogcnkoKS52YWx1ZSgpOworICAgICAgICBmbG9hdCBfcnkgPSBoYXNS
eSA/IHJ5KCkudmFsdWUoKSA6IHJ4KCkudmFsdWUoKTsKICAgICAgICAgcmV0dXJuIFBhdGg6OmNy
ZWF0ZVJvdW5kZWRSZWN0YW5nbGUocmVjdCwgRmxvYXRTaXplKF9yeCwgX3J5KSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIFBhdGg6OmNyZWF0ZVJlY3RhbmdsZShyZWN0KTsKIH0KIAotY29uc3QgU1ZH
U3R5bGVkRWxlbWVudCogU1ZHUmVjdEVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0
IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpCi17Ci0gICAgLy8gQWxsIGF0dHJpYnV0ZSdzIGNv
bnRleHRzIGFyZSBlcXVhbCAoc28ganVzdCB0YWtlIHRoZSBvbmUgZnJvbSAneCcpLgotICAgIGNv
bnN0IFNWR1N0eWxlZEVsZW1lbnQqIHJlc3RvcmUgPSB4KCktPmNvbnRleHQoKTsKLQotICAgIHgo
KS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICB5KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0g
ICAgd2lkdGgoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICBoZWlnaHQoKS0+c2V0Q29udGV4
dChjb250ZXh0KTsKLSAgICAKLSAgICBTVkdTdHlsZWRFbGVtZW50OjpwdXNoQXR0cmlidXRlQ29u
dGV4dChjb250ZXh0KTsKLSAgICByZXR1cm4gcmVzdG9yZTsKLX0KLQotYm9vbCBTVkdSZWN0RWxl
bWVudDo6aGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0Ci17Ci0gICAgaWYgKHgoKS0+dW5pdFR5
cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAg
eSgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8
fAotICAgICAgICB3aWR0aCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZ
UEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICBoZWlnaHQoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5n
dGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgcngoKS0+dW5pdFR5cGUo
KSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgcnko
KS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB9CiAKLS8vIHZp
bTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHJldmlzaW9uIDE4MjIxKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR1JlY3RFbGVtZW50SW1w
bF9ICi0jZGVmaW5lIEtTVkdfU1ZHUmVjdEVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHUmVjdEVs
ZW1lbnRfSAorI2RlZmluZSBTVkdSZWN0RWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAog
CiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtMzEsNyArMzIs
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZQogewotICAgIGNsYXNzIFNWR0xlbmd0aDsKICAgICBj
bGFzcyBTVkdSZWN0RWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCkBAIC00OSwyMiArNDksMTgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFBhdGggdG9QYXRoRGF0YSgpIGNvbnN0
OwogCi0gICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcHVzaEF0dHJpYnV0
ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCk7Ci0KICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiB0aGlzOyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGhhc1BlcmNlbnRh
Z2VWYWx1ZXMoKSBjb25zdDsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJv
b2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50
LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8
U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgV2lkdGgsIHdp
ZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1l
bnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5n
dGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgUngsIHJ4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5n
dGg+LCBSeSwgcnkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdS
ZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0
RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIFNW
R0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFJ4LCByeCkKKyAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdM
ZW5ndGgsIFNWR0xlbmd0aCwgUnksIHJ5KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxODIyMSkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2ICsyMSw3IEBACiAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUg
IlNWR1NWR0VsZW1lbnQuaCIKIApAQCAtNTMsMTkgKzU0LDE1IEBAIFNWR1NWR0VsZW1lbnQ6OlNW
R1NWR0VsZW1lbnQoY29uc3QgUXVhbGkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKQogICAgICwgU1ZHRml0VG9WaWV3Qm94KCkKICAgICAsIFNWR1pvb21BbmRQYW4oKQorICAg
ICwgbV94KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hl
aWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV91c2VDdXJyZW50VmlldyhmYWxz
ZSkKICAgICAsIG1fdGltZVNjaGVkdWxlcihuZXcgVGltZVNjaGVkdWxlcihkb2MpKQogewotICAg
IGNvbnN0IFNWR0VsZW1lbnQqIHZpZXdwb3J0ID0gb3duZXJEb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKSA9PSB0aGlzID8gdGhpcyA6IHZpZXdwb3J0RWxlbWVudCgpOwotICAgIGNvbnN0IFNW
R1N0eWxlZEVsZW1lbnQqIGNvbnRleHQgPSBvd25lckRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpID09IHRoaXMgPyAwIDogdGhpczsKLQotICAgIG1feCA9IG5ldyBTVkdMZW5ndGgoY29udGV4
dCwgTE1fV0lEVEgsIHZpZXdwb3J0KTsKLSAgICBtX3kgPSBuZXcgU1ZHTGVuZ3RoKGNvbnRleHQs
IExNX0hFSUdIVCwgdmlld3BvcnQpOwotICAgIG1fd2lkdGggPSBuZXcgU1ZHTGVuZ3RoKGNvbnRl
eHQsIExNX1dJRFRILCB2aWV3cG9ydCk7Ci0gICAgbV9oZWlnaHQgPSBuZXcgU1ZHTGVuZ3RoKGNv
bnRleHQsIExNX0hFSUdIVCwgdmlld3BvcnQpOwotCi0gICAgbV93aWR0aC0+c2V0VmFsdWVBc1N0
cmluZygiMTAwJSIpOwotICAgIG1faGVpZ2h0LT5zZXRWYWx1ZUFzU3RyaW5nKCIxMDAlIik7Cisg
ICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEw
MCUiKSk7CisgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0LCAiMTAwJSIpKTsKIH0KIAogU1ZHU1ZHRWxlbWVudDo6flNWR1NWR0VsZW1lbnQoKQpA
QCAtNzMsMTAgKzcwLDEwIEBAIFNWR1NWR0VsZW1lbnQ6On5TVkdTVkdFbGVtZW50KCkKICAgICBk
ZWxldGUgbV90aW1lU2NoZWR1bGVyOwogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFt
ZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwg
U1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwg
V2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoLmdl
dCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0
ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdO
YW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05h
bWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRo
LCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hl
aWdodCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdFbGVtZW50Ojpjb250ZW50U2NyaXB0
VHlwZSgpIGNvbnN0CiB7CkBAIC0xMDQsMTAgKzEwMSwxMCBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6
OnNldENvbnRlbnRTdHlsZVR5cGUoCiAKIEZsb2F0UmVjdCBTVkdTVkdFbGVtZW50Ojp2aWV3cG9y
dCgpIGNvbnN0CiB7Ci0gICAgZG91YmxlIF94ID0geCgpLT52YWx1ZSgpOwotICAgIGRvdWJsZSBf
eSA9IHkoKS0+dmFsdWUoKTsKLSAgICBkb3VibGUgdyA9IHdpZHRoKCktPnZhbHVlKCk7Ci0gICAg
ZG91YmxlIGggPSBoZWlnaHQoKS0+dmFsdWUoKTsKKyAgICBkb3VibGUgX3ggPSB4KCkudmFsdWUo
KTsKKyAgICBkb3VibGUgX3kgPSB5KCkudmFsdWUoKTsKKyAgICBkb3VibGUgdyA9IHdpZHRoKCku
dmFsdWUoKTsKKyAgICBkb3VibGUgaCA9IGhlaWdodCgpLnZhbHVlKCk7CiAgICAgQWZmaW5lVHJh
bnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHcsIGgpOwogICAgIHZpZXdC
b3gubWFwKF94LCBfeSwgJl94LCAmX3kpOwogICAgIHZpZXdCb3gubWFwKHcsIGgsICZ3LCAmaCk7
CkBAIC0xOTAsMTUgKzE4NywxNSBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlCiAgICAgICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6b256b29t
QXR0cikKICAgICAgICAgICAgIGFkZFNWR1dpbmRvd0V2ZW50TGlzdG5lcih6b29tRXZlbnQsIGF0
dHIpOwogICAgIH0KLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikgewot
ICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwotICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikgewotICAgICAgICB5QmFzZVZh
bHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+
c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6eEF0dHIpCisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OnlBdHRyKQorICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
d2lkdGhBdHRyKSB7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENT
U19QUk9QX1dJRFRILCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU19QUk9QX0hFSUdIVCwgdmFsdWUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChT
VkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCkBAIC0yNzYsOSArMjczLDkgQEAg
ZG91YmxlIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR051bWJlcigpCiAgICAgcmV0dXJuIDAuMDsK
IH0KIAotU1ZHTGVuZ3RoKiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdMZW5ndGgoKQorU1ZHTGVu
Z3RoIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR0xlbmd0aCgpCiB7Ci0gICAgcmV0dXJuIG5ldyBT
VkdMZW5ndGgoMCk7CisgICAgcmV0dXJuIFNWR0xlbmd0aCgpOwogfQogCiBTVkdBbmdsZSogU1ZH
U1ZHRWxlbWVudDo6Y3JlYXRlU1ZHQW5nbGUoKQpAQCAtMzE2LDEwICszMTMsMTAgQEAgU1ZHVHJh
bnNmb3JtKiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdUcgogQWZmaW5lVHJhbnNmb3JtIFNWR1NW
R0VsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKLSAg
ICBtYXQudHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1ZSgpKTsKKyAgICBtYXQudHJh
bnNsYXRlKHgoKS52YWx1ZSgpLCB5KCkudmFsdWUoKSk7CiAKICAgICBpZiAoYXR0cmlidXRlcygp
LT5nZXROYW1lZEl0ZW0oU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSkgewotICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUo
KSwgaGVpZ2h0KCktPnZhbHVlKCkpOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9
IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS52YWx1ZSgpLCBoZWlnaHQoKS52YWx1ZSgp
KTsKICAgICAgICAgbWF0ID0gdmlld0JveCAqIG1hdDsKICAgICB9CiAKQEAgLTMyOSwxMCArMzI2
LDEwIEBAIEFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50OjpnZXRDVE0oKSAKIEFmZmluZVRy
YW5zZm9ybSBTVkdTVkdFbGVtZW50OjpnZXRTY3JlZW5DVE0oKSBjb25zdAogewogICAgIEFmZmlu
ZVRyYW5zZm9ybSBtYXQgPSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpnZXRTY3JlZW5DVE0o
KTsKLSAgICBtYXQudHJhbnNsYXRlKHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1ZSgpKTsKKyAgICBt
YXQudHJhbnNsYXRlKHgoKS52YWx1ZSgpLCB5KCkudmFsdWUoKSk7CiAKICAgICBpZiAoYXR0cmli
dXRlcygpLT5nZXROYW1lZEl0ZW0oU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSkgewotICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+
dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkpOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdmll
d0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS52YWx1ZSgpLCBoZWlnaHQoKS52
YWx1ZSgpKTsKICAgICAgICAgbWF0ID0gdmlld0JveCAqIG1hdDsKICAgICB9CiAKQEAgLTQxMCw2
ICs0MDcsNiBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0CiAKIH0K
IAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDE4MjIxKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMiw2ICsyMiw3IEBACiAKICNp
Zm5kZWYgU1ZHU1ZHRWxlbWVudF9ICiAjZGVmaW5lIFNWR1NWR0VsZW1lbnRfSAorCiAjaWZkZWYg
U1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIK
QEAgLTEwNCw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2b2lkIGRlc2Vs
ZWN0QWxsKCk7CiAKICAgICAgICAgc3RhdGljIGRvdWJsZSBjcmVhdGVTVkdOdW1iZXIoKTsKLSAg
ICAgICAgc3RhdGljIFNWR0xlbmd0aCogY3JlYXRlU1ZHTGVuZ3RoKCk7CisgICAgICAgIHN0YXRp
YyBTVkdMZW5ndGggY3JlYXRlU1ZHTGVuZ3RoKCk7CiAgICAgICAgIHN0YXRpYyBTVkdBbmdsZSog
Y3JlYXRlU1ZHQW5nbGUoKTsKICAgICAgICAgc3RhdGljIEZsb2F0UG9pbnQgY3JlYXRlU1ZHUG9p
bnQoKTsKICAgICAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBjcmVhdGVTVkdNYXRyaXgoKTsK
QEAgLTEzOSwxMCArMTQwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0ZpdFRvVmlld0JveCwgRmxvYXRSZWN0
LCBWaWV3Qm94LCB2aWV3Qm94KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RF
Q0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qLCBQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8
U1ZHTGVuZ3RoPiwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxT
VkdMZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVu
Z3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogCiAgICAgICAgIGJvb2wgbV91c2VD
dXJyZW50VmlldzsKICAgICAgICAgVGltZVNjaGVkdWxlciogbV90aW1lU2NoZWR1bGVyOwpJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjIxKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMywxNCArMTMzLDYgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50Ojp1cGRhdGVDYW52YXNJ
dGVtKAogICAgIG1fdXBkYXRlVmVjdG9yaWFsID0gZmFsc2U7CiB9CiAKLWNvbnN0IFNWR1N0eWxl
ZEVsZW1lbnQqIFNWR1N0eWxlZEVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNW
R1N0eWxlZEVsZW1lbnQqKQotewotICAgIGlmICh2aWV3KCkpCi0gICAgICAgIHN0YXRpY19jYXN0
PFJlbmRlclBhdGgqPihyZW5kZXJlcigpKS0+c2V0UGF0aCh0b1BhdGhEYXRhKCkpOwotCi0gICAg
cmV0dXJuIDA7Ci19Ci0KIH0KIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1N0eWxlZEVsZW1lbnQuaAkocmV2aXNpb24gMTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKIAog
I2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKKyNp
bmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdTdHlsYWJsZS5oIgogI2luY2x1ZGUg
IlNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgpAQCAtNTYsMTQgKzU3LDYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hh
bmdlKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJp
YnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKIAotICAgICAgICAvLyBJbWFnaW5l
IHdlJ3JlIGEgPHJlY3Q+IGluc2lkZSBvZiBhIDxwYXR0ZXJuPiBzZWN0aW9uIHdpdGggcGF0dGVy
bkNvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giCi0gICAgICAgIC8vIGFuZCBvdXIgJ3dp
ZHRoJyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDUwJS4gV2hlbiB0aGUgcGF0dGVybiBnZXRzIHJlZmVy
ZW5jZWQgaXQga25vd3MgdGhlICJiYm94IgotICAgICAgICAvLyBvZiBpdCdzIHVzZXIgYW5kIGhh
cyB0byBwdXNoIHRoZSAiYWN0aXZlIGNsaWVudCdzIGJib3giIGFzIG5ldyBhdHRyaWJ1dGUgY29u
dGV4dCB0byBhbGwgYXR0cmlidXRlcwotICAgICAgICAvLyBvZiB0aGUgJ3JlY3QnLiBUaGlzIGZ1
bmN0aW9uIGFsc28gcmV0dXJucyB0aGUgb2xkIGF0dHJpYnV0ZSBjb250ZXh0LCB0byBiZSBhYmxl
IHRvIHJlc3RvcmUgaXQuLi4KLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdTdHlsZWRFbGVtZW50
KiBwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KTsK
LQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgdXBkYXRlQ2FudmFz
SXRlbSgpOyAvLyBIYW5kbGVzICJwYXRoIGRhdGEiIG9iamVjdCBjaGFuZ2VzLi4uIChub3QgZm9y
IHN0eWxlL3RyYW5zZm9ybSEpCiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBA
IFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGUKICAgICAsIFNWR1Rlc3Rz
KCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCkKLSAgICAsIG1fdGV4dExlbmd0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRIKSkK
KyAgICAsIG1fdGV4dExlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCiAgICAgLCBtX2xlbmd0
aEFkanVzdCgwKQogewogfQpAQCAtNDYsNyArNDYsNyBAQCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
On5TVkdUZXh0Q29udGVudEVsCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFRleHRM
ZW5ndGgsIHRleHRMZW5ndGgsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ci5sb2NhbE5hbWUoKSwg
bV90ZXh0TGVuZ3RoLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4
dENvbnRlbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBUZXh0TGVuZ3RoLCB0
ZXh0TGVuZ3RoLCBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIubG9jYWxOYW1lKCksIG1fdGV4dExl
bmd0aCkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVu
dCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIExlbmd0aEFkanVzdCwgbGVuZ3RoQWRq
dXN0LCBTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0ci5sb2NhbE5hbWUoKSwgbV9sZW5ndGhBZGp1
c3QpCiAKIGxvbmcgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpnZXROdW1iZXJPZkNoYXJzKCkgY29u
c3QKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnNlbGVjdFN1
YlN0cgogdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICAvL2lmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6Omxlbmd0aEFkanVzdEF0dHIpCi0gICAgLy8gICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFz
U3RyaW5nKHZhbHVlKTsKKyAgICAvLyAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgLy9lbHNlCiAgICAgewogICAgICAgICBpZiAo
U1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1
LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R1RleHRDb250ZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFRleHRM
ZW5ndGgsIHRleHRMZW5ndGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBUZXh0TGVuZ3Ro
LCB0ZXh0TGVuZ3RoKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
VGV4dENvbnRlbnRFbGVtZW50LCBpbnQsIGludCwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3Qp
CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNp
b24gMTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdUZXh0LmgiCisjaW5j
bHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUg
IlNWR1JlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHVFNwYW5FbGVtZW50LmgiCkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkocmV2
aXNpb24gMTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTMgKzU2LDEzIEBAIHZvaWQgU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6cGFyc2VNYXAKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0
ci0+dmFsdWUoKTsKICAgICAKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0
cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCks
IHRoaXMsIExNX1dJRFRIKTsKKyAgICAgICAgeEJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXBy
ZWNhdGVkU3RyaW5nKCksIHRoaXMsIExlbmd0aE1vZGVXaWR0aCk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5wYXJz
ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRoaXMsIExNX0hFSUdIVCk7CisgICAgICAgIHlC
YXNlVmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0KTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmR4QXR0
cikKLSAgICAgICAgZHhCYXNlVmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygp
LCB0aGlzLCBMTV9XSURUSCk7CisgICAgICAgIGR4QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRl
cHJlY2F0ZWRTdHJpbmcoKSwgdGhpcywgTGVuZ3RoTW9kZVdpZHRoKTsKICAgICBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmR5QXR0cikKLSAgICAgICAgZHlCYXNlVmFsdWUoKS0+
cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMTV9IRUlHSFQpOworICAgICAg
ICBkeUJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
cm90YXRlQXR0cikKICAgICAgICAgcm90YXRlQmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJl
Y2F0ZWRTdHJpbmcoKSk7CiAgICAgZWxzZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94
QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNW
R19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVudC5oIgogCkBAIC00MiwxMCArNDMsMTAg
QEAgU1ZHVXNlRWxlbWVudDo6U1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaQogICAgICwgU1ZHTGFu
Z1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZH
VVJJUmVmZXJlbmNlKCkKLSAgICAsIG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2
aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlH
SFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xl
bmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlz
LCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAg
ICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0KIApAQCAtNTMsMjMgKzU0LDIzIEBAIFNWR1VzZUVsZW1l
bnQ6On5TVkdVc2VFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05h
bWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHks
IFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgs
IFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5n
ZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xl
bmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0
dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZH
TmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdO
YW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0
aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9o
ZWlnaHQpCiAKIHZvaWQgU1ZHVXNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRy
LT52YWx1ZSgpOwogICAgIAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRy
KQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAg
ICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAg
eUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WUJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgd2lkdGhC
YXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFz
ZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBoZWln
aHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdo
dEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAg
ICBlbHNlIHsKICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTkzLDggKzk0LDggQEAgdm9pZCBTVkdVc2VFbGVt
ZW50OjpjbG9zZVJlbmRlcmVyKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZsb2F0
IF94ID0geCgpLT52YWx1ZSgpLCBfeSA9IHkoKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfdyA9IHdp
ZHRoKCktPnZhbHVlKCksIF9oID0gaGVpZ2h0KCktPnZhbHVlKCk7CisgICAgZmxvYXQgX3ggPSB4
KCkudmFsdWUoKSwgX3kgPSB5KCkudmFsdWUoKTsKKyAgICBmbG9hdCBfdyA9IHdpZHRoKCkudmFs
dWUoKSwgX2ggPSBoZWlnaHQoKS52YWx1ZSgpOwogICAgIAogICAgIFN0cmluZyB3U3RyaW5nID0g
U3RyaW5nOjpudW1iZXIoX3cpOwogICAgIFN0cmluZyBoU3RyaW5nID0gU3RyaW5nOjpudW1iZXIo
X2gpOwpAQCAtMTU4LDYgKzE1OSw2IEBAIFJlbmRlck9iamVjdCogU1ZHVXNlRWxlbWVudDo6Y3Jl
YXRlUmVuZGUKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQK
IAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2
aXNpb24gMTgyMjEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAg
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIw
LDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NW
R19TVkdVc2VFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHVXNlRWxlbWVudEltcGxfSAor
I2lmbmRlZiBTVkdVc2VFbGVtZW50X0gKKyNkZWZpbmUgU1ZHVXNlRWxlbWVudF9ICisKICNpZmRl
ZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5o
IgpAQCAtNjMsMTAgKzY0LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNW
R1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQogCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZH
TGVuZ3RoPiwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R1VzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVu
Z3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxODIyMSkKKysrIFdl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjQsOCArNTY0
LDggQEAgc3RhdGljIEN1cnNvciBzZWxlY3RDdXJzb3IoY29uc3QgTW91c2VFdgogICAgICAgICAg
ICAgaWYgKCFjaW1hZ2UpIHsKICAgICAgICAgICAgICAgICBFbGVtZW50KiBlID0gbm9kZS0+ZG9j
dW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoKCpjdXJzb3JzKVtpXS5jdXJzb3JGcmFnbWVudElkKTsK
ICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLT5oYXNUYWdOYW1lKGN1cnNvclRhZykpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaG90U3BvdC5zZXRYKGludChzdGF0aWNfY2FzdDxTVkdDdXJzb3JF
bGVtZW50Kj4oZSktPngoKS0+dmFsdWUoKSkpOwotICAgICAgICAgICAgICAgICAgICBob3RTcG90
LnNldFkoaW50KHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eSgpLT52YWx1ZSgp
KSk7CisgICAgICAgICAgICAgICAgICAgIGhvdFNwb3Quc2V0WChpbnQoc3RhdGljX2Nhc3Q8U1ZH
Q3Vyc29yRWxlbWVudCo+KGUpLT54KCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBo
b3RTcG90LnNldFkoaW50KHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eSgpLnZh
bHVlKCkpKTsKICAgICAgICAgICAgICAgICAgICAgY2ltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHQ3Vy
c29yRWxlbWVudCo+KGUpLT5jYWNoZWRJbWFnZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3Bw
CShyZXZpc2lvbiAxODIyMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIFJlbmRlckZvcmVpZ25PYmpl
Y3Q6OlJlbmRlckZvcmVpZ25PYmplY3QKIEFmZmluZVRyYW5zZm9ybSBSZW5kZXJGb3JlaWduT2Jq
ZWN0Ojp0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKQogewogICAgIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50KiBmb3JlaWduID0gc3RhdGljX2Nhc3Q8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqPihl
bGVtZW50KCkpOwotICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoZm9yZWln
bi0+eCgpLT52YWx1ZSgpLCBmb3JlaWduLT55KCktPnZhbHVlKCkpOworICAgIHJldHVybiBBZmZp
bmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoZm9yZWlnbi0+eCgpLnZhbHVlKCksIGZvcmVpZ24tPnko
KS52YWx1ZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJGb3JlaWduT2JqZWN0OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKQpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUGF0aC5jcHAJKHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyOCwxMSArNDI4LDYgQEAgdm9pZCBSZW5k
ZXJQYXRoOjpkcmF3TWFya2Vyc0lmTmVlZGVkKEdyYQogICAgIGRyYXdNYXJrZXJXaXRoRGF0YShj
b250ZXh0LCBkYXRhLnByZXZpb3VzTWFya2VyRGF0YSk7CiB9CiAKLWJvb2wgUmVuZGVyUGF0aDo6
aGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFNW
R1N0eWxlZEVsZW1lbnQqPihlbGVtZW50KCkpLT5oYXNQZXJjZW50YWdlVmFsdWVzKCk7Ci19Ci0K
IH0KIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJQYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUGF0aC5oCShy
ZXZpc2lvbiAxODIyMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTIsOCArOTIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdN
YXJrZXJzSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
UGF0aCYpIGNvbnN0OwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHN0cm9rZUJCb3goKSBjb25zdDsK
IAotICAgIGJvb2wgaGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0OwotCiBwcml2YXRlOgogICAg
IEZsb2F0UG9pbnQgbWFwQWJzb2x1dGVQb2ludFRvTG9jYWwoY29uc3QgRmxvYXRQb2ludCYpIGNv
bnN0OwogICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3Bw
CShyZXZpc2lvbiAxODIyMSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5l
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFJlbmRlclNWR0Nv
bnRhaW5lcjo6bGF5b3V0KCkKIAogICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxk
KCk7CiAgICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgIGlmICghY2hpbGQtPmlzUmVuZGVyUGF0
aCgpIHx8IHN0YXRpY19jYXN0PFJlbmRlclBhdGgqPihjaGlsZCktPmhhc1BlcmNlbnRhZ2VWYWx1
ZXMoKSkKKyAgICAgICAgaWYgKCFjaGlsZC0+aXNSZW5kZXJQYXRoKCkpCiAgICAgICAgICAgICBj
aGlsZC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nKCk7CiAgICAgfQpAQCAtMjA2LDE1ICsyMDYsMTUgQEAgdm9pZCBSZW5kZXJTVkdDb250
YWluZXI6OmNhbGNWaWV3cG9ydCgpCiAgICAgU1ZHRWxlbWVudCogc3ZnZWxlbSA9IHN0YXRpY19j
YXN0PFNWR0VsZW1lbnQqPihlbGVtZW50KCkpOwogICAgIGlmIChzdmdlbGVtLT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpzdmdUYWcpKSB7CiAgICAgICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRp
Y19jYXN0PFNWR1NWR0VsZW1lbnQqPihlbGVtZW50KCkpOwotICAgICAgICBkb3VibGUgeCA9IHN2
Zy0+eCgpLT52YWx1ZSgpOwotICAgICAgICBkb3VibGUgeSA9IHN2Zy0+eSgpLT52YWx1ZSgpOwot
ICAgICAgICBkb3VibGUgdyA9IHN2Zy0+d2lkdGgoKS0+dmFsdWUoKTsKLSAgICAgICAgZG91Ymxl
IGggPSBzdmctPmhlaWdodCgpLT52YWx1ZSgpOworICAgICAgICBkb3VibGUgeCA9IHN2Zy0+eCgp
LnZhbHVlKCk7CisgICAgICAgIGRvdWJsZSB5ID0gc3ZnLT55KCkudmFsdWUoKTsKKyAgICAgICAg
ZG91YmxlIHcgPSBzdmctPndpZHRoKCkudmFsdWUoKTsKKyAgICAgICAgZG91YmxlIGggPSBzdmct
PmhlaWdodCgpLnZhbHVlKCk7CiAgICAgICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3QoeCwgeSwg
dywgaCk7CiAgICAgfSBlbHNlIGlmIChzdmdlbGVtLT5oYXNUYWdOYW1lKFNWR05hbWVzOjptYXJr
ZXJUYWcpKSB7CiAgICAgICAgIFNWR01hcmtlckVsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNW
R01hcmtlckVsZW1lbnQqPihlbGVtZW50KCkpOwotICAgICAgICAgICAgZG91YmxlIHcgPSBzdmct
Pm1hcmtlcldpZHRoKCktPnZhbHVlKCk7Ci0gICAgICAgIGRvdWJsZSBoID0gc3ZnLT5tYXJrZXJI
ZWlnaHQoKS0+dmFsdWUoKTsKKyAgICAgICAgZG91YmxlIHcgPSBzdmctPm1hcmtlcldpZHRoKCku
dmFsdWUoKTsKKyAgICAgICAgZG91YmxlIGggPSBzdmctPm1hcmtlckhlaWdodCgpLnZhbHVlKCk7
CiAgICAgICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3QoMCwgMCwgdywgaCk7CiAgICAgfQogfQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2aXNpb24gMTgyMjEpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyNCw3ICsyMjQsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQoKQogRmxvYXRSZWN0
IFJlbmRlclNWR0ltYWdlOjpyZWxhdGl2ZUJCb3goYm9vbCBpbmNsdWRlU3Ryb2tlKSBjb25zdAog
ewogICAgIFNWR0ltYWdlRWxlbWVudCAqaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1l
bnQqPihub2RlKCkpOwotICAgIHJldHVybiBGbG9hdFJlY3QoaW1hZ2UtPngoKS0+dmFsdWUoKSwg
aW1hZ2UtPnkoKS0+dmFsdWUoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIHJldHVybiBGbG9h
dFJlY3QoaW1hZ2UtPngoKS52YWx1ZSgpLCBpbWFnZS0+eSgpLnZhbHVlKCksIHdpZHRoKCksIGhl
aWdodCgpKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKENhY2hlZElt
YWdlKiBpbWFnZSkKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjppbWFn
ZUNoYW5nZWQoQ2FjaGVkCiBJbnRSZWN0IFJlbmRlclNWR0ltYWdlOjpnZXRBYnNvbHV0ZVJlcGFp
bnRSZWN0KCkKIHsKICAgICBTVkdJbWFnZUVsZW1lbnQgKmltYWdlID0gc3RhdGljX2Nhc3Q8U1ZH
SW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSBhYnNv
bHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoRmxvYXRSZWN0KGltYWdlLT54KCktPnZhbHVlKCksIGlt
YWdlLT55KCktPnZhbHVlKCksIHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgRmxvYXRSZWN0IHJl
cGFpbnRSZWN0ID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0UmVjdChpbWFnZS0+
eCgpLnZhbHVlKCksIGltYWdlLT55KCkudmFsdWUoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKIAog
ICAgIC8vIEZpbHRlcnMgY2FuIGV4cGFuZCB0aGUgYm91bmRpbmcgYm94CiAgICAgU1ZHUmVzb3Vy
Y2VGaWx0ZXIgKmZpbHRlciA9IGdldEZpbHRlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3Zn
U3R5bGUoKS0+ZmlsdGVyKCkuc3Vic3RyaW5nKDEpKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lk
IFJlbmRlclNWR0ltYWdlOjphYnNvbHV0ZVJlY3RzKFZlY3RvCiBBZmZpbmVUcmFuc2Zvcm0gUmVu
ZGVyU1ZHSW1hZ2U6OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpCiB7CiAgICAgU1ZHSW1hZ2VF
bGVtZW50ICppbWFnZSA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7Ci0g
ICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShpbWFnZS0+eCgpLT52YWx1ZSgp
LCBpbWFnZS0+eSgpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCkudHJh
bnNsYXRlKGltYWdlLT54KCkudmFsdWUoKSwgaW1hZ2UtPnkoKS52YWx1ZSgpKTsKIH0KIAogfQpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlzaW9uIDE4MjIxKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDggKzY2LDggQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpsYXlvdXQoKQogICAgICAgICBvbGRCb3Vu
ZHMgPSBtX2Fic29sdXRlQm91bmRzOwogICAgIFNWR1RleHRFbGVtZW50KiB0ZXh0ID0gc3RhdGlj
X2Nhc3Q8U1ZHVGV4dEVsZW1lbnQqPihlbGVtZW50KCkpOwogICAgIC8vRklYTUU6ICBuZWVkIHRv
IGFsbG93IGZsb2F0aW5nIHBvaW50IHBvc2l0aW9ucwotICAgIGludCB4T2Zmc2V0ID0gKGludCko
dGV4dC0+eCgpLT5nZXRGaXJzdCgpID8gdGV4dC0+eCgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpIDog
MCk7Ci0gICAgaW50IHlPZmZzZXQgPSAoaW50KSh0ZXh0LT55KCktPmdldEZpcnN0KCkgPyB0ZXh0
LT55KCktPmdldEZpcnN0KCktPnZhbHVlKCkgOiAwKTsKKyAgICBpbnQgeE9mZnNldCA9IChpbnQp
KHRleHQtPngoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpKTsKKyAgICBpbnQgeU9mZnNldCA9IChpbnQp
KHRleHQtPnkoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpKTsKICAgICBzZXRQb3MoeE9mZnNldCwgeU9m
ZnNldCk7CiAgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOwogICAgIApJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDE4MjIxKQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw5ICsx
MjUsOCBAQCBzdGF0aWMgYm9vbCB0cmFuc2xhdGVCb3goSW5saW5lQm94KiBib3gsCiAgICAgICAg
IElubGluZUZsb3dCb3gqIGZsb3cgPSBzdGF0aWNfY2FzdDxJbmxpbmVGbG93Qm94Kj4oYm94KTsK
ICAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCogdGV4dCA9IHN0YXRpY19jYXN0PFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqPihib3gtPm9iamVjdCgpLT5lbGVtZW50KCkpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKHRvcExldmVsfHwhKHRleHQtPngoKS0+Z2V0Rmlyc3QoKSB8fCB0
ZXh0LT55KCktPmdldEZpcnN0KCkgfHwgCi0gICAgICAgICAgICAgICAgICAgICAgICAodGV4dC0+
ZHgoKS0+Z2V0Rmlyc3QoKSAmJiB0ZXh0LT5keCgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpKSB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgKHRleHQtPmR5KCktPmdldEZpcnN0KCkgJiYgdGV4dC0+
ZHkoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSkpKSB7CisgICAgICAgIGlmICh0b3BMZXZlbCB8fCAh
KHRleHQtPngoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpIHx8IHRleHQtPnkoKS0+Z2V0Rmlyc3QoKS52
YWx1ZSgpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtPmR4KCktPmdldEZpcnN0
KCkudmFsdWUoKSB8fCB0ZXh0LT5keSgpLT5nZXRGaXJzdCgpLnZhbHVlKCkpKSB7CiAgICAgICAg
ICAgICBib3gtPnNldFhQb3MoYm94LT54UG9zKCkgKyB4KTsKICAgICAgICAgICAgIGJveC0+c2V0
WVBvcyhib3gtPnlQb3MoKSArIHkpOwogICAgICAgICAgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIg
PSBmbG93LT5maXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIApA
QCAtMTY4LDEyICsxNjcsMTMgQEAgc3RhdGljIGludCBwbGFjZVBvc2l0aW9uZWRCb3hlc0hvcml6
b250YQogICAgICAgICAgICAgYXNzZXJ0KGN1cnItPm9iamVjdCgpLT5pc0lubGluZUZsb3coKSk7
CiAgICAgICAgICAgICBJbmxpbmVGbG93Qm94KiBmbG93ID0gc3RhdGljX2Nhc3Q8SW5saW5lRmxv
d0JveCo+KGN1cnIpOwogICAgICAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCogdGV4
dCA9IHN0YXRpY19jYXN0PFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqPihmbG93LT5vYmplY3Qo
KS0+ZWxlbWVudCgpKTsKLSAgICAgICAgICAgIHggKz0gKGludCkodGV4dC0+ZHgoKS0+Z2V0Rmly
c3QoKSA/IHRleHQtPmR4KCktPmdldEZpcnN0KCktPnZhbHVlKCkgOiAwKTsKLSAgICAgICAgICAg
IGlmICh0ZXh0LT54KCktPmdldEZpcnN0KCkpCi0gICAgICAgICAgICAgICAgeCA9IChpbnQpKHRl
eHQtPngoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSAtIHhQb3MpOwotICAgICAgICAgICAgaWYgKHRl
eHQtPngoKS0+Z2V0Rmlyc3QoKSB8fCB0ZXh0LT55KCktPmdldEZpcnN0KCkgfHwgCi0gICAgICAg
ICAgICAgICAgKHRleHQtPmR4KCktPmdldEZpcnN0KCkgJiYgdGV4dC0+ZHgoKS0+Z2V0Rmlyc3Qo
KS0+dmFsdWUoKSkgfHwKLSAgICAgICAgICAgICAgICAodGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKSAm
JiB0ZXh0LT5keSgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpKSkgeworICAgICAgICAgICAgeCArPSAo
aW50KSh0ZXh0LT5keCgpLT5nZXRGaXJzdCgpLnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKHRl
eHQtPngoKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkKKyAgICAgICAgICAgICAgICB4ID0gKGludCko
dGV4dC0+eCgpLT5nZXRGaXJzdCgpLnZhbHVlKCkgLSB4UG9zKTsKKyAgICAgICAgICAgIGlmICh0
ZXh0LT54KCktPm51bWJlck9mSXRlbXMoKSA+IDAgfHwKKyAgICAgICAgICAgICAgICB0ZXh0LT55
KCktPm51bWJlck9mSXRlbXMoKSA+IDAgfHwKKyAgICAgICAgICAgICAgICB0ZXh0LT5keCgpLT5u
dW1iZXJPZkl0ZW1zKCkgPiAwIHx8CisgICAgICAgICAgICAgICAgdGV4dC0+ZHkoKS0+bnVtYmVy
T2ZJdGVtcygpID4gMCkgewogICAgICAgICAgICAgICAgIHNlZW5Qb3NpdGlvbmVkRWxlbWVudCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgIGludCBpZ25vcmVYLCBpZ25vcmVZOwpAQCAtMjM2LDkgKzIzNiw5IEBAIHN0YXRp
YyB2b2lkIHBsYWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFic0IKICAgICBmb3IgKElubGluZUJveCog
Y3VyciA9IGZsb3ctPmZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRPbkxpbmUo
KSkgewogICAgICAgICBpZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpIHsKICAgICAgICAgICAg
IFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqIHRleHQgPSBzdGF0aWNfY2FzdDxTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50Kj4oY3Vyci0+b2JqZWN0KCktPmVsZW1lbnQoKSk7Ci0gICAgICAgICAg
ICBiYXNlbGluZSArPSAoaW50KSh0ZXh0LT5keSgpLT5nZXRGaXJzdCgpID8gdGV4dC0+ZHkoKS0+
Z2V0Rmlyc3QoKS0+dmFsdWUoKSA6IDApOwotICAgICAgICAgICAgaWYgKHRleHQtPnkoKS0+Z2V0
Rmlyc3QoKSkgewotICAgICAgICAgICAgICAgIGJhc2VsaW5lID0gKGludCkodGV4dC0+eSgpLT5n
ZXRGaXJzdCgpLT52YWx1ZSgpIC0geVBvcyk7CisgICAgICAgICAgICBiYXNlbGluZSArPSAoaW50
KSh0ZXh0LT5keSgpLT5nZXRGaXJzdCgpLnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKHRleHQt
PnkoKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkgeworICAgICAgICAgICAgICAgIGJhc2VsaW5lID0g
KGludCkodGV4dC0+eSgpLT5nZXRGaXJzdCgpLnZhbHVlKCkgLSB5UG9zKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHBsYWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFic0Jhc2VsaW5lKHN0YXRp
Y19jYXN0PElubGluZUZsb3dCb3gqPihjdXJyKSwgaGVpZ2h0T2ZCbG9jaywgbWluX3ksIG1heF95
LCBiYXNlbGluZSwgeVBvcyk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11880</attachid>
            <date>2006-12-16 06:23:57 -0800</date>
            <delta_ts>2006-12-16 13:01:19 -0800</delta_ts>
            <desc>No regressions</desc>
            <filename>11813-2.diff</filename>
            <type>text/plain</type>
            <size>161385</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCShyZXZpc2lv
biAxODI0NCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG15ICVwcmltaXRpdmVUeXBlSGFzaCA9ICgi
aW50IiA9PiAxLCAic2gKICAgICAgICAgICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyIg
PT4gMSwgImZsb2F0IiA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkb3VibGUiID0+
IDEsICJib29sZWFuIiA9PiAxLCAidm9pZCIgPT4gMSk7CiAKLW15ICVwb2RUeXBlSGFzaCA9ICgi
UkdCQ29sb3IiID0+IDEsICJTVkdQb2ludCIgPT4gMSwgIlNWR1JlY3QiID0+IDEsICJTVkdOdW1i
ZXIiID0+IDEsICJTVkdNYXRyaXgiID0+IDEpOworbXkgJXBvZFR5cGVIYXNoID0gKCJSR0JDb2xv
ciIgPT4gMSwgIlNWR0xlbmd0aCIgPT4gMSwgIlNWR1BvaW50IiA9PiAxLCAiU1ZHUmVjdCIgPT4g
MSwgIlNWR051bWJlciIgPT4gMSwgIlNWR01hdHJpeCIgPT4gMSk7CiAgCiBteSAlc3RyaW5nVHlw
ZUhhc2ggPSAoIkRPTVN0cmluZyIgPT4gMSwgIkF0b21pY1N0cmluZyIgPT4gMSk7CiAKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24g
MTgyNDQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDk4LDYgKzEwOTgsNyBAQCBzdWIgR2V0TmF0aXZlVHlwZQogICAg
IHJldHVybiAiRmxvYXRSZWN0IiBpZiAkdHlwZSBlcSAiU1ZHUmVjdCI7CiAgICAgcmV0dXJuICJG
bG9hdFBvaW50IiBpZiAkdHlwZSBlcSAiU1ZHUG9pbnQiOwogICAgIHJldHVybiAiQWZmaW5lVHJh
bnNmb3JtIiBpZiAkdHlwZSBlcSAiU1ZHTWF0cml4IjsKKyAgICByZXR1cm4gIlNWR0xlbmd0aCIg
aWYgJHR5cGUgZXEgIlNWR0xlbmd0aCI7CiAgICAgcmV0dXJuICJkb3VibGUiIGlmICR0eXBlIGVx
ICJTVkdOdW1iZXIiOwogICAgIHJldHVybiAiU1ZHUGFpbnQ6OlNWR1BhaW50VHlwZSIgaWYgJHR5
cGUgZXEgIlNWR1BhaW50VHlwZSI7CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvbWlzYy9LQ2FudmFz
UmVuZGVyaW5nU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvbWlzYy9LQ2Fu
dmFzUmVuZGVyaW5nU3R5bGUuY3BwCShyZXZpc2lvbiAxODI0NCkKKysrIFdlYkNvcmUva3N2ZzIv
bWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXJTb2xpZC5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKKyNpbmNsdWRlICJTVkdIZWxwZXIu
aCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgog
I2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKQEAgLTEwOCwxMSArMTA5LDExIEBAIGRvdWJs
ZSBLU1ZHUGFpbnRlckZhY3Rvcnk6OmNzc1ByaW1pdGl2ZVQKICAgICAgICAgcmV0dXJuIGRlZmF1
bHRWYWx1ZTsKIAogICAgIGlmIChjc3NUeXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSkgewotICAgICAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZH
RWxlbWVudCo+KGl0ZW0tPmVsZW1lbnQoKSk7CisgICAgICAgIFNWR1N0eWxlZEVsZW1lbnQqIGVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oaXRlbS0+ZWxlbWVudCgpKTsK
ICAgICAgICAgU1ZHRWxlbWVudCogdmlld3BvcnRFbGVtZW50ID0gKGVsZW1lbnQgPyBlbGVtZW50
LT52aWV3cG9ydEVsZW1lbnQoKSA6IDApOwogICAgICAgICBpZiAodmlld3BvcnRFbGVtZW50KSB7
CiAgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gcHJpbWl0aXZlLT5nZXRGbG9hdFZhbHVlKCkg
LyAxMDAuMDsKLSAgICAgICAgICAgIHJldHVybiBTVkdIZWxwZXI6OlBlcmNlbnRhZ2VPZlZpZXdw
b3J0KHJlc3VsdCwgdmlld3BvcnRFbGVtZW50LCBMTV9PVEhFUik7CisgICAgICAgICAgICByZXR1
cm4gU1ZHTGVuZ3RoOjpQZXJjZW50YWdlT2ZWaWV3cG9ydChyZXN1bHQsIGVsZW1lbnQsIExlbmd0
aE1vZGVPdGhlcik7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0FuaW1hdGVkVGVtcGxhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdBbmltYXRlZFRlbXBsYXRlLmgJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8Ym9v
bD4gU1ZHQW5pbWF0ZWRCb29sZWFuOwogICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxp
bnQ+IFNWR0FuaW1hdGVkRW51bWVyYXRpb247CiAgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBs
YXRlPGxvbmc+IFNWR0FuaW1hdGVkSW50ZWdlcjsKLSAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVt
cGxhdGU8U1ZHTGVuZ3RoKj4gU1ZHQW5pbWF0ZWRMZW5ndGg7CisgICAgdHlwZWRlZiBTVkdBbmlt
YXRlZFRlbXBsYXRlPFNWR0xlbmd0aD4gU1ZHQW5pbWF0ZWRMZW5ndGg7CiAgICAgdHlwZWRlZiBT
VkdBbmltYXRlZFRlbXBsYXRlPFNWR0xlbmd0aExpc3QqPiBTVkdBbmltYXRlZExlbmd0aExpc3Q7
CiAgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGRvdWJsZT4gU1ZHQW5pbWF0ZWROdW1i
ZXI7CiAgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR051bWJlckxpc3QqPiBTVkdB
bmltYXRlZE51bWJlckxpc3Q7IApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKQEAgLTIxLDEyICsyMSwxMiBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAj
aWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdDaXJjbGVFbGVtZW50LmgiCiAKICNpbmNs
dWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCi0jaW5jbHVkZSAiU1ZH
TGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzYsOSArMzYsOSBAQCBTVkdDaXJjbGVFbGVtZW50OjpTVkdDaXJjbGVFbGVtZW50KGNvbnN0
CiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX2N4KG5ldyBTVkdMZW5ndGgodGhpcywgTE1f
V0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fY3kobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcihuZXcgU1ZHTGVuZ3Ro
KHRoaXMsIExNX09USEVSLCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX2N4KFNWR0xlbmd0
aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpKQorICAgICwgbV9jeShTVkdMZW5ndGgodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCkpCisgICAgLCBtX3IoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVPdGhl
cikpCiB7CiB9CiAKQEAgLTQ2LDE5ICs0NiwxOSBAQCBTVkdDaXJjbGVFbGVtZW50Ojp+U1ZHQ2ly
Y2xlRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0Np
cmNsZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVz
OjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgQ3ks
IGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5LmdldCgpKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFIsIHIsIFNWR05hbWVzOjpyQXR0ci5sb2NhbE5hbWUoKSwgbV9yLmdldCgpKQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLmxvY2FsTmFtZSgpLCBt
X2N4KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFt
ZSgpLCBtX2N5KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUiwgciwgU1ZHTmFtZXM6OnJBdHRyLmxvY2Fs
TmFtZSgpLCBtX3IpCiAKIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN4
QXR0cikKLSAgICAgICAgY3hCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Cisg
ICAgICAgIHNldEN4QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZh
bHVlKSk7ICAgICAgIAogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3lB
dHRyKQotICAgICAgICBjeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAg
ICAgICAgc2V0Q3lCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyQXR0cikKLSAg
ICAgICAgckJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0
UkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSkpOwogICAg
IGVsc2UgewogICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzIsMzcgKzcyLDExIEBAIHZvaWQgU1ZHQ2lyY2xl
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKIAogUGF0aCBTVkdDaXJjbGVFbGVtZW50Ojp0b1Bh
dGhEYXRhKCkgY29uc3QKIHsKLSAgICBmbG9hdCBfY3ggPSBjeCgpLT52YWx1ZSgpLCBfY3kgPSBj
eSgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF9yID0gcigpLT52YWx1ZSgpOwotCi0gICAgcmV0dXJu
IFBhdGg6OmNyZWF0ZUNpcmNsZShGbG9hdFBvaW50KF9jeCwgX2N5KSwgX3IpOwotfQotCi1jb25z
dCBTVkdTdHlsZWRFbGVtZW50KiBTVkdDaXJjbGVFbGVtZW50OjpwdXNoQXR0cmlidXRlQ29udGV4
dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KQotewotICAgIC8vIEFsbCBhdHRyaWJ1
dGUncyBjb250ZXh0cyBhcmUgZXF1YWwgKHNvIGp1c3QgdGFrZSB0aGUgb25lIGZyb20gJ2N4Jyku
Ci0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcmVzdG9yZSA9IGN4KCktPmNvbnRleHQoKTsK
LQotICAgIGN4KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgY3koKS0+c2V0Q29udGV4dChj
b250ZXh0KTsKLSAgICByKCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgCi0gICAgU1ZHU3R5
bGVkRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29udGV4dCk7Ci0gICAgcmV0dXJuIHJl
c3RvcmU7Ci19Ci0KLWJvb2wgU1ZHQ2lyY2xlRWxlbWVudDo6aGFzUGVyY2VudGFnZVZhbHVlcygp
IGNvbnN0Ci17Ci0gICAgaWYgKGN4KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVO
R1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIGN5KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVu
Z3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHIoKS0+dW5pdFR5cGUo
KSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBQYXRoOjpjcmVhdGVDaXJj
bGUoRmxvYXRQb2ludChjeCgpLnZhbHVlKCksIGN5KCkudmFsdWUoKSksIHIoKS52YWx1ZSgpKTsK
IH0KIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8g
dmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkocmV2
aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIw
LDggKzIwLDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5k
ZWYgS1NWR19TVkdDaXJjbGVFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHQ2lyY2xlRWxl
bWVudEltcGxfSAorI2lmbmRlZiBTVkdDaXJjbGVFbGVtZW50X0gKKyNkZWZpbmUgU1ZHQ2lyY2xl
RWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtMzEsNyArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZQogewotICAgIGNsYXNzIFNWR0xlbmd0aDsKICAgICBjbGFzcyBTVkdDaXJjbGVFbGVtZW50IDog
cHVibGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdMYW5nU3BhY2UsCkBAIC00OSwyNCArNDksMjAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0
eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQog
ICAgICAgICB2aXJ0dWFsIFBhdGggdG9QYXRoRGF0YSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1
YWwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZH
U3R5bGVkRWxlbWVudCogY29udGV4dCk7Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1
YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlz
OyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdDsK
LQogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJl
ZlB0cjxTVkdMZW5ndGg+LCBDeCwgY3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwg
Q3ksIGN5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xl
RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFIsIHIpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgs
IFNWR0xlbmd0aCwgQ3gsIGN4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN5LCBjeSkKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xl
bmd0aCwgU1ZHTGVuZ3RoLCBSLCByKQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYKKyNlbmRpZiAvLyBTVkdDaXJjbGVFbGVt
ZW50X0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29y
RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vy
c29yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgotICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9y
Zz4KLSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3
aWxkZm94QGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKIApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAj
aWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdDdXJzb3JFbGVtZW50LmgiCiAKQEAgLTQw
LDggKzQxLDggQEAgU1ZHQ3Vyc29yRWxlbWVudDo6U1ZHQ3Vyc29yRWxlbWVudChjb25zdAogICAg
ICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdVUklSZWZlcmVuY2Uo
KQogICAgICwgQ2FjaGVkUmVzb3VyY2VDbGllbnQoKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgo
MCwgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVuZ3Ro
KDAsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94KDAsIExlbmd0aE1v
ZGVXaWR0aCkKKyAgICAsIG1feSgwLCBMZW5ndGhNb2RlSGVpZ2h0KQogewogICAgIG1fY2FjaGVk
SW1hZ2UgPSAwOwogfQpAQCAtNTIsMTYgKzUzLDE2IEBAIFNWR0N1cnNvckVsZW1lbnQ6On5TVkdD
dXJzb3JFbGVtZW50KCkKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+ZGVyZWYodGhpcyk7CiB9CiAK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0
aCosIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1f
eC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVsZW1lbnQs
IFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxO
YW1lKCksIG1feS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNv
ckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0
ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ3Vy
c29yRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlB
dHRyLmxvY2FsTmFtZSgpLCBtX3kpCiAKIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewotICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4
QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAg
ICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgoMCwgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAg
IHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNl
VmFsdWUoU1ZHTGVuZ3RoKDAsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC04Miw2ICs4Myw2IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWIKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuaAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJz
b3JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgotICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
LSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxk
Zm94QGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKIApAQCAtMjAsMTIgKzIwLDE0IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHQ3Vyc29yRWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZH
X1NWR0N1cnNvckVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHQ3Vyc29yRWxlbWVudF9ICisjZGVm
aW5lIFNWR0N1cnNvckVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUg
IkltYWdlLmgiCiAKKyNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIK
QEAgLTM0LDggKzM2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAgICBjbGFzcyBTVkdM
ZW5ndGg7Ci0KICAgICBjbGFzcyBTVkdDdXJzb3JFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwKQEAgLTYwLDggKzYwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElP
TlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCosIFJl
ZlB0cjxTVkdMZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFks
IHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDdXJzb3JFbGVt
ZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZ
LCB5KQogCiAgICAgICAgIENhY2hlZEltYWdlICptX2NhY2hlZEltYWdlOwogICAgIH07CkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4
MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2ICsyMSw3
IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2lu
Y2x1ZGUgIlNWR0VsbGlwc2VFbGVtZW50LmgiCiAKQEAgLTM2LDEwICszNywxMCBAQCBTVkdFbGxp
cHNlRWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1lbnQoY29uCiAgICAgLCBTVkdUZXN0cygpCiAgICAg
LCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0g
ICAgLCBtX2N4KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgp
KSkKLSAgICAsIG1fY3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxl
bWVudCgpKSkKLSAgICAsIG1fcngobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3Bv
cnRFbGVtZW50KCkpKQotICAgICwgbV9yeShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwg
dmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV9jeCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisg
ICAgLCBtX2N5KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3J4KHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkKKyAgICAsIG1fcnkodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0gICAg
CiAKQEAgLTQ3LDIyICs0OCwyMiBAQCBTVkdFbGxpcHNlRWxlbWVudDo6flNWR0VsbGlwc2VFbGVt
ZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVs
ZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0
dHIubG9jYWxOYW1lKCksIG1fY3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwg
U1ZHTmFtZXM6OmN5QXR0ci5sb2NhbE5hbWUoKSwgbV9jeS5nZXQoKSkKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgUngsIHJ4LCBTVkdOYW1lczo6cnhBdHRyLmxvY2FsTmFtZSgpLCBtX3J4LmdldCgpKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0
aCosIExlbmd0aCwgbGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIubG9jYWxOYW1lKCks
IG1fcnkuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxl
bWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRy
LmxvY2FsTmFtZSgpLCBtX2N4KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxs
aXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6
OmN5QXR0ci5sb2NhbE5hbWUoKSwgbV9jeSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSeCwgcngsIFNW
R05hbWVzOjpyeEF0dHIubG9jYWxOYW1lKCksIG1fcngpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUnks
IHJ5LCBTVkdOYW1lczo6cnlBdHRyLmxvY2FsTmFtZSgpLCBtX3J5KQogCiB2b2lkIFNWR0VsbGlw
c2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3hBdHRyKQotICAgICAgICBjeEJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjpjeUF0dHIpCi0gICAgICAgIGN5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFs
dWUpOwotICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAgICAgICAg
cnhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Ci0gICAgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6cnlBdHRyKQotICAgICAgICByeUJhc2VWYWx1ZSgpLT5zZXRWYWx1
ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0Q3hCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMs
IExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6OmN5QXR0cikKKyAgICAgICAgc2V0Q3lCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjpyeEF0dHIpCisgICAgICAgIHNldFJ4QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjpyeUF0dHIpCisgICAgICAgIHNldFJ5QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoU1ZH
VGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNzYsMzkgKzc3LDEyIEBAIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmkKIAogUGF0aCBTVkdFbGxpcHNlRWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CiB7Ci0gICAg
ZmxvYXQgX2N4ID0gY3goKS0+dmFsdWUoKSwgX2N5ID0gY3koKS0+dmFsdWUoKTsKLSAgICBmbG9h
dCBfcnggPSByeCgpLT52YWx1ZSgpLCBfcnkgPSByeSgpLT52YWx1ZSgpOwotCi0gICAgcmV0dXJu
IFBhdGg6OmNyZWF0ZUVsbGlwc2UoRmxvYXRQb2ludChfY3gsIF9jeSksIF9yeCwgX3J5KTsKKyAg
ICByZXR1cm4gUGF0aDo6Y3JlYXRlRWxsaXBzZShGbG9hdFBvaW50KGN4KCkudmFsdWUoKSwgY3ko
KS52YWx1ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeCgpLnZhbHVlKCks
IHJ5KCkudmFsdWUoKSk7CiB9CiAKLWNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIFNWR0VsbGlwc2VF
bGVtZW50OjpwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250
ZXh0KQotewotICAgIC8vIEFsbCBhdHRyaWJ1dGUncyBjb250ZXh0cyBhcmUgZXF1YWwgKHNvIGp1
c3QgdGFrZSB0aGUgb25lIGZyb20gJ2N4JykuCi0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCog
cmVzdG9yZSA9IGN4KCktPmNvbnRleHQoKTsKLQotICAgIGN4KCktPnNldENvbnRleHQoY29udGV4
dCk7Ci0gICAgY3koKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICByeCgpLT5zZXRDb250ZXh0
KGNvbnRleHQpOwotICAgIHJ5KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0KLSAgICBTVkdTdHls
ZWRFbGVtZW50OjpwdXNoQXR0cmlidXRlQ29udGV4dChjb250ZXh0KTsKLSAgICByZXR1cm4gcmVz
dG9yZTsKIH0KIAotYm9vbCBTVkdFbGxpcHNlRWxlbWVudDo6aGFzUGVyY2VudGFnZVZhbHVlcygp
IGNvbnN0Ci17Ci0gICAgaWYgKGN4KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVO
R1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIGN5KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVu
Z3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHJ4KCktPnVuaXRUeXBl
KCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHJ5
KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfQotCi0vLyB2
aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCShyZXZpc2lvbiAxODI0NCkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFz
IFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAg
ICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAg
ICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdFbGxp
cHNlRWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0VsbGlwc2VFbGVtZW50SW1wbF9ICisj
aWZuZGVmIFNWR0VsbGlwc2VFbGVtZW50X0gKKyNkZWZpbmUgU1ZHRWxsaXBzZUVsZW1lbnRfSAor
CiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQuaCIKQEAgLTMxLDcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAgICBj
bGFzcyBTVkdMZW5ndGg7CiAgICAgY2xhc3MgU1ZHRWxsaXBzZUVsZW1lbnQgOiBwdWJsaWMgU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
U1ZHTGFuZ1NwYWNlLApAQCAtNDksMjAgKzQ5LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyBy
ZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAg
dmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnQqIGNvbnRleHQpOwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3Q7Ci0KICAgICBw
cml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogIAotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxT
VkdMZW5ndGg+LCBDeCwgY3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEN5LCBj
eSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVt
ZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgUngsIHJ4KQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCos
IFJlZlB0cjxTVkdMZW5ndGg+LCBSeSwgcnkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN4LCBj
eCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVt
ZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgQ3ksIGN5KQorICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3Ro
LCBSeCwgcngpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxp
cHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFJ5LCByeSkKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmNwcAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRm
b3hAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2Ft
LndlaW5pZ0BnbWFpbC5jb20+CiAKQEAgLTQzLDIxICs0MywyMCBAQCBTVkdGaWx0ZXJFbGVtZW50
OjpTVkdGaWx0ZXJFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCkKICAgICAsIG1fZmlsdGVyVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09C
SkVDVEJPVU5ESU5HQk9YKQogICAgICwgbV9wcmltaXRpdmVVbml0cyhTVkdVbml0VHlwZXM6OlNW
R19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgo
dGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBT
VkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVp
Z2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisg
ICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1f
aGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiAgICAgLCBtX2ZpbHRlclJlc1goMCkKICAg
ICAsIG1fZmlsdGVyUmVzWSgwKQotCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIGF0dHJpYnV0ZSBp
cyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIi0xMCUiIHdl
cmUgc3BlY2lmaWVkLgotICAgIG1feC0+c2V0VmFsdWVBc1N0cmluZygiLTEwJSIpOwotICAgIG1f
eS0+c2V0VmFsdWVBc1N0cmluZygiLTEwJSIpOwotCisgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpKTsKKyAgICBzZXRZQmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIpKTsKKyAKICAgICAvLyBTcGVj
OiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYg
YSB2YWx1ZSBvZiAiMTIwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgbV93aWR0aC0+c2V0VmFsdWVB
c1N0cmluZygiMTIwJSIpOwotICAgIG1faGVpZ2h0LT5zZXRWYWx1ZUFzU3RyaW5nKCIxMjAlIik7
CisgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwg
IjEyMCUiKSk7CisgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0LCAiMTIwJSIpKTsKIH0KIAogU1ZHRmlsdGVyRWxlbWVudDo6flNWR0ZpbHRlckVs
ZW1lbnQoKQpAQCAtNjYsMTAgKzY1LDEwIEBAIFNWR0ZpbHRlckVsZW1lbnQ6On5TVkdGaWx0ZXJF
bGVtZW50KCkKIAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVu
dCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0
cywgU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9maWx0ZXJVbml0cykK
IEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGludCwgRW51
bWVyYXRpb24sIGVudW1lcmF0aW9uLCBQcmltaXRpdmVVbml0cywgcHJpbWl0aXZlVW5pdHMsIFNW
R05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIubG9jYWxOYW1lKCksIG1fcHJpbWl0aXZlVW5pdHMp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5n
dGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBt
X3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50
LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2Fs
TmFtZSgpLCBtX3kuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0
ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdO
YW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBs
ZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwg
bV9oZWlnaHQuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJF
bGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIu
bG9jYWxOYW1lKCksIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRl
ckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0
ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmls
dGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdO
YW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
SGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdo
dCkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcs
IEludGVnZXIsIGludGVnZXIsIEZpbHRlclJlc1gsIGZpbHRlclJlc1gsICJmaWx0ZXJSZXNYIiwg
bV9maWx0ZXJSZXNYKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxl
bWVudCwgbG9uZywgSW50ZWdlciwgaW50ZWdlciwgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSwgImZp
bHRlclJlc1kiLCBtX2ZpbHRlclJlc1kpCiAKQEAgLTkxLDEzICs5MCwxMyBAQCB2b2lkIFNWR0Zp
bHRlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09
ICJvYmplY3RCb3VuZGluZ0JveCIpCiAgICAgICAgICAgICBzZXRQcmltaXRpdmVVbml0c0Jhc2VW
YWx1ZShTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJh
c2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1
ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+
c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3Ro
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNl
dFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1
cm47CiAgICAgICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIp
KSByZXR1cm47CkBAIC0xMTcsMTMgKzExNiwzMSBAQCBTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxl
bWVudDo6Y2FudmFzUmVzCiAKICAgICBib29sIGZpbHRlckJCb3hNb2RlID0gZmlsdGVyVW5pdHMo
KSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7CiAgICAg
bV9maWx0ZXItPnNldEZpbHRlckJvdW5kaW5nQm94TW9kZShmaWx0ZXJCQm94TW9kZSk7Ci0gICAg
Ci0gICAgeCgpLT5zZXRCYm94UmVsYXRpdmUoZmlsdGVyQkJveE1vZGUpOwotICAgIHkoKS0+c2V0
QmJveFJlbGF0aXZlKGZpbHRlckJCb3hNb2RlKTsKLSAgICB3aWR0aCgpLT5zZXRCYm94UmVsYXRp
dmUoZmlsdGVyQkJveE1vZGUpOwotICAgIGhlaWdodCgpLT5zZXRCYm94UmVsYXRpdmUoZmlsdGVy
QkJveE1vZGUpOwotICAgIG1fZmlsdGVyLT5zZXRGaWx0ZXJSZWN0KEZsb2F0UmVjdCh4KCktPnZh
bHVlKCksIHkoKS0+dmFsdWUoKSwgd2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkp
KTsKLSAgICAKKworICAgIGZsb2F0IF94LCBfeSwgdywgaDsKKworICAgIGlmIChmaWx0ZXJCQm94
TW9kZSAmJiB4KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAg
X3ggPSB4KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgLyAxMDAuMDsKKyAgICBlbHNlCisgICAg
ICAgIF94ID0geCgpLnZhbHVlKCk7CisKKyAgICBpZiAoZmlsdGVyQkJveE1vZGUgJiYgeSgpLnVu
aXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgIF95ID0geSgpLnZhbHVl
SW5TcGVjaWZpZWRVbml0cygpIC8gMTAwLjA7CisgICAgZWxzZQorICAgICAgICBfeSA9IHkoKS52
YWx1ZSgpOworCisgICAgaWYgKGZpbHRlckJCb3hNb2RlICYmIHdpZHRoKCkudW5pdFR5cGUoKSA9
PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAgdyA9IHdpZHRoKCkudmFsdWVJblNwZWNp
ZmllZFVuaXRzKCkgLyAxMDAuMDsKKyAgICBlbHNlCisgICAgICAgIHcgPSB3aWR0aCgpLnZhbHVl
KCk7CisKKyAgICBpZiAoZmlsdGVyQkJveE1vZGUgJiYgaGVpZ2h0KCkudW5pdFR5cGUoKSA9PSBM
ZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAgaCA9IGhlaWdodCgpLnZhbHVlSW5TcGVjaWZp
ZWRVbml0cygpIC8gMTAwLjA7CisgICAgZWxzZQorICAgICAgICBoID0gaGVpZ2h0KCkudmFsdWUo
KTsKKworICAgIG1fZmlsdGVyLT5zZXRGaWx0ZXJSZWN0KEZsb2F0UmVjdChfeCwgX3ksIHcsIGgp
KTsKKwogICAgIGJvb2wgcHJpbWl0aXZlQkJveE1vZGUgPSBwcmltaXRpdmVVbml0cygpID09IFNW
R1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKICAgICBtX2ZpbHRl
ci0+c2V0RWZmZWN0Qm91bmRpbmdCb3hNb2RlKHByaW1pdGl2ZUJCb3hNb2RlKTsKICAgICAvLyBG
SVhNRTogV2hlbiBkb2VzIHRoaXMgaW5mbyBnZXQgcGFzc2VkIHRvIHRoZSBmaWx0ZXJzIGVsZW1l
bnRzPwpAQCAtMTQzLDYgKzE2MCw2IEBAIFNWR1Jlc291cmNlKiBTVkdGaWx0ZXJFbGVtZW50Ojpj
YW52YXNSZXMKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQK
IAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
aAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtk
ZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgogCkBAIC0yMSw4ICsyMSw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0x
MzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHRmlsdGVyRWxlbWVudEltcGxfSAotI2Rl
ZmluZSBLU1ZHX1NWR0ZpbHRlckVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHRmlsdGVyRWxlbWVu
dF9ICisjZGVmaW5lIFNWR0ZpbHRlckVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAog
I2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCkBAIC01OSwxMCArNjAsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogIAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRmlsdGVyRWxlbWVudCwgaW50LCBpbnQsIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cykKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGlu
dCwgaW50LCBQcmltaXRpdmVVbml0cywgcHJpbWl0aXZlVW5pdHMpCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQ
dHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0
aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVu
Z3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmls
dGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xl
bmd0aCwgV2lkdGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0
KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVu
dCwgbG9uZywgbG9uZywgRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKICAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcsIGxvbmcsIEZpbHRl
clJlc1ksIGZpbHRlclJlc1kpCiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24g
MTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+
CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0CkBAIC0yMSw2ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNp
ZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oIgogCkBAIC0zNSwzNyArMzYsMzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jKQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3gobmV3
IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95
KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAg
LCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgp
KSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9y
dEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7Ci0gICAgLy8g
U3BlYyA6IElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBh
cyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KLSAgICBtX3dpZHRoLT5zZXRW
YWx1ZUFzU3RyaW5nKCIxMDAlIik7Ci0gICAgbV9oZWlnaHQtPnNldFZhbHVlQXNTdHJpbmcoIjEw
MCUiKTsKKyAgICAvLyBTcGVjOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRo
ZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCisgICAg
c2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUi
KSk7CisgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0LCAiMTAwJSIpKTsKIH0KIAogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
Ojp+U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKCkKIHsKIH0KIAotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxv
Y2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVu
Z3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcywgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6
OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVu
Z3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0
ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIu
bG9jYWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
V2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZH
TmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTdHJp
bmcsIFN0cmluZywgc3RyaW5nLCBSZXN1bHQsIHJlc3VsdCwgU1ZHTmFtZXM6OnJlc3VsdEF0dHIu
bG9jYWxOYW1lKCksIG1fcmVzdWx0KQogCiB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQog
ewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0
aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFz
U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnJlc3VsdEF0dHIpCiAgICAgICAgIHNldFJlc3VsdEJhc2VWYWx1ZSh2YWx1
ZSk7CiAgICAgZWxzZQpAQCAtNzcsMjYgKzc4LDMxIEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGUKICAgICBBU1NFUlQoZmlsdGVyRWZmZWN0KTsKICAgICBpZiAoIWZp
bHRlckVmZmVjdCkKICAgICAgICAgcmV0dXJuOworCiAgICAgYm9vbCBiYm94ID0gZmFsc2U7CiAg
ICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6
OmZpbHRlclRhZykpCiAgICAgICAgIGJib3ggPSBzdGF0aWNfY2FzdDxTVkdGaWx0ZXJFbGVtZW50
Kj4ocGFyZW50Tm9kZSgpKS0+cHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19V
TklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7CiAKLSAgICB4KCktPnNldEJib3hSZWxhdGl2ZShi
Ym94KTsKLSAgICB5KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICB3aWR0aCgpLT5zZXRC
Ym94UmVsYXRpdmUoYmJveCk7Ci0gICAgaGVpZ2h0KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsK
LSAgICBmbG9hdCBfeCA9IHgoKS0+dmFsdWUoKSwgX3kgPSB5KCktPnZhbHVlKCk7Ci0gICAgZmxv
YXQgX3dpZHRoID0gd2lkdGgoKS0+dmFsdWUoKSwgX2hlaWdodCA9IGhlaWdodCgpLT52YWx1ZSgp
OwotICAgIGlmIChiYm94KQotICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldFN1YlJlZ2lvbihGbG9h
dFJlY3QoX3ggKiAxMDAuZiwgX3kgKiAxMDAuZiwgX3dpZHRoICogMTAwLmYsIF9oZWlnaHQgKiAx
MDAuZikpOwotICAgIGVsc2UKLSAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRTdWJSZWdpb24oRmxv
YXRSZWN0KF94LCBfeSwgX3dpZHRoLCBfaGVpZ2h0KSk7Ci0KKyAgICBmbG9hdCBfeCwgX3ksIF93
aWR0aCwgX2hlaWdodDsKKyAgCisgICAgaWYgKGJib3gpIHsKKyAgICAgICAgX3ggPSB4KCkudmFs
dWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIF95ID0geSgpLnZhbHVlSW5TcGVjaWZpZWRV
bml0cygpOworICAgICAgICBfd2lkdGggPSB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygp
OworICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgX3ggPSB4KCkudmFsdWUoKTsKKyAgICAgICAgX3kgPSB5KCku
dmFsdWUoKTsKKyAgICAgICAgX3dpZHRoID0gd2lkdGgoKS52YWx1ZSgpOworICAgICAgICBfaGVp
Z2h0ID0gaGVpZ2h0KCkudmFsdWUoKTsKKyAgICB9IAorICAgIAorICAgIGZpbHRlckVmZmVjdC0+
c2V0U3ViUmVnaW9uKEZsb2F0UmVjdChfeCwgX3ksIF93aWR0aCwgX2hlaWdodCkpOwogICAgIGZp
bHRlckVmZmVjdC0+c2V0UmVzdWx0KHJlc3VsdCgpKTsKIH0KIAogfQogCi0vLyB2aW06dHM9NDpu
b2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmgJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1h
bm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAy
MDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDE1ICsyMCwxNSBAQAogICAgIEJvc3Rv
biwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlc0ltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlc0ltcGxfSAorI2lmbmRlZiBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXNfSAorI2RlZmluZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXNfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1N0eWxlZEVs
ZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNWR0ZpbHRlckVmZmVj
dDsKLSAgICBjbGFzcyBTVkdMZW5ndGg7CiAKICAgICBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudAogICAgIHsKQEAgLTUw
LDEwICs1MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgY29uc3Qg
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVu
Z3RoPiwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xl
bmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIFJl
ZlB0cjxTVkdMZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwg
U1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIFNWR0xlbmd0
aCwgV2lkdGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIFNWR0xlbmd0
aCwgSGVpZ2h0LCBoZWlnaHQpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFN0cmluZywgU3RyaW5nLCBS
ZXN1bHQsIHJlc3VsdCkKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRU
b1ZpZXdCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmll
d0JveC5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9W
aWV3Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFNWR0ZpdFRv
Vmlld0JveDo6cGFyc2VWaWV3Qm94KGNvbnN0CiAgICAgCiAgICAgaWYgKHAgPCBlbmQpIC8vIG5v
dGhpbmcgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhlIGxhc3QsIGZvdXJ0aCBudW1iZXIKICAgICAgICAg
Z290byBiYWlsX291dDsKLQorICAgIAogICAgIHNldFZpZXdCb3hCYXNlVmFsdWUoRmxvYXRSZWN0
KHgsIHksIHcsIGgpKTsKICAgICByZXR1cm47CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMCw2ICsyMCw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdf
U1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCIKQEAgLTQwLDEw
ICs0MSwxMCBAQCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjCiAgICAg
LCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwg
dmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJ
R0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhp
cywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdM
ZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhp
cywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisg
ICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTUxLDIzICs1MiwyMyBAQCBTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudDo6flNWR0ZvcmVpZ25PYmplCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgs
IGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUo
KSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNW
R05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwg
TGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2Nh
bE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwg
U1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgp
LCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdO
YW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCiAKIHZvaWQgU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0
cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0
dHIsIENTU19QUk9QX1dJRFRILCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNl
dFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgICAgIGFkZENTU1Byb3Bl
cnR5KGF0dHIsIENTU19QUk9QX0hFSUdIVCwgdmFsdWUpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCkBAIC04MCwxMiArODEs
MTIgQEAgdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZQogICAgIH0KIH0K
IAotUmVuZGVyT2JqZWN0ICpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEgKmFyZW5hLCBSZW5kZXJTdHlsZSAqc3R5bGUpCitSZW5kZXJPYmplY3QqIFNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRm9y
ZWlnbk9iamVjdCh0aGlzKTsKIH0KIAotYm9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlICpjaGlsZCkgY29uc3QKK2Jvb2wgU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hpbGQpIGNv
bnN0CiB7CiAgICAgLy8gU2tpcCBvdmVyIFNWRyBydWxlcyB3aGljaCBkaXNhbGxvdyBub24tU1ZH
IGtpZHMKICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihjaGlsZCk7CkBAIC05Myw2ICs5NCw2IEBAIGJvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OmNoaWxkU2hvdWwKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0vLyB2aW06dHM9NDpub2V0
CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxODI0NCkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE5LDggKzE5LDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K
ICovCiAKLSNpZm5kZWYgS1NWR19TVkdGb3JlaWduT2JqZWN0RWxlbWVudEltcGxfSAotI2RlZmlu
ZSBLU1ZHX1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50X0gKKyNkZWZpbmUgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnRfSAorCiAjaWZk
ZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCkBAIC01OCwxMCArNTksMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9E
RUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkgCiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3Ry
aW5nLCBIcmVmLCBocmVmKQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4s
IFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBT
VkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFks
IHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBT
VkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSGVscGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdIZWxwZXIuY3BwCShyZXZpc2lvbiAxODI0
NCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0hlbHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYyICsyMSwxNyBAQAogKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdIZWxw
ZXIuaCIKIAotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0j
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgotI2luY2x1ZGUg
IlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTdHJpbmdMaXN0LmgiCi0jaW5jbHVkZSA8
bWF0aC5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWZsb2F0IFNWR0hlbHBlcjo6UGVyY2VudGFnZU9mVmlld3BvcnQoZmxvYXQgdmFsdWUsIGNvbnN0
IFNWR0VsZW1lbnQqIHZpZXdwb3J0RWxlbWVudCwgTGVuZ3RoTW9kZSBtb2RlKQotewotICAgIGZs
b2F0IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKLSAgICBpZiAoIXZpZXdwb3J0RWxlbWVudCkKLSAg
ICAgICAgcmV0dXJuIDAuMDsKLSAKLSAgICBpZiAodmlld3BvcnRFbGVtZW50LT5pc1NWRygpKSB7
Ci0gICAgICAgIGNvbnN0IFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PGNvbnN0IFNW
R1NWR0VsZW1lbnQqPih2aWV3cG9ydEVsZW1lbnQpOwotICAgICAgICBpZiAoc3ZnLT5oYXNBdHRy
aWJ1dGUoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSkgewotICAgICAgICAgICAgd2lkdGggPSBzdmct
PnZpZXdCb3goKS53aWR0aCgpOwotICAgICAgICAgICAgaGVpZ2h0ID0gc3ZnLT52aWV3Qm94KCku
aGVpZ2h0KCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3ZnLT53aWR0aCgpLT51bml0VHlwZSgpID09
IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICAgICAgICAg
IHN2Zy0+aGVpZ2h0KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9Q
RVJDRU5UQUdFKSB7Ci0gICAgICAgICAgICAvLyBUT0RPOiBTaG91bGRuJ3Qgdy9oIGJlIG11bHRp
cGxpZWQgd2l0aCB0aGUgcGVyY2VudGFnZSB2YWx1ZXM/IQotICAgICAgICAgICAgLy8gQUZBSUss
IHRoaXMgYXNzdW1lcyB3aWR0aCAmIGhlaWdodCA9PSAxMDAlLCBSb2I/PwotICAgICAgICAgICAg
RG9jdW1lbnQgKmRvYyA9IHN2Zy0+ZG9jdW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChkb2MtPmRv
Y3VtZW50RWxlbWVudCgpID09IHN2ZykgewotICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8g
YXNrIHRoZSBjYW52YXMgZm9yIHRoZSBmdWxsICJjYW52YXMgc2l6ZSIuLi4KLSAgICAgICAgICAg
ICAgICBSZW5kZXJWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVmlldyAqPihkb2MtPnJl
bmRlcmVyKCkpOwotICAgICAgICAgICAgICAgIGlmICh2aWV3KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHdpZHRoID0gdmlldy0+ZnJhbWVWaWV3KCktPnZpc2libGVXaWR0aCgpOyAvLyBUT0RPOiBy
ZWNoZWNrIQotICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSB2aWV3LT5mcmFtZVZpZXcoKS0+
dmlzaWJsZUhlaWdodCgpOyAvLyBUT0RPOiByZWNoZWNrIQotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHdpZHRoID0gc3ZnLT53
aWR0aCgpLT52YWx1ZSgpOwotICAgICAgICAgICAgaGVpZ2h0ID0gc3ZnLT5oZWlnaHQoKS0+dmFs
dWUoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChtb2RlID09IExNX1dJRFRIKQotICAg
ICAgICByZXR1cm4gdmFsdWUgKiB3aWR0aDsKLSAgICBlbHNlIGlmIChtb2RlID09IExNX0hFSUdI
VCkKLSAgICAgICAgcmV0dXJuIHZhbHVlICogaGVpZ2h0OwotICAgIGVsc2UgaWYgKG1vZGUgPT0g
TE1fT1RIRVIpCi0gICAgICAgIHJldHVybiB2YWx1ZSAqIHNxcnQocG93KGRvdWJsZSh3aWR0aCks
IDIpICsgcG93KGRvdWJsZShoZWlnaHQpLCAyKSkgLyBzcXJ0KDIuMCk7Ci0gICAgCi0gICAgcmV0
dXJuIDAuMDsKLX0KLQotdm9pZCBTVkdIZWxwZXI6OnBhcnNlU2VwYXJhdGVkTGlzdChTVkdTdHJp
bmdMaXN0ICpsaXN0LCBjb25zdCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikKK3ZvaWQg
U1ZHSGVscGVyOjpwYXJzZVNlcGFyYXRlZExpc3QoU1ZHU3RyaW5nTGlzdCogbGlzdCwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIpCiB7CiAgICAgLy8gVE9ETyA6IG1vcmUgZXJy
b3IgY2hlY2tpbmcvcmVwb3J0aW5nCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC05MSw2
ICs0Niw2IEBAIHZvaWQgU1ZHSGVscGVyOjpwYXJzZVNlcGFyYXRlZExpc3QoU1ZHU3QKIAogfQog
Ci0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSGVscGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSGVscGVyLmgJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAK
ICNkZWZpbmUgS1NWR19TVkdIZWxwZXJfSAogI2lmZGVmIFNWR19TVVBQT1JUCiAKKyNpbmNsdWRl
ICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zMiwxNyArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgU1ZHU3RyaW5nTGlzdDsKIAogICAgIC8vIEtTVkcgZXh0ZW5zaW9uCi0gICAgZW51bSBMZW5n
dGhNb2RlIHsKLSAgICAgICAgTE1fVU5LTk9XTiA9IDAsCi0gICAgICAgIExNX1dJRFRILAotICAg
ICAgICBMTV9IRUlHSFQsCi0gICAgICAgIExNX09USEVSCi0gICAgfTsKLQogICAgIGNsYXNzIFNW
R0hlbHBlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgZmxvYXQgUGVyY2VudGFnZU9m
Vmlld3BvcnQoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQgKnZpZXdwb3J0RWxlbWVudCwg
TGVuZ3RoTW9kZSBtb2RlKTsKLQogICAgICAgICBzdGF0aWMgdm9pZCBwYXJzZVNlcGFyYXRlZExp
c3QoU1ZHU3RyaW5nTGlzdCAqbGlzdCwgY29uc3QgU3RyaW5nICZkYXRhLCBVQ2hhciBkZWxpbWl0
ZXIgPSAnLCcpOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmNwcAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNiAgICAgICBBbGV4YW5kZXIgS2Vs
bGV0dCA8bHlwYW5vdkBrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNiBBbGV4YW5kZXIg
S2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEtERSBwcm9qZWN0CiAKQEAgLTIyLDYgKzIyLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAK
QEAgLTQ1LDEwICs0NiwxMCBAQCBTVkdJbWFnZUVsZW1lbnQ6OlNWR0ltYWdlRWxlbWVudChjb25z
dCBRCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpCiAgICAgLCBTVkdVUklSZWZlcmVuY2UoKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgo
dGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVu
Z3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV93aWR0aChu
ZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBt
X2hlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkp
KQorICAgICwgbV94KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAg
LCBtX2hlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV9wcmVzZXJ2ZUFzcGVj
dFJhdGlvKG5ldyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKHRoaXMpKQogICAgICwgbV9pbWFnZUxv
YWRlcih0aGlzKQogewpAQCAtNTgsMjYgKzU5LDI2IEBAIFNWR0ltYWdlRWxlbWVudDo6flNWR0lt
YWdlRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0lt
YWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4
QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZH
TmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBX
aWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0
KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xl
bmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0
dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBT
VkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwg
U1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRo
LCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFt
ZSgpLCBtX2hlaWdodCkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxl
bWVudCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8s
IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ci5sb2NhbE5hbWUoKSwgbV9wcmVzZXJ2
ZUFzcGVjdFJhdGlvLmdldCgpKQogCiB2b2lkIFNWR0ltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUp
OworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgs
IHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikK
LSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAg
c2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyKQogICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKCktPnBhcnNlUHJl
c2VydmVBc3BlY3RSYXRpbyh2YWx1ZS5pbXBsKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNl
dFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0
eShhdHRyLCBDU1NfUFJPUF9XSURUSCwgdmFsdWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQ
cm9wZXJ0eShhdHRyLCBDU1NfUFJPUF9IRUlHSFQsIHZhbHVlKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpAQCAtMTE0LDYg
KzExNSw2IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjphdHRhY2goKQogCiB9CiAKLS8vIHZpbTp0
cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0ltYWdlRWxlbWVudElt
cGxfSAotI2RlZmluZSBLU1ZHX1NWR0ltYWdlRWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdJbWFn
ZUVsZW1lbnRfSAorI2RlZmluZSBTVkdJbWFnZUVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBP
UlQKIAogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTY2LDEw
ICs2NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9G
T1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKSAKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJl
bmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4s
IFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVs
ZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVu
Z3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5n
dGgsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwg
U1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvKiwgUmVmUHRyPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+LCBQcmVzZXJ2ZUFzcGVjdFJhdGlv
LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogCiAgICAgICAgIFNWR0ltYWdlTG9hZGVyIG1faW1hZ2VM
b2FkZXI7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aC5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMTAsNyArMTAsNyBAQAogICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFuIG9mCiAgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIApAQCAtMjEs
ODAgKzIxLDIwNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NV
UFBPUlQKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKIAotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNp
bmNsdWRlICJSZW5kZXJQYXRoLmgiCi0jaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgotI2luY2x1ZGUg
IlNWR0xlbmd0aC5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCisjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5o
IgorI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJzdmdwYXRocGFyc2Vy
LmgiCi0jaW5jbHVkZSA8bWF0aC5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi0vLyBrZWVw
IHRyYWNrIG9mIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhlIHVuaXQgdHlwZQotc3RhdGljIGNv
bnN0IGNoYXIqIFVuaXRUZXh0W10gPQotewotICAgICIiLCAiIiwKLSAgICAiJSIsICJlbSIsCi0g
ICAgImV4IiwgInB4IiwKLSAgICAiY20iLCAibW0iLAotICAgICJpbiIsICJwdCIsCi0gICAgInBj
IgotfTsKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNWR0xlbmd0aDo6U1ZHTGVuZ3RoKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQs
IExlbmd0aE1vZGUgbW9kZSwgY29uc3QgU1ZHRWxlbWVudCogdmlld3BvcnQpCi0gICAgOiBTaGFy
ZWQ8U1ZHTGVuZ3RoPigpCi0gICAgLCBtX3ZhbHVlKDApCi0gICAgLCBtX3ZhbHVlSW5TcGVjaWZp
ZWRVbml0cygwKQotICAgICwgbV9tb2RlKG1vZGUpCi0gICAgLCBtX2Jib3hSZWxhdGl2ZShmYWxz
ZSkKLSAgICAsIG1fdW5pdFR5cGUoU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTikKLSAgICAsIG1fcmVx
dWlyZXNMYXlvdXQoZmFsc2UpCi0gICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAsIG1fdmll
d3BvcnRFbGVtZW50KHZpZXdwb3J0KQorLy8gSGVscGVyIGZ1bmN0aW9ucworaW5saW5lIHVuc2ln
bmVkIGludCBzdG9yZVVuaXQoU1ZHTGVuZ3RoTW9kZSBtb2RlLCBTVkdMZW5ndGhUeXBlIHR5cGUp
CiB7CisgICAgcmV0dXJuIChtb2RlIDw8IDQpIHwgdHlwZTsKIH0KIAotU1ZHTGVuZ3RoOjp+U1ZH
TGVuZ3RoKCkKK2lubGluZSBTVkdMZW5ndGhNb2RlIGV4dHJhY3RNb2RlKHVuc2lnbmVkIGludCB1
bml0KQogeworICAgIHVuc2lnbmVkIGludCBtb2RlID0gdW5pdCA+PiA0OyAgICAKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoTW9kZT4obW9kZSk7Cit9CisKK2lubGluZSBTVkdMZW5n
dGhUeXBlIGV4dHJhY3RUeXBlKHVuc2lnbmVkIGludCB1bml0KQoreworICAgIHVuc2lnbmVkIGlu
dCBtb2RlID0gdW5pdCA+PiA0OworICAgIHVuc2lnbmVkIGludCB0eXBlID0gdW5pdCBeIChtb2Rl
IDw8IDQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMZW5ndGhUeXBlPih0eXBlKTsKK30K
KworaW5saW5lIFN0cmluZyBsZW5ndGhUeXBlVG9TdHJpbmcoU1ZHTGVuZ3RoVHlwZSB0eXBlKQor
eworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246CisgICAg
Y2FzZSBMZW5ndGhUeXBlTnVtYmVyOgorICAgICAgICByZXR1cm4gIiI7ICAgIAorICAgIGNhc2Ug
TGVuZ3RoVHlwZVBlcmNlbnRhZ2U6CisgICAgICAgIHJldHVybiAiJSI7CisgICAgY2FzZSBMZW5n
dGhUeXBlRU1TOgorICAgICAgICByZXR1cm4gImVtIjsKKyAgICBjYXNlIExlbmd0aFR5cGVFWFM6
CisgICAgICAgIHJldHVybiAiZXgiOworICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgorICAgICAgICBy
ZXR1cm4gInB4IjsKKyAgICBjYXNlIExlbmd0aFR5cGVDTToKKyAgICAgICAgcmV0dXJuICJjbSI7
CisgICAgY2FzZSBMZW5ndGhUeXBlTU06CisgICAgICAgIHJldHVybiAibW0iOworICAgIGNhc2Ug
TGVuZ3RoVHlwZUlOOgorICAgICAgICByZXR1cm4gImluIjsKKyAgICBjYXNlIExlbmd0aFR5cGVQ
VDoKKyAgICAgICAgcmV0dXJuICJwdCI7CisgICAgY2FzZSBMZW5ndGhUeXBlUEM6CisgICAgICAg
IHJldHVybiAicGMiOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotU1ZHTGVu
Z3RoOjpTVkdMZW5ndGhUeXBlIFNWR0xlbmd0aDo6dW5pdFR5cGUoKSBjb25zdAoraW5saW5lIFNW
R0xlbmd0aFR5cGUgc3RyaW5nVG9MZW5ndGhUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewot
ICAgIHJldHVybiBtX3VuaXRUeXBlOworICAgIGlmIChzdHJpbmcuZW5kc1dpdGgoIiUiKSkKKyAg
ICAgICAgcmV0dXJuIExlbmd0aFR5cGVQZXJjZW50YWdlOworICAgIGVsc2UgaWYgKHN0cmluZy5l
bmRzV2l0aCgiZW0iKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVFTVM7CisgICAgZWxzZSBp
ZiAoc3RyaW5nLmVuZHNXaXRoKCJleCIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZUVYUzsK
KyAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dpdGgoInB4IikpCisgICAgICAgIHJldHVybiBMZW5n
dGhUeXBlUFg7CisgICAgZWxzZSBpZiAoc3RyaW5nLmVuZHNXaXRoKCJjbSIpKQorICAgICAgICBy
ZXR1cm4gTGVuZ3RoVHlwZUNNOworICAgIGVsc2UgaWYgKHN0cmluZy5lbmRzV2l0aCgibW0iKSkK
KyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVNTTsKKyAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dp
dGgoImluIikpCisgICAgICAgIHJldHVybiBMZW5ndGhUeXBlSU47CisgICAgZWxzZSBpZiAoc3Ry
aW5nLmVuZHNXaXRoKCJwdCIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZVBUOworICAgIGVs
c2UgaWYgKHN0cmluZy5lbmRzV2l0aCgicGMiKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVQ
QzsKKyAgICBlbHNlIGlmICghc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIExlbmd0
aFR5cGVOdW1iZXI7CisKKyAgICByZXR1cm4gTGVuZ3RoVHlwZVVua25vd247Cit9CisKK1NWR0xl
bmd0aDo6U1ZHTGVuZ3RoKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQsIFNWR0xlbmd0
aE1vZGUgbW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQorICAgIDogbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMoMC4wKQorICAgICwgbV91bml0KHN0b3JlVW5pdChtb2RlLCBMZW5ndGhU
eXBlTnVtYmVyKSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQoreworICAgIHNldFZhbHVlQXNT
dHJpbmcodmFsdWVBc1N0cmluZyk7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1ZShmbG9h
dCB2YWx1ZSkKK1NWR0xlbmd0aFR5cGUgU1ZHTGVuZ3RoOjp1bml0VHlwZSgpIGNvbnN0CiB7Ci0g
ICAgbV92YWx1ZSA9IHZhbHVlOwotICAgIHVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRVbml0cygpOwor
ICAgIHJldHVybiBleHRyYWN0VHlwZShtX3VuaXQpOwogfQogCiBmbG9hdCBTVkdMZW5ndGg6OnZh
bHVlKCkgY29uc3QKIHsKLSAgICBpZiAobV9yZXF1aXJlc0xheW91dCkKLSAgICAgICAgY29uc3Rf
Y2FzdDxTVkdMZW5ndGgqPih0aGlzKS0+dXBkYXRlVmFsdWUoZmFsc2UpOworICAgIFNWR0xlbmd0
aFR5cGUgdHlwZSA9IGV4dHJhY3RUeXBlKG1fdW5pdCk7CisgICAgaWYgKHR5cGUgPT0gTGVuZ3Ro
VHlwZVVua25vd24pCisgICAgICAgIHJldHVybiAwLjA7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6CisgICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0czsKKyAgICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdlOgorICAgICAgICByZXR1
cm4gUGVyY2VudGFnZU9mVmlld3BvcnQobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAxMDAuMCwg
bV9jb250ZXh0LCBleHRyYWN0TW9kZShtX3VuaXQpKTsKKyAgICBjYXNlIExlbmd0aFR5cGVFTVM6
CisgICAgY2FzZSBMZW5ndGhUeXBlRVhTOgorICAgIHsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHN0
eWxlID0gMDsKKyAgICAgICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPnJlbmRlcmVyKCkp
CisgICAgICAgICAgICBzdHlsZSA9IG1fY29udGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKKyAg
ICAgICAgaWYgKHN0eWxlKSB7CisgICAgICAgICAgICBmbG9hdCB1c2VTaXplID0gc3R5bGUtPmZv
bnRTaXplKCk7CisgICAgICAgICAgICBBU1NFUlQodXNlU2l6ZSA+IDApOworICAgICAgICAgICAg
aWYgKHR5cGUgPT0gTGVuZ3RoVHlwZUVNUykKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMgKiB1c2VTaXplOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgZmxvYXQgeEhlaWdodCA9IHN0eWxlLT5mb250KCkueEhlaWdodCgpOworICAgICAg
ICAgICAgICAgIC8vIFVzZSBvZiBjZWlsIGFsbG93cyBhIHBpeGVsIG1hdGNoIHRvIHRoZSBXM0Nz
IGV4cGVjdGVkIG91dHB1dCBvZiBjb29yZHMtdW5pdHMtMDMtYi5zdmcKKyAgICAgICAgICAgICAg
ICAvLyBpZiB0aGlzIGNhdXNlcyBwcm9ibGVtcyBpbiByZWFsIHdvcmxkIGNhc2VzIG1heWJlIGl0
IHdvdWxkIGJlIGJlc3QgdG8gcmVtb3ZlIHRoaXMKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgKiBjZWlsKHhIZWlnaHQpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIHJldHVybiAwLjA7CisgICAgfQorICAgIGNhc2UgTGVuZ3RoVHlwZVBY
OgorICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgY2FzZSBMZW5n
dGhUeXBlQ006CisgICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDIuNTQg
KiBkcGkoKTsKKyAgICBjYXNlIExlbmd0aFR5cGVNTToKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzIC8gMjUuNCAqIGRwaSgpOworICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgor
ICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgKiBkcGkoKTsKKyAgICBjYXNl
IExlbmd0aFR5cGVQVDoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8g
NzIuMCAqIGRwaSgpOworICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgorICAgICAgICByZXR1cm4gbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyA2LjAgKiBkcGkoKTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBicmVhazsKKyAgICB9CiAKLSAgICBpZiAobV91bml0VHlwZSAhPSBTVkdfTEVOR1RIVFlQRV9Q
RVJDRU5UQUdFKQotICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICBBU1NFUlQoZmFsc2UpOwor
ICAgIHJldHVybiAwLjA7Cit9CiAKLSAgICBmbG9hdCB2YWx1ZSA9IG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzIC8gMTAwLjA7Ci0gICAgaWYgKG1fYmJveFJlbGF0aXZlKQotICAgICAgICByZXR1cm4g
dmFsdWU7Cit2b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWUoZmxvYXQgdmFsdWUpCit7CisgICAgU1ZH
TGVuZ3RoVHlwZSB0eXBlID0gZXh0cmFjdFR5cGUobV91bml0KTsKKyAgICBBU1NFUlQodHlwZSAh
PSBMZW5ndGhUeXBlVW5rbm93bik7CiAKLSAgICAvLyBVc2UgdGhlIG1hbnVhbCBvdmVycmlkZSAi
bV92aWV3cG9ydEVsZW1lbnQiIHdoZW4gdGhlcmUgaXMgbm8gY29udGV4dCBlbGVtZW50IG9mZiBv
ZiB3aGljaCB0byBlc3RhYmxpc2ggdGhlIHZpZXdwb3J0LgotICAgIHJldHVybiBTVkdIZWxwZXI6
OlBlcmNlbnRhZ2VPZlZpZXdwb3J0KHZhbHVlLCBtX2NvbnRleHQgPyBtX2NvbnRleHQtPnZpZXdw
b3J0RWxlbWVudCgpIDogbV92aWV3cG9ydEVsZW1lbnQsIHN0YXRpY19jYXN0PExlbmd0aE1vZGU+
KG1fbW9kZSkpOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJl
cjoKKyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToKKyAgICBjYXNlIExlbmd0aFR5cGVF
TVM6CisgICAgY2FzZSBMZW5ndGhUeXBlRVhTOgorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVQWDoKKyAgICAgICAgbV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMgPSB2YWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBl
Q006CisgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWUgKiAyLjU0IC8gZHBp
KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgICAgICBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlICogMjUuNCAvIGRwaSgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMgPSB2YWx1ZSAvIGRwaSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVQ
VDoKKyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZSAqIDcyLjAgLyBkcGko
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlUEM6CisgICAgICAgIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWUgLyA2LjAgKiBkcGkoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKG1fY29udGV4
dCAmJiBtX2NvbnRleHQtPm93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgIT0gbV9j
b250ZXh0KQorICAgICAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwogfQog
Ci12b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKGZsb2F0IHZhbHVlSW5T
cGVjaWZpZWRVbml0cykKK3ZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMo
ZmxvYXQgdmFsdWUpCiB7Ci0gICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZUluU3Bl
Y2lmaWVkVW5pdHM7Ci0gICAgdXBkYXRlVmFsdWUoKTsKKyAgICBtX3ZhbHVlSW5TcGVjaWZpZWRV
bml0cyA9IHZhbHVlOworCisgICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPm93bmVyRG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgIT0gbV9jb250ZXh0KSAgICAKKyAgICAgICAgbV9j
b250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKIH0KIAogZmxvYXQgU1ZHTGVuZ3RoOjp2
YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBjb25zdApAQCAtMTA3LDcxICsyMzQsNTEgQEAgdm9pZCBT
VkdMZW5ndGg6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgUwogICAgIGlmIChzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRGVwcmVjYXRlZFN0cmluZyB2YWx1ZUFzUVN0cmluZyA9
IHMuZGVwcmVjYXRlZFN0cmluZygpOwotCiAgICAgZG91YmxlIGNvbnZlcnRlZE51bWJlciA9IDA7
Ci0gICAgY29uc3QgY2hhciogc3RhcnQgPSB2YWx1ZUFzUVN0cmluZy5sYXRpbjEoKTsKLSAgICBj
b25zdCBjaGFyKiBlbmQgPSBwYXJzZUNvb3JkKHN0YXJ0LCBjb252ZXJ0ZWROdW1iZXIpOworICAg
IERlcHJlY2F0ZWRTdHJpbmcgZGVwU3RyaW5nID0gcy5kZXByZWNhdGVkU3RyaW5nKCk7CisgICAg
Y29uc3QgY2hhciogc3RhcnQgPSBkZXBTdHJpbmcubGF0aW4xKCk7CisgICAgcGFyc2VDb29yZChz
dGFydCwgY29udmVydGVkTnVtYmVyKTsKKyAgICAKKyAgICBtX3VuaXQgPSBzdG9yZVVuaXQoZXh0
cmFjdE1vZGUobV91bml0KSwgc3RyaW5nVG9MZW5ndGhUeXBlKHMpKTsKICAgICBtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cyA9IGNvbnZlcnRlZE51bWJlcjsKLQotICAgIHVuc2lnbmVkIGludCBkaWZm
ID0gZW5kIC0gc3RhcnQ7Ci0gICAgaWYgKGRpZmYgPCB2YWx1ZUFzUVN0cmluZy5sZW5ndGgoKSkg
ewotICAgICAgICBpZiAocy5lbmRzV2l0aChVbml0VGV4dFtTVkdfTEVOR1RIVFlQRV9QWF0pKQot
ICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX1BYOwotICAgICAgICBlbHNl
IGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX0NNXSkpCi0gICAgICAgICAg
ICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfQ007Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5k
c1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfUENdKSkKLSAgICAgICAgICAgIG1fdW5pdFR5
cGUgPSBTVkdfTEVOR1RIVFlQRV9QQzsKLSAgICAgICAgZWxzZSBpZiAocy5lbmRzV2l0aChVbml0
VGV4dFtTVkdfTEVOR1RIVFlQRV9NTV0pKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19M
RU5HVEhUWVBFX01NOwotICAgICAgICBlbHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19M
RU5HVEhUWVBFX0lOXSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVf
SU47Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVf
UFRdKSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RIVFlQRV9QVDsKLSAgICAg
ICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFH
RV0pKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0U7
Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfRU1T
XSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfRU1TOwotICAgICAg
ICBlbHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX0VYU10pKQotICAg
ICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX0VYUzsKLSAgICAgICAgZWxzZSBp
ZiAocy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVf
TlVNQkVSOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdU
SFRZUEVfVU5LTk9XTjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBtX3VuaXRUeXBlID0gU1ZH
X0xFTkdUSFRZUEVfUFg7Ci0KLSAgICB1cGRhdGVWYWx1ZSgpOwogfQogCiBTdHJpbmcgU1ZHTGVu
Z3RoOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIo
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgVW5pdFRleHRbbV91bml0VHlwZV07CisgICAgcmV0
dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIGxlbmd0aFR5cGVU
b1N0cmluZyhleHRyYWN0VHlwZShtX3VuaXQpKTsKIH0KIAotdm9pZCBTVkdMZW5ndGg6Om5ld1Zh
bHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIGZsb2F0IHZhbHVlSW5T
cGVjaWZpZWRVbml0cykKK3ZvaWQgU1ZHTGVuZ3RoOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVu
c2lnbmVkIHNob3J0IHR5cGUsIGZsb2F0IHZhbHVlKQogewotICAgIG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzID0gdmFsdWVJblNwZWNpZmllZFVuaXRzOwotICAgIG1fdW5pdFR5cGUgPSAoU1ZHTGVu
Z3RoVHlwZSl1bml0VHlwZTsKLSAgICB1cGRhdGVWYWx1ZSgpOworICAgIEFTU0VSVCh0eXBlIDw9
IExlbmd0aFR5cGVQQyk7CisKKyAgICBtX3VuaXQgPSBzdG9yZVVuaXQoZXh0cmFjdE1vZGUobV91
bml0KSwgKFNWR0xlbmd0aFR5cGUpIHR5cGUpOworICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRz
ID0gdmFsdWU7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1
bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkKK3ZvaWQgU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZp
ZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB0eXBlKQogewotICAgIG1fdW5pdFR5cGUgPSAoU1ZHTGVu
Z3RoVHlwZSl1bml0VHlwZTsKLSAgICB1cGRhdGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAg
ICBBU1NFUlQodHlwZSA8PSBMZW5ndGhUeXBlUEMpOworCisgICAgZmxvYXQgdmFsdWVJblVzZXJV
bml0cyA9IHZhbHVlKCk7CisgICAgbV91bml0ID0gc3RvcmVVbml0KGV4dHJhY3RNb2RlKG1fdW5p
dCksIChTVkdMZW5ndGhUeXBlKSB0eXBlKTsKKyAgICBzZXRWYWx1ZSh2YWx1ZUluVXNlclVuaXRz
KTsKK30KKworYm9vbCBTVkdMZW5ndGg6OmlzRnJhY3Rpb24oY29uc3QgU1ZHTGVuZ3RoJiBsZW5n
dGgpCit7CisgICAgcmV0dXJuIChsZW5ndGgudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlTnVtYmVy
ICYmIGxlbmd0aC52YWx1ZSgpID49IDAgJiYgbGVuZ3RoLnZhbHVlKCkgPD0gMSk7CiB9CiAKIGRv
dWJsZSBTVkdMZW5ndGg6OmRwaSgpIGNvbnN0CiB7CiAgICAgLyogRklYTUU6IERQSSBkZXRlY3Rp
b24KICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5vd25lckRvYygpKSB7Ci0gICAgICAgIGlm
IChtb2RlID09IExNX1dJRFRIKQorICAgICAgICBpZiAobW9kZSA9PSBMZW5ndGhNb2RlV2lkdGgp
CiAgICAgICAgICAgICByZXR1cm4gMjUuNCAqIGNvbnRleHQtPm93bmVyRG9jKCktPnNjcmVlblBp
eGVsc1Blck1pbGxpbWV0ZXJYKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTE1fSEVJR0hU
KQorICAgICAgICBlbHNlIGlmIChtb2RlID09IExlbmd0aE1vZGVIZWlnaHQpCiAgICAgICAgICAg
ICByZXR1cm4gMjUuNCAqIGNvbnRleHQtPm93bmVyRG9jKCktPnNjcmVlblBpeGVsc1Blck1pbGxp
bWV0ZXJZKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTE1fT1RIRVIpCisgICAgICAgIGVs
c2UgaWYgKG1vZGUgPT0gTGVuZ3RoTW9kZU90aGVyKQogICAgICAgICAgICAgcmV0dXJuIDI1LjQg
KiBjb250ZXh0LT5vd25lckRvYygpLT5zY3JlZW5QaXhlbHNQZXJNaWxsaW1ldGVyWCgpOwogICAg
IH0KICAgICAqLwpAQCAtMTc5LDEyNiArMjg2LDQ1IEBAIGRvdWJsZSBTVkdMZW5ndGg6OmRwaSgp
IGNvbnN0CiAgICAgcmV0dXJuIDkwLjA7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjp1cGRhdGVWYWx1
ZShib29sIG5vdGlmeSkKK2Zsb2F0IFNWR0xlbmd0aDo6UGVyY2VudGFnZU9mVmlld3BvcnQoZmxv
YXQgdmFsdWUsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQsIFNWR0xlbmd0aE1vZGUg
bW9kZSkKIHsKLSAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKLSAgICAgICAgY2FzZSBTVkdfTEVO
R1RIVFlQRV9QWDoKLSAgICAgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
czsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX0NNOgot
ICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDIuNTQpICog
ZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9N
TToKLSAgICAgICAgICAgIG1fdmFsdWUgPSAobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAyNS40
KSAqIGRwaSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZ
UEVfSU46Ci0gICAgICAgICAgICBtX3ZhbHVlID0gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgKiBk
cGkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1BU
OgotICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDcyLjAp
ICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQ
RV9QQzoKLSAgICAgICAgICAgIG1fdmFsdWUgPSAobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyA2
LjApICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RI
VFlQRV9FTVM6Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfRVhTOiB7Ci0gICAgICAgICAg
ICBSZW5kZXJTdHlsZSogc3R5bGUgPSAwOwotICAgICAgICAgICAgaWYgKG1fY29udGV4dCAmJiBt
X2NvbnRleHQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgc3R5bGUgPSBtX2NvbnRleHQt
PnJlbmRlcmVyKCktPnN0eWxlKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX3ZpZXdwb3J0RWxl
bWVudCAmJiBtX3ZpZXdwb3J0RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICBz
dHlsZSA9IG1fdmlld3BvcnRFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpOwotICAgICAgICAg
ICAgaWYgKHN0eWxlKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgdXNlU2l6ZSA9IHN0eWxlLT5m
b250U2l6ZSgpOwotICAgICAgICAgICAgICAgIEFTU0VSVCh1c2VTaXplID4gMCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1fdW5pdFR5cGUgPT0gU1ZHX0xFTkdUSFRZUEVfRU1TKQotICAgICAgICAg
ICAgICAgICAgICBtX3ZhbHVlID0gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgKiB1c2VTaXplOwot
ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmbG9hdCB4SGVpZ2h0
ID0gc3R5bGUtPmZvbnQoKS54SGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFVzZSBv
ZiBjZWlsIGFsbG93cyBhIHBpeGVsIG1hdGNoIHRvIHRoZSBXM0NzIGV4cGVjdGVkIG91dHB1dCBv
ZiBjb29yZHMtdW5pdHMtMDMtYi5zdmcKLSAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBj
YXVzZXMgcHJvYmxlbXMgaW4gcmVhbCB3b3JsZCBjYXNlcyBtYXliZSBpdCB3b3VsZCBiZSBiZXN0
IHRvIHJlbW92ZSB0aGlzCi0gICAgICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cyAqIGNlaWwoeEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIG1fcmVxdWlyZXNMYXlvdXQgPSBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgbV9yZXF1aXJlc0xheW91dCA9IHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKKyAgICBmbG9hdCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Cisg
ICAgU1ZHRWxlbWVudCogdmlld3BvcnRFbGVtZW50ID0gY29udGV4dC0+dmlld3BvcnRFbGVtZW50
KCk7CisKKyAgICBEb2N1bWVudCogZG9jID0gY29udGV4dC0+ZG9jdW1lbnQoKTsKKyAgICBpZiAo
ZG9jLT5kb2N1bWVudEVsZW1lbnQoKSA9PSBjb250ZXh0KSB7CisgICAgICAgIC8vIFdlIGhhdmUg
dG8gYXNrIHRoZSBjYW52YXMgZm9yIHRoZSBmdWxsICJjYW52YXMgc2l6ZSIuLi4KKyAgICAgICAg
UmVuZGVyVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFJlbmRlclZpZXcgKj4oZG9jLT5yZW5kZXJl
cigpKTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHdpZHRoID0gdmlldy0+ZnJh
bWVWaWV3KCktPnZpc2libGVXaWR0aCgpOyAvLyBUT0RPOiByZWNoZWNrIQorICAgICAgICAgICAg
aGVpZ2h0ID0gdmlldy0+ZnJhbWVWaWV3KCktPnZpc2libGVIZWlnaHQoKTsgLy8gVE9ETzogcmVj
aGVjayEKKyAgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCF2aWV3cG9ydEVsZW1lbnQpCisgICAg
ICAgIHJldHVybiAwLjA7CisgICAgZWxzZSBpZiAodmlld3BvcnRFbGVtZW50LT5pc1NWRygpKSB7
CisgICAgICAgIGNvbnN0IFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PGNvbnN0IFNW
R1NWR0VsZW1lbnQqPih2aWV3cG9ydEVsZW1lbnQpOworICAgICAgICBpZiAoc3ZnLT5oYXNBdHRy
aWJ1dGUoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSkgeworICAgICAgICAgICAgd2lkdGggPSBzdmct
PnZpZXdCb3goKS53aWR0aCgpOworICAgICAgICAgICAgaGVpZ2h0ID0gc3ZnLT52aWV3Qm94KCku
aGVpZ2h0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3aWR0aCA9IHN2Zy0+d2lk
dGgoKS52YWx1ZSgpOworICAgICAgICAgICAgaGVpZ2h0ID0gc3ZnLT5oZWlnaHQoKS52YWx1ZSgp
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTjoKLSAgICAg
ICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9OVU1CRVI6Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZ
UEVfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpZiAobm90aWZ5
ICYmIG1fY29udGV4dCkKLSAgICAgICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2Uo
KTsKLX0KLQotYm9vbCBTVkdMZW5ndGg6OnVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRVbml0cyhib29s
IG5vdGlmeSkKLXsKLSAgICBpZiAobV91bml0VHlwZSA9PSBTVkdfTEVOR1RIVFlQRV9VTktOT1dO
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKLSAg
ICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFOgotICAgICAgICAgICAgLy9rZEVy
cm9yKCkgPDwgInVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRVbml0cygpIFNWR19MRU5HVEhUWVBFX1BF
UkNFTlRBR0UgLSBVTlNVUFBPUlRFRCEgUGxlYXNlIHJlcG9ydCEiIDw8IGVuZGw7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfRU1TOgotICAg
ICAgICAgICAgLy9rZEVycm9yKCkgPDwgInVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRVbml0cygpIFNW
R19MRU5HVEhUWVBFX0VNUyAtIFVOU1VQUE9SVEVEISBQbGVhc2UgcmVwb3J0ISIgPDwgZW5kbDsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9F
WFM6Ci0gICAgICAgICAgICAvL2tkRXJyb3IoKSA8PCAidXBkYXRlVmFsdWVJblNwZWNpZmllZFVu
aXRzKCkgU1ZHX0xFTkdUSFRZUEVfRVhTIC0gVU5TVVBQT1JURUQhIFBsZWFzZSByZXBvcnQhIiA8
PCBlbmRsOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIFNWR19MRU5H
VEhUWVBFX1BYOgotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBtX3ZhbHVl
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfQ006Ci0g
ICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IG1fdmFsdWUgLyBkcGkoKSAqIDIu
NTQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9NTToK
LSAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gbV92YWx1ZSAvIGRwaSgpICog
MjUuNDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX0lO
OgotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBtX3ZhbHVlIC8gZHBpKCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9QVDoKLSAg
ICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gbV92YWx1ZSAvIGRwaSgpICogNzIu
MDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1BDOgot
ICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBtX3ZhbHVlIC8gZHBpKCkgKiA2
LjA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9VTktO
T1dOOgotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX05VTUJFUjoKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgIH07Ci0gICAgCi0gICAgaWYgKG5vdGlmeSAmJiBtX2NvbnRleHQpCi0gICAgICAg
IG1fY29udGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CiAKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KKyAgICBpZiAobW9kZSA9PSBMZW5ndGhNb2RlV2lkdGgpCisgICAgICAgIHJldHVybiB2YWx1
ZSAqIHdpZHRoOworICAgIGVsc2UgaWYgKG1vZGUgPT0gTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAg
ICAgcmV0dXJuIHZhbHVlICogaGVpZ2h0OworICAgIGVsc2UgaWYgKG1vZGUgPT0gTGVuZ3RoTW9k
ZU90aGVyKQorICAgICAgICByZXR1cm4gdmFsdWUgKiBzcXJ0KHBvdyhkb3VibGUod2lkdGgpLCAy
KSArIHBvdyhkb3VibGUoaGVpZ2h0KSwgMikpIC8gc3FydCgyLjApOwogCi1ib29sIFNWR0xlbmd0
aDo6YmJveFJlbGF0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9iYm94UmVsYXRpdmU7Cisg
ICAgcmV0dXJuIDAuMDsKIH0KIAotdm9pZCBTVkdMZW5ndGg6OnNldEJib3hSZWxhdGl2ZShib29s
IHJlbGF0aXZlKQotewotICAgIG1fYmJveFJlbGF0aXZlID0gcmVsYXRpdmU7Ci19CiAKLWNvbnN0
IFNWR1N0eWxlZEVsZW1lbnQqIFNWR0xlbmd0aDo6Y29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fY29udGV4dDsKIH0KIAotdm9pZCBTVkdMZW5ndGg6OnNldENvbnRleHQoY29uc3QgU1ZH
U3R5bGVkRWxlbWVudCogY29udGV4dCkKLXsKLSAgICBtX2NvbnRleHQgPSBjb250ZXh0OwotfQot
Ci19Ci0KLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06
dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaAkocmV2aXNpb24gMTgyNDQpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsODEgKzIwLDg3IEBACiAgICAgQm9zdG9u
LCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHTGVuZ3RoSW1wbF9I
Ci0jZGVmaW5lIEtTVkdfU1ZHTGVuZ3RoSW1wbF9ICisjaWZuZGVmIFNWR0xlbmd0aF9ICisjZGVm
aW5lIFNWR0xlbmd0aF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTVkdIZWxwZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi0gICAgY2xhc3MgUmVuZGVyUGF0aDsKLSAgICBjbGFzcyBTVkdFbGVtZW50OwogICAgIGNs
YXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKLSAgICBjbGFzcyBTVkdMZW5ndGggOiBwdWJsaWMgU2hh
cmVkPFNWR0xlbmd0aD4geworICAgIGVudW0gU1ZHTGVuZ3RoVHlwZSB7CisgICAgICAgIExlbmd0
aFR5cGVVbmtub3duID0gMCwKKyAgICAgICAgTGVuZ3RoVHlwZU51bWJlciwKKyAgICAgICAgTGVu
Z3RoVHlwZVBlcmNlbnRhZ2UsCisgICAgICAgIExlbmd0aFR5cGVFTVMsCisgICAgICAgIExlbmd0
aFR5cGVFWFMsCisgICAgICAgIExlbmd0aFR5cGVQWCwKKyAgICAgICAgTGVuZ3RoVHlwZUNNLAor
ICAgICAgICBMZW5ndGhUeXBlTU0sCisgICAgICAgIExlbmd0aFR5cGVJTiwKKyAgICAgICAgTGVu
Z3RoVHlwZVBULAorICAgICAgICBMZW5ndGhUeXBlUEMKKyAgICB9OworCisgICAgZW51bSBTVkdM
ZW5ndGhNb2RlIHsKKyAgICAgICAgTGVuZ3RoTW9kZVdpZHRoID0gMCwKKyAgICAgICAgTGVuZ3Ro
TW9kZUhlaWdodCwKKyAgICAgICAgTGVuZ3RoTW9kZU90aGVyCisgICAgfTsKKworICAgIGNsYXNz
IFNWR0xlbmd0aCB7CiAgICAgcHVibGljOgotICAgICAgICBTVkdMZW5ndGgoY29uc3QgU1ZHU3R5
bGVkRWxlbWVudCogY29udGV4dCwgTGVuZ3RoTW9kZSBtb2RlID0gTE1fVU5LTk9XTiwgY29uc3Qg
U1ZHRWxlbWVudCogdmlld3BvcnQgPSAwKTsKLSAgICAgICAgdmlydHVhbCB+U1ZHTGVuZ3RoKCk7
Ci0gICAgICAgIAotICAgICAgICBlbnVtIFNWR0xlbmd0aFR5cGUgewotICAgICAgICAgICAgU1ZH
X0xFTkdUSFRZUEVfVU5LTk9XTiAgICAgICAgICA9IDAsCi0gICAgICAgICAgICBTVkdfTEVOR1RI
VFlQRV9OVU1CRVIgICAgICAgICAgID0gMSwKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BF
UkNFTlRBR0UgICAgICAgPSAyLAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfRU1TICAgICAg
ICAgICAgICA9IDMsCi0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9FWFMgICAgICAgICAgICAg
ID0gNCwKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BYICAgICAgICAgICAgICAgPSA1LAot
ICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfQ00gICAgICAgICAgICAgICA9IDYsCi0gICAgICAg
ICAgICBTVkdfTEVOR1RIVFlQRV9NTSAgICAgICAgICAgICAgID0gNywKLSAgICAgICAgICAgIFNW
R19MRU5HVEhUWVBFX0lOICAgICAgICAgICAgICAgPSA4LAotICAgICAgICAgICAgU1ZHX0xFTkdU
SFRZUEVfUFQgICAgICAgICAgICAgICA9IDksCi0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9Q
QyAgICAgICAgICAgICAgID0gMTAKKyAgICAgICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNlIGVu
dW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5lcmF0aW9uCisgICAgICAg
IGVudW0geworICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTiA9IDAsCisgICAgICAg
ICAgICBTVkdfTEVOR1RIVFlQRV9OVU1CRVIsCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9Q
RVJDRU5UQUdFLAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfRU1TLAorICAgICAgICAgICAg
U1ZHX0xFTkdUSFRZUEVfRVhTLAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUFgsCisgICAg
ICAgICAgICBTVkdfTEVOR1RIVFlQRV9DTSwKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX01N
LAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfSU4sCisgICAgICAgICAgICBTVkdfTEVOR1RI
VFlQRV9QVCwKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BDCiAgICAgICAgIH07CiAKKyAg
ICAgICAgU1ZHTGVuZ3RoKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQgPSAwLCBTVkdM
ZW5ndGhNb2RlIG1vZGUgPSBMZW5ndGhNb2RlT3RoZXIsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0
cmluZyA9IFN0cmluZygpKTsKKwogICAgICAgICAvLyAnU1ZHTGVuZ3RoJyBmdW5jdGlvbnMKICAg
ICAgICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSgpIGNvbnN0OwogCiAgICAgICAgIGZsb2F0IHZh
bHVlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0VmFsdWUoZmxvYXQgdmFsdWUpOworICAgICAg
ICB2b2lkIHNldFZhbHVlKGZsb2F0KTsKIAogICAgICAgICBmbG9hdCB2YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMoZmxv
YXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICAgICAgdm9pZCBzZXRWYWx1ZUluU3BlY2lm
aWVkVW5pdHMoZmxvYXQpOwogCiAgICAgICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7
CiAgICAgICAgIHZvaWQgc2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmKTsKIAotICAgICAg
ICB2b2lkIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIGZs
b2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7Ci0gICAgICAgIHZvaWQgY29udmVydFRvU3BlY2lm
aWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpOwotCi0gICAgICAgIC8vIEhlbHBlcnMK
LSAgICAgICAgYm9vbCBiYm94UmVsYXRpdmUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRCYm94
UmVsYXRpdmUoYm9vbCk7CisgICAgICAgIHZvaWQgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNp
Z25lZCBzaG9ydCwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICAgICAgdm9pZCBj
b252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCk7CiAKLSAgICAgICAgY29uc3Qg
U1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldENvbnRl
eHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCk7CisgICAgICAgIC8vIEhlbHBlciBm
dW5jdGlvbnMKKyAgICAgICAgc3RhdGljIGJvb2wgaXNGcmFjdGlvbihjb25zdCBTVkdMZW5ndGgm
KTsKKyAgICAgICAgc3RhdGljIGZsb2F0IFBlcmNlbnRhZ2VPZlZpZXdwb3J0KGZsb2F0IHZhbHVl
LCBjb25zdCBTVkdTdHlsZWRFbGVtZW50ICpjb250ZXh0LCBTVkdMZW5ndGhNb2RlIG1vZGUpOwog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCB1cGRhdGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMo
Ym9vbCBub3RpZnkgPSB0cnVlKTsKLSAgICAgICAgdm9pZCB1cGRhdGVWYWx1ZShib29sIG5vdGlm
eSA9IHRydWUpOwotCiAgICAgICAgIGRvdWJsZSBkcGkoKSBjb25zdDsKIAotICAgICAgICBmbG9h
dCBtX3ZhbHVlOwogICAgICAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsKLQotICAg
ICAgICBMZW5ndGhNb2RlIG1fbW9kZSA6IDI7Ci0gICAgICAgIGJvb2wgbV9iYm94UmVsYXRpdmUg
OiAxOwotICAgICAgICBTVkdMZW5ndGhUeXBlIG1fdW5pdFR5cGUgOiA0OwotICAgICAgICBib29s
IG1fcmVxdWlyZXNMYXlvdXQgOiAxOworICAgICAgICB1bnNpZ25lZCBpbnQgbV91bml0OwogCiAg
ICAgICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIG1fY29udGV4dDsKLSAgICAgICAgY29uc3Qg
U1ZHRWxlbWVudCogbV92aWV3cG9ydEVsZW1lbnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZiAvLyBLU1ZHX1NWR0xlbmd0
aEltcGxfSAorI2VuZGlmIC8vIFNWR0xlbmd0aF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHTGVuZ3RoLmlkbAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdMZW5ndGguaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1v
ZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcsIEdlbmVyYXRlQ29u
c3RydWN0b3JdIFNWR0xlbmd0aCB7IAorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHLCBH
ZW5lcmF0ZUNvbnN0cnVjdG9yLCBQT0RUeXBlPVNWR0xlbmd0aF0gU1ZHTGVuZ3RoIHsgCiAgICAg
ICAgIC8vIExlbmd0aCBVbml0IFR5cGVzCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNW
R19MRU5HVEhUWVBFX1VOS05PV04gICAgPSAwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBTVkdfTEVOR1RIVFlQRV9OVU1CRVIgICAgID0gMTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0xlbmd0aExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xl
bmd0aExpc3QuY3BwCShyZXZpc2lvbiAxODI0NCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xl
bmd0aExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNWR0xlbmd0aExpc3Q6OlNWR0xlbmd0aExpc3QoKQotICAgIDogU1ZHTGlz
dDxSZWZQdHI8U1ZHTGVuZ3RoPiA+KCkKKyAgICA6IFNWR0xpc3Q8U1ZHTGVuZ3RoPigpCiB7CiB9
CiAKQEAgLTM3LDE3ICszNywxNCBAQCBTVkdMZW5ndGhMaXN0Ojp+U1ZHTGVuZ3RoTGlzdCgpCiB7
CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29u
c3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCwgTGVuZ3RoTW9kZSBtb2RlKQordm9pZCBTVkdM
ZW5ndGhMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTVkdTdHlsZWRFbGVt
ZW50KiBjb250ZXh0LCBTVkdMZW5ndGhNb2RlIG1vZGUpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBsZW5ndGhzID0gdmFsdWUuc3BsaXQoJyAnKTsK
ICAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGVuZ3Rocy5lbmQoKTsK
LSAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxlbmd0aHMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFNWR0xlbmd0aCogbGVuZ3RoID0gbmV3
IFNWR0xlbmd0aChjb250ZXh0LCBtb2RlKTsKLSAgICAgICAgbGVuZ3RoLT5zZXRWYWx1ZUFzU3Ry
aW5nKCppdCk7Ci0gICAgICAgIGFwcGVuZEl0ZW0obGVuZ3RoLCBlYyk7Ci0gICAgfQorICAgIGZv
ciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGVuZ3Rocy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGFwcGVuZEl0ZW0oU1ZHTGVuZ3RoKGNvbnRleHQsIG1v
ZGUsICppdCksIGVjKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3Ro
TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuaAko
cmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZQogewot
ICAgIGNsYXNzIFNWR0xlbmd0aExpc3QgOiBwdWJsaWMgU1ZHTGlzdDxSZWZQdHI8U1ZHTGVuZ3Ro
PiA+CisgICAgY2xhc3MgU1ZHTGVuZ3RoTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFNWR0xlbmd0aD4K
ICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdMZW5ndGhMaXN0KCk7CiAgICAgICAgIHZp
cnR1YWwgflNWR0xlbmd0aExpc3QoKTsKIAotICAgICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQsIExlbmd0aE1vZGUgbW9k
ZSk7CisgICAgICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU1ZHU3R5
bGVkRWxlbWVudCogY29udGV4dCwgU1ZHTGVuZ3RoTW9kZSBtb2RlKTsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxODI0NCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAt
MjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NV
UFBPUlQKICNpbmNsdWRlICJTVkdMaW5lRWxlbWVudC5oIgogCkBAIC0zNiwxMCArMzcsMTAgQEAg
U1ZHTGluZUVsZW1lbnQ6OlNWR0xpbmVFbGVtZW50KGNvbnN0IFF1YQogICAgICwgU1ZHVGVzdHMo
KQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQoKQotICAgICwgbV94MShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVs
ZW1lbnQoKSkpCi0gICAgLCBtX3kxKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3
cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3gyKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgs
IHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feTIobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9I
RUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feDEodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoKQorICAgICwgbV95MSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV94Mih0aGlz
LCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kyKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7
CiB9CiAKQEAgLTQ3LDY2ICs0OCw0MiBAQCBTVkdMaW5lRWxlbWVudDo6flNWR0xpbmVFbGVtZW50
KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQs
IFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYMSwgeDEsIFNWR05hbWVzOjp4MUF0dHIubG9j
YWxOYW1lKCksIG1feDEuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdM
aW5lRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFkxLCB5MSwgU1ZHTmFtZXM6
OnkxQXR0ci5sb2NhbE5hbWUoKSwgbV95MS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWDIsIHgy
LCBTVkdOYW1lczo6eDJBdHRyLmxvY2FsTmFtZSgpLCBtX3gyLmdldCgpKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVu
Z3RoLCBZMiwgeTIsIFNWR05hbWVzOjp5MkF0dHIubG9jYWxOYW1lKCksIG1feTIuZ2V0KCkpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgWDEsIHgxLCBTVkdOYW1lczo6eDFBdHRyLmxvY2FsTmFtZSgpLCBtX3gx
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFkxLCB5MSwgU1ZHTmFtZXM6OnkxQXR0ci5sb2NhbE5hbWUoKSwg
bV95MSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYMiwgeDIsIFNWR05hbWVzOjp4MkF0dHIubG9jYWxOYW1l
KCksIG1feDIpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwg
U1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWTIsIHkyLCBTVkdOYW1lczo6eTJBdHRyLmxvY2Fs
TmFtZSgpLCBtX3kyKQogCiB2b2lkIFNWR0xpbmVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eDFB
dHRyKQotICAgICAgICB4MUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAg
ICAgICAgc2V0WDFCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnkxQXR0cikKLSAg
ICAgICAgeTFCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNl
dFkxQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eDJBdHRyKQotICAgICAgICB4
MkJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WDJCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnkyQXR0cikKLSAgICAgICAgeTJCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFkyQmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UKICAgICB7
Ci0gICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHJldHVy
bjsKLSAgICAgICAgaWYgKFNWR0xhbmdTcGFjZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikp
IHJldHVybjsKLSAgICAgICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47CisgICAgICAgIGlmIChTVkdUZXN0czo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlm
IChTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cikpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAg
ICB9CiB9CiAKIFBhdGggU1ZHTGluZUVsZW1lbnQ6OnRvUGF0aERhdGEoKSBjb25zdAogewotICAg
IGZsb2F0IF94MSA9IHgxKCktPnZhbHVlKCksIF95MSA9IHkxKCktPnZhbHVlKCk7Ci0gICAgZmxv
YXQgX3gyID0geDIoKS0+dmFsdWUoKSwgX3kyID0geTIoKS0+dmFsdWUoKTsKLQotICAgIHJldHVy
biBQYXRoOjpjcmVhdGVMaW5lKEZsb2F0UG9pbnQoX3gxLCBfeTEpLCBGbG9hdFBvaW50KF94Miwg
X3kyKSk7Ci19Ci0KLWNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIFNWR0xpbmVFbGVtZW50OjpwdXNo
QXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KQotewotICAg
IC8vIEFsbCBhdHRyaWJ1dGUncyBjb250ZXh0cyBhcmUgZXF1YWwgKHNvIGp1c3QgdGFrZSB0aGUg
b25lIGZyb20gJ3gxJykuCi0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcmVzdG9yZSA9IHgx
KCktPmNvbnRleHQoKTsKLQotICAgIHgxKCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgeTEo
KS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICB4MigpLT5zZXRDb250ZXh0KGNvbnRleHQpOwot
ICAgIHkyKCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgCi0gICAgU1ZHU3R5bGVkRWxlbWVu
dDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29udGV4dCk7Ci0gICAgcmV0dXJuIHJlc3RvcmU7Ci19
Ci0KLWJvb2wgU1ZHTGluZUVsZW1lbnQ6Omhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdAotewot
ICAgIGlmICh4MSgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVS
Q0VOVEFHRSB8fAotICAgICAgICB5MSgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xF
TkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICB4MigpLT51bml0VHlwZSgpID09IFNWR0xl
bmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICB5MigpLT51bml0VHlw
ZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFBhdGg6OmNyZWF0ZUxp
bmUoRmxvYXRQb2ludCh4MSgpLnZhbHVlKCksIHkxKCkudmFsdWUoKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmxvYXRQb2ludCh4MigpLnZhbHVlKCksIHkyKCkudmFsdWUoKSkpOwog
fQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9u
IDE4MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5p
a29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBA
QAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NW
R0xpbmVFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHTGluZUVsZW1lbnRJbXBsX0gKKyNp
Zm5kZWYgU1ZHTGluZUVsZW1lbnRfSAorI2RlZmluZSBTVkdMaW5lRWxlbWVudF9ICisKICNpZmRl
ZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5o
IgpAQCAtNDksMjAgKzUwLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVk
RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRo
IHRvUGF0aERhdGEoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnQqIHB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRl
eHQpOwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3Q7Ci0KICAgICBwcml2YXRlOgogICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQogIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYMSwg
eDEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFkxLCB5MSkKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQ
dHI8U1ZHTGVuZ3RoPiwgWDIsIHgyKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZMiwg
eTIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgxLCB4MSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWTEs
IHkxKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1l
bnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYMiwgeDIpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFky
LCB5MikKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjQ0
KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMzcsMzUg
KzM3LDM1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2MpCi0g
ICAgLCBtX3gxKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgp
KSkKLSAgICAsIG1feTEobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxl
bWVudCgpKSkKLSAgICAsIG1feDIobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3Bv
cnRFbGVtZW50KCkpKQotICAgICwgbV95MihuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwg
dmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94MSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisg
ICAgLCBtX3kxKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3gyKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkKKyAgICAsIG1feTIodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKLSAgICAv
LyBTcGVjIDogSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlz
IGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgotICAgIG1feDItPnNldFZh
bHVlQXNTdHJpbmcoIjEwMCUiKTsKKyAgICAvLyBTcGVjOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5v
dCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBz
cGVjaWZpZWQuCisgICAgc2V0WDJCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCwgIjEwMCUiKSk7CiB9CiAKIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6flNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgx
LCB4MSwgU1ZHTmFtZXM6OngxQXR0ci5sb2NhbE5hbWUoKSwgbV94MS5nZXQoKSkKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgTGVuZ3RoLCBsZW5ndGgsIFkxLCB5MSwgU1ZHTmFtZXM6OnkxQXR0ci5sb2NhbE5hbWUoKSwg
bV95MS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6
OngyQXR0ci5sb2NhbE5hbWUoKSwgbV94Mi5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5n
dGgsIFkyLCB5MiwgU1ZHTmFtZXM6OnkyQXR0ci5sb2NhbE5hbWUoKSwgbV95Mi5nZXQoKSkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWDEsIHgxLCBTVkdOYW1lczo6eDFBdHRyLmxvY2FsTmFt
ZSgpLCBtX3gxKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5
MUF0dHIubG9jYWxOYW1lKCksIG1feTEpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgyLCB4
MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2NhbE5hbWUoKSwgbV94MikKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgWTIsIHkyLCBTVkdOYW1lczo6eTJBdHRyLmxvY2FsTmFtZSgpLCBtX3kyKQogCiB2
b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRy
LT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngxQXR0cikKLSAg
ICAgICAgeDFCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNl
dFgxQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MUF0dHIpCi0gICAgICAgIHkx
QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZMUJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngyQXR0cikKLSAgICAgICAgeDJCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFgyQmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MkF0dHIpCi0gICAgICAgIHkyQmFzZVZhbHVlKCktPnNl
dFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZMkJhc2VWYWx1ZShTVkdMZW5ndGgo
dGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlCiAgICAgICAgIFNWR0dy
YWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkBAIC03NSwxNSAr
NzUsMzIgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIHJl
YnVpbGRTdG9wcygpOyAvLyByZWJ1aWxkIHN0b3BzIGJlZm9yZSBwb3NzaWJseSBpbXBvcnRpbmcg
dGhlbSBmcm9tIGFueSByZWZlcmVuY2VkIGdyYWRpZW50LgogCiAgICAgYm9vbCBiYm94ID0gKGdy
YWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJ
TkdCT1gpOwotICAgIAotICAgIHgxKCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICB5MSgp
LT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgeDIoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gp
OwotICAgIHkyKCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICAKLSAgICBmbG9hdCBfeDEg
PSB4MSgpLT52YWx1ZSgpLCBfeTEgPSB5MSgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF94MiA9IHgy
KCktPnZhbHVlKCksIF95MiA9IHkyKCktPnZhbHVlKCk7CiAKKyAgICBmbG9hdCBfeDEsIF95MSwg
X3gyLCBfeTI7CisKKyAgICBpZiAoYmJveCkgeworICAgICAgICBfeDEgPSB4MSgpLnZhbHVlSW5T
cGVjaWZpZWRVbml0cygpOworICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHgxKCkp
KQorICAgICAgICAgICAgX3gxICo9IDEwMC4wOworCisgICAgICAgIF95MSA9IHkxKCkudmFsdWVJ
blNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeTEo
KSkpCisgICAgICAgICAgICBfeTEgKj0gMTAwLjA7CisKKyAgICAgICAgX3gyID0geDIoKS52YWx1
ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbih4
MigpKSkKKyAgICAgICAgICAgIF94MiAqPSAxMDAuMDsKKworICAgICAgICBfeTIgPSB5MigpLnZh
bHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9u
KHkyKCkpKQorICAgICAgICAgICAgX3kyICo9IDEwMC4wOworICAgIH0gZWxzZSB7CisgICAgICAg
IF94MSA9IHgxKCkudmFsdWUoKTsKKyAgICAgICAgX3kxID0geTEoKS52YWx1ZSgpOworICAgICAg
ICBfeDIgPSB4MigpLnZhbHVlKCk7CisgICAgICAgIF95MiA9IHkyKCkudmFsdWUoKTsKKyAgICB9
IAorIAogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50PiBncmFkID0gV1RG
OjpzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQ+KF9ncmFk
KTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9ybSgp
LT5udW1iZXJPZkl0ZW1zKCkgPiAwKQpAQCAtOTEsNDAgKzEwOCwyNyBAQCB2b2lkIFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAKICAgICBEZXByZWNhdGVkU3RyaW5nIHJlZiA9
IGhyZWYoKS5kZXByZWNhdGVkU3RyaW5nKCk7CiAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyPiBw
c2VydmVyID0gZ2V0UGFpbnRTZXJ2ZXJCeUlkKGRvY3VtZW50KCksIHJlZi5taWQoMSkpOwotICAg
IAorCiAgICAgaWYgKHBzZXJ2ZXIgJiYgKHBzZXJ2ZXItPnR5cGUoKSA9PSBSYWRpYWxHcmFkaWVu
dFBhaW50U2VydmVyIHx8IHBzZXJ2ZXItPnR5cGUoKSA9PSBMaW5lYXJHcmFkaWVudFBhaW50U2Vy
dmVyKSkgewogICAgICAgICBib29sIGlzTGluZWFyID0gcHNlcnZlci0+dHlwZSgpID09IExpbmVh
ckdyYWRpZW50UGFpbnRTZXJ2ZXI7CiAgICAgICAgIFNWR1BhaW50U2VydmVyR3JhZGllbnQqIGdy
YWRpZW50ID0gc3RhdGljX2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudCo+KHBzZXJ2ZXIuZ2V0
KCkpOwogCiAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFVuaXRz
QXR0cikpCiAgICAgICAgICAgICBiYm94ID0gZ3JhZGllbnQtPmJvdW5kaW5nQm94TW9kZSgpOwot
ICAgICAgICAgICAgCisKICAgICAgICAgaWYgKGlzTGluZWFyKSB7CiAgICAgICAgICAgICBTVkdQ
YWludFNlcnZlckxpbmVhckdyYWRpZW50KiBsaW5lYXIgPSBzdGF0aWNfY2FzdDxTVkdQYWludFNl
cnZlckxpbmVhckdyYWRpZW50Kj4ocHNlcnZlci5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoIWhh
c0F0dHJpYnV0ZShTVkdOYW1lczo6eDFBdHRyKSkKICAgICAgICAgICAgICAgICBfeDEgPSBsaW5l
YXItPmdyYWRpZW50U3RhcnQoKS54KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAg
ICAgICAgICAgICAgIF94MSAqPSAxMDAuOwogCiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0
ZShTVkdOYW1lczo6eTFBdHRyKSkKICAgICAgICAgICAgICAgICBfeTEgPSBsaW5lYXItPmdyYWRp
ZW50U3RhcnQoKS55KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAg
ICAgIF95MSAqPSAxMDAuOwogCiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1l
czo6eDJBdHRyKSkKICAgICAgICAgICAgICAgICBfeDIgPSBsaW5lYXItPmdyYWRpZW50RW5kKCku
eCgpOwotICAgICAgICAgICAgZWxzZSBpZiAoYmJveCkKLSAgICAgICAgICAgICAgICBfeDIgKj0g
MTAwLjsKIAogICAgICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnkyQXR0cikp
CiAgICAgICAgICAgICAgICAgX3kyID0gbGluZWFyLT5ncmFkaWVudEVuZCgpLnkoKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGJib3gpCi0gICAgICAgICAgICAgICAgX3kyICo9IDEwMC47Ci0gICAg
ICAgIH0gZWxzZSBpZiAoYmJveCkgewotICAgICAgICAgICAgX3gxICo9IDEwMC4wOwotICAgICAg
ICAgICAgX3kxICo9IDEwMC4wOwotICAgICAgICAgICAgX3gyICo9IDEwMC4wOwotICAgICAgICAg
ICAgX3kyICo9IDEwMC4wOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNmb3JtQXR0cikpCkBAIC0xNDMsMTMgKzE0Nyw2IEBAIHZv
aWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWQKICAgICAgICAgICAgIGdyYWQt
PnNldEdyYWRpZW50U3ByZWFkTWV0aG9kKFNQUkVBRE1FVEhPRF9SRVBFQVQpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBncmFkLT5zZXRHcmFkaWVudFNwcmVhZE1ldGhvZChTUFJFQURNRVRI
T0RfUEFEKTsKLQotICAgICAgICBpZiAoYmJveCkgewotICAgICAgICAgICAgX3gxICo9IDEwMC4w
OwotICAgICAgICAgICAgX3kxICo9IDEwMC4wOwotICAgICAgICAgICAgX3gyICo9IDEwMC4wOwot
ICAgICAgICAgICAgX3kyICo9IDEwMC4wOwotICAgICAgICB9CiAgICAgfQogCiAgICAgZ3JhZC0+
c2V0R3JhZGllbnRUcmFuc2Zvcm0obWF0KTsKQEAgLTE2MCw2ICsxNTcsNiBAQCB2b2lkIFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAog
I2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAxODI0NCkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5
IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdf
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudF9ICisj
ZGVmaW5lIFNWR0xpbmVhckdSYWRpZW50RWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAog
CiAjaW5jbHVkZSA8U1ZHR3JhZGllbnRFbGVtZW50Lmg+CkBAIC00NiwxMCArNDcsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQs
IFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYMSwgeDEpCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0
aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZMSwgeTEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0
cjxTVkdMZW5ndGg+LCBYMiwgeDIpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5n
dGg+LCBZMiwgeTIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYMSwgeDEpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZMSwgeTEpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZH
TGVuZ3RoLCBYMiwgeDIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZMiwgeTIpCiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHTWFya2VyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
TWFya2VyRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHTWFya2VyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgS0RFIHByb2plY3QKQEAgLTQyLDEwICs0MiwxMCBAQCBTVkdNYXJrZXJFbGVtZW50OjpTVkdN
YXJrZXJFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdGaXRUb1ZpZXdCb3goKQotICAgICwgbV9y
ZWZYKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAg
ICAsIG1fcmVmWShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50
KCkpKQotICAgICwgbV9tYXJrZXJXaWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2
aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX21hcmtlckhlaWdodChuZXcgU1ZHTGVuZ3RoKHRo
aXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV9yZWZYKHRoaXMsIExl
bmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fcmVmWSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAg
ICwgbV9tYXJrZXJXaWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX21hcmtlckhl
aWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSAKICAgICAsIG1fbWFya2VyVW5pdHMoU1ZHX01B
UktFUlVOSVRTX1NUUk9LRVdJRFRIKQogICAgICwgbV9vcmllbnRUeXBlKDApCiAgICAgLCBtX29y
aWVudEFuZ2xlKG5ldyBTVkdBbmdsZSh0aGlzKSkKQEAgLTU2LDYgKzU2LDE0IEBAIFNWR01hcmtl
ckVsZW1lbnQ6On5TVkdNYXJrZXJFbGVtZW50KCkKIHsKIH0KIAorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
UmVmWCwgcmVmWCwgU1ZHTmFtZXM6OnJlZlhBdHRyLmxvY2FsTmFtZSgpLCBtX3JlZlgpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBSZWZZLCByZWZZLCBTVkdOYW1lczo6cmVmWUF0dHIubG9jYWxOYW1lKCks
IG1fcmVmWSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQs
IGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBNYXJrZXJVbml0cywgbWFya2VyVW5pdHMs
IFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIubG9jYWxOYW1lKCksIG1fbWFya2VyVW5pdHMpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgsIFNWR05hbWVzOjptYXJr
ZXJXaWR0aEF0dHIubG9jYWxOYW1lKCksIG1fbWFya2VyV2lkdGgpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBNYXJrZXJIZWlnaHQsIG1hcmtlckhlaWdodCwgU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIu
bG9jYWxOYW1lKCksIG1fbWFya2VySGVpZ2h0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHTWFya2VyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE9yaWVu
dFR5cGUsIG9yaWVudFR5cGUsICJvcmllbnRUeXBlIiwgbV9vcmllbnRUeXBlKQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHQW5nbGUqLCBBbmdsZSwg
YW5nbGUsIE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSwgIm9yaWVudEFuZ2xlIiwgbV9vcmllbnRB
bmdsZS5nZXQoKSkKKwogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSA9IGF0dHItPnZhbHVlKCk7CkBAIC02MywxMyArNzEsMTMgQEAgdm9pZCBTVkdNYXJrZXJFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAgICBpZiAodmFsdWUgPT0gInVzZXJTcGFjZU9u
VXNlIikKICAgICAgICAgICAgIHNldE1hcmtlclVuaXRzQmFzZVZhbHVlKFNWR19NQVJLRVJVTklU
U19VU0VSU1BBQ0VPTlVTRSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnJlZlhBdHRyKQotICAgICAgICByZWZYQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgICAgICBzZXRSZWZYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
OjpyZWZZQXR0cikKLSAgICAgICAgcmVmWUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlKTsKKyAgICAgICAgc2V0UmVmWUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
Om1hcmtlcldpZHRoQXR0cikKLSAgICAgICAgbWFya2VyV2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldE1hcmtlcldpZHRoQmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyKQotICAgICAgICBtYXJrZXJIZWln
aHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldE1hcmtl
ckhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUp
KTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9yaWVudEF0dHIpIHsK
ICAgICAgICAgaWYgKHZhbHVlID09ICJhdXRvIikKICAgICAgICAgICAgIHNldE9yaWVudFRvQXV0
bygpOwpAQCAtOTAsMTQgKzk4LDYgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYgogICAgIH0KIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFy
a2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFJlZlgsIHJlZlgsIFNWR05h
bWVzOjpyZWZYQXR0ci5sb2NhbE5hbWUoKSwgbV9yZWZYLmdldCgpKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5n
dGgsIFJlZlksIHJlZlksIFNWR05hbWVzOjpyZWZZQXR0ci5sb2NhbE5hbWUoKSwgbV9yZWZZLmdl
dCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgaW50
LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZH
TmFtZXM6Om1hcmtlclVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9tYXJrZXJVbml0cykKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCosIExl
bmd0aCwgbGVuZ3RoLCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgsIFNWR05hbWVzOjptYXJrZXJX
aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fbWFya2VyV2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQsIFNWR05hbWVzOjptYXJrZXJIZWlnaHRB
dHRyLmxvY2FsTmFtZSgpLCBtX21hcmtlckhlaWdodC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0
aW9uLCBPcmllbnRUeXBlLCBvcmllbnRUeXBlLCAib3JpZW50VHlwZSIsIG1fb3JpZW50VHlwZSkK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0FuZ2xl
KiwgQW5nbGUsIGFuZ2xlLCBPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUsICJvcmllbnRBbmdsZSIs
IG1fb3JpZW50QW5nbGUuZ2V0KCkpCi0KIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50
VG9BdXRvKCkKIHsKICAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKFNWR19NQVJLRVJfT1JJRU5U
X0FVVE8pOwpAQCAtMTI2LDcgKzEyNiw3IEBAIFNWR1Jlc291cmNlKiBTVkdNYXJrZXJFbGVtZW50
OjpjYW52YXNSZXMKICAgICBlbHNlCiAgICAgICAgIG1fbWFya2VyLT5zZXRBdXRvQW5nbGUoKTsK
IAotICAgIG1fbWFya2VyLT5zZXRSZWYocmVmWCgpLT52YWx1ZSgpLCByZWZZKCktPnZhbHVlKCkp
OworICAgIG1fbWFya2VyLT5zZXRSZWYocmVmWCgpLnZhbHVlKCksIHJlZlkoKS52YWx1ZSgpKTsK
ICAgICBtX21hcmtlci0+c2V0VXNlU3Ryb2tlV2lkdGgobWFya2VyVW5pdHMoKSA9PSBTVkdfTUFS
S0VSVU5JVFNfU1RST0tFV0lEVEgpOwogICAgIAogICAgIHJldHVybiBtX21hcmtlci5nZXQoKTsK
QEAgLTE0NCw2ICsxNDQsNiBAQCBSZW5kZXJPYmplY3QqIFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0
ZVJlCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJl
dmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMiw2
ICsyMiw3IEBACiAKICNpZm5kZWYgU1ZHTWFya2VyRWxlbWVudF9ICiAjZGVmaW5lIFNWR01hcmtl
ckVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1Jlc291cmNl
TWFya2VyLmgiCkBAIC0zNCw4ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAgICAgY2xh
c3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgU1ZHQW5nbGU7Ci0gICAgY2xhc3MgU1ZHQW5nbGU7Ci0g
ICAgY2xhc3MgU1ZHTGVuZ3RoOworICAgIAogICAgIGNsYXNzIFNWR01hcmtlckVsZW1lbnQgOiBw
dWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR0xhbmdTcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsCkBAIC03NSwxMCArNzUsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMo
U1ZHRml0VG9WaWV3Qm94LCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gpCiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0ZpdFRvVmlld0JveCwgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0
UmF0aW8pCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtl
ckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBSZWZYLCByZWZYKQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZH
TGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFJlZlksIHJlZlkpCi0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQ
dHI8U1ZHTGVuZ3RoPiwgTWFya2VyV2lkdGgsIG1hcmtlcldpZHRoKQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVm
UHRyPFNWR0xlbmd0aD4sIE1hcmtlckhlaWdodCwgbWFya2VySGVpZ2h0KQorICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBT
VkdMZW5ndGgsIFJlZlgsIHJlZlgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgUmVmWSwgcmVmWSkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQs
IFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5n
dGgsIFNWR0xlbmd0aCwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBpbnQsIGludCwgTWFy
a2VyVW5pdHMsIG1hcmtlclVuaXRzKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHTWFya2VyRWxlbWVudCwgaW50LCBpbnQsIE9yaWVudFR5cGUsIG9yaWVudFR5cGUp
CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50
LCBTVkdBbmdsZSosIFJlZlB0cjxTVkdBbmdsZT4sIE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjQ0KQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgICAgICAg
ICAgICAgICAgMjAwNSBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogCkBAIC00
NSwxMCArNDUsMTAgQEAgU1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KGNvbnN0IFF1YQog
ICAgICwgU1ZHVGVzdHMoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQoKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lE
VEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExN
X0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV93aWR0aChuZXcgU1ZHTGVuZ3Ro
KHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2hlaWdodChuZXcg
U1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
KQorICAgICwgbV93aWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0
aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV9kaXJ0eSh0cnVlKQogewogfQpAQCAtNTcs
MTQgKzU3LDE0IEBAIFNWR01hc2tFbGVtZW50Ojp+U1ZHTWFza0VsZW1lbnQoKQogewogfQogCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwg
TGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94Lmdl
dCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xl
bmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCks
IG1feS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50
LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lk
dGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWln
aHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0Lmdl
dCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwg
bV94KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwg
bV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5s
b2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01h
c2tFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZH
TmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogCiB2b2lkIFNWR01hc2tF
bGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSogYXR0ciwgYm9vbCBwcmVzZXJ2ZURl
Y2xzKQogewotICAgIEludFNpemUgbmV3U2l6ZSA9IEludFNpemUobHJvdW5kZih3aWR0aCgpLT52
YWx1ZSgpKSwgbHJvdW5kZihoZWlnaHQoKS0+dmFsdWUoKSkpOworICAgIEludFNpemUgbmV3U2l6
ZSA9IEludFNpemUobHJvdW5kZih3aWR0aCgpLnZhbHVlKCkpLCBscm91bmRmKGhlaWdodCgpLnZh
bHVlKCkpKTsKICAgICBpZiAoIW1fbWFza2VyIHx8ICFtX21hc2tlci0+bWFzaygpIHx8IChtX21h
c2tlci0+bWFzaygpLT5zaXplKCkgIT0gbmV3U2l6ZSkpCiAgICAgICAgIG1fZGlydHkgPSB0cnVl
OwogICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoYXR0ciwg
cHJlc2VydmVEZWNscyk7CkBAIC04MCwxMyArODAsMTMgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dAogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52
YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAg
ICB4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFz
ZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUo
KS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1
ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDcsNyArMTA3LDcgQEAgU1ZHUmVzb3VyY2VJbWFn
ZSogU1ZHTWFza0VsZW1lbnQ6OmRyYXdNYQogICAgIHJldHVybiAwOwogICAgIFNWR1Jlc291cmNl
SW1hZ2UqIG1hc2tJbWFnZSA9IG5ldyBTVkdSZXNvdXJjZUltYWdlKCk7CiAKLSAgICBJbnRTaXpl
IHNpemUgPSBJbnRTaXplKGxyb3VuZGYod2lkdGgoKS0+dmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0
KCktPnZhbHVlKCkpKTsKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKGxyb3VuZGYod2lkdGgo
KS52YWx1ZSgpKSwgbHJvdW5kZihoZWlnaHQoKS52YWx1ZSgpKSk7CiAgICAgbWFza0ltYWdlLT5p
bml0KHNpemUpOwogCiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gY29udGV4dChjb250ZXh0
Rm9ySW1hZ2UobWFza0ltYWdlKSk7CkBAIC0xNDQsNiArMTQ0LDYgQEAgU1ZHUmVzb3VyY2UqIFNW
R01hc2tFbGVtZW50OjpjYW52YXNSZXNvdQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRp
ZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R01hc2tFbGVtZW50LmgJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
TWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogCiAjaWZuZGVm
IFNWR01hc2tFbGVtZW50X0gKICNkZWZpbmUgU1ZHTWFza0VsZW1lbnRfSAorCiAjaWZkZWYgU1ZH
X1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1Jlc291cmNlTWFza2VyLmgiCkBAIC02MCwxMCArNjEs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FS
RF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQpCiAgCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNW
R0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVp
Z2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdN
YXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNr
RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIFNW
R0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCiAKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIApJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNDQpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTUyLDEwICs1MiwxMCBAQCBTVkdQ
YXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW1lbnQoY29uCiAgICAgLCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCkKICAgICAsIFNWR0ZpdFRvVmlld0JveCgpCiAgICAgLCBTVkdSZXNv
dXJjZUxpc3RlbmVyKCkKLSAgICAsIG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2
aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlH
SFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xl
bmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlz
LCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAg
ICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkKICAgICAsIG1fcGF0dGVyblVuaXRzKFNWR1VuaXRUeXBlczo6U1ZH
X1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKICAgICAsIG1fcGF0dGVybkNvbnRlbnRVbml0
cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCiAgICAgLCBtX3Bh
dHRlcm5UcmFuc2Zvcm0obmV3IFNWR1RyYW5zZm9ybUxpc3QpCkBAIC02OSwxMCArNjksMTAgQEAg
U1ZHUGF0dGVybkVsZW1lbnQ6On5TVkdQYXR0ZXJuRWxlbWVudCgpCiAKIEFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVt
ZXJhdGlvbiwgUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMsIFNWR05hbWVzOjpwYXR0ZXJuVW5p
dHNBdHRyLmxvY2FsTmFtZSgpLCBtX3BhdHRlcm5Vbml0cykKIEFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlv
biwgUGF0dGVybkNvbnRlbnRVbml0cywgcGF0dGVybkNvbnRlbnRVbml0cywgU1ZHTmFtZXM6OnBh
dHRlcm5Db250ZW50VW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX3BhdHRlcm5Db250ZW50VW5pdHMp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwg
bV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1l
bnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9j
YWxOYW1lKCksIG1feS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1Bh
dHRlcm5FbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBT
VkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0
aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1l
KCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0
dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4
QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
UGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVz
Ojp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0
aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwg
bGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCks
IG1faGVpZ2h0KQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1l
bnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBUcmFuc2Zvcm1MaXN0LCB0cmFuc2Zvcm1MaXN0LCBQYXR0
ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3JtLCBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9y
bUF0dHIubG9jYWxOYW1lKCksIG1fcGF0dGVyblRyYW5zZm9ybS5nZXQoKSkKIAogdm9pZCBTVkdQ
YXR0ZXJuRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KQpAQCAtOTUsMTMgKzk1LDEzIEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmkKICAgICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm1zLT5jbGVhcihlYyk7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAg
ICAgIHhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhC
YXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZh
bHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICB3aWR0aEJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUo
U1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIGhlaWdodEJhc2VW
YWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZh
bHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2Ug
ewogICAgICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExOCwxOSArMTE4LDYgQEAgdm9pZCBTVkdQYXR0
ZXJuRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgIH0KIH0KIAotY29uc3QgU1ZHU3R5bGVk
RWxlbWVudCogU1ZHUGF0dGVybkVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNW
R1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpCi17Ci0gICAgLy8gQWxsIGF0dHJpYnV0ZSdzIGNvbnRl
eHRzIGFyZSBlcXVhbCAoc28ganVzdCB0YWtlIHRoZSBvbmUgZnJvbSAneCcpLgotICAgIGNvbnN0
IFNWR1N0eWxlZEVsZW1lbnQqIHJlc3RvcmUgPSB4KCktPmNvbnRleHQoKTsKLQotICAgIHgoKS0+
c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICB5KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAg
d2lkdGgoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICBoZWlnaHQoKS0+c2V0Q29udGV4dChj
b250ZXh0KTsKLQotICAgIHJldHVybiByZXN0b3JlOwotfQotCiB2b2lkIFNWR1BhdHRlcm5FbGVt
ZW50OjpyZXNvdXJjZU5vdGlmaWNhdGlvbigpIGNvbnN0CiB7CiAgICAgLy8gV2UncmUgcmVmZXJl
bmNlZCBieSBhICJjbGllbnQiLCBjYWxjdWxhdGUgdGhlIHRpbGUgbm93Li4uCkBAIC0xNjksMjYg
KzE1NiwzOCBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpmaWxsQXR0cmlidXRlc0ZyCiAKIHZv
aWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmRyYXdQYXR0ZXJuQ29udGVudEludG9UaWxlKGNvbnN0IFNW
R1BhdHRlcm5FbGVtZW50KiB0YXJnZXQsIGNvbnN0IEludFNpemUmIG5ld1NpemUsIEFmZmluZVRy
YW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtTWF0cml4KQogewotICAgIFNWR1N0eWxlZEVsZW1lbnQq
IGFjdGl2ZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4obV9wYWludFNl
cnZlci0+YWN0aXZlQ2xpZW50KCktPmVsZW1lbnQoKSk7Ci0KICAgICBib29sIGJib3ggPSAocGF0
dGVyblVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5H
Qk9YKTsKIAotICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHNhdmVkQ29udGV4dCA9IDA7Cisg
ICAgZmxvYXQgX3gsIF95LCB3LCBoOwogICAgIGlmIChiYm94KSB7Ci0gICAgICAgIGlmICh3aWR0
aCgpLT51bml0VHlwZSgpICE9IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSkK
LSAgICAgICAgICAgIHdpZHRoKCktPm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoU1ZHTGVuZ3RoOjpT
VkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFLCB3aWR0aCgpLT52YWx1ZSgpICogMTAwLik7Ci0gICAg
ICAgIGlmIChoZWlnaHQoKS0+dW5pdFR5cGUoKSAhPSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBF
X1BFUkNFTlRBR0UpCi0gICAgICAgICAgICBoZWlnaHQoKS0+bmV3VmFsdWVTcGVjaWZpZWRVbml0
cyhTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UsIGhlaWdodCgpLT52YWx1ZSgp
ICogMTAwLik7Ci0gICAgICAgIGlmIChhY3RpdmVFbGVtZW50KQotICAgICAgICAgICAgc2F2ZWRD
b250ZXh0ID0gY29uc3RfY2FzdDxTVkdQYXR0ZXJuRWxlbWVudCo+KHRoaXMpLT5wdXNoQXR0cmli
dXRlQ29udGV4dChhY3RpdmVFbGVtZW50KTsKKyAgICAgICAgX3ggPSB4KCkudmFsdWVJblNwZWNp
ZmllZFVuaXRzKCk7CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeCgpKSkKKyAg
ICAgICAgICAgIF94ICo9IDEwMC4wOworCisgICAgICAgIF95ID0geSgpLnZhbHVlSW5TcGVjaWZp
ZWRVbml0cygpOworICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHkoKSkpCisgICAg
ICAgICAgICBfeSAqPSAxMDAuMDsKKworICAgICAgICB3ID0gd2lkdGgoKS52YWx1ZUluU3BlY2lm
aWVkVW5pdHMoKTsKKyAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbih3aWR0aCgpKSkK
KyAgICAgICAgICAgIHcgKj0gMTAwLjA7CisKKyAgICAgICAgaCA9IGhlaWdodCgpLnZhbHVlSW5T
cGVjaWZpZWRVbml0cygpOworICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKGhlaWdo
dCgpKSkKKyAgICAgICAgICAgIGggKj0gMTAwLjA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgX3gg
PSB4KCkudmFsdWUoKTsKKyAgICAgICAgX3kgPSB5KCkudmFsdWUoKTsKKyAgICAgICAgdyA9IHdp
ZHRoKCkudmFsdWUoKTsKKyAgICAgICAgaCA9IGhlaWdodCgpLnZhbHVlKCk7CiAgICAgfQotICAg
IAorCiAgICAgbV90aWxlID0gbmV3IFNWR1Jlc291cmNlSW1hZ2UoKTsKICAgICBtX3RpbGUtPmlu
aXQobmV3U2l6ZSk7CiAKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBwYXR0ZXJuQ29udGV4
dChjb250ZXh0Rm9ySW1hZ2UobV90aWxlLmdldCgpKSk7CiAKLSAgICBGbG9hdFJlY3QgcmVjdCh4
KCktPnZhbHVlKCksIHkoKS0+dmFsdWUoKSwgd2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZh
bHVlKCkpOworICAgIEZsb2F0UmVjdCByZWN0KF94LCBfeSwgdywgaCk7CiAgICAgbV9wYWludFNl
cnZlci0+c2V0QmJveChyZWN0KTsKICAgICBtX3BhaW50U2VydmVyLT5zZXRQYXR0ZXJuVHJhbnNm
b3JtKHBhdHRlcm5UcmFuc2Zvcm1NYXRyaXgpOwogICAgIG1fcGFpbnRTZXJ2ZXItPnNldFRpbGUo
bV90aWxlLmdldCgpKTsKQEAgLTI0Myw5ICsyNDIsNiBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50
OjpkcmF3UGF0dGVybkNvbnRlCiAgICAgICAgIGl0ZW0tPnNldExvY2FsVHJhbnNmb3JtKHNhdmVk
TWF0cml4Lm1hdHJpeCgpKTsKICNlbmRpZgogICAgIH0KLQotICAgIGlmIChzYXZlZENvbnRleHQp
Ci0gICAgICAgIGNvbnN0X2Nhc3Q8U1ZHUGF0dGVybkVsZW1lbnQqPih0aGlzKS0+cHVzaEF0dHJp
YnV0ZUNvbnRleHQoc2F2ZWRDb250ZXh0KTsKIH0KIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
bm90aWZ5Q2xpZW50c1RvUmVwYWludCgpIGNvbnN0CkBAIC0yNzEsNyArMjY3LDcgQEAgdm9pZCBT
VkdQYXR0ZXJuRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQwogICAgIGlmICghbV9wYWludFNlcnZl
ciB8fCAhbV9wYWludFNlcnZlci0+YWN0aXZlQ2xpZW50KCkgfHwgbV9pZ25vcmVBdHRyaWJ1dGVD
aGFuZ2VzKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRTaXplIG5ld1NpemUgPSBJbnRTaXpl
KGxyb3VuZGYod2lkdGgoKS0+dmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0KCktPnZhbHVlKCkpKTsK
KyAgICBJbnRTaXplIG5ld1NpemUgPSBJbnRTaXplKGxyb3VuZGYod2lkdGgoKS52YWx1ZSgpKSwg
bHJvdW5kZihoZWlnaHQoKS52YWx1ZSgpKSk7CiAgICAgaWYgKG1fdGlsZSAmJiAobV90aWxlLT5z
aXplKCkgPT0gbmV3U2l6ZSkgfHwgbmV3U2l6ZS53aWR0aCgpIDwgMSB8fCBuZXdTaXplLmhlaWdo
dCgpIDwgMSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzEsMTIgKzMyNywxMyBAQCBTVkdSZXNv
dXJjZSogU1ZHUGF0dGVybkVsZW1lbnQ6OmNhbnZhc1JlCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHUGF0
dGVybkVsZW1lbnQ6OmdldENUTSgpIGNvbnN0CiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lk
dGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkpOworICAgIEFmZmluZVRyYW5zZm9ybSB2
aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLnZhbHVlKCksIGhlaWdodCgp
LnZhbHVlKCkpOwogICAgIG1hdCAqPSB2aWV3Qm94OwogICAgIHJldHVybiBtYXQ7CiB9CiAKIH0K
IAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCisKKy8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24g
MTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5
IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdf
U1ZHUGF0dGVybkVsZW1lbnRJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdQYXR0ZXJuRWxlbWVudElt
cGxfSAorI2lmbmRlZiBTVkdQYXR0ZXJuRWxlbWVudF9ICisjZGVmaW5lIFNWR1BhdHRlcm5FbGVt
ZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdQYWludFNlcnZlclBh
dHRlcm4uaCIKQEAgLTc0LDEwICs3NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIEZs
b2F0UmVjdCwgVmlld0JveCwgdmlld0JveCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9S
V0FSRF9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
KiwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0
aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5n
dGg+LCBZLCB5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0
dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEhlaWdodCwgaGVpZ2h0KQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xl
bmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNW
R0xlbmd0aCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgs
IEhlaWdodCwgaGVpZ2h0KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHUGF0dGVybkVsZW1lbnQsIGludCwgaW50LCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cykK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50
LCBpbnQsIGludCwgUGF0dGVybkNvbnRlbnRVbml0cywgcGF0dGVybkNvbnRlbnRVbml0cykKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBT
VkdUcmFuc2Zvcm1MaXN0KiwgUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3Q+LCBQYXR0ZXJuVHJhbnNm
b3JtLCBwYXR0ZXJuVHJhbnNmb3JtKQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI0NCkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1l
cm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAg
ICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LmgiCiAKQEAgLTM3LDQxICszOCw0MSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBT
VkdHcmFkaWVudEVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgbV9jeChuZXcgU1ZHTGVuZ3Ro
KHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2N5KG5ldyBTVkdM
ZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3IobmV3
IFNWR0xlbmd0aCh0aGlzLCBMTV9PVEhFUiwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9m
eChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAg
LCBtX2Z5KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkp
CisgICAgLCBtX2N4KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fY3kodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCkKKyAgICAsIG1fcih0aGlzLCBMZW5ndGhNb2RlT3RoZXIpCisgICAgLCBt
X2Z4KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fZnkodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCkKIHsKICAgICAvLyBTcGVjOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQs
IHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiNTAlIiB3ZXJlIHNwZWNpZmllZC4KLSAg
ICBtX2N4LT5zZXRWYWx1ZUFzU3RyaW5nKCI1MCUiKTsKLSAgICBtX2N5LT5zZXRWYWx1ZUFzU3Ry
aW5nKCI1MCUiKTsKLSAgICBtX3ItPnNldFZhbHVlQXNTdHJpbmcoIjUwJSIpOworICAgIHNldEN4
QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICI1MCUiKSk7CisgICAg
c2V0Q3lCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICI1MCUiKSk7
CisgICAgc2V0UkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZU90aGVyLCAiNTAl
IikpOwogfQogCiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6On5TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05h
bWVzOjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwg
bGVuZ3RoLCBDeSwgY3ksIFNWR05hbWVzOjpjeUF0dHIubG9jYWxOYW1lKCksIG1fY3kuZ2V0KCkp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQs
IFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBGeCwgZngsIFNWR05hbWVzOjpmeEF0dHIubG9j
YWxOYW1lKCksIG1fZnguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBGeSwgZnks
IFNWR05hbWVzOjpmeUF0dHIubG9jYWxOYW1lKCksIG1fZnkuZ2V0KCkpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExl
bmd0aCwgbGVuZ3RoLCBSLCByLCBTVkdOYW1lczo6ckF0dHIubG9jYWxOYW1lKCksIG1fci5nZXQo
KSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLmxv
Y2FsTmFtZSgpLCBtX2N4KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeSwgY3ksIFNWR05h
bWVzOjpjeUF0dHIubG9jYWxOYW1lKCksIG1fY3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IEZ4LCBmeCwgU1ZHTmFtZXM6OmZ4QXR0ci5sb2NhbE5hbWUoKSwgbV9meCkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgRnksIGZ5LCBTVkdOYW1lczo6ZnlBdHRyLmxvY2FsTmFtZSgpLCBtX2Z5
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSLCByLCBTVkdOYW1lczo6ckF0dHIubG9jYWxO
YW1lKCksIG1fcikKIAogdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjpjeEF0dHIpCi0gICAgICAgIGN4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFs
dWUpOworICAgICAgICBzZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3lB
dHRyKQotICAgICAgICBjeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAg
ICAgICAgc2V0Q3lCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyQXR0cikKLSAg
ICAgICAgckJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0
UkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSkpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ZnhBdHRyKQotICAgICAgICBmeEJh
c2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0RnhCYXNlVmFs
dWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmZ5QXR0cikKLSAgICAgICAgZnlCYXNlVmFsdWUo
KS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEZ5QmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UKICAgICAgICAg
U1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KQEAgLTgz
LDE1ICs4NCw0MiBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAg
ICAgYm9vbCBiYm94ID0gKGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpOwogICAgIGJvb2wgZnhTZXQgPSBoYXNBdHRyaWJ1dGUo
U1ZHTmFtZXM6OmZ4QXR0cik7CiAgICAgYm9vbCBmeVNldCA9IGhhc0F0dHJpYnV0ZShTVkdOYW1l
czo6ZnlBdHRyKTsKLSAgICBjeCgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgY3koKS0+
c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIHIoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwot
ICAgIGZ4KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICBmeSgpLT5zZXRCYm94UmVsYXRp
dmUoYmJveCk7Ci0gICAgZmxvYXQgX2N4ID0gY3goKS0+dmFsdWUoKSwgX2N5ID0gY3koKS0+dmFs
dWUoKTsKLSAgICBmbG9hdCBfciA9IHIoKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfZnggPSBmeFNl
dCA/IGZ4KCktPnZhbHVlKCkgOiBfY3g7Ci0gICAgZmxvYXQgX2Z5ID0gZnlTZXQgPyBmeSgpLT52
YWx1ZSgpIDogX2N5OworIAorICAgIGZsb2F0IF9jeCwgX2N5LCBfciwgX2Z4LCBfZnk7CisKKyAg
ICBpZiAoYmJveCkgeworICAgICAgICBfY3ggPSBjeCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygp
OworICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKGN4KCkpKQorICAgICAgICAgICAg
X2N4ICo9IDEwMC4wOworCisgICAgICAgIF9jeSA9IGN5KCkudmFsdWVJblNwZWNpZmllZFVuaXRz
KCk7CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oY3koKSkpCisgICAgICAgICAg
ICBfY3kgKj0gMTAwLjA7CisKKyAgICAgICAgX3IgPSByKCkudmFsdWVJblNwZWNpZmllZFVuaXRz
KCk7CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24ocigpKSkKKyAgICAgICAgICAg
IF9yICo9IDEwMC4wOworCisgICAgICAgIGlmIChmeFNldCkgeworICAgICAgICAgICAgX2Z4ID0g
ZngoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgICAgIGlmIChTVkdMZW5ndGg6
OmlzRnJhY3Rpb24oZngoKSkpCisgICAgICAgICAgICAgICAgX2Z4ICo9IDEwMC4wOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIF9meCA9IF9jeDsKKyAgICAgICAgCisgICAgICAgIGlmIChm
eVNldCkgeworICAgICAgICAgICAgX2Z5ID0gZnkoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsK
KyAgICAgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oZnkoKSkpCisgICAgICAgICAg
ICAgICAgX2Z5ICo9IDEwMC4wOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIF9meSA9IF9j
eTsKKyAgICB9IGVsc2UgeworICAgICAgICBfY3ggPSBjeCgpLnZhbHVlKCk7CisgICAgICAgIF9j
eSA9IGN5KCkudmFsdWUoKTsKKyAgICAgICAgX3IgPSByKCkudmFsdWUoKTsKKyAgICAgICAgX2Z4
ID0gZnhTZXQgPyBmeCgpLnZhbHVlKCkgOiBfY3g7CisgICAgICAgIF9meSA9IGZ5U2V0ID8gZnko
KS52YWx1ZSgpIDogX2N5OworICAgIH0KIAogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlclJhZGlh
bEdyYWRpZW50PiBncmFkID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR1BhaW50U2VydmVy
UmFkaWFsR3JhZGllbnQ+KF9ncmFkKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OwpAQCAtMTEy
LDMyICsxNDAsMTggQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAog
ICAgICAgICAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+IHJhZGlhbCA9
IFdURjo6c3RhdGljX3BvaW50ZXJfY2FzdDxTVkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50Pihw
c2VydmVyKTsKICAgICAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpjeEF0dHIp
KQogICAgICAgICAgICAgICAgIF9jeCA9IHJhZGlhbC0+Z3JhZGllbnRDZW50ZXIoKS54KCk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF9jeCAqPSAxMDAuOwor
CiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6Y3lBdHRyKSkKICAgICAg
ICAgICAgICAgICBfY3kgPSByYWRpYWwtPmdyYWRpZW50Q2VudGVyKCkueSgpOwotICAgICAgICAg
ICAgZWxzZSBpZiAoYmJveCkKLSAgICAgICAgICAgICAgICBfY3kgKj0gMTAwLjsKIAogICAgICAg
ICAgICAgaWYgKCFmeFNldCkKICAgICAgICAgICAgICAgICBfZnggPSByYWRpYWwtPmdyYWRpZW50
Rm9jYWwoKS54KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAg
IF9meCAqPSAxMDAuOworCiAgICAgICAgICAgICBpZiAoIWZ5U2V0KQogICAgICAgICAgICAgICAg
IF9meSA9IHJhZGlhbC0+Z3JhZGllbnRGb2NhbCgpLnkoKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGJib3gpCi0gICAgICAgICAgICAgICAgX2Z5ICo9IDEwMC47CiAKICAgICAgICAgICAgIGlmICgh
aGFzQXR0cmlidXRlKFNWR05hbWVzOjpyQXR0cikpCiAgICAgICAgICAgICAgICAgX3IgPSByYWRp
YWwtPmdyYWRpZW50UmFkaXVzKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAg
ICAgICAgICAgIF9yICo9IDEwMC47Ci0gICAgICAgIH0gZWxzZSBpZiAoYmJveCkgewotICAgICAg
ICAgICAgX2N4ICo9IDEwMC4wOwotICAgICAgICAgICAgX2N5ICo9IDEwMC4wOwotICAgICAgICAg
ICAgX2Z4ICo9IDEwMC4wOwotICAgICAgICAgICAgX2Z5ICo9IDEwMC4wOwotICAgICAgICAgICAg
X3IgKj0gMTAwLjA7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdO
YW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKSkKQEAgLTE1NiwxNCArMTcwLDYgQEAgdm9pZCBT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgICAgICAgICAgZ3JhZC0+c2V0
R3JhZGllbnRTcHJlYWRNZXRob2QoU1BSRUFETUVUSE9EX1JFUEVBVCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGdyYWQtPnNldEdyYWRpZW50U3ByZWFkTWV0aG9kKFNQUkVBRE1FVEhPRF9Q
QUQpOwotCi0gICAgICAgIGlmIChiYm94KSB7Ci0gICAgICAgICAgICBfY3ggKj0gMTAwLjA7Ci0g
ICAgICAgICAgICBfY3kgKj0gMTAwLjA7Ci0gICAgICAgICAgICBfZnggKj0gMTAwLjA7Ci0gICAg
ICAgICAgICBfZnkgKj0gMTAwLjA7Ci0gICAgICAgICAgICBfciAqPSAxMDAuMDsKLSAgICAgICAg
fQogICAgIH0KIAogICAgIGdyYWQtPnNldEdyYWRpZW50VHJhbnNmb3JtKG1hdCk7CkBAIC0xNzUs
NiArMTgxLDYgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogCiB9
CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9
NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuaAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
cHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB
LgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudEltcGxfSAotI2Rl
ZmluZSBLU1ZHX1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnRfSAorI2RlZmluZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnRfSAor
CiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgPFNWR0dyYWRpZW50RWxlbWVudC5oPgpA
QCAtNDYsMTEgKzQ3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgY29u
c3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgQ3gs
IGN4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgQ3ksIGN5KQotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgUiwgcikKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVu
Z3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEZ4LCBmeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVm
UHRyPFNWR0xlbmd0aD4sIEZ5LCBmeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN4
LCBjeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN5LCBjeSkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIFIsIHIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBG
eCwgZngpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBGeSwgZnkpCiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50
LmNwcAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94
QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTM1LDEyICszNSwxMiBAQCBTVkdSZWN0RWxlbWVudDo6U1ZHUmVjdEVsZW1lbnQoY29uc3Qg
UXVhCiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBM
TV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhp
cywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdM
ZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0
KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAg
LCBtX3J4KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkK
LSAgICAsIG1fcnkobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVu
dCgpKSkKKyAgICAsIG1feCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQor
ICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fcngodGhpcywg
TGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9yeSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewog
fQogCkBAIC00OCwyOCArNDgsMjggQEAgU1ZHUmVjdEVsZW1lbnQ6On5TVkdSZWN0RWxlbWVudCgp
CiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBT
VkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFt
ZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5s
b2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
UmVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNW
R05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBs
ZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwg
bV9oZWlnaHQuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0
ci5sb2NhbE5hbWUoKSwgbV9yeC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgUnksIHJ5LCBTVkdO
YW1lczo6cnlBdHRyLmxvY2FsTmFtZSgpLCBtX3J5LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgs
IHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFks
IHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdp
ZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxO
YW1lKCksIG1faGVpZ2h0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVs
ZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0
ci5sb2NhbE5hbWUoKSwgbV9yeCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1Jl
Y3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpy
eUF0dHIubG9jYWxOYW1lKCksIG1fcnkpCiAKIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0
dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAg
ICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVl
KSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyeEF0dHIpCi0gICAg
ICAgIHJ4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICAgc2V0
UnhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ5QXR0cikKLSAgICAgICAgcnlC
YXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgICBzZXRSeUJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgd2lkdGhC
YXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFz
ZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBoZWln
aHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdo
dEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAg
ICBlbHNlIHsKICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgzLDQ4ICs4MywyMSBAQCB2b2lkIFNWR1JlY3RF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAKIFBhdGggU1ZHUmVjdEVsZW1lbnQ6OnRvUGF0
aERhdGEoKSBjb25zdAogewotICAgIEZsb2F0UmVjdCByZWN0KHgoKS0+dmFsdWUoKSwgeSgpLT52
YWx1ZSgpLCB3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7CisgICAgRmxvYXRS
ZWN0IHJlY3QoeCgpLnZhbHVlKCksIHkoKS52YWx1ZSgpLCB3aWR0aCgpLnZhbHVlKCksIGhlaWdo
dCgpLnZhbHVlKCkpOwogCi0gICAgYm9vbCBoYXNSeCA9IGhhc0F0dHJpYnV0ZSgicngiKTsKLSAg
ICBib29sIGhhc1J5ID0gaGFzQXR0cmlidXRlKCJyeSIpOworICAgIGJvb2wgaGFzUnggPSBoYXNB
dHRyaWJ1dGUoU1ZHTmFtZXM6OnJ4QXR0cik7CisgICAgYm9vbCBoYXNSeSA9IGhhc0F0dHJpYnV0
ZShTVkdOYW1lczo6cnlBdHRyKTsKICAgICBpZiAoaGFzUnggfHwgaGFzUnkpIHsKLSAgICAgICAg
ZmxvYXQgX3J4ID0gaGFzUnggPyByeCgpLT52YWx1ZSgpIDogcnkoKS0+dmFsdWUoKTsKLSAgICAg
ICAgZmxvYXQgX3J5ID0gaGFzUnkgPyByeSgpLT52YWx1ZSgpIDogcngoKS0+dmFsdWUoKTsKKyAg
ICAgICAgZmxvYXQgX3J4ID0gaGFzUnggPyByeCgpLnZhbHVlKCkgOiByeSgpLnZhbHVlKCk7Cisg
ICAgICAgIGZsb2F0IF9yeSA9IGhhc1J5ID8gcnkoKS52YWx1ZSgpIDogcngoKS52YWx1ZSgpOwog
ICAgICAgICByZXR1cm4gUGF0aDo6Y3JlYXRlUm91bmRlZFJlY3RhbmdsZShyZWN0LCBGbG9hdFNp
emUoX3J4LCBfcnkpKTsKICAgICB9CiAKICAgICByZXR1cm4gUGF0aDo6Y3JlYXRlUmVjdGFuZ2xl
KHJlY3QpOwogfQogCi1jb25zdCBTVkdTdHlsZWRFbGVtZW50KiBTVkdSZWN0RWxlbWVudDo6cHVz
aEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCkKLXsKLSAg
ICAvLyBBbGwgYXR0cmlidXRlJ3MgY29udGV4dHMgYXJlIGVxdWFsIChzbyBqdXN0IHRha2UgdGhl
IG9uZSBmcm9tICd4JykuCi0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcmVzdG9yZSA9IHgo
KS0+Y29udGV4dCgpOwotCi0gICAgeCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHkoKS0+
c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICB3aWR0aCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwot
ICAgIGhlaWdodCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIAotICAgIFNWR1N0eWxlZEVs
ZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnRleHQpOwotICAgIHJldHVybiByZXN0b3Jl
OwotfQotCi1ib29sIFNWR1JlY3RFbGVtZW50OjpoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3QK
LXsKLSAgICBpZiAoeCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVf
UEVSQ0VOVEFHRSB8fAotICAgICAgICB5KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdf
TEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHdpZHRoKCktPnVuaXRUeXBlKCkgPT0g
U1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIGhlaWdodCgp
LT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAot
ICAgICAgICByeCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVS
Q0VOVEFHRSB8fAotICAgICAgICByeSgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xF
TkdUSFRZUEVfUEVSQ0VOVEFHRSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JU
CiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuaAko
cmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4
ICsyMCw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVm
IEtTVkdfU1ZHUmVjdEVsZW1lbnRJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdSZWN0RWxlbWVudElt
cGxfSAorI2lmbmRlZiBTVkdSZWN0RWxlbWVudF9ICisjZGVmaW5lIFNWR1JlY3RFbGVtZW50X0gK
KwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLmgiCkBAIC0zMSw3ICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7Ci0gICAg
Y2xhc3MgU1ZHTGVuZ3RoOwogICAgIGNsYXNzIFNWR1JlY3RFbGVtZW50IDogcHVibGljIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdT
cGFjZSwKQEAgLTQ5LDIyICs0OSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0
eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwg
UGF0aCB0b1BhdGhEYXRhKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdTdHls
ZWRFbGVtZW50KiBwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBj
b250ZXh0KTsKLQogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAotICAgICAgICB2
aXJ0dWFsIGJvb2wgaGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0OwotCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBY
LCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1l
bnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0
cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4s
IEhlaWdodCwgaGVpZ2h0KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBSeCwgcngpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFJ5LCByeSkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwg
WCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVt
ZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lk
dGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVj
dEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgs
IFNWR0xlbmd0aCwgUngsIHJ4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSeSwgcnkpCiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVm
IFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogCkBAIC01MywxOSArNTQs
MTUgQEAgU1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxlbWVudChjb25zdCBRdWFsaQogICAgICwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdGaXRUb1ZpZXdCb3goKQogICAg
ICwgU1ZHWm9vbUFuZFBhbigpCisgICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAg
ICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiAgICAg
LCBtX3VzZUN1cnJlbnRWaWV3KGZhbHNlKQogICAgICwgbV90aW1lU2NoZWR1bGVyKG5ldyBUaW1l
U2NoZWR1bGVyKGRvYykpCiB7Ci0gICAgY29uc3QgU1ZHRWxlbWVudCogdmlld3BvcnQgPSBvd25l
ckRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpID09IHRoaXMgPyB0aGlzIDogdmlld3BvcnRF
bGVtZW50KCk7Ci0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCA9IG93bmVyRG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0gdGhpcyA/IDAgOiB0aGlzOwotCi0gICAgbV94
ID0gbmV3IFNWR0xlbmd0aChjb250ZXh0LCBMTV9XSURUSCwgdmlld3BvcnQpOwotICAgIG1feSA9
IG5ldyBTVkdMZW5ndGgoY29udGV4dCwgTE1fSEVJR0hULCB2aWV3cG9ydCk7Ci0gICAgbV93aWR0
aCA9IG5ldyBTVkdMZW5ndGgoY29udGV4dCwgTE1fV0lEVEgsIHZpZXdwb3J0KTsKLSAgICBtX2hl
aWdodCA9IG5ldyBTVkdMZW5ndGgoY29udGV4dCwgTE1fSEVJR0hULCB2aWV3cG9ydCk7Ci0KLSAg
ICBtX3dpZHRoLT5zZXRWYWx1ZUFzU3RyaW5nKCIxMDAlIik7Ci0gICAgbV9oZWlnaHQtPnNldFZh
bHVlQXNTdHJpbmcoIjEwMCUiKTsKKyAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpKTsKKyAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMDAlIikpOwogfQogCiBTVkdTVkdFbGVt
ZW50Ojp+U1ZHU1ZHRWxlbWVudCgpCkBAIC03MywxMCArNzAsMTAgQEAgU1ZHU1ZHRWxlbWVudDo6
flNWR1NWR0VsZW1lbnQoKQogICAgIGRlbGV0ZSBtX3RpbWVTY2hlZHVsZXI7CiB9CiAKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0
aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feC5nZXQoKSkK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCos
IExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5n
ZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xl
bmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIu
bG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWln
aHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodC5nZXQoKSkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCks
IG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTVkdFbGVtZW50LCBT
VkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdo
dEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogCiBjb25zdCBBdG9taWNTdHJpbmcmIFNWR1NW
R0VsZW1lbnQ6OmNvbnRlbnRTY3JpcHRUeXBlKCkgY29uc3QKIHsKQEAgLTEwNCwxMCArMTAxLDEw
IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q29udGVudFN0eWxlVHlwZSgKIAogRmxvYXRSZWN0
IFNWR1NWR0VsZW1lbnQ6OnZpZXdwb3J0KCkgY29uc3QKIHsKLSAgICBkb3VibGUgX3ggPSB4KCkt
PnZhbHVlKCk7Ci0gICAgZG91YmxlIF95ID0geSgpLT52YWx1ZSgpOwotICAgIGRvdWJsZSB3ID0g
d2lkdGgoKS0+dmFsdWUoKTsKLSAgICBkb3VibGUgaCA9IGhlaWdodCgpLT52YWx1ZSgpOworICAg
IGRvdWJsZSBfeCA9IHgoKS52YWx1ZSgpOworICAgIGRvdWJsZSBfeSA9IHkoKS52YWx1ZSgpOwor
ICAgIGRvdWJsZSB3ID0gd2lkdGgoKS52YWx1ZSgpOworICAgIGRvdWJsZSBoID0gaGVpZ2h0KCku
dmFsdWUoKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFu
c2Zvcm0odywgaCk7CiAgICAgdmlld0JveC5tYXAoX3gsIF95LCAmX3gsICZfeSk7CiAgICAgdmll
d0JveC5tYXAodywgaCwgJncsICZoKTsKQEAgLTE5MCwxNSArMTg3LDE1IEBAIHZvaWQgU1ZHU1ZH
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjpvbnpvb21BdHRyKQogICAgICAgICAgICAgYWRkU1ZHV2luZG93RXZl
bnRMaXN0bmVyKHpvb21FdmVudCwgYXR0cik7CiAgICAgfQotICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnhBdHRyKSB7Ci0gICAgICAgIHhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlB
dHRyKSB7Ci0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Ci0g
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAg
ICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKKyAgICAgICAgc2V0V2lkdGhCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICAgICAg
YWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTX1BST1BfV0lEVEgsIHZhbHVlKTsKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBoZWln
aHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdo
dEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAg
ICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTX1BST1BfSEVJR0hULCB2YWx1ZSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KSkKQEAgLTI3Niw5ICsyNzMsOSBAQCBkb3VibGUgU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTnVt
YmVyKCkKICAgICByZXR1cm4gMC4wOwogfQogCi1TVkdMZW5ndGgqIFNWR1NWR0VsZW1lbnQ6OmNy
ZWF0ZVNWR0xlbmd0aCgpCitTVkdMZW5ndGggU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTGVuZ3Ro
KCkKIHsKLSAgICByZXR1cm4gbmV3IFNWR0xlbmd0aCgwKTsKKyAgICByZXR1cm4gU1ZHTGVuZ3Ro
KCk7CiB9CiAKIFNWR0FuZ2xlKiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdBbmdsZSgpCkBAIC0z
MTYsMTAgKzMxMywxMCBAQCBTVkdUcmFuc2Zvcm0qIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR1Ry
CiBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKCkgY29uc3QKIHsKICAgICBB
ZmZpbmVUcmFuc2Zvcm0gbWF0OwotICAgIG1hdC50cmFuc2xhdGUoeCgpLT52YWx1ZSgpLCB5KCkt
PnZhbHVlKCkpOworICAgIG1hdC50cmFuc2xhdGUoeCgpLnZhbHVlKCksIHkoKS52YWx1ZSgpKTsK
IAogICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6dmlld0JveEF0
dHIpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1Ry
YW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7CisgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLnZh
bHVlKCksIGhlaWdodCgpLnZhbHVlKCkpOwogICAgICAgICBtYXQgPSB2aWV3Qm94ICogbWF0Owog
ICAgIH0KIApAQCAtMzI5LDEwICszMjYsMTAgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1l
bnQ6OmdldENUTSgpIAogQWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OmdldFNjcmVlbkNU
TSgpIGNvbnN0CiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdCA9IFNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQ6OmdldFNjcmVlbkNUTSgpOwotICAgIG1hdC50cmFuc2xhdGUoeCgpLT52YWx1ZSgp
LCB5KCktPnZhbHVlKCkpOworICAgIG1hdC50cmFuc2xhdGUoeCgpLnZhbHVlKCksIHkoKS52YWx1
ZSgpKTsKIAogICAgIGlmIChhdHRyaWJ1dGVzKCktPmdldE5hbWVkSXRlbShTVkdOYW1lczo6dmll
d0JveEF0dHIpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRv
Vmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7CisgICAg
ICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0
aCgpLnZhbHVlKCksIGhlaWdodCgpLnZhbHVlKCkpOwogICAgICAgICBtYXQgPSB2aWV3Qm94ICog
bWF0OwogICAgIH0KIApAQCAtNDEwLDYgKzQwNyw2IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6YXR0
cmlidXRlQ2hhbmdlZChBdHQKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
U1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1l
bnQuaAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTIyLDYgKzIyLDcgQEAKIAogI2lmbmRlZiBTVkdTVkdFbGVtZW50X0gKICNkZWZpbmUgU1ZH
U1ZHRWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtMTA0LDcgKzEwNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIHZvaWQgZGVzZWxlY3RBbGwoKTsKIAogICAgICAgICBzdGF0aWMgZG91Ymxl
IGNyZWF0ZVNWR051bWJlcigpOwotICAgICAgICBzdGF0aWMgU1ZHTGVuZ3RoKiBjcmVhdGVTVkdM
ZW5ndGgoKTsKKyAgICAgICAgc3RhdGljIFNWR0xlbmd0aCBjcmVhdGVTVkdMZW5ndGgoKTsKICAg
ICAgICAgc3RhdGljIFNWR0FuZ2xlKiBjcmVhdGVTVkdBbmdsZSgpOwogICAgICAgICBzdGF0aWMg
RmxvYXRQb2ludCBjcmVhdGVTVkdQb2ludCgpOwogICAgICAgICBzdGF0aWMgQWZmaW5lVHJhbnNm
b3JtIGNyZWF0ZVNWR01hdHJpeCgpOwpAQCAtMTM5LDEwICsxNDAsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZH
Rml0VG9WaWV3Qm94LCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gpCiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0ZpdFRvVmlld0JveCwgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0
aW8pCiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1l
bnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRy
PFNWR0xlbmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgV2lkdGgsIHdp
ZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEhlaWdodCwgaGVpZ2h0KQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgU1ZH
TGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQp
CiAKICAgICAgICAgYm9vbCBtX3VzZUN1cnJlbnRWaWV3OwogICAgICAgICBUaW1lU2NoZWR1bGVy
KiBtX3RpbWVTY2hlZHVsZXI7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmNwcAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDE0ICsxMzMsNiBAQCB2b2lkIFNWR1N0eWxl
ZEVsZW1lbnQ6OnVwZGF0ZUNhbnZhc0l0ZW0oCiAgICAgbV91cGRhdGVWZWN0b3JpYWwgPSBmYWxz
ZTsKIH0KIAotY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogU1ZHU3R5bGVkRWxlbWVudDo6cHVzaEF0
dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCopCi17Ci0gICAgaWYgKHZpZXco
KSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyUGF0aCo+KHJlbmRlcmVyKCkpLT5zZXRQYXRo
KHRvUGF0aERhdGEoKSk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQogfQogCiAvLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCShyZXZpc2lvbiAxODI0
NCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNW
R1N0eWxhYmxlLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJQYXRoLmgi
CkBAIC01NiwxNCArNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lk
IGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2Up
OwogCi0gICAgICAgIC8vIEltYWdpbmUgd2UncmUgYSA8cmVjdD4gaW5zaWRlIG9mIGEgPHBhdHRl
cm4+IHNlY3Rpb24gd2l0aCBwYXR0ZXJuQ29udGVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIK
LSAgICAgICAgLy8gYW5kIG91ciAnd2lkdGgnIGF0dHJpYnV0ZSBpcyBzZXQgdG8gNTAlLiBXaGVu
IHRoZSBwYXR0ZXJuIGdldHMgcmVmZXJlbmNlZCBpdCBrbm93cyB0aGUgImJib3giCi0gICAgICAg
IC8vIG9mIGl0J3MgdXNlciBhbmQgaGFzIHRvIHB1c2ggdGhlICJhY3RpdmUgY2xpZW50J3MgYmJv
eCIgYXMgbmV3IGF0dHJpYnV0ZSBjb250ZXh0IHRvIGFsbCBhdHRyaWJ1dGVzCi0gICAgICAgIC8v
IG9mIHRoZSAncmVjdCcuIFRoaXMgZnVuY3Rpb24gYWxzbyByZXR1cm5zIHRoZSBvbGQgYXR0cmli
dXRlIGNvbnRleHQsIHRvIGJlIGFibGUgdG8gcmVzdG9yZSBpdC4uLgotICAgICAgICB2aXJ0dWFs
IGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0
eWxlZEVsZW1lbnQqIGNvbnRleHQpOwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50
YWdlVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdm9pZCB1cGRhdGVDYW52YXNJdGVtKCk7IC8vIEhhbmRsZXMgInBhdGggZGF0YSIgb2Jq
ZWN0IGNoYW5nZXMuLi4gKG5vdCBmb3Igc3R5bGUvdHJhbnNmb3JtISkKIApJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI0NCkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpTVkdUZXh0Q29u
dGVudEVsZQogICAgICwgU1ZHVGVzdHMoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQotICAgICwgbV90ZXh0TGVuZ3RoKG5ldyBTVkdM
ZW5ndGgodGhpcywgTE1fV0lEVEgpKQorICAgICwgbV90ZXh0TGVuZ3RoKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCkKICAgICAsIG1fbGVuZ3RoQWRqdXN0KDApCiB7CiB9CkBAIC00Niw3ICs0Niw3IEBA
IFNWR1RleHRDb250ZW50RWxlbWVudDo6flNWR1RleHRDb250ZW50RWwKIHsKIH0KIAotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdMZW5ndGgq
LCBMZW5ndGgsIGxlbmd0aCwgVGV4dExlbmd0aCwgdGV4dExlbmd0aCwgU1ZHTmFtZXM6OnRleHRM
ZW5ndGhBdHRyLmxvY2FsTmFtZSgpLCBtX3RleHRMZW5ndGguZ2V0KCkpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3Ro
LCBsZW5ndGgsIFRleHRMZW5ndGgsIHRleHRMZW5ndGgsIFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0
ci5sb2NhbE5hbWUoKSwgbV90ZXh0TGVuZ3RoKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwg
TGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QsIFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyLmxv
Y2FsTmFtZSgpLCBtX2xlbmd0aEFkanVzdCkKIAogbG9uZyBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OmdldE51bWJlck9mQ2hhcnMoKSBjb25zdApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFNWR1RleHRD
b250ZW50RWxlbWVudDo6c2VsZWN0U3ViU3RyCiB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIC8vaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0cikKLSAgICAvLyAgICB4
QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgIC8vICAgIHNldFhCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICAvL2Vs
c2UKICAgICB7CiAgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0
cikpCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkocmV2
aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElP
TlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgVGV4dExlbmd0aCwgdGV4dExlbmd0aCkKKyAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTGVuZ3Ro
LCBTVkdMZW5ndGgsIFRleHRMZW5ndGgsIHRleHRMZW5ndGgpCiAgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIGludCwgaW50LCBMZW5n
dGhBZGp1c3QsIGxlbmd0aEFkanVzdCkKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdUZXh0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
VGV4dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI0NCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1RleHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR1RleHQuaCIKKyNpbmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdM
ZW5ndGhMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdU
U3BhbkVsZW1lbnQuaCIKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI0NCkKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwxMyAr
NTYsMTMgQEAgdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZU1hcAogICAgIGNv
bnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIAogICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnBhcnNlKHZh
bHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdGhpcywgTE1fV0lEVEgpOworICAgICAgICB4QmFzZVZh
bHVlKCktPnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdGhpcywgTGVuZ3RoTW9kZVdp
ZHRoKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAg
ICAgICB5QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdGhpcywg
TE1fSEVJR0hUKTsKKyAgICAgICAgeUJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVk
U3RyaW5nKCksIHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6ZHhBdHRyKQotICAgICAgICBkeEJhc2VWYWx1ZSgpLT5wYXJzZSh2
YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRoaXMsIExNX1dJRFRIKTsKKyAgICAgICAgZHhCYXNl
VmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ZHlBdHRyKQot
ICAgICAgICBkeUJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRo
aXMsIExNX0hFSUdIVCk7CisgICAgICAgIGR5QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJl
Y2F0ZWRTdHJpbmcoKSwgdGhpcywgTGVuZ3RoTW9kZUhlaWdodCk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjpyb3RhdGVBdHRyKQogICAgICAgICByb3RhdGVCYXNlVmFs
dWUoKS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpKTsKICAgICBlbHNlCkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50
LmgiCiAKQEAgLTQyLDEwICs0MywxMCBAQCBTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KGNv
bnN0IFF1YWxpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdVUklSZWZlcmVuY2UoKQotICAgICwgbV94KG5ldyBTVkdM
ZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feShuZXcg
U1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV93
aWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0g
ICAgLCBtX2hlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVt
ZW50KCkpKQorICAgICwgbV94KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgp
CisgICAgLCBtX2hlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewogfQogCkBAIC01Mywy
MyArNTQsMjMgQEAgU1ZHVXNlRWxlbWVudDo6flNWR1VzZUVsZW1lbnQoKQogewogfQogCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5n
dGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgq
LCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3ku
Z2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdM
ZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRy
LmxvY2FsTmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVp
Z2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgp
LCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwg
U1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWln
aHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodCkKIAogdm9pZCBTVkdVc2VFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgCiAgICAgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFs
dWUpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6d2lk
dGhBdHRyKQotICAgICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVl
KTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omhl
aWdodEF0dHIpCi0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoU1ZHVGVzdHM6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTMsOCAr
OTQsOCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmNsb3NlUmVuZGVyZXIoKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgZmxvYXQgX3ggPSB4KCktPnZhbHVlKCksIF95ID0geSgpLT52YWx1
ZSgpOwotICAgIGZsb2F0IF93ID0gd2lkdGgoKS0+dmFsdWUoKSwgX2ggPSBoZWlnaHQoKS0+dmFs
dWUoKTsKKyAgICBmbG9hdCBfeCA9IHgoKS52YWx1ZSgpLCBfeSA9IHkoKS52YWx1ZSgpOworICAg
IGZsb2F0IF93ID0gd2lkdGgoKS52YWx1ZSgpLCBfaCA9IGhlaWdodCgpLnZhbHVlKCk7CiAgICAg
CiAgICAgU3RyaW5nIHdTdHJpbmcgPSBTdHJpbmc6Om51bWJlcihfdyk7CiAgICAgU3RyaW5nIGhT
dHJpbmcgPSBTdHJpbmc6Om51bWJlcihfaCk7CkBAIC0xNTgsNiArMTU5LDYgQEAgUmVuZGVyT2Jq
ZWN0KiBTVkdVc2VFbGVtZW50OjpjcmVhdGVSZW5kZQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiAxODI0NCkKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1VzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUu
b3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1h
bm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBL
REUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR1VzZUVsZW1lbnRJbXBsX0gKLSNkZWZpbmUgS1NW
R19TVkdVc2VFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR1VzZUVsZW1lbnRfSAorI2RlZmluZSBT
VkdVc2VFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC02MywxMCArNjQsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
Rk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYp
CiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQs
IFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNW
R0xlbmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdVc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgV2lkdGgsIHdpZHRo
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBT
VkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVu
Z3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJ
KHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU2NCw4ICs1NjQsOCBAQCBzdGF0aWMgQ3Vyc29yIHNlbGVjdEN1cnNvcihj
b25zdCBNb3VzZUV2CiAgICAgICAgICAgICBpZiAoIWNpbWFnZSkgewogICAgICAgICAgICAgICAg
IEVsZW1lbnQqIGUgPSBub2RlLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZCgoKmN1cnNvcnMp
W2ldLmN1cnNvckZyYWdtZW50SWQpOwogICAgICAgICAgICAgICAgIGlmIChlICYmIGUtPmhhc1Rh
Z05hbWUoY3Vyc29yVGFnKSkgewotICAgICAgICAgICAgICAgICAgICBob3RTcG90LnNldFgoaW50
KHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eCgpLT52YWx1ZSgpKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGhvdFNwb3Quc2V0WShpbnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxl
bWVudCo+KGUpLT55KCktPnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaG90U3BvdC5z
ZXRYKGludChzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPngoKS52YWx1ZSgpKSk7
CisgICAgICAgICAgICAgICAgICAgIGhvdFNwb3Quc2V0WShpbnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vy
c29yRWxlbWVudCo+KGUpLT55KCkudmFsdWUoKSkpOwogICAgICAgICAgICAgICAgICAgICBjaW1h
Z2UgPSBzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPmNhY2hlZEltYWdlKCk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRm9yZWlnbk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQw
LDcgQEAgUmVuZGVyRm9yZWlnbk9iamVjdDo6UmVuZGVyRm9yZWlnbk9iamVjdAogQWZmaW5lVHJh
bnNmb3JtIFJlbmRlckZvcmVpZ25PYmplY3Q6OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpCiB7
CiAgICAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqIGZvcmVpZ24gPSBzdGF0aWNfY2FzdDxTVkdG
b3JlaWduT2JqZWN0RWxlbWVudCo+KGVsZW1lbnQoKSk7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5z
Zm9ybSgpLnRyYW5zbGF0ZShmb3JlaWduLT54KCktPnZhbHVlKCksIGZvcmVpZ24tPnkoKS0+dmFs
dWUoKSk7CisgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShmb3JlaWduLT54
KCkudmFsdWUoKSwgZm9yZWlnbi0+eSgpLnZhbHVlKCkpOwogfQogCiB2b2lkIFJlbmRlckZvcmVp
Z25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgcGFyZW50WCwgaW50IHBh
cmVudFkpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAkocmV2aXNpb24gMTgyNDQpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI4
LDExICs0MjgsNiBAQCB2b2lkIFJlbmRlclBhdGg6OmRyYXdNYXJrZXJzSWZOZWVkZWQoR3JhCiAg
ICAgZHJhd01hcmtlcldpdGhEYXRhKGNvbnRleHQsIGRhdGEucHJldmlvdXNNYXJrZXJEYXRhKTsK
IH0KIAotYm9vbCBSZW5kZXJQYXRoOjpoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KGVsZW1lbnQoKSktPmhhc1Bl
cmNlbnRhZ2VWYWx1ZXMoKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQYXRoLmgJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw4ICs5Miw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd01hcmtlcnNJZk5lZWRlZChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBQYXRoJikgY29uc3Q7CiAgICAgdmlydHVhbCBGbG9hdFJl
Y3Qgc3Ryb2tlQkJveCgpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkg
Y29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBvaW50VG9Mb2Nh
bChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgCkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzEx
MSw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQoKQogCiAgICAgUmVuZGVyT2Jq
ZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKICAgICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAg
aWYgKCFjaGlsZC0+aXNSZW5kZXJQYXRoKCkgfHwgc3RhdGljX2Nhc3Q8UmVuZGVyUGF0aCo+KGNo
aWxkKS0+aGFzUGVyY2VudGFnZVZhbHVlcygpKQorICAgICAgICBpZiAoIWNoaWxkLT5pc1JlbmRl
clBhdGgoKSkKICAgICAgICAgICAgIGNoaWxkLT5zZXROZWVkc0xheW91dCh0cnVlKTsKICAgICAg
ICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CkBAIC0xNTgsOCArMTU4LDgg
QEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KFBhaW50SW5mbwogICAgIGlmICghdmll
d3BvcnQoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKHN0eWxlKCktPm92ZXJmbG93WCgpICE9
IE9WSVNJQkxFKQogICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoZW5jbG9zaW5n
SW50UmVjdCh2aWV3cG9ydCgpKSk7IC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlJ2xsIHdhbnQgZmxv
YXQtcHJlY2lzaW9uIGNsaXBwaW5nCi0KICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNh
dENUTShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUodmlld3BvcnQoKS54KCksIHZpZXdwb3J0
KCkueSgpKSk7CisKICAgICB9CiAKICAgICBpZiAoIWxvY2FsVHJhbnNmb3JtKCkuaXNJZGVudGl0
eSgpKQpAQCAtMjA2LDE1ICsyMDYsMTUgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmNhbGNW
aWV3cG9ydCgpCiAgICAgU1ZHRWxlbWVudCogc3ZnZWxlbSA9IHN0YXRpY19jYXN0PFNWR0VsZW1l
bnQqPihlbGVtZW50KCkpOwogICAgIGlmIChzdmdlbGVtLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpz
dmdUYWcpKSB7CiAgICAgICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NW
R0VsZW1lbnQqPihlbGVtZW50KCkpOwotICAgICAgICBkb3VibGUgeCA9IHN2Zy0+eCgpLT52YWx1
ZSgpOwotICAgICAgICBkb3VibGUgeSA9IHN2Zy0+eSgpLT52YWx1ZSgpOwotICAgICAgICBkb3Vi
bGUgdyA9IHN2Zy0+d2lkdGgoKS0+dmFsdWUoKTsKLSAgICAgICAgZG91YmxlIGggPSBzdmctPmhl
aWdodCgpLT52YWx1ZSgpOworICAgICAgICBkb3VibGUgeCA9IHN2Zy0+eCgpLnZhbHVlKCk7Cisg
ICAgICAgIGRvdWJsZSB5ID0gc3ZnLT55KCkudmFsdWUoKTsKKyAgICAgICAgZG91YmxlIHcgPSBz
dmctPndpZHRoKCkudmFsdWUoKTsKKyAgICAgICAgZG91YmxlIGggPSBzdmctPmhlaWdodCgpLnZh
bHVlKCk7CiAgICAgICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3QoeCwgeSwgdywgaCk7CiAgICAg
fSBlbHNlIGlmIChzdmdlbGVtLT5oYXNUYWdOYW1lKFNWR05hbWVzOjptYXJrZXJUYWcpKSB7CiAg
ICAgICAgIFNWR01hcmtlckVsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1l
bnQqPihlbGVtZW50KCkpOwotICAgICAgICAgICAgZG91YmxlIHcgPSBzdmctPm1hcmtlcldpZHRo
KCktPnZhbHVlKCk7Ci0gICAgICAgIGRvdWJsZSBoID0gc3ZnLT5tYXJrZXJIZWlnaHQoKS0+dmFs
dWUoKTsKKyAgICAgICAgZG91YmxlIHcgPSBzdmctPm1hcmtlcldpZHRoKCkudmFsdWUoKTsKKyAg
ICAgICAgZG91YmxlIGggPSBzdmctPm1hcmtlckhlaWdodCgpLnZhbHVlKCk7CiAgICAgICAgIG1f
dmlld3BvcnQgPSBGbG9hdFJlY3QoMCwgMCwgdywgaCk7CiAgICAgfQogfQpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2aXNpb24gMTgyNDQpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNCw3ICsyMjQs
NyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQoKQogRmxvYXRSZWN0IFJlbmRlclNWR0lt
YWdlOjpyZWxhdGl2ZUJCb3goYm9vbCBpbmNsdWRlU3Ryb2tlKSBjb25zdAogewogICAgIFNWR0lt
YWdlRWxlbWVudCAqaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihub2RlKCkp
OwotICAgIHJldHVybiBGbG9hdFJlY3QoaW1hZ2UtPngoKS0+dmFsdWUoKSwgaW1hZ2UtPnkoKS0+
dmFsdWUoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIHJldHVybiBGbG9hdFJlY3QoaW1hZ2Ut
PngoKS52YWx1ZSgpLCBpbWFnZS0+eSgpLnZhbHVlKCksIHdpZHRoKCksIGhlaWdodCgpKTsKIH0K
IAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiBpbWFnZSkK
QEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjppbWFnZUNoYW5nZWQoQ2Fj
aGVkCiBJbnRSZWN0IFJlbmRlclNWR0ltYWdlOjpnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCkKIHsK
ICAgICBTVkdJbWFnZUVsZW1lbnQgKmltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50
Kj4obm9kZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSBhYnNvbHV0ZVRyYW5zZm9y
bSgpLm1hcFJlY3QoRmxvYXRSZWN0KGltYWdlLT54KCktPnZhbHVlKCksIGltYWdlLT55KCktPnZh
bHVlKCksIHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0g
YWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0UmVjdChpbWFnZS0+eCgpLnZhbHVlKCks
IGltYWdlLT55KCkudmFsdWUoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKIAogICAgIC8vIEZpbHRl
cnMgY2FuIGV4cGFuZCB0aGUgYm91bmRpbmcgYm94CiAgICAgU1ZHUmVzb3VyY2VGaWx0ZXIgKmZp
bHRlciA9IGdldEZpbHRlckJ5SWQoZG9jdW1lbnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+Zmls
dGVyKCkuc3Vic3RyaW5nKDEpKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFJlbmRlclNWR0lt
YWdlOjphYnNvbHV0ZVJlY3RzKFZlY3RvCiBBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHSW1hZ2U6
OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpCiB7CiAgICAgU1ZHSW1hZ2VFbGVtZW50ICppbWFn
ZSA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7Ci0gICAgcmV0dXJuIEFm
ZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShpbWFnZS0+eCgpLT52YWx1ZSgpLCBpbWFnZS0+eSgp
LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRlKGltYWdl
LT54KCkudmFsdWUoKSwgaW1hZ2UtPnkoKS52YWx1ZSgpKTsKIH0KIAogfQpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDggQEAg
dm9pZCBSZW5kZXJTVkdUZXh0OjpsYXlvdXQoKQogICAgICAgICBvbGRCb3VuZHMgPSBtX2Fic29s
dXRlQm91bmRzOwogICAgIFNWR1RleHRFbGVtZW50KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8U1ZHVGV4
dEVsZW1lbnQqPihlbGVtZW50KCkpOwogICAgIC8vRklYTUU6ICBuZWVkIHRvIGFsbG93IGZsb2F0
aW5nIHBvaW50IHBvc2l0aW9ucwotICAgIGludCB4T2Zmc2V0ID0gKGludCkodGV4dC0+eCgpLT5n
ZXRGaXJzdCgpID8gdGV4dC0+eCgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpIDogMCk7Ci0gICAgaW50
IHlPZmZzZXQgPSAoaW50KSh0ZXh0LT55KCktPmdldEZpcnN0KCkgPyB0ZXh0LT55KCktPmdldEZp
cnN0KCktPnZhbHVlKCkgOiAwKTsKKyAgICBpbnQgeE9mZnNldCA9IChpbnQpKHRleHQtPngoKS0+
Z2V0Rmlyc3QoKS52YWx1ZSgpKTsKKyAgICBpbnQgeU9mZnNldCA9IChpbnQpKHRleHQtPnkoKS0+
Z2V0Rmlyc3QoKS52YWx1ZSgpKTsKICAgICBzZXRQb3MoeE9mZnNldCwgeU9mZnNldCk7CiAgICAg
UmVuZGVyQmxvY2s6OmxheW91dCgpOwogICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZH
SW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5s
aW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDE4MjQ0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZH
SW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw5ICsxMjUsOCBAQCBzdGF0
aWMgYm9vbCB0cmFuc2xhdGVCb3goSW5saW5lQm94KiBib3gsCiAgICAgICAgIElubGluZUZsb3dC
b3gqIGZsb3cgPSBzdGF0aWNfY2FzdDxJbmxpbmVGbG93Qm94Kj4oYm94KTsKICAgICAgICAgU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudCogdGV4dCA9IHN0YXRpY19jYXN0PFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQqPihib3gtPm9iamVjdCgpLT5lbGVtZW50KCkpOwogICAgICAgICAKLSAgICAg
ICAgaWYgKHRvcExldmVsfHwhKHRleHQtPngoKS0+Z2V0Rmlyc3QoKSB8fCB0ZXh0LT55KCktPmdl
dEZpcnN0KCkgfHwgCi0gICAgICAgICAgICAgICAgICAgICAgICAodGV4dC0+ZHgoKS0+Z2V0Rmly
c3QoKSAmJiB0ZXh0LT5keCgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgKHRleHQtPmR5KCktPmdldEZpcnN0KCkgJiYgdGV4dC0+ZHkoKS0+Z2V0Rmly
c3QoKS0+dmFsdWUoKSkpKSB7CisgICAgICAgIGlmICh0b3BMZXZlbCB8fCAhKHRleHQtPngoKS0+
Z2V0Rmlyc3QoKS52YWx1ZSgpIHx8IHRleHQtPnkoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtPmR4KCktPmdldEZpcnN0KCkudmFsdWUoKSB8
fCB0ZXh0LT5keSgpLT5nZXRGaXJzdCgpLnZhbHVlKCkpKSB7CiAgICAgICAgICAgICBib3gtPnNl
dFhQb3MoYm94LT54UG9zKCkgKyB4KTsKICAgICAgICAgICAgIGJveC0+c2V0WVBvcyhib3gtPnlQ
b3MoKSArIHkpOwogICAgICAgICAgICAgZm9yIChJbmxpbmVCb3gqIGN1cnIgPSBmbG93LT5maXJz
dENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0T25MaW5lKCkpIApAQCAtMTY4LDEyICsx
NjcsMTMgQEAgc3RhdGljIGludCBwbGFjZVBvc2l0aW9uZWRCb3hlc0hvcml6b250YQogICAgICAg
ICAgICAgYXNzZXJ0KGN1cnItPm9iamVjdCgpLT5pc0lubGluZUZsb3coKSk7CiAgICAgICAgICAg
ICBJbmxpbmVGbG93Qm94KiBmbG93ID0gc3RhdGljX2Nhc3Q8SW5saW5lRmxvd0JveCo+KGN1cnIp
OwogICAgICAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCogdGV4dCA9IHN0YXRpY19j
YXN0PFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqPihmbG93LT5vYmplY3QoKS0+ZWxlbWVudCgp
KTsKLSAgICAgICAgICAgIHggKz0gKGludCkodGV4dC0+ZHgoKS0+Z2V0Rmlyc3QoKSA/IHRleHQt
PmR4KCktPmdldEZpcnN0KCktPnZhbHVlKCkgOiAwKTsKLSAgICAgICAgICAgIGlmICh0ZXh0LT54
KCktPmdldEZpcnN0KCkpCi0gICAgICAgICAgICAgICAgeCA9IChpbnQpKHRleHQtPngoKS0+Z2V0
Rmlyc3QoKS0+dmFsdWUoKSAtIHhQb3MpOwotICAgICAgICAgICAgaWYgKHRleHQtPngoKS0+Z2V0
Rmlyc3QoKSB8fCB0ZXh0LT55KCktPmdldEZpcnN0KCkgfHwgCi0gICAgICAgICAgICAgICAgKHRl
eHQtPmR4KCktPmdldEZpcnN0KCkgJiYgdGV4dC0+ZHgoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSkg
fHwKLSAgICAgICAgICAgICAgICAodGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKSAmJiB0ZXh0LT5keSgp
LT5nZXRGaXJzdCgpLT52YWx1ZSgpKSkgeworICAgICAgICAgICAgeCArPSAoaW50KSh0ZXh0LT5k
eCgpLT5nZXRGaXJzdCgpLnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKHRleHQtPngoKS0+bnVt
YmVyT2ZJdGVtcygpID4gMCkKKyAgICAgICAgICAgICAgICB4ID0gKGludCkodGV4dC0+eCgpLT5n
ZXRGaXJzdCgpLnZhbHVlKCkgLSB4UG9zKTsKKyAgICAgICAgICAgIGlmICh0ZXh0LT54KCktPm51
bWJlck9mSXRlbXMoKSA+IDAgfHwKKyAgICAgICAgICAgICAgICB0ZXh0LT55KCktPm51bWJlck9m
SXRlbXMoKSA+IDAgfHwKKyAgICAgICAgICAgICAgICB0ZXh0LT5keCgpLT5udW1iZXJPZkl0ZW1z
KCkgPiAwIHx8CisgICAgICAgICAgICAgICAgdGV4dC0+ZHkoKS0+bnVtYmVyT2ZJdGVtcygpID4g
MCkgewogICAgICAgICAgICAgICAgIHNlZW5Qb3NpdGlvbmVkRWxlbWVudCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlu
dCBpZ25vcmVYLCBpZ25vcmVZOwpAQCAtMjM2LDkgKzIzNiw5IEBAIHN0YXRpYyB2b2lkIHBsYWNl
Qm94ZXNWZXJ0aWNhbGx5V2l0aEFic0IKICAgICBmb3IgKElubGluZUJveCogY3VyciA9IGZsb3ct
PmZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRPbkxpbmUoKSkgewogICAgICAg
ICBpZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpIHsKICAgICAgICAgICAgIFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQqIHRleHQgPSBzdGF0aWNfY2FzdDxTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50Kj4oY3Vyci0+b2JqZWN0KCktPmVsZW1lbnQoKSk7Ci0gICAgICAgICAgICBiYXNlbGluZSAr
PSAoaW50KSh0ZXh0LT5keSgpLT5nZXRGaXJzdCgpID8gdGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKS0+
dmFsdWUoKSA6IDApOwotICAgICAgICAgICAgaWYgKHRleHQtPnkoKS0+Z2V0Rmlyc3QoKSkgewot
ICAgICAgICAgICAgICAgIGJhc2VsaW5lID0gKGludCkodGV4dC0+eSgpLT5nZXRGaXJzdCgpLT52
YWx1ZSgpIC0geVBvcyk7CisgICAgICAgICAgICBiYXNlbGluZSArPSAoaW50KSh0ZXh0LT5keSgp
LT5nZXRGaXJzdCgpLnZhbHVlKCkpOworICAgICAgICAgICAgaWYgKHRleHQtPnkoKS0+bnVtYmVy
T2ZJdGVtcygpID4gMCkgeworICAgICAgICAgICAgICAgIGJhc2VsaW5lID0gKGludCkodGV4dC0+
eSgpLT5nZXRGaXJzdCgpLnZhbHVlKCkgLSB5UG9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHBsYWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFic0Jhc2VsaW5lKHN0YXRpY19jYXN0PElubGlu
ZUZsb3dCb3gqPihjdXJyKSwgaGVpZ2h0T2ZCbG9jaywgbWluX3ksIG1heF95LCBiYXNlbGluZSwg
eVBvcyk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11885</attachid>
            <date>2006-12-16 13:01:19 -0800</date>
            <delta_ts>2006-12-16 14:27:14 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>UpdatedSVGLengthPatch.diff</filename>
            <type>text/plain</type>
            <size>213589</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAgQEAKKzIwMDYtMTItMTYgIE5pa29sYXMgWmltbWVybWFu
biAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgYmFzZWxpbmUgYWZ0ZXIgdGhlIFNWR0xlbmd0aCBwYXRj
aC4KKyAgICAgICAgKiBzdmcvVzNDLVNWRy0xLjEvY29vcmRzLXVuaXRzLTAxLWItZXhwZWN0ZWQu
cG5nOgorCiAyMDA2LTEyLTE2ICBNaXR6IFBldHRlbCAgPG1pdHpAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBPbGl2ZXIuCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NSBAQAorMjAwNi0xMi0xNiAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8emltbWVybWFubkBrZGUub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisJRml4ZXM6IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExODEzCisKKwlQYXNzIFNWR0xlbmd0aCBhcm91bmQgYnkgdmFsdWUsIHJl
bW92ZSBhbnkgU1ZHTGVuZ3RoKiB1c2FnZS4KKyAgICAgICAgQmluZGluZ3Mgd29yayBmaW5lLCBh
cyB0aGUgU1ZHIFBPRCBKUyBXcmFwcGVyIHN0dWZmIGlzIGFscmVhZHkgaW4gc3ZuLgorCisJTm8g
bmV3IHJlZ3Jlc3Npb25zLCBub25lIGZpeGVkLiBCdXQgdGhlIGNvZGUgaXRzZWxmIGlzIG11Y2gg
Y2xlYW5lci4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAg
KiBrc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpLU1ZHUGFpbnRlckZhY3Rvcnk6OmNzc1ByaW1pdGl2ZVRvTGVuZ3RoKToKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdD
aXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OlNW
R0NpcmNsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6
dG9QYXRoRGF0YSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJzb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0N1cnNvckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OlNWR0VsbGlwc2VFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6dG9QYXRoRGF0YSk6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6
U1ZHRmlsdGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50
OjpjYW52YXNSZXNvdXJjZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
aDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpzZXRTdGFuZGFyZEF0dHJpYnV0ZXMpOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpdFRvVmll
d0JveDo6cGFyc2VWaWV3Qm94KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSGVscGVyOjpw
YXJzZVNlcGFyYXRlZExpc3QpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdIZWxwZXIuaDoKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlRWxlbWVudDo6U1ZHSW1hZ2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGVuZ3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnN0b3JlVW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0
TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0VHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpsZW5ndGhUeXBlVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c3RyaW5nVG9MZW5ndGhU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6U1ZHTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xlbmd0aDo6dW5pdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVu
Z3RoOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OnNldFZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGg6OnZhbHVlQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xl
bmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVu
Z3RoOjppc0ZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6ZHBpKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6UGVyY2VudGFnZU9mVmlld3BvcnQpOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdMZW5ndGguaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGg6Oik6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0xlbmd0aC5p
ZGw6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGVuZ3RoTGlzdDo6U1ZHTGVuZ3RoTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMZW5ndGhMaXN0OjpwYXJzZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3Qu
aDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGluZUVsZW1lbnQ6OlNWR0xpbmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xpbmVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMaW5lRWxlbWVudDo6dG9QYXRoRGF0YSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0xp
bmVFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xp
bmVhckdyYWRpZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xp
bmVhckdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkaWVudCk6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXJr
ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OlNWR01h
cmtlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6Y2Fu
dmFzUmVzb3VyY2UpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hc2tFbGVtZW50OjpTVkdNYXNrRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdN
YXNrRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNr
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFz
a0VsZW1lbnQ6OmRyYXdNYXNrZXJDb250ZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWFz
a0VsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6ZHJhd1BhdHRlcm5Db250
ZW50SW50b1RpbGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6Om5vdGlm
eUF0dHJpYnV0ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6
Z2V0Q1RNKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaDoKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
OjpidWlsZEdyYWRpZW50KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnRvUGF0aERhdGEpOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdSZWN0RWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OlNWR1NWR0VsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU1ZHRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NWR0VsZW1lbnQ6OmdldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpn
ZXRTY3JlZW5DVE0pOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAqIGtzdmcyL3N2
Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNW
R1RleHRDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6U1ZHVXNlRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdVc2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdVc2VFbGVtZW50OjpjbG9zZVJlbmRlcmVyKToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNlbGVjdEN1cnNvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZv
cmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9iamVjdDo6
dHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUGF0
aC5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclBhdGguaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R0NvbnRhaW5lcjo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5l
cjo6Y2FsY1ZpZXdwb3J0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnJlbGF0aXZlQkJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6Z2V0QWJzb2x1dGVSZXBhaW50UmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6dHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdUZXh0OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdJbmxp
bmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zbGF0ZUJveCk6CisgICAgICAg
IChXZWJDb3JlOjpwbGFjZVBvc2l0aW9uZWRCb3hlc0hvcml6b250YWxseSk6CisgICAgICAgIChX
ZWJDb3JlOjpwbGFjZUJveGVzVmVydGljYWxseVdpdGhBYnNCYXNlbGluZSk6CisKIDIwMDYtMTIt
MTYgIFphY2sgUnVzaW4gIDx6YWNrQGtkZS5vcmc+CiAKICAgICAgICAgQWRkIGEgc3R1YiBmb3Ig
U2VhcmNoUG9wdXBNZW51IGZvciBRdCBjb2RlLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0JKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAgbXkgJXByaW1pdGl2ZVR5cGVIYXNoID0gKCJpbnQiID0+IDEsICJzaAogICAgICAgICAgICAg
ICAgICAgICAgICAgICJ1bnNpZ25lZCBsb25nIiA9PiAxLCAiZmxvYXQiID0+IDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgImRvdWJsZSIgPT4gMSwgImJvb2xlYW4iID0+IDEsICJ2b2lkIiA9
PiAxKTsKIAotbXkgJXBvZFR5cGVIYXNoID0gKCJSR0JDb2xvciIgPT4gMSwgIlNWR1BvaW50IiA9
PiAxLCAiU1ZHUmVjdCIgPT4gMSwgIlNWR051bWJlciIgPT4gMSwgIlNWR01hdHJpeCIgPT4gMSk7
CitteSAlcG9kVHlwZUhhc2ggPSAoIlJHQkNvbG9yIiA9PiAxLCAiU1ZHTGVuZ3RoIiA9PiAxLCAi
U1ZHUG9pbnQiID0+IDEsICJTVkdSZWN0IiA9PiAxLCAiU1ZHTnVtYmVyIiA9PiAxLCAiU1ZHTWF0
cml4IiA9PiAxKTsKICAKIG15ICVzdHJpbmdUeXBlSGFzaCA9ICgiRE9NU3RyaW5nIiA9PiAxLCAi
QXRvbWljU3RyaW5nIiA9PiAxKTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTEwOTgsNiArMTA5
OCw3IEBAIHN1YiBHZXROYXRpdmVUeXBlCiAgICAgcmV0dXJuICJGbG9hdFJlY3QiIGlmICR0eXBl
IGVxICJTVkdSZWN0IjsKICAgICByZXR1cm4gIkZsb2F0UG9pbnQiIGlmICR0eXBlIGVxICJTVkdQ
b2ludCI7CiAgICAgcmV0dXJuICJBZmZpbmVUcmFuc2Zvcm0iIGlmICR0eXBlIGVxICJTVkdNYXRy
aXgiOworICAgIHJldHVybiAiU1ZHTGVuZ3RoIiBpZiAkdHlwZSBlcSAiU1ZHTGVuZ3RoIjsKICAg
ICByZXR1cm4gImRvdWJsZSIgaWYgJHR5cGUgZXEgIlNWR051bWJlciI7CiAgICAgcmV0dXJuICJT
VkdQYWludDo6U1ZHUGFpbnRUeXBlIiBpZiAkdHlwZSBlcSAiU1ZHUGFpbnRUeXBlIjsKIApJbmRl
eDogV2ViQ29yZS9rc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAJKHJldmlz
aW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9taXNjL0tDYW52YXNSZW5kZXJpbmdTdHlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJTVkdQYWludFNl
cnZlclNvbGlkLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
UGF0aC5oIgorI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgog
I2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5o
IgpAQCAtMTA4LDExICsxMDksMTEgQEAgZG91YmxlIEtTVkdQYWludGVyRmFjdG9yeTo6Y3NzUHJp
bWl0aXZlVAogICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwogCiAgICAgaWYgKGNzc1R5cGUg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSB7Ci0gICAgICAgIFNWR0VsZW1l
bnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oaXRlbS0+ZWxlbWVudCgpKTsK
KyAgICAgICAgU1ZHU3R5bGVkRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR1N0eWxl
ZEVsZW1lbnQqPihpdGVtLT5lbGVtZW50KCkpOwogICAgICAgICBTVkdFbGVtZW50KiB2aWV3cG9y
dEVsZW1lbnQgPSAoZWxlbWVudCA/IGVsZW1lbnQtPnZpZXdwb3J0RWxlbWVudCgpIDogMCk7CiAg
ICAgICAgIGlmICh2aWV3cG9ydEVsZW1lbnQpIHsKICAgICAgICAgICAgIGRvdWJsZSByZXN1bHQg
PSBwcmltaXRpdmUtPmdldEZsb2F0VmFsdWUoKSAvIDEwMC4wOwotICAgICAgICAgICAgcmV0dXJu
IFNWR0hlbHBlcjo6UGVyY2VudGFnZU9mVmlld3BvcnQocmVzdWx0LCB2aWV3cG9ydEVsZW1lbnQs
IExNX09USEVSKTsKKyAgICAgICAgICAgIHJldHVybiBTVkdMZW5ndGg6OlBlcmNlbnRhZ2VPZlZp
ZXdwb3J0KHJlc3VsdCwgZWxlbWVudCwgTGVuZ3RoTW9kZU90aGVyKTsKICAgICAgICAgfQogICAg
IH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaAkocmV2aXNp
b24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHR5
cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxib29sPiBTVkdBbmltYXRlZEJvb2xlYW47CiAgICAg
dHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGludD4gU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjsK
ICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8bG9uZz4gU1ZHQW5pbWF0ZWRJbnRlZ2Vy
OwotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdMZW5ndGgqPiBTVkdBbmltYXRl
ZExlbmd0aDsKKyAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTGVuZ3RoPiBTVkdB
bmltYXRlZExlbmd0aDsKICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTGVuZ3Ro
TGlzdCo+IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDsKICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVt
cGxhdGU8ZG91YmxlPiBTVkdBbmltYXRlZE51bWJlcjsKICAgICB0eXBlZGVmIFNWR0FuaW1hdGVk
VGVtcGxhdGU8U1ZHTnVtYmVyTGlzdCo+IFNWR0FuaW1hdGVkTnVtYmVyTGlzdDsgCkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmlt
bWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsMTIgKzIxLDEyIEBACiAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUg
IlNWR0NpcmNsZUVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRl
ICJTVkdIZWxwZXIuaCIKLSNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw5ICszNiw5IEBAIFNWR0NpcmNsZUVs
ZW1lbnQ6OlNWR0NpcmNsZUVsZW1lbnQoY29uc3QKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNW
R0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAs
IG1fY3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQot
ICAgICwgbV9jeShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50
KCkpKQotICAgICwgbV9yKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fT1RIRVIsIHZpZXdwb3J0RWxl
bWVudCgpKSkKKyAgICAsIG1fY3goU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkpCisg
ICAgLCBtX2N5KFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSkKKyAgICAsIG1fcihT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZU90aGVyKSkKIHsKIH0KIApAQCAtNDYsMTkgKzQ2LDE5
IEBAIFNWR0NpcmNsZUVsZW1lbnQ6On5TVkdDaXJjbGVFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVu
Z3RoLCBsZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4QXR0ci5sb2NhbE5hbWUoKSwgbV9jeC5n
ZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNW
R0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBDeSwgY3ksIFNWR05hbWVzOjpjeUF0dHIubG9jYWxO
YW1lKCksIG1fY3kuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDaXJj
bGVFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgUiwgciwgU1ZHTmFtZXM6OnJB
dHRyLmxvY2FsTmFtZSgpLCBtX3IuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNW
R05hbWVzOjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeSwg
Y3ksIFNWR05hbWVzOjpjeUF0dHIubG9jYWxOYW1lKCksIG1fY3kpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBSLCByLCBTVkdOYW1lczo6ckF0dHIubG9jYWxOYW1lKCksIG1fcikKIAogdm9pZCBTVkdDaXJj
bGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3hBdHRyKQotICAgICAgICBjeEJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0Q3hCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsgICAgICAgCiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeUF0dHIpCi0gICAgICAgIGN5QmFzZVZhbHVlKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRDeUJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OnJBdHRyKQotICAgICAgICByQmFzZVZhbHVlKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRSQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlT3RoZXIsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChTVkdUZXN0
czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03
MiwzNyArNzIsMTEgQEAgdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgog
CiBQYXRoIFNWR0NpcmNsZUVsZW1lbnQ6OnRvUGF0aERhdGEoKSBjb25zdAogewotICAgIGZsb2F0
IF9jeCA9IGN4KCktPnZhbHVlKCksIF9jeSA9IGN5KCktPnZhbHVlKCk7Ci0gICAgZmxvYXQgX3Ig
PSByKCktPnZhbHVlKCk7Ci0KLSAgICByZXR1cm4gUGF0aDo6Y3JlYXRlQ2lyY2xlKEZsb2F0UG9p
bnQoX2N4LCBfY3kpLCBfcik7Ci19Ci0KLWNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIFNWR0NpcmNs
ZUVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNv
bnRleHQpCi17Ci0gICAgLy8gQWxsIGF0dHJpYnV0ZSdzIGNvbnRleHRzIGFyZSBlcXVhbCAoc28g
anVzdCB0YWtlIHRoZSBvbmUgZnJvbSAnY3gnKS4KLSAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50
KiByZXN0b3JlID0gY3goKS0+Y29udGV4dCgpOwotCi0gICAgY3goKS0+c2V0Q29udGV4dChjb250
ZXh0KTsKLSAgICBjeSgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHIoKS0+c2V0Q29udGV4
dChjb250ZXh0KTsKLSAgICAKLSAgICBTVkdTdHlsZWRFbGVtZW50OjpwdXNoQXR0cmlidXRlQ29u
dGV4dChjb250ZXh0KTsKLSAgICByZXR1cm4gcmVzdG9yZTsKLX0KLQotYm9vbCBTVkdDaXJjbGVF
bGVtZW50OjpoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3QKLXsKLSAgICBpZiAoY3goKS0+dW5p
dFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAg
ICAgY3koKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRB
R0UgfHwKLSAgICAgICAgcigpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZ
UEVfUEVSQ0VOVEFHRSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIFBhdGg6OmNyZWF0ZUNpcmNsZShGbG9hdFBvaW50KGN4KCkudmFsdWUoKSwg
Y3koKS52YWx1ZSgpKSwgcigpLnZhbHVlKCkpOwogfQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEg
MDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0NpcmNsZUVsZW1lbnRJbXBs
X0gKLSNkZWZpbmUgS1NWR19TVkdDaXJjbGVFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0NpcmNs
ZUVsZW1lbnRfSAorI2RlZmluZSBTVkdDaXJjbGVFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQ
T1JUCiAKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC0zMSw3
ICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7Ci0gICAgY2xhc3MgU1ZHTGVuZ3RoOwog
ICAgIGNsYXNzIFNWR0NpcmNsZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKQEAgLTQ5
LDI0ICs0OSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhE
YXRhKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBw
dXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KTsKLQog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0OwotCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCkKIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
Q2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEN4LCBjeCkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNW
R0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBDeSwgY3kpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8
U1ZHTGVuZ3RoPiwgUiwgcikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBDeCwgY3gpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5n
dGgsIFNWR0xlbmd0aCwgQ3ksIGN5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFIsIHIpCiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNl
bmRpZgorI2VuZGlmIC8vIFNWR0NpcmNsZUVsZW1lbnRfSAogCiAvLyB2aW06dHM9NDpub2V0Cklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjAp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29s
YXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yMSw2ICsyMSw3IEBACiAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUg
IlNWR0N1cnNvckVsZW1lbnQuaCIKIApAQCAtNDAsOCArNDEsOCBAQCBTVkdDdXJzb3JFbGVtZW50
OjpTVkdDdXJzb3JFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCkKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCiAgICAgLCBDYWNoZWRSZXNvdXJjZUNsaWVu
dCgpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCgwLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50
KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgoMCwgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1l
bnQoKSkpCisgICAgLCBtX3goMCwgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KDAsIExlbmd0
aE1vZGVIZWlnaHQpCiB7CiAgICAgbV9jYWNoZWRJbWFnZSA9IDA7CiB9CkBAIC01MiwxNiArNTMs
MTYgQEAgU1ZHQ3Vyc29yRWxlbWVudDo6flNWR0N1cnNvckVsZW1lbnQoKQogICAgICAgICBtX2Nh
Y2hlZEltYWdlLT5kZXJlZih0aGlzKTsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNW
R05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgs
IFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkKIAogdm9p
ZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUg
KmF0dHIpCiB7Ci0gICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgp
OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0
aCgwLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3Ry
aW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgoMCwgTGVuZ3RoTW9k
ZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgyLDYgKzgz
LDYgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogCiB9CiAKLS8v
IHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZpc2lvbiAxODI2MCkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yMCwxMiArMjAsMTQgQEAKICAg
ICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdDdXJz
b3JFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHQ3Vyc29yRWxlbWVudEltcGxfSAorI2lm
bmRlZiBTVkdDdXJzb3JFbGVtZW50X0gKKyNkZWZpbmUgU1ZHQ3Vyc29yRWxlbWVudF9ICisKICNp
ZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKIAorI2luY2x1ZGUgIlNWR0xl
bmd0aC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUZXN0cy5oIgog
I2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgpAQCAtMzQsOCArMzYsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZQogewotICAgIGNsYXNzIFNWR0xlbmd0aDsKLQogICAgIGNsYXNzIFNWR0N1cnNv
ckVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLApAQCAtNjAsOCArNjAsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xB
UkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywg
SHJlZiwgaHJlZikKIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
Q3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdM
ZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBY
LCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ3Vyc29yRWxl
bWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCiAKICAgICAgICAgQ2FjaGVkSW1hZ2Ug
Km1fY2FjaGVkSW1hZ2U7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2
ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9S
VAogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
RWxsaXBzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0Vs
bGlwc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdFbGxpcHNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHRWxsaXBzZUVsZW1lbnQuaCIK
IApAQCAtMzYsMTAgKzM3LDEwIEBAIFNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxlbWVu
dChjb24KICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1fY3gobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9jeShuZXcgU1ZHTGVuZ3Ro
KHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9yeChuZXcgU1ZH
TGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3J5KG5l
dyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBt
X2N4KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fY3kodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCkKKyAgICAsIG1fcngodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9yeSh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0KQogewogfSAgICAKIApAQCAtNDcsMjIgKzQ4LDIyIEBAIFNWR0Vs
bGlwc2VFbGVtZW50Ojp+U1ZHRWxsaXBzZUVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBs
ZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4QXR0ci5sb2NhbE5hbWUoKSwgbV9jeC5nZXQoKSkK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5n
dGgqLCBMZW5ndGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgp
LCBtX2N5LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVs
ZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBSeCwgcngsIFNWR05hbWVzOjpyeEF0
dHIubG9jYWxOYW1lKCksIG1fcnguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFJ5LCByeSwg
U1ZHTmFtZXM6OnJ5QXR0ci5sb2NhbE5hbWUoKSwgbV9yeS5nZXQoKSkKK0FOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVu
Z3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3gpCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5KQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ci5sb2NhbE5hbWUoKSwg
bV9yeCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBT
VkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIubG9jYWxO
YW1lKCksIG1fcnkpCiAKIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpj
eEF0dHIpCi0gICAgICAgIGN4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwot
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN5QXR0cikKLSAgICAgICAgY3lCYXNl
VmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6cnhBdHRyKQotICAgICAgICByeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3Ry
aW5nKHZhbHVlKTsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyeUF0dHIpCi0g
ICAgICAgIHJ5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBz
ZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwor
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3lBdHRyKQorICAgICAgICBz
ZXRDeUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsK
KyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKKyAgICAgICAg
c2V0UnhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsK
KyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ5QXR0cikKKyAgICAgICAg
c2V0UnlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cikpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NiwzOSArNzcsMTIgQEAgdm9pZCBTVkdF
bGxpcHNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogCiBQYXRoIFNWR0VsbGlwc2VFbGVtZW50
Ojp0b1BhdGhEYXRhKCkgY29uc3QKIHsKLSAgICBmbG9hdCBfY3ggPSBjeCgpLT52YWx1ZSgpLCBf
Y3kgPSBjeSgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF9yeCA9IHJ4KCktPnZhbHVlKCksIF9yeSA9
IHJ5KCktPnZhbHVlKCk7Ci0KLSAgICByZXR1cm4gUGF0aDo6Y3JlYXRlRWxsaXBzZShGbG9hdFBv
aW50KF9jeCwgX2N5KSwgX3J4LCBfcnkpOworICAgIHJldHVybiBQYXRoOjpjcmVhdGVFbGxpcHNl
KEZsb2F0UG9pbnQoY3goKS52YWx1ZSgpLCBjeSgpLnZhbHVlKCkpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ4KCkudmFsdWUoKSwgcnkoKS52YWx1ZSgpKTsKIH0KIAotY29uc3Qg
U1ZHU3R5bGVkRWxlbWVudCogU1ZHRWxsaXBzZUVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0
KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpCi17Ci0gICAgLy8gQWxsIGF0dHJpYnV0
ZSdzIGNvbnRleHRzIGFyZSBlcXVhbCAoc28ganVzdCB0YWtlIHRoZSBvbmUgZnJvbSAnY3gnKS4K
LSAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiByZXN0b3JlID0gY3goKS0+Y29udGV4dCgpOwot
Ci0gICAgY3goKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICBjeSgpLT5zZXRDb250ZXh0KGNv
bnRleHQpOwotICAgIHJ4KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgcnkoKS0+c2V0Q29u
dGV4dChjb250ZXh0KTsKLQotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250
ZXh0KGNvbnRleHQpOwotICAgIHJldHVybiByZXN0b3JlOwogfQogCi1ib29sIFNWR0VsbGlwc2VF
bGVtZW50OjpoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3QKLXsKLSAgICBpZiAoY3goKS0+dW5p
dFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAg
ICAgY3koKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRB
R0UgfHwKLSAgICAgICAgcngoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhU
WVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgcnkoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6
OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi19Ci0KLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdf
U1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdF
bGxpcHNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
cHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB
LgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0VsbGlwc2VFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtT
VkdfU1ZHRWxsaXBzZUVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHRWxsaXBzZUVsZW1lbnRfSAor
I2RlZmluZSBTVkdFbGxpcHNlRWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5j
bHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtMzEsNyArMzIsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZQogewotICAgIGNsYXNzIFNWR0xlbmd0aDsKICAgICBjbGFzcyBT
VkdFbGxpcHNlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCkBAIC00OSwyMCArNDks
MTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFBhdGggdG9QYXRoRGF0YSgpIGNv
bnN0OwogCi0gICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcHVzaEF0dHJp
YnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCk7Ci0KICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGhhc1BlcmNl
bnRhZ2VWYWx1ZXMoKSBjb25zdDsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQpCiAgCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNl
RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEN4LCBjeCkKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5n
dGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgQ3ksIGN5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBSeCwgcngpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFJ5LCByeSkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50
LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgQ3gsIGN4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBD
eSwgY3kpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNl
RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFJ4LCByeCkKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xl
bmd0aCwgUnksIHJ5KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgIENvcHlyaWdo
dCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KIApAQCAtNDMs
MjEgKzQzLDIwIEBAIFNWR0ZpbHRlckVsZW1lbnQ6OlNWR0ZpbHRlckVsZW1lbnQoY29uc3QKICAg
ICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgbV9maWx0ZXJVbml0cyhT
VkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCiAgICAgLCBtX3By
aW1pdGl2ZVVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkK
LSAgICAsIG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQo
KSkpCi0gICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxl
bWVudCgpKSkKLSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmll
d3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9I
RUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhp
cywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCkKICAgICAsIG1fZmlsdGVyUmVzWCgwKQogICAgICwgbV9maWx0ZXJSZXNZKDApCi0KIHsKICAg
ICAvLyBTcGVjOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3Qg
aXMgYXMgaWYgYSB2YWx1ZSBvZiAiLTEwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgbV94LT5zZXRW
YWx1ZUFzU3RyaW5nKCItMTAlIik7Ci0gICAgbV95LT5zZXRWYWx1ZUFzU3RyaW5nKCItMTAlIik7
Ci0KKyAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIt
MTAlIikpOworICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWln
aHQsICItMTAlIikpOworIAogICAgIC8vIFNwZWM6IElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMjAlIiB3ZXJlIHNwZWNp
ZmllZC4KLSAgICBtX3dpZHRoLT5zZXRWYWx1ZUFzU3RyaW5nKCIxMjAlIik7Ci0gICAgbV9oZWln
aHQtPnNldFZhbHVlQXNTdHJpbmcoIjEyMCUiKTsKKyAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMTIwJSIpKTsKKyAgICBzZXRIZWlnaHRCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikpOwogfQogCiBT
VkdGaWx0ZXJFbGVtZW50Ojp+U1ZHRmlsdGVyRWxlbWVudCgpCkBAIC02NiwxMCArNjUsMTAgQEAg
U1ZHRmlsdGVyRWxlbWVudDo6flNWR0ZpbHRlckVsZW1lbnQoKQogCiBBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJh
dGlvbiwgRmlsdGVyVW5pdHMsIGZpbHRlclVuaXRzLCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRy
LmxvY2FsTmFtZSgpLCBtX2ZpbHRlclVuaXRzKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHRmlsdGVyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIFByaW1p
dGl2ZVVuaXRzLCBwcmltaXRpdmVVbml0cywgU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRzQXR0ci5s
b2NhbE5hbWUoKSwgbV9wcmltaXRpdmVVbml0cykKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBT
VkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3Ro
LCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0
aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCks
IG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJF
bGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05h
bWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodC5nZXQoKSkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCks
IG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50
LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6Omhl
aWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgbG9uZywgSW50ZWdlciwgaW50ZWdlciwgRmlsdGVyUmVz
WCwgZmlsdGVyUmVzWCwgImZpbHRlclJlc1giLCBtX2ZpbHRlclJlc1gpCiBBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBsb25nLCBJbnRlZ2VyLCBpbnRlZ2Vy
LCBGaWx0ZXJSZXNZLCBmaWx0ZXJSZXNZLCAiZmlsdGVyUmVzWSIsIG1fZmlsdGVyUmVzWSkKIApA
QCAtOTEsMTMgKzkwLDEzIEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWIKICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gIm9iamVjdEJvdW5kaW5nQm94IikKICAgICAg
ICAgICAgIHNldFByaW1pdGl2ZVVuaXRzQmFzZVZhbHVlKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRf
VFlQRV9PQkpFQ1RCT1VORElOR0JPWCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5
QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAg
ICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFs
dWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikK
LSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAg
ICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZh
bHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRy
KQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Cisg
ICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKICAgICAgICAgaWYgKFNWR0xhbmdTcGFj
ZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKQEAgLTExNywxMyArMTE2LDMx
IEBAIFNWR1Jlc291cmNlKiBTVkdGaWx0ZXJFbGVtZW50OjpjYW52YXNSZXMKIAogICAgIGJvb2wg
ZmlsdGVyQkJveE1vZGUgPSBmaWx0ZXJVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRf
VFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKICAgICBtX2ZpbHRlci0+c2V0RmlsdGVyQm91bmRpbmdC
b3hNb2RlKGZpbHRlckJCb3hNb2RlKTsKLSAgICAKLSAgICB4KCktPnNldEJib3hSZWxhdGl2ZShm
aWx0ZXJCQm94TW9kZSk7Ci0gICAgeSgpLT5zZXRCYm94UmVsYXRpdmUoZmlsdGVyQkJveE1vZGUp
OwotICAgIHdpZHRoKCktPnNldEJib3hSZWxhdGl2ZShmaWx0ZXJCQm94TW9kZSk7Ci0gICAgaGVp
Z2h0KCktPnNldEJib3hSZWxhdGl2ZShmaWx0ZXJCQm94TW9kZSk7Ci0gICAgbV9maWx0ZXItPnNl
dEZpbHRlclJlY3QoRmxvYXRSZWN0KHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1ZSgpLCB3aWR0aCgp
LT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSkpOwotICAgIAorCisgICAgZmxvYXQgX3gsIF95
LCB3LCBoOworCisgICAgaWYgKGZpbHRlckJCb3hNb2RlICYmIHgoKS51bml0VHlwZSgpID09IExl
bmd0aFR5cGVQZXJjZW50YWdlKQorICAgICAgICBfeCA9IHgoKS52YWx1ZUluU3BlY2lmaWVkVW5p
dHMoKSAvIDEwMC4wOworICAgIGVsc2UKKyAgICAgICAgX3ggPSB4KCkudmFsdWUoKTsKKworICAg
IGlmIChmaWx0ZXJCQm94TW9kZSAmJiB5KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2Vu
dGFnZSkKKyAgICAgICAgX3kgPSB5KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgLyAxMDAuMDsK
KyAgICBlbHNlCisgICAgICAgIF95ID0geSgpLnZhbHVlKCk7CisKKyAgICBpZiAoZmlsdGVyQkJv
eE1vZGUgJiYgd2lkdGgoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAg
ICAgICB3ID0gd2lkdGgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSAvIDEwMC4wOworICAgIGVs
c2UKKyAgICAgICAgdyA9IHdpZHRoKCkudmFsdWUoKTsKKworICAgIGlmIChmaWx0ZXJCQm94TW9k
ZSAmJiBoZWlnaHQoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAgICAg
ICBoID0gaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgLyAxMDAuMDsKKyAgICBlbHNl
CisgICAgICAgIGggPSBoZWlnaHQoKS52YWx1ZSgpOworCisgICAgbV9maWx0ZXItPnNldEZpbHRl
clJlY3QoRmxvYXRSZWN0KF94LCBfeSwgdywgaCkpOworCiAgICAgYm9vbCBwcmltaXRpdmVCQm94
TW9kZSA9IHByaW1pdGl2ZVVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09C
SkVDVEJPVU5ESU5HQk9YOwogICAgIG1fZmlsdGVyLT5zZXRFZmZlY3RCb3VuZGluZ0JveE1vZGUo
cHJpbWl0aXZlQkJveE1vZGUpOwogICAgIC8vIEZJWE1FOiBXaGVuIGRvZXMgdGhpcyBpbmZvIGdl
dCBwYXNzZWQgdG8gdGhlIGZpbHRlcnMgZWxlbWVudHM/CkBAIC0xNDMsNiArMTYwLDYgQEAgU1ZH
UmVzb3VyY2UqIFNWR0ZpbHRlckVsZW1lbnQ6OmNhbnZhc1JlcwogCiB9CiAKLS8vIHZpbTp0cz00
Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICBDb3B5cmlnaHQgKEMp
IDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CiAKQEAgLTIxLDggKzIx
LDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NW
R19TVkdGaWx0ZXJFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHRmlsdGVyRWxlbWVudElt
cGxfSAorI2lmbmRlZiBTVkdGaWx0ZXJFbGVtZW50X0gKKyNkZWZpbmUgU1ZHRmlsdGVyRWxlbWVu
dF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIu
aCIKQEAgLTU5LDEwICs2MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgCiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBpbnQsIGludCwg
RmlsdGVyVW5pdHMsIGZpbHRlclVuaXRzKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgaW50LCBpbnQsIFByaW1pdGl2ZVVuaXRzLCBwcmlt
aXRpdmVVbml0cykKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zp
bHRlckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYLCB4KQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVu
Z3RoPiwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEhlaWdo
dCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmls
dGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xl
bmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zp
bHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5n
dGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBsb25nLCBsb25nLCBGaWx0ZXJSZXNYLCBm
aWx0ZXJSZXNYKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmls
dGVyRWxlbWVudCwgbG9uZywgbG9uZywgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKIApJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFz
IFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAg
ICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAi
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKQEAgLTM1LDM3ICszNiwz
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50
KHRhZ05hbWUsIGRvYykKLSAgICAsIG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2
aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlH
SFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xl
bmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlz
LCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAg
ICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkKIHsKLSAgICAvLyBTcGVjIDogSWYgdGhlIGF0dHJpYnV0ZSBpcyBu
b3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUg
c3BlY2lmaWVkLgotICAgIG1fd2lkdGgtPnNldFZhbHVlQXNTdHJpbmcoIjEwMCUiKTsKLSAgICBt
X2hlaWdodC0+c2V0VmFsdWVBc1N0cmluZygiMTAwJSIpOworICAgIC8vIFNwZWM6IElmIHRoZSBh
dHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9m
ICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KKyAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgo
dGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpKTsKKyAgICBzZXRIZWlnaHRCYXNlVmFsdWUo
U1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMDAlIikpOwogfQogCiBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6On5TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVu
Z3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feC5nZXQoKSkKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcywgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5s
b2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dp
ZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0
LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodC5nZXQo
KSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6
OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0
aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgTGVuZ3Ro
LCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUo
KSwgbV9oZWlnaHQpCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIFJlc3VsdCwg
cmVzdWx0LCBTVkdOYW1lczo6cmVzdWx0QXR0ci5sb2NhbE5hbWUoKSwgbV9yZXN1bHQpCiAKIHZv
aWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
eEF0dHIpCi0gICAgICAgIHhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Cisg
ICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAg
ICAgICB5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZ
QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICB3
aWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0V2lk
dGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAg
IGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0
SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cmVzdWx0QXR0cikKICAg
ICAgICAgc2V0UmVzdWx0QmFzZVZhbHVlKHZhbHVlKTsKICAgICBlbHNlCkBAIC03NywyNiArNzgs
MzEgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAgIEFTU0VS
VChmaWx0ZXJFZmZlY3QpOwogICAgIGlmICghZmlsdGVyRWZmZWN0KQogICAgICAgICByZXR1cm47
CisKICAgICBib29sIGJib3ggPSBmYWxzZTsKICAgICBpZiAocGFyZW50Tm9kZSgpICYmIHBhcmVu
dE5vZGUoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFnKSkKICAgICAgICAgYmJveCA9
IHN0YXRpY19jYXN0PFNWR0ZpbHRlckVsZW1lbnQqPihwYXJlbnROb2RlKCkpLT5wcmltaXRpdmVV
bml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsK
IAotICAgIHgoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIHkoKS0+c2V0QmJveFJlbGF0
aXZlKGJib3gpOwotICAgIHdpZHRoKCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICBoZWln
aHQoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIGZsb2F0IF94ID0geCgpLT52YWx1ZSgp
LCBfeSA9IHkoKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfd2lkdGggPSB3aWR0aCgpLT52YWx1ZSgp
LCBfaGVpZ2h0ID0gaGVpZ2h0KCktPnZhbHVlKCk7Ci0gICAgaWYgKGJib3gpCi0gICAgICAgIGZp
bHRlckVmZmVjdC0+c2V0U3ViUmVnaW9uKEZsb2F0UmVjdChfeCAqIDEwMC5mLCBfeSAqIDEwMC5m
LCBfd2lkdGggKiAxMDAuZiwgX2hlaWdodCAqIDEwMC5mKSk7Ci0gICAgZWxzZQotICAgICAgICBm
aWx0ZXJFZmZlY3QtPnNldFN1YlJlZ2lvbihGbG9hdFJlY3QoX3gsIF95LCBfd2lkdGgsIF9oZWln
aHQpKTsKLQorICAgIGZsb2F0IF94LCBfeSwgX3dpZHRoLCBfaGVpZ2h0OworICAKKyAgICBpZiAo
YmJveCkgeworICAgICAgICBfeCA9IHgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAg
ICAgX3kgPSB5KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIF93aWR0aCA9IHdp
ZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIF9oZWlnaHQgPSBoZWlnaHQo
KS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBfeCA9IHgo
KS52YWx1ZSgpOworICAgICAgICBfeSA9IHkoKS52YWx1ZSgpOworICAgICAgICBfd2lkdGggPSB3
aWR0aCgpLnZhbHVlKCk7CisgICAgICAgIF9oZWlnaHQgPSBoZWlnaHQoKS52YWx1ZSgpOworICAg
IH0gCisgICAgCisgICAgZmlsdGVyRWZmZWN0LT5zZXRTdWJSZWdpb24oRmxvYXRSZWN0KF94LCBf
eSwgX3dpZHRoLCBfaGVpZ2h0KSk7CiAgICAgZmlsdGVyRWZmZWN0LT5zZXRSZXN1bHQocmVzdWx0
KCkpOwogfQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAog
CisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMTgyNjAp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApA
QCAtMjAsMTUgKzIwLDE1IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwog
Ci0jaWZuZGVmIEtTVkdfU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzSW1wbF9I
Ci0jZGVmaW5lIEtTVkdfU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzSW1wbF9I
CisjaWZuZGVmIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc19ICisjZGVmaW5l
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc19ICisKICNpZmRlZiBTVkdfU1VQ
UE9SVAogCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgU1ZHRmlsdGVyRWZmZWN0OwotICAgIGNsYXNzIFNWR0xlbmd0aDsKIAog
ICAgIGNsYXNzIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyA6IHB1YmxpYyBT
VkdTdHlsZWRFbGVtZW50CiAgICAgewpAQCAtNTAsMTAgKzUwLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcywgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEhlaWdodCwgaGVp
Z2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkKKyAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcywgU3RyaW5nLCBTdHJpbmcsIFJlc3VsdCwgcmVzdWx0KQogICAgIH07CiAKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkocmV2aXNpb24gMTgyNjApCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw3ICs3NCw3IEBAIHZvaWQgU1ZHRml0VG9WaWV3Qm94OjpwYXJzZVZpZXdCb3goY29uc3QK
ICAgICAKICAgICBpZiAocCA8IGVuZCkgLy8gbm90aGluZyBzaG91bGQgY29tZSBhZnRlciB0aGUg
bGFzdCwgZm91cnRoIG51bWJlcgogICAgICAgICBnb3RvIGJhaWxfb3V0OwotCisgICAgCiAgICAg
c2V0Vmlld0JveEJhc2VWYWx1ZShGbG9hdFJlY3QoeCwgeSwgdywgaCkpOwogICAgIHJldHVybjsK
IApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNw
cAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAKICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5oIgpAQCAtNDAsMTAgKzQxLDEwIEBAIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50OjpTVkdGb3JlaWduT2JqZWMKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdT
cGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1feChu
ZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBt
X3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAg
ICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50
KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdw
b3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBt
X3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0KIApA
QCAtNTEsMjMgKzUyLDIzIEBAIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Ojp+U1ZHRm9yZWlnbk9i
amUKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0
dHIubG9jYWxOYW1lKCksIG1feC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWSwg
eSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kuZ2V0KCkpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVu
Z3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUo
KSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWln
aHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodC5nZXQoKSkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCks
IG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9j
YWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNW
R05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgp
LCBtX2hlaWdodCkKIAogdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUp
OworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgs
IHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikK
LSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAg
c2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAg
ICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAg
c2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUp
KTsKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTX1BST1BfV0lEVEgsIHZhbHVlKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewot
ICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAg
ICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUpKTsKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTX1BST1BfSEVJR0hULCB2
YWx1ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKSkKQEAgLTgwLDEyICs4MSwxMiBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50OjpwYXJzZU1hcHBlCiAgICAgfQogfQogCi1SZW5kZXJPYmplY3QgKlNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEsIFJlbmRlclN0
eWxlICpzdHlsZSkKK1JlbmRlck9iamVjdCogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJGb3JlaWduT2JqZWN0KHRoaXMpOwogfQogCi1ib29s
IFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUg
KmNoaWxkKSBjb25zdAorYm9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihOb2RlKiBjaGlsZCkgY29uc3QKIHsKICAgICAvLyBTa2lwIG92ZXIgU1ZH
IHJ1bGVzIHdoaWNoIGRpc2FsbG93IG5vbi1TVkcga2lkcwogICAgIHJldHVybiBTdHlsZWRFbGVt
ZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkKTsKQEAgLTkzLDYgKzk0LDYgQEAg
Ym9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y2hpbGRTaG91bAogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisv
LyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTksOCArMTksOSBAQAogICAg
IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnRJbXBsX0gKKyNpZm5kZWYgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnRfSAorI2RlZmluZSBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAi
U1ZHVGVzdHMuaCIKQEAgLTU4LDEwICs1OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKSAKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNM
QVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBT
VkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVu
Z3RoPiwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+
LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkKKyAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xl
bmd0aCwgV2lkdGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQs
IGhlaWdodCkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdIZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0hlbHBlci5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
SGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgor
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApA
QCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZH
X1NVUFBPUlQKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKIApAQCAtMzYsNDcgKzM3LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1mbG9hdCBTVkdIZWxw
ZXI6OlBlcmNlbnRhZ2VPZlZpZXdwb3J0KGZsb2F0IHZhbHVlLCBjb25zdCBTVkdFbGVtZW50KiB2
aWV3cG9ydEVsZW1lbnQsIExlbmd0aE1vZGUgbW9kZSkKLXsKLSAgICBmbG9hdCB3aWR0aCA9IDAs
IGhlaWdodCA9IDA7Ci0gICAgaWYgKCF2aWV3cG9ydEVsZW1lbnQpCi0gICAgICAgIHJldHVybiAw
LjA7Ci0gCi0gICAgaWYgKHZpZXdwb3J0RWxlbWVudC0+aXNTVkcoKSkgewotICAgICAgICBjb25z
dCBTVkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxjb25zdCBTVkdTVkdFbGVtZW50Kj4o
dmlld3BvcnRFbGVtZW50KTsKLSAgICAgICAgaWYgKHN2Zy0+aGFzQXR0cmlidXRlKFNWR05hbWVz
Ojp2aWV3Qm94QXR0cikpIHsKLSAgICAgICAgICAgIHdpZHRoID0gc3ZnLT52aWV3Qm94KCkud2lk
dGgoKTsKLSAgICAgICAgICAgIGhlaWdodCA9IHN2Zy0+dmlld0JveCgpLmhlaWdodCgpOwotICAg
ICAgICB9IGVsc2UgaWYgKHN2Zy0+d2lkdGgoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNW
R19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgICAgICAgICBzdmctPmhlaWdodCgp
LT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSkgewot
ICAgICAgICAgICAgLy8gVE9ETzogU2hvdWxkbid0IHcvaCBiZSBtdWx0aXBsaWVkIHdpdGggdGhl
IHBlcmNlbnRhZ2UgdmFsdWVzPyEKLSAgICAgICAgICAgIC8vIEFGQUlLLCB0aGlzIGFzc3VtZXMg
d2lkdGggJiBoZWlnaHQgPT0gMTAwJSwgUm9iPz8KLSAgICAgICAgICAgIERvY3VtZW50ICpkb2Mg
PSBzdmctPmRvY3VtZW50KCk7Ci0gICAgICAgICAgICBpZiAoZG9jLT5kb2N1bWVudEVsZW1lbnQo
KSA9PSBzdmcpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGFzayB0aGUgY2FudmFz
IGZvciB0aGUgZnVsbCAiY2FudmFzIHNpemUiLi4uCi0gICAgICAgICAgICAgICAgUmVuZGVyVmll
dyogdmlldyA9IHN0YXRpY19jYXN0PFJlbmRlclZpZXcgKj4oZG9jLT5yZW5kZXJlcigpKTsKLSAg
ICAgICAgICAgICAgICBpZiAodmlldykgewotICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHZp
ZXctPmZyYW1lVmlldygpLT52aXNpYmxlV2lkdGgoKTsgLy8gVE9ETzogcmVjaGVjayEKLSAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0ID0gdmlldy0+ZnJhbWVWaWV3KCktPnZpc2libGVIZWlnaHQo
KTsgLy8gVE9ETzogcmVjaGVjayEKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB3aWR0aCA9IHN2Zy0+d2lkdGgoKS0+dmFsdWUo
KTsKLSAgICAgICAgICAgIGhlaWdodCA9IHN2Zy0+aGVpZ2h0KCktPnZhbHVlKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAobW9kZSA9PSBMTV9XSURUSCkKLSAgICAgICAgcmV0dXJuIHZh
bHVlICogd2lkdGg7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBMTV9IRUlHSFQpCi0gICAgICAgIHJl
dHVybiB2YWx1ZSAqIGhlaWdodDsKLSAgICBlbHNlIGlmIChtb2RlID09IExNX09USEVSKQotICAg
ICAgICByZXR1cm4gdmFsdWUgKiBzcXJ0KHBvdyhkb3VibGUod2lkdGgpLCAyKSArIHBvdyhkb3Vi
bGUoaGVpZ2h0KSwgMikpIC8gc3FydCgyLjApOwotICAgIAotICAgIHJldHVybiAwLjA7Ci19Ci0K
LXZvaWQgU1ZHSGVscGVyOjpwYXJzZVNlcGFyYXRlZExpc3QoU1ZHU3RyaW5nTGlzdCAqbGlzdCwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIpCit2b2lkIFNWR0hlbHBlcjo6cGFy
c2VTZXBhcmF0ZWRMaXN0KFNWR1N0cmluZ0xpc3QqIGxpc3QsIGNvbnN0IFN0cmluZyYgZGF0YSwg
VUNoYXIgZGVsaW1pdGVyKQogewogICAgIC8vIFRPRE8gOiBtb3JlIGVycm9yIGNoZWNraW5nL3Jl
cG9ydGluZwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtOTEsNiArNTIsNiBAQCB2b2lk
IFNWR0hlbHBlcjo6cGFyc2VTZXBhcmF0ZWRMaXN0KFNWR1N0CiAKIH0KIAotLy8gdmltOnRzPTQ6
bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0hlbHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0hlbHBlci5oCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0hlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIEtTVkdf
U1ZHSGVscGVyX0gKICNpZmRlZiBTVkdfU1VQUE9SVAogCisjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzIsMTcgKzMzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNWR1N0cmluZ0xp
c3Q7CiAKICAgICAvLyBLU1ZHIGV4dGVuc2lvbgotICAgIGVudW0gTGVuZ3RoTW9kZSB7Ci0gICAg
ICAgIExNX1VOS05PV04gPSAwLAotICAgICAgICBMTV9XSURUSCwKLSAgICAgICAgTE1fSEVJR0hU
LAotICAgICAgICBMTV9PVEhFUgotICAgIH07Ci0KICAgICBjbGFzcyBTVkdIZWxwZXIgewogICAg
IHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGZsb2F0IFBlcmNlbnRhZ2VPZlZpZXdwb3J0KGZsb2F0
IHZhbHVlLCBjb25zdCBTVkdFbGVtZW50ICp2aWV3cG9ydEVsZW1lbnQsIExlbmd0aE1vZGUgbW9k
ZSk7Ci0KICAgICAgICAgc3RhdGljIHZvaWQgcGFyc2VTZXBhcmF0ZWRMaXN0KFNWR1N0cmluZ0xp
c3QgKmxpc3QsIGNvbnN0IFN0cmluZyAmZGF0YSwgVUNoYXIgZGVsaW1pdGVyID0gJywnKTsKICAg
ICB9OwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAg
ICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LSAgICAgICAgICAgICAgICAgIDIwMDYgICAgICAgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZA
a2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDYgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFu
b3ZAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAog
CkBAIC0yMiw2ICsyMiw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBT
VkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgogCkBAIC00NSwxMCArNDYs
MTAgQEAgU1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVsZW1lbnQoY29uc3QgUQogICAgICwgU1ZH
TGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwg
U1ZHVVJJUmVmZXJlbmNlKCkKLSAgICAsIG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRI
LCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9I
RUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0
aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNW
R0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkK
KyAgICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCkKICAgICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhuZXcgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyh0aGlzKSkKICAgICAsIG1faW1hZ2VMb2FkZXIodGhpcykKIHsK
QEAgLTU4LDI2ICs1OSwyNiBAQCBTVkdJbWFnZUVsZW1lbnQ6On5TVkdJbWFnZUVsZW1lbnQoKQog
ewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNW
R0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1l
KCksIG1feC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5s
b2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
SW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBT
VkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgs
IGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgp
LCBtX2hlaWdodC5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdl
RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRy
LmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFn
ZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0
ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1h
Z2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05h
bWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhl
aWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQp
CiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8qLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlv
LCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBTVkdOYW1lczo6cHJl
c2VydmVBc3BlY3RSYXRpb0F0dHIubG9jYWxOYW1lKCksIG1fcHJlc2VydmVBc3BlY3RSYXRpby5n
ZXQoKSkKIAogdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSAqYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0
ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAg
ICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0
WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNl
VmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUo
U1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikKICAgICAg
ICAgcHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1ZSgpLT5wYXJzZVByZXNlcnZlQXNwZWN0UmF0
aW8odmFsdWUuaW1wbCgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OndpZHRoQXR0cikgewotICAgICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5n
KHZhbHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwgQ1NTX1BS
T1BfV0lEVEgsIHZhbHVlKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikgewotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICAgICAgYWRkQ1NTUHJvcGVydHkoYXR0ciwg
Q1NTX1BST1BfSEVJR0hULCB2YWx1ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKFNWR1Rl
c3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKQEAgLTExNCw2ICsxMTUsNiBAQCB2b2lk
IFNWR0ltYWdlRWxlbWVudDo6YXR0YWNoKCkKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdJbWFnZUVsZW1lbnRJbXBsX0gKLSNkZWZpbmUg
S1NWR19TVkdJbWFnZUVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHSW1hZ2VFbGVtZW50X0gKKyNk
ZWZpbmUgU1ZHSW1hZ2VFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRl
ICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC02NiwxMCArNjcsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJB
VElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkgCiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBI
cmVmLCBocmVmKQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJ
bWFnZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYLCB4KQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5n
dGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEhlaWdodCwg
aGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VF
bGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgs
IFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVs
ZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZH
TGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFJlZlB0cjxT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPiwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3Bl
Y3RSYXRpbykKIAogICAgICAgICBTVkdJbWFnZUxvYWRlciBtX2ltYWdlTG9hZGVyOwpJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdMZW5ndGguY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0xlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgS0RFIHByb2plY3QKQEAgLTEwLDcgKzEwLDcgQEAKICAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAKICAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbiBvZgogICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAKQEAgLTIxLDgwICsyMSwyMDcgQEAK
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVk
ZSAiU1ZHTGVuZ3RoLmgiCiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVy
UGF0aC5oIgotI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdMZW5ndGguaCIK
KyNpbmNsdWRlICJEZXByZWNhdGVkU3RyaW5nLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1
ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKKyNpbmNsdWRlICJT
VkdTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAic3ZncGF0aHBhcnNlci5oIgotI2luY2x1ZGUg
PG1hdGguaD4KIAotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotLy8ga2VlcCB0cmFjayBvZiB0ZXh0
dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSB1bml0IHR5cGUKLXN0YXRpYyBjb25zdCBjaGFyKiBVbml0
VGV4dFtdID0KLXsKLSAgICAiIiwgIiIsCi0gICAgIiUiLCAiZW0iLAotICAgICJleCIsICJweCIs
Ci0gICAgImNtIiwgIm1tIiwKLSAgICAiaW4iLCAicHQiLAotICAgICJwYyIKLX07CisjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdMZW5ndGg6
OlNWR0xlbmd0aChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0LCBMZW5ndGhNb2RlIG1v
ZGUsIGNvbnN0IFNWR0VsZW1lbnQqIHZpZXdwb3J0KQotICAgIDogU2hhcmVkPFNWR0xlbmd0aD4o
KQotICAgICwgbV92YWx1ZSgwKQotICAgICwgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMoMCkKLSAg
ICAsIG1fbW9kZShtb2RlKQotICAgICwgbV9iYm94UmVsYXRpdmUoZmFsc2UpCi0gICAgLCBtX3Vu
aXRUeXBlKFNWR19MRU5HVEhUWVBFX1VOS05PV04pCi0gICAgLCBtX3JlcXVpcmVzTGF5b3V0KGZh
bHNlKQotICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3ZpZXdwb3J0RWxlbWVudCh2
aWV3cG9ydCkKKy8vIEhlbHBlciBmdW5jdGlvbnMKK2lubGluZSB1bnNpZ25lZCBpbnQgc3RvcmVV
bml0KFNWR0xlbmd0aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlwZSB0eXBlKQogeworICAgIHJldHVy
biAobW9kZSA8PCA0KSB8IHR5cGU7CiB9CiAKLVNWR0xlbmd0aDo6flNWR0xlbmd0aCgpCitpbmxp
bmUgU1ZHTGVuZ3RoTW9kZSBleHRyYWN0TW9kZSh1bnNpZ25lZCBpbnQgdW5pdCkKIHsKKyAgICB1
bnNpZ25lZCBpbnQgbW9kZSA9IHVuaXQgPj4gNDsgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFNWR0xlbmd0aE1vZGU+KG1vZGUpOworfQorCitpbmxpbmUgU1ZHTGVuZ3RoVHlwZSBleHRyYWN0
VHlwZSh1bnNpZ25lZCBpbnQgdW5pdCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgbW9kZSA9IHVuaXQg
Pj4gNDsKKyAgICB1bnNpZ25lZCBpbnQgdHlwZSA9IHVuaXQgXiAobW9kZSA8PCA0KTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoVHlwZT4odHlwZSk7Cit9CisKK2lubGluZSBTdHJp
bmcgbGVuZ3RoVHlwZVRvU3RyaW5nKFNWR0xlbmd0aFR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIExlbmd0aFR5cGVVbmtub3duOgorICAgIGNhc2UgTGVuZ3RoVHlw
ZU51bWJlcjoKKyAgICAgICAgcmV0dXJuICIiOyAgICAKKyAgICBjYXNlIExlbmd0aFR5cGVQZXJj
ZW50YWdlOgorICAgICAgICByZXR1cm4gIiUiOworICAgIGNhc2UgTGVuZ3RoVHlwZUVNUzoKKyAg
ICAgICAgcmV0dXJuICJlbSI7CisgICAgY2FzZSBMZW5ndGhUeXBlRVhTOgorICAgICAgICByZXR1
cm4gImV4IjsKKyAgICBjYXNlIExlbmd0aFR5cGVQWDoKKyAgICAgICAgcmV0dXJuICJweCI7Cisg
ICAgY2FzZSBMZW5ndGhUeXBlQ006CisgICAgICAgIHJldHVybiAiY20iOworICAgIGNhc2UgTGVu
Z3RoVHlwZU1NOgorICAgICAgICByZXR1cm4gIm1tIjsKKyAgICBjYXNlIExlbmd0aFR5cGVJTjoK
KyAgICAgICAgcmV0dXJuICJpbiI7CisgICAgY2FzZSBMZW5ndGhUeXBlUFQ6CisgICAgICAgIHJl
dHVybiAicHQiOworICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgorICAgICAgICByZXR1cm4gInBjIjsK
KyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVNWR0xlbmd0aDo6U1ZHTGVuZ3Ro
VHlwZSBTVkdMZW5ndGg6OnVuaXRUeXBlKCkgY29uc3QKK2lubGluZSBTVkdMZW5ndGhUeXBlIHN0
cmluZ1RvTGVuZ3RoVHlwZShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICByZXR1cm4gbV91
bml0VHlwZTsKKyAgICBpZiAoc3RyaW5nLmVuZHNXaXRoKCIlIikpCisgICAgICAgIHJldHVybiBM
ZW5ndGhUeXBlUGVyY2VudGFnZTsKKyAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dpdGgoImVtIikp
CisgICAgICAgIHJldHVybiBMZW5ndGhUeXBlRU1TOworICAgIGVsc2UgaWYgKHN0cmluZy5lbmRz
V2l0aCgiZXgiKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVFWFM7CisgICAgZWxzZSBpZiAo
c3RyaW5nLmVuZHNXaXRoKCJweCIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZVBYOworICAg
IGVsc2UgaWYgKHN0cmluZy5lbmRzV2l0aCgiY20iKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5
cGVDTTsKKyAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dpdGgoIm1tIikpCisgICAgICAgIHJldHVy
biBMZW5ndGhUeXBlTU07CisgICAgZWxzZSBpZiAoc3RyaW5nLmVuZHNXaXRoKCJpbiIpKQorICAg
ICAgICByZXR1cm4gTGVuZ3RoVHlwZUlOOworICAgIGVsc2UgaWYgKHN0cmluZy5lbmRzV2l0aCgi
cHQiKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVQVDsKKyAgICBlbHNlIGlmIChzdHJpbmcu
ZW5kc1dpdGgoInBjIikpCisgICAgICAgIHJldHVybiBMZW5ndGhUeXBlUEM7CisgICAgZWxzZSBp
ZiAoIXN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBMZW5ndGhUeXBlTnVtYmVyOwor
CisgICAgcmV0dXJuIExlbmd0aFR5cGVVbmtub3duOworfQorCitTVkdMZW5ndGg6OlNWR0xlbmd0
aChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0LCBTVkdMZW5ndGhNb2RlIG1vZGUsIGNv
bnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZykKKyAgICA6IG1fdmFsdWVJblNwZWNpZmllZFVuaXRz
KDAuMCkKKyAgICAsIG1fdW5pdChzdG9yZVVuaXQobW9kZSwgTGVuZ3RoVHlwZU51bWJlcikpCisg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKK3sKKyAgICBzZXRWYWx1ZUFzU3RyaW5nKHZhbHVlQXNT
dHJpbmcpOwogfQogCi12b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWUoZmxvYXQgdmFsdWUpCitTVkdM
ZW5ndGhUeXBlIFNWR0xlbmd0aDo6dW5pdFR5cGUoKSBjb25zdAogewotICAgIG1fdmFsdWUgPSB2
YWx1ZTsKLSAgICB1cGRhdGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICByZXR1cm4gZXh0
cmFjdFR5cGUobV91bml0KTsKIH0KIAogZmxvYXQgU1ZHTGVuZ3RoOjp2YWx1ZSgpIGNvbnN0CiB7
Ci0gICAgaWYgKG1fcmVxdWlyZXNMYXlvdXQpCi0gICAgICAgIGNvbnN0X2Nhc3Q8U1ZHTGVuZ3Ro
Kj4odGhpcyktPnVwZGF0ZVZhbHVlKGZhbHNlKTsKKyAgICBTVkdMZW5ndGhUeXBlIHR5cGUgPSBl
eHRyYWN0VHlwZShtX3VuaXQpOworICAgIGlmICh0eXBlID09IExlbmd0aFR5cGVVbmtub3duKQor
ICAgICAgICByZXR1cm4gMC4wOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMZW5n
dGhUeXBlTnVtYmVyOgorICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7Cisg
ICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aDo6
UGVyY2VudGFnZU9mVmlld3BvcnQobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAxMDAuMCwgbV9j
b250ZXh0LCBleHRyYWN0TW9kZShtX3VuaXQpKTsKKyAgICBjYXNlIExlbmd0aFR5cGVFTVM6Cisg
ICAgY2FzZSBMZW5ndGhUeXBlRVhTOgorICAgIHsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxl
ID0gMDsKKyAgICAgICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPnJlbmRlcmVyKCkpCisg
ICAgICAgICAgICBzdHlsZSA9IG1fY29udGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKKyAgICAg
ICAgaWYgKHN0eWxlKSB7CisgICAgICAgICAgICBmbG9hdCB1c2VTaXplID0gc3R5bGUtPmZvbnRT
aXplKCk7CisgICAgICAgICAgICBBU1NFUlQodXNlU2l6ZSA+IDApOworICAgICAgICAgICAgaWYg
KHR5cGUgPT0gTGVuZ3RoVHlwZUVNUykKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgKiB1c2VTaXplOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAgICAgZmxvYXQgeEhlaWdodCA9IHN0eWxlLT5mb250KCkueEhlaWdodCgpOworICAgICAgICAg
ICAgICAgIC8vIFVzZSBvZiBjZWlsIGFsbG93cyBhIHBpeGVsIG1hdGNoIHRvIHRoZSBXM0NzIGV4
cGVjdGVkIG91dHB1dCBvZiBjb29yZHMtdW5pdHMtMDMtYi5zdmcKKyAgICAgICAgICAgICAgICAv
LyBpZiB0aGlzIGNhdXNlcyBwcm9ibGVtcyBpbiByZWFsIHdvcmxkIGNhc2VzIG1heWJlIGl0IHdv
dWxkIGJlIGJlc3QgdG8gcmVtb3ZlIHRoaXMKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMgKiBjZWlsKHhIZWlnaHQpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIHJldHVybiAwLjA7CisgICAgfQorICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgor
ICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgY2FzZSBMZW5ndGhU
eXBlQ006CisgICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDIuNTQgKiBk
cGkoKTsKKyAgICBjYXNlIExlbmd0aFR5cGVNTToKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNw
ZWNpZmllZFVuaXRzIC8gMjUuNCAqIGRwaSgpOworICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgorICAg
ICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgKiBkcGkoKTsKKyAgICBjYXNlIExl
bmd0aFR5cGVQVDoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gNzIu
MCAqIGRwaSgpOworICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgorICAgICAgICByZXR1cm4gbV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMgLyA2LjAgKiBkcGkoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBi
cmVhazsKKyAgICB9CiAKLSAgICBpZiAobV91bml0VHlwZSAhPSBTVkdfTEVOR1RIVFlQRV9QRVJD
RU5UQUdFKQotICAgICAgICByZXR1cm4gbV92YWx1ZTsKKyAgICBBU1NFUlQoZmFsc2UpOworICAg
IHJldHVybiAwLjA7Cit9CiAKLSAgICBmbG9hdCB2YWx1ZSA9IG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzIC8gMTAwLjA7Ci0gICAgaWYgKG1fYmJveFJlbGF0aXZlKQotICAgICAgICByZXR1cm4gdmFs
dWU7Cit2b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWUoZmxvYXQgdmFsdWUpCit7CisgICAgU1ZHTGVu
Z3RoVHlwZSB0eXBlID0gZXh0cmFjdFR5cGUobV91bml0KTsKKyAgICBBU1NFUlQodHlwZSAhPSBM
ZW5ndGhUeXBlVW5rbm93bik7CiAKLSAgICAvLyBVc2UgdGhlIG1hbnVhbCBvdmVycmlkZSAibV92
aWV3cG9ydEVsZW1lbnQiIHdoZW4gdGhlcmUgaXMgbm8gY29udGV4dCBlbGVtZW50IG9mZiBvZiB3
aGljaCB0byBlc3RhYmxpc2ggdGhlIHZpZXdwb3J0LgotICAgIHJldHVybiBTVkdIZWxwZXI6OlBl
cmNlbnRhZ2VPZlZpZXdwb3J0KHZhbHVlLCBtX2NvbnRleHQgPyBtX2NvbnRleHQtPnZpZXdwb3J0
RWxlbWVudCgpIDogbV92aWV3cG9ydEVsZW1lbnQsIHN0YXRpY19jYXN0PExlbmd0aE1vZGU+KG1f
bW9kZSkpOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoK
KyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToKKyAgICBjYXNlIExlbmd0aFR5cGVFTVM6
CisgICAgY2FzZSBMZW5ndGhUeXBlRVhTOgorICAgICAgICBBU1NFUlQoZmFsc2UpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVQWDoKKyAgICAgICAgbV92YWx1ZUluU3BlY2lm
aWVkVW5pdHMgPSB2YWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlQ006
CisgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWUgKiAyLjU0IC8gZHBpKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgICAgICBtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlICogMjUuNCAvIGRwaSgpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMg
PSB2YWx1ZSAvIGRwaSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVQVDoK
KyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZSAqIDcyLjAgLyBkcGkoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlUEM6CisgICAgICAgIG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzID0gdmFsdWUgLyA2LjAgKiBkcGkoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKG1fY29udGV4dCAm
JiBtX2NvbnRleHQtPm93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgIT0gbV9jb250
ZXh0KQorICAgICAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwogfQogCi12
b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKGZsb2F0IHZhbHVlSW5TcGVj
aWZpZWRVbml0cykKK3ZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMoZmxv
YXQgdmFsdWUpCiB7Ci0gICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZUluU3BlY2lm
aWVkVW5pdHM7Ci0gICAgdXBkYXRlVmFsdWUoKTsKKyAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
cyA9IHZhbHVlOworCisgICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPm93bmVyRG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgIT0gbV9jb250ZXh0KSAgICAKKyAgICAgICAgbV9jb250
ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKIH0KIAogZmxvYXQgU1ZHTGVuZ3RoOjp2YWx1
ZUluU3BlY2lmaWVkVW5pdHMoKSBjb25zdApAQCAtMTA3LDcxICsyMzQsNTEgQEAgdm9pZCBTVkdM
ZW5ndGg6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgUwogICAgIGlmIChzLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRGVwcmVjYXRlZFN0cmluZyB2YWx1ZUFzUVN0cmluZyA9IHMu
ZGVwcmVjYXRlZFN0cmluZygpOwotCiAgICAgZG91YmxlIGNvbnZlcnRlZE51bWJlciA9IDA7Ci0g
ICAgY29uc3QgY2hhciogc3RhcnQgPSB2YWx1ZUFzUVN0cmluZy5sYXRpbjEoKTsKLSAgICBjb25z
dCBjaGFyKiBlbmQgPSBwYXJzZUNvb3JkKHN0YXJ0LCBjb252ZXJ0ZWROdW1iZXIpOworICAgIERl
cHJlY2F0ZWRTdHJpbmcgZGVwU3RyaW5nID0gcy5kZXByZWNhdGVkU3RyaW5nKCk7CisgICAgY29u
c3QgY2hhciogc3RhcnQgPSBkZXBTdHJpbmcubGF0aW4xKCk7CisgICAgcGFyc2VDb29yZChzdGFy
dCwgY29udmVydGVkTnVtYmVyKTsKKyAgICAKKyAgICBtX3VuaXQgPSBzdG9yZVVuaXQoZXh0cmFj
dE1vZGUobV91bml0KSwgc3RyaW5nVG9MZW5ndGhUeXBlKHMpKTsKICAgICBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0cyA9IGNvbnZlcnRlZE51bWJlcjsKLQotICAgIHVuc2lnbmVkIGludCBkaWZmID0g
ZW5kIC0gc3RhcnQ7Ci0gICAgaWYgKGRpZmYgPCB2YWx1ZUFzUVN0cmluZy5sZW5ndGgoKSkgewot
ICAgICAgICBpZiAocy5lbmRzV2l0aChVbml0VGV4dFtTVkdfTEVOR1RIVFlQRV9QWF0pKQotICAg
ICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX1BYOwotICAgICAgICBlbHNlIGlm
IChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX0NNXSkpCi0gICAgICAgICAgICBt
X3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfQ007Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dp
dGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfUENdKSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUg
PSBTVkdfTEVOR1RIVFlQRV9QQzsKLSAgICAgICAgZWxzZSBpZiAocy5lbmRzV2l0aChVbml0VGV4
dFtTVkdfTEVOR1RIVFlQRV9NTV0pKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5H
VEhUWVBFX01NOwotICAgICAgICBlbHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5H
VEhUWVBFX0lOXSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfSU47
Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfUFRd
KSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RIVFlQRV9QVDsKLSAgICAgICAg
IGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRV0p
KQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0U7Ci0g
ICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfRU1TXSkp
Ci0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfRU1TOwotICAgICAgICBl
bHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX0VYU10pKQotICAgICAg
ICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX0VYUzsKLSAgICAgICAgZWxzZSBpZiAo
cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfTlVN
QkVSOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZ
UEVfVU5LTk9XTjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xF
TkdUSFRZUEVfUFg7Ci0KLSAgICB1cGRhdGVWYWx1ZSgpOwogfQogCiBTdHJpbmcgU1ZHTGVuZ3Ro
Ojp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgVW5pdFRleHRbbV91bml0VHlwZV07CisgICAgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArIGxlbmd0aFR5cGVUb1N0
cmluZyhleHRyYWN0VHlwZShtX3VuaXQpKTsKIH0KIAotdm9pZCBTVkdMZW5ndGg6Om5ld1ZhbHVl
U3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIGZsb2F0IHZhbHVlSW5TcGVj
aWZpZWRVbml0cykKK3ZvaWQgU1ZHTGVuZ3RoOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2ln
bmVkIHNob3J0IHR5cGUsIGZsb2F0IHZhbHVlKQogewotICAgIG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzID0gdmFsdWVJblNwZWNpZmllZFVuaXRzOwotICAgIG1fdW5pdFR5cGUgPSAoU1ZHTGVuZ3Ro
VHlwZSl1bml0VHlwZTsKLSAgICB1cGRhdGVWYWx1ZSgpOworICAgIEFTU0VSVCh0eXBlIDw9IExl
bmd0aFR5cGVQQyk7CisKKyAgICBtX3VuaXQgPSBzdG9yZVVuaXQoZXh0cmFjdE1vZGUobV91bml0
KSwgKFNWR0xlbmd0aFR5cGUpIHR5cGUpOworICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0g
dmFsdWU7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNp
Z25lZCBzaG9ydCB1bml0VHlwZSkKK3ZvaWQgU1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRV
bml0cyh1bnNpZ25lZCBzaG9ydCB0eXBlKQogewotICAgIG1fdW5pdFR5cGUgPSAoU1ZHTGVuZ3Ro
VHlwZSl1bml0VHlwZTsKLSAgICB1cGRhdGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICBB
U1NFUlQodHlwZSA8PSBMZW5ndGhUeXBlUEMpOworCisgICAgZmxvYXQgdmFsdWVJblVzZXJVbml0
cyA9IHZhbHVlKCk7CisgICAgbV91bml0ID0gc3RvcmVVbml0KGV4dHJhY3RNb2RlKG1fdW5pdCks
IChTVkdMZW5ndGhUeXBlKSB0eXBlKTsKKyAgICBzZXRWYWx1ZSh2YWx1ZUluVXNlclVuaXRzKTsK
K30KKworYm9vbCBTVkdMZW5ndGg6OmlzRnJhY3Rpb24oY29uc3QgU1ZHTGVuZ3RoJiBsZW5ndGgp
Cit7CisgICAgcmV0dXJuIChsZW5ndGgudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlTnVtYmVyICYm
IGxlbmd0aC52YWx1ZSgpID49IDAgJiYgbGVuZ3RoLnZhbHVlKCkgPD0gMSk7CiB9CiAKIGRvdWJs
ZSBTVkdMZW5ndGg6OmRwaSgpIGNvbnN0CiB7CiAgICAgLyogRklYTUU6IERQSSBkZXRlY3Rpb24K
ICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5vd25lckRvYygpKSB7Ci0gICAgICAgIGlmICht
b2RlID09IExNX1dJRFRIKQorICAgICAgICBpZiAobW9kZSA9PSBMZW5ndGhNb2RlV2lkdGgpCiAg
ICAgICAgICAgICByZXR1cm4gMjUuNCAqIGNvbnRleHQtPm93bmVyRG9jKCktPnNjcmVlblBpeGVs
c1Blck1pbGxpbWV0ZXJYKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTE1fSEVJR0hUKQor
ICAgICAgICBlbHNlIGlmIChtb2RlID09IExlbmd0aE1vZGVIZWlnaHQpCiAgICAgICAgICAgICBy
ZXR1cm4gMjUuNCAqIGNvbnRleHQtPm93bmVyRG9jKCktPnNjcmVlblBpeGVsc1Blck1pbGxpbWV0
ZXJZKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTE1fT1RIRVIpCisgICAgICAgIGVsc2Ug
aWYgKG1vZGUgPT0gTGVuZ3RoTW9kZU90aGVyKQogICAgICAgICAgICAgcmV0dXJuIDI1LjQgKiBj
b250ZXh0LT5vd25lckRvYygpLT5zY3JlZW5QaXhlbHNQZXJNaWxsaW1ldGVyWCgpOwogICAgIH0K
ICAgICAqLwpAQCAtMTc5LDEyNiArMjg2LDQ0IEBAIGRvdWJsZSBTVkdMZW5ndGg6OmRwaSgpIGNv
bnN0CiAgICAgcmV0dXJuIDkwLjA7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjp1cGRhdGVWYWx1ZShi
b29sIG5vdGlmeSkKK2Zsb2F0IFNWR0xlbmd0aDo6UGVyY2VudGFnZU9mVmlld3BvcnQoZmxvYXQg
dmFsdWUsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQsIFNWR0xlbmd0aE1vZGUgbW9k
ZSkKIHsKLSAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RI
VFlQRV9QWDoKLSAgICAgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX0NNOgotICAg
ICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDIuNTQpICogZHBp
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9NTToK
LSAgICAgICAgICAgIG1fdmFsdWUgPSAobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAyNS40KSAq
IGRwaSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVf
SU46Ci0gICAgICAgICAgICBtX3ZhbHVlID0gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgKiBkcGko
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1BUOgot
ICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDcyLjApICog
ZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9Q
QzoKLSAgICAgICAgICAgIG1fdmFsdWUgPSAobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyA2LjAp
ICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQ
RV9FTVM6Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfRVhTOiB7Ci0gICAgICAgICAgICBS
ZW5kZXJTdHlsZSogc3R5bGUgPSAwOwotICAgICAgICAgICAgaWYgKG1fY29udGV4dCAmJiBtX2Nv
bnRleHQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgc3R5bGUgPSBtX2NvbnRleHQtPnJl
bmRlcmVyKCktPnN0eWxlKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX3ZpZXdwb3J0RWxlbWVu
dCAmJiBtX3ZpZXdwb3J0RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICBzdHls
ZSA9IG1fdmlld3BvcnRFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpOwotICAgICAgICAgICAg
aWYgKHN0eWxlKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgdXNlU2l6ZSA9IHN0eWxlLT5mb250
U2l6ZSgpOwotICAgICAgICAgICAgICAgIEFTU0VSVCh1c2VTaXplID4gMCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fdW5pdFR5cGUgPT0gU1ZHX0xFTkdUSFRZUEVfRU1TKQotICAgICAgICAgICAg
ICAgICAgICBtX3ZhbHVlID0gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgKiB1c2VTaXplOwotICAg
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmbG9hdCB4SGVpZ2h0ID0g
c3R5bGUtPmZvbnQoKS54SGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFVzZSBvZiBj
ZWlsIGFsbG93cyBhIHBpeGVsIG1hdGNoIHRvIHRoZSBXM0NzIGV4cGVjdGVkIG91dHB1dCBvZiBj
b29yZHMtdW5pdHMtMDMtYi5zdmcKLSAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyBjYXVz
ZXMgcHJvYmxlbXMgaW4gcmVhbCB3b3JsZCBjYXNlcyBtYXliZSBpdCB3b3VsZCBiZSBiZXN0IHRv
IHJlbW92ZSB0aGlzCi0gICAgICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0cyAqIGNlaWwoeEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIG1fcmVxdWlyZXNMYXlvdXQgPSBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgbV9yZXF1aXJlc0xheW91dCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICBmbG9hdCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CisgICAg
U1ZHRWxlbWVudCogdmlld3BvcnRFbGVtZW50ID0gY29udGV4dC0+dmlld3BvcnRFbGVtZW50KCk7
CisKKyAgICBEb2N1bWVudCogZG9jID0gY29udGV4dC0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoZG9j
LT5kb2N1bWVudEVsZW1lbnQoKSA9PSBjb250ZXh0KSB7CisgICAgICAgIC8vIFdlIGhhdmUgdG8g
YXNrIHRoZSBjYW52YXMgZm9yIHRoZSBmdWxsICJjYW52YXMgc2l6ZSIuLi4KKyAgICAgICAgUmVu
ZGVyVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFJlbmRlclZpZXcgKj4oZG9jLT5yZW5kZXJlcigp
KTsKKyAgICAgICAgaWYgKHZpZXcpIHsKKyAgICAgICAgICAgIHdpZHRoID0gdmlldy0+ZnJhbWVW
aWV3KCktPnZpc2libGVXaWR0aCgpOyAvLyBUT0RPOiByZWNoZWNrIQorICAgICAgICAgICAgaGVp
Z2h0ID0gdmlldy0+ZnJhbWVWaWV3KCktPnZpc2libGVIZWlnaHQoKTsgLy8gVE9ETzogcmVjaGVj
ayEKKyAgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCF2aWV3cG9ydEVsZW1lbnQpCisgICAgICAg
IHJldHVybiAwLjA7CisgICAgZWxzZSBpZiAodmlld3BvcnRFbGVtZW50LT5pc1NWRygpKSB7Cisg
ICAgICAgIGNvbnN0IFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PGNvbnN0IFNWR1NW
R0VsZW1lbnQqPih2aWV3cG9ydEVsZW1lbnQpOworICAgICAgICBpZiAoc3ZnLT5oYXNBdHRyaWJ1
dGUoU1ZHTmFtZXM6OnZpZXdCb3hBdHRyKSkgeworICAgICAgICAgICAgd2lkdGggPSBzdmctPnZp
ZXdCb3goKS53aWR0aCgpOworICAgICAgICAgICAgaGVpZ2h0ID0gc3ZnLT52aWV3Qm94KCkuaGVp
Z2h0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3aWR0aCA9IHN2Zy0+d2lkdGgo
KS52YWx1ZSgpOworICAgICAgICAgICAgaGVpZ2h0ID0gc3ZnLT5oZWlnaHQoKS52YWx1ZSgpOwog
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTjoKLSAgICAgICAg
Y2FzZSBTVkdfTEVOR1RIVFlQRV9OVU1CRVI6Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVf
UEVSQ0VOVEFHRToKLSAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpZiAobm90aWZ5ICYm
IG1fY29udGV4dCkKLSAgICAgICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsK
LX0KIAotYm9vbCBTVkdMZW5ndGg6OnVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRVbml0cyhib29sIG5v
dGlmeSkKLXsKLSAgICBpZiAobV91bml0VHlwZSA9PSBTVkdfTEVOR1RIVFlQRV9VTktOT1dOKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1vZGUgPT0gTGVuZ3RoTW9kZVdpZHRoKQor
ICAgICAgICByZXR1cm4gdmFsdWUgKiB3aWR0aDsKKyAgICBlbHNlIGlmIChtb2RlID09IExlbmd0
aE1vZGVIZWlnaHQpCisgICAgICAgIHJldHVybiB2YWx1ZSAqIGhlaWdodDsKKyAgICBlbHNlIGlm
IChtb2RlID09IExlbmd0aE1vZGVPdGhlcikKKyAgICAgICAgcmV0dXJuIHZhbHVlICogc3FydChw
b3coZG91YmxlKHdpZHRoKSwgMikgKyBwb3coZG91YmxlKGhlaWdodCksIDIpKSAvIHNxcnQoMi4w
KTsKIAotICAgIHN3aXRjaCAobV91bml0VHlwZSkgewotICAgICAgICBjYXNlIFNWR19MRU5HVEhU
WVBFX1BFUkNFTlRBR0U6Ci0gICAgICAgICAgICAvL2tkRXJyb3IoKSA8PCAidXBkYXRlVmFsdWVJ
blNwZWNpZmllZFVuaXRzKCkgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSAtIFVOU1VQUE9SVEVE
ISBQbGVhc2UgcmVwb3J0ISIgPDwgZW5kbDsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9FTVM6Ci0gICAgICAgICAgICAvL2tkRXJyb3IoKSA8
PCAidXBkYXRlVmFsdWVJblNwZWNpZmllZFVuaXRzKCkgU1ZHX0xFTkdUSFRZUEVfRU1TIC0gVU5T
VVBQT1JURUQhIFBsZWFzZSByZXBvcnQhIiA8PCBlbmRsOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX0VYUzoKLSAgICAgICAgICAgIC8va2RF
cnJvcigpIDw8ICJ1cGRhdGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBTVkdfTEVOR1RIVFlQRV9F
WFMgLSBVTlNVUFBPUlRFRCEgUGxlYXNlIHJlcG9ydCEiIDw8IGVuZGw7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfUFg6Ci0gICAgICAgICAg
ICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IG1fdmFsdWU7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9DTToKLSAgICAgICAgICAgIG1fdmFsdWVJblNw
ZWNpZmllZFVuaXRzID0gbV92YWx1ZSAvIGRwaSgpICogMi41NDsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX01NOgotICAgICAgICAgICAgbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgPSBtX3ZhbHVlIC8gZHBpKCkgKiAyNS40OwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfSU46Ci0gICAgICAgICAgICBtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0cyA9IG1fdmFsdWUgLyBkcGkoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1BUOgotICAgICAgICAgICAgbV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMgPSBtX3ZhbHVlIC8gZHBpKCkgKiA3Mi4wOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfUEM6Ci0gICAgICAgICAgICBtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cyA9IG1fdmFsdWUgLyBkcGkoKSAqIDYuMDsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1VOS05PV046Ci0gICAgICAgIGNhc2UgU1ZH
X0xFTkdUSFRZUEVfTlVNQkVSOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfTsKLSAgICAKLSAg
ICBpZiAobm90aWZ5ICYmIG1fY29udGV4dCkKLSAgICAgICAgbV9jb250ZXh0LT5ub3RpZnlBdHRy
aWJ1dGVDaGFuZ2UoKTsKLQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAwLjA7CiB9CiAK
LWJvb2wgU1ZHTGVuZ3RoOjpiYm94UmVsYXRpdmUoKSBjb25zdAotewotICAgIHJldHVybiBtX2Ji
b3hSZWxhdGl2ZTsKIH0KIAotdm9pZCBTVkdMZW5ndGg6OnNldEJib3hSZWxhdGl2ZShib29sIHJl
bGF0aXZlKQotewotICAgIG1fYmJveFJlbGF0aXZlID0gcmVsYXRpdmU7Ci19Ci0KLWNvbnN0IFNW
R1N0eWxlZEVsZW1lbnQqIFNWR0xlbmd0aDo6Y29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fY29udGV4dDsKLX0KLQotdm9pZCBTVkdMZW5ndGg6OnNldENvbnRleHQoY29uc3QgU1ZHU3R5
bGVkRWxlbWVudCogY29udGV4dCkKLXsKLSAgICBtX2NvbnRleHQgPSBjb250ZXh0OwotfQotCi19
Ci0KLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9
NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsODEgKzIwLDg3IEBACiAgICAgQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHTGVuZ3RoSW1wbF9ICi0j
ZGVmaW5lIEtTVkdfU1ZHTGVuZ3RoSW1wbF9ICisjaWZuZGVmIFNWR0xlbmd0aF9ICisjZGVmaW5l
IFNWR0xlbmd0aF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKLSNpbmNsdWRlICJTVkdIZWxwZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0gICAgY2xhc3MgUmVuZGVyUGF0aDsKLSAgICBjbGFzcyBTVkdFbGVtZW50OwogICAgIGNsYXNz
IFNWR1N0eWxlZEVsZW1lbnQ7CiAKLSAgICBjbGFzcyBTVkdMZW5ndGggOiBwdWJsaWMgU2hhcmVk
PFNWR0xlbmd0aD4geworICAgIGVudW0gU1ZHTGVuZ3RoVHlwZSB7CisgICAgICAgIExlbmd0aFR5
cGVVbmtub3duID0gMCwKKyAgICAgICAgTGVuZ3RoVHlwZU51bWJlciA9IDEsCisgICAgICAgIExl
bmd0aFR5cGVQZXJjZW50YWdlID0gMiwKKyAgICAgICAgTGVuZ3RoVHlwZUVNUyA9IDMsCisgICAg
ICAgIExlbmd0aFR5cGVFWFMgPSA0LAorICAgICAgICBMZW5ndGhUeXBlUFggPSA1LAorICAgICAg
ICBMZW5ndGhUeXBlQ00gPSA2LAorICAgICAgICBMZW5ndGhUeXBlTU0gPSA3LAorICAgICAgICBM
ZW5ndGhUeXBlSU4gPSA4LAorICAgICAgICBMZW5ndGhUeXBlUFQgPSA5LAorICAgICAgICBMZW5n
dGhUeXBlUEMgPSAxMAorICAgIH07CisKKyAgICBlbnVtIFNWR0xlbmd0aE1vZGUgeworICAgICAg
ICBMZW5ndGhNb2RlV2lkdGggPSAwLAorICAgICAgICBMZW5ndGhNb2RlSGVpZ2h0LAorICAgICAg
ICBMZW5ndGhNb2RlT3RoZXIKKyAgICB9OworCisgICAgY2xhc3MgU1ZHTGVuZ3RoIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFNWR0xlbmd0aChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0
LCBMZW5ndGhNb2RlIG1vZGUgPSBMTV9VTktOT1dOLCBjb25zdCBTVkdFbGVtZW50KiB2aWV3cG9y
dCA9IDApOwotICAgICAgICB2aXJ0dWFsIH5TVkdMZW5ndGgoKTsKLSAgICAgICAgCi0gICAgICAg
IGVudW0gU1ZHTGVuZ3RoVHlwZSB7Ci0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9VTktOT1dO
ICAgICAgICAgID0gMCwKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX05VTUJFUiAgICAgICAg
ICAgPSAxLAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSAgICAgICA9IDIs
Ci0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9FTVMgICAgICAgICAgICAgID0gMywKLSAgICAg
ICAgICAgIFNWR19MRU5HVEhUWVBFX0VYUyAgICAgICAgICAgICAgPSA0LAotICAgICAgICAgICAg
U1ZHX0xFTkdUSFRZUEVfUFggICAgICAgICAgICAgICA9IDUsCi0gICAgICAgICAgICBTVkdfTEVO
R1RIVFlQRV9DTSAgICAgICAgICAgICAgID0gNiwKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBF
X01NICAgICAgICAgICAgICAgPSA3LAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfSU4gICAg
ICAgICAgICAgICA9IDgsCi0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9QVCAgICAgICAgICAg
ICAgID0gOSwKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BDICAgICAgICAgICAgICAgPSAx
MAorICAgICAgICAvLyBGb3J3YXJkIGRlY2xhcmUgdGhlc2UgZW51bXMgaW4gdGhlIHczYyBuYW1p
bmcgc2NoZW1lLCBmb3IgSURMIGdlbmVyYXRpb24KKyAgICAgICAgZW51bSB7CisgICAgICAgICAg
ICBTVkdfTEVOR1RIVFlQRV9VTktOT1dOID0gTGVuZ3RoVHlwZVVua25vd24sCisgICAgICAgICAg
ICBTVkdfTEVOR1RIVFlQRV9OVU1CRVIgPSBMZW5ndGhUeXBlTnVtYmVyLAorICAgICAgICAgICAg
U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSA9IExlbmd0aFR5cGVQZXJjZW50YWdlLAorICAgICAg
ICAgICAgU1ZHX0xFTkdUSFRZUEVfRU1TID0gTGVuZ3RoVHlwZUVNUywKKyAgICAgICAgICAgIFNW
R19MRU5HVEhUWVBFX0VYUyA9IExlbmd0aFR5cGVFWFMsCisgICAgICAgICAgICBTVkdfTEVOR1RI
VFlQRV9QWCA9IExlbmd0aFR5cGVQWCwKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX0NNID0g
TGVuZ3RoVHlwZUNNLAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTU0gPSBMZW5ndGhUeXBl
TU0sCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9JTiA9IExlbmd0aFR5cGVJTiwKKyAgICAg
ICAgICAgIFNWR19MRU5HVEhUWVBFX1BUID0gTGVuZ3RoVHlwZVBULAorICAgICAgICAgICAgU1ZH
X0xFTkdUSFRZUEVfUEMgPSBMZW5ndGhUeXBlUEMKICAgICAgICAgfTsKIAorICAgICAgICBTVkdM
ZW5ndGgoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCA9IDAsIFNWR0xlbmd0aE1vZGUg
bW9kZSA9IExlbmd0aE1vZGVPdGhlciwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nID0gU3Ry
aW5nKCkpOworCiAgICAgICAgIC8vICdTVkdMZW5ndGgnIGZ1bmN0aW9ucwogICAgICAgICBTVkdM
ZW5ndGhUeXBlIHVuaXRUeXBlKCkgY29uc3Q7CiAKICAgICAgICAgZmxvYXQgdmFsdWUoKSBjb25z
dDsKLSAgICAgICAgdm9pZCBzZXRWYWx1ZShmbG9hdCB2YWx1ZSk7CisgICAgICAgIHZvaWQgc2V0
VmFsdWUoZmxvYXQpOwogCiAgICAgICAgIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cygpIGNv
bnN0OwotICAgICAgICB2b2lkIHNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyhmbG9hdCB2YWx1ZUlu
U3BlY2lmaWVkVW5pdHMpOworICAgICAgICB2b2lkIHNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyhm
bG9hdCk7CiAKICAgICAgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKICAgICAgICAg
dm9pZCBzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCi0gICAgICAgIHZvaWQgbmV3
VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgZmxvYXQgdmFsdWVJ
blNwZWNpZmllZFVuaXRzKTsKLSAgICAgICAgdm9pZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1
bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7Ci0KLSAgICAgICAgLy8gSGVscGVycwotICAgICAgICBi
b29sIGJib3hSZWxhdGl2ZSgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldEJib3hSZWxhdGl2ZShi
b29sKTsKKyAgICAgICAgdm9pZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0
LCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAgICAgICB2b2lkIGNvbnZlcnRUb1Nw
ZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0KTsKIAotICAgICAgICBjb25zdCBTVkdTdHlsZWRF
bGVtZW50KiBjb250ZXh0KCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0Q29udGV4dChjb25zdCBT
VkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KTsKKyAgICAgICAgLy8gSGVscGVyIGZ1bmN0aW9ucwor
ICAgICAgICBzdGF0aWMgYm9vbCBpc0ZyYWN0aW9uKGNvbnN0IFNWR0xlbmd0aCYpOworICAgICAg
ICBzdGF0aWMgZmxvYXQgUGVyY2VudGFnZU9mVmlld3BvcnQoZmxvYXQgdmFsdWUsIGNvbnN0IFNW
R1N0eWxlZEVsZW1lbnQgKmNvbnRleHQsIFNWR0xlbmd0aE1vZGUgbW9kZSk7CiAKICAgICBwcml2
YXRlOgotICAgICAgICBib29sIHVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRVbml0cyhib29sIG5vdGlm
eSA9IHRydWUpOwotICAgICAgICB2b2lkIHVwZGF0ZVZhbHVlKGJvb2wgbm90aWZ5ID0gdHJ1ZSk7
Ci0KICAgICAgICAgZG91YmxlIGRwaSgpIGNvbnN0OwogCi0gICAgICAgIGZsb2F0IG1fdmFsdWU7
CiAgICAgICAgIGZsb2F0IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzOwotCi0gICAgICAgIExlbmd0
aE1vZGUgbV9tb2RlIDogMjsKLSAgICAgICAgYm9vbCBtX2Jib3hSZWxhdGl2ZSA6IDE7Ci0gICAg
ICAgIFNWR0xlbmd0aFR5cGUgbV91bml0VHlwZSA6IDQ7Ci0gICAgICAgIGJvb2wgbV9yZXF1aXJl
c0xheW91dCA6IDE7CisgICAgICAgIHVuc2lnbmVkIGludCBtX3VuaXQ7CiAKICAgICAgICAgY29u
c3QgU1ZHU3R5bGVkRWxlbWVudCogbV9jb250ZXh0OwotICAgICAgICBjb25zdCBTVkdFbGVtZW50
KiBtX3ZpZXdwb3J0RWxlbWVudDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmIC8vIEtTVkdfU1ZHTGVuZ3RoSW1wbF9ICisj
ZW5kaWYgLy8gU1ZHTGVuZ3RoX0gKIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHTGVuZ3RoLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdMZW5ndGguaWRsCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xl
bmd0aC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogbW9kdWxlIHN2ZyB7
CiAKLSAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRywgR2VuZXJhdGVDb25zdHJ1Y3Rvcl0g
U1ZHTGVuZ3RoIHsgCisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcsIEdlbmVyYXRlQ29u
c3RydWN0b3IsIFBPRFR5cGU9U1ZHTGVuZ3RoXSBTVkdMZW5ndGggeyAKICAgICAgICAgLy8gTGVu
Z3RoIFVuaXQgVHlwZXMKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0xFTkdUSFRZ
UEVfVU5LTk9XTiAgICA9IDA7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19MRU5H
VEhUWVBFX05VTUJFUiAgICAgPSAxOwpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3Ro
TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5j
cHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU1ZHTGVuZ3RoTGlzdDo6U1ZHTGVuZ3RoTGlzdCgpCi0gICAgOiBTVkdMaXN0PFJlZlB0cjxT
VkdMZW5ndGg+ID4oKQorICAgIDogU1ZHTGlzdDxTVkdMZW5ndGg+KCkKIHsKIH0KIApAQCAtMzcs
MTcgKzM3LDE0IEBAIFNWR0xlbmd0aExpc3Q6On5TVkdMZW5ndGhMaXN0KCkKIHsKIH0KIAotdm9p
ZCBTVkdMZW5ndGhMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTVkdTdHls
ZWRFbGVtZW50KiBjb250ZXh0LCBMZW5ndGhNb2RlIG1vZGUpCit2b2lkIFNWR0xlbmd0aExpc3Q6
OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRl
eHQsIFNWR0xlbmd0aE1vZGUgbW9kZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKIAog
ICAgIFZlY3RvcjxTdHJpbmc+IGxlbmd0aHMgPSB2YWx1ZS5zcGxpdCgnICcpOwogICAgIFZlY3Rv
cjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsZW5ndGhzLmVuZCgpOwotICAgIGZvciAo
VmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGVuZ3Rocy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgU1ZHTGVuZ3RoKiBsZW5ndGggPSBuZXcgU1ZHTGVuZ3Ro
KGNvbnRleHQsIG1vZGUpOwotICAgICAgICBsZW5ndGgtPnNldFZhbHVlQXNTdHJpbmcoKml0KTsK
LSAgICAgICAgYXBwZW5kSXRlbShsZW5ndGgsIGVjKTsKLSAgICB9CisgICAgZm9yIChWZWN0b3I8
U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsZW5ndGhzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKKyAgICAgICAgYXBwZW5kSXRlbShTVkdMZW5ndGgoY29udGV4dCwgbW9kZSwgKml0KSwg
ZWMpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5oCShyZXZpc2lvbiAx
ODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExpc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsMTMgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7Ci0gICAgY2xhc3Mg
U1ZHTGVuZ3RoTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFJlZlB0cjxTVkdMZW5ndGg+ID4KKyAgICBj
bGFzcyBTVkdMZW5ndGhMaXN0IDogcHVibGljIFNWR0xpc3Q8U1ZHTGVuZ3RoPgogICAgIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFNWR0xlbmd0aExpc3QoKTsKICAgICAgICAgdmlydHVhbCB+U1ZH
TGVuZ3RoTGlzdCgpOwogCi0gICAgICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Y29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCwgTGVuZ3RoTW9kZSBtb2RlKTsKKyAgICAg
ICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTVkdTdHlsZWRFbGVtZW50
KiBjb250ZXh0LCBTVkdMZW5ndGhNb2RlIG1vZGUpOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2ICsyMSw3
IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2lu
Y2x1ZGUgIlNWR0xpbmVFbGVtZW50LmgiCiAKQEAgLTM2LDEwICszNywxMCBAQCBTVkdMaW5lRWxl
bWVudDo6U1ZHTGluZUVsZW1lbnQoY29uc3QgUXVhCiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBT
VkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAg
LCBtX3gxKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkK
LSAgICAsIG1feTEobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVu
dCgpKSkKLSAgICAsIG1feDIobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRF
bGVtZW50KCkpKQotICAgICwgbV95MihuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmll
d3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94MSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAg
LCBtX3kxKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3gyKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCkKKyAgICAsIG1feTIodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0KIApAQCAt
NDcsNjYgKzQ4LDQyIEBAIFNWR0xpbmVFbGVtZW50Ojp+U1ZHTGluZUVsZW1lbnQoKQogewogfQog
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgTGVuZ3RoLCBsZW5ndGgsIFgxLCB4MSwgU1ZHTmFtZXM6OngxQXR0ci5sb2NhbE5hbWUoKSwg
bV94MS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50
LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWTEsIHkxLCBTVkdOYW1lczo6eTFBdHRyLmxv
Y2FsTmFtZSgpLCBtX3kxLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
TGluZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYMiwgeDIsIFNWR05hbWVz
Ojp4MkF0dHIubG9jYWxOYW1lKCksIG1feDIuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFkyLCB5
MiwgU1ZHTmFtZXM6OnkyQXR0ci5sb2NhbE5hbWUoKSwgbV95Mi5nZXQoKSkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVu
Z3RoLCBYMSwgeDEsIFNWR05hbWVzOjp4MUF0dHIubG9jYWxOYW1lKCksIG1feDEpCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgWTEsIHkxLCBTVkdOYW1lczo6eTFBdHRyLmxvY2FsTmFtZSgpLCBtX3kxKQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2NhbE5hbWUoKSwgbV94MikK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBZMiwgeTIsIFNWR05hbWVzOjp5MkF0dHIubG9jYWxOYW1lKCksIG1f
eTIpCiAKIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+
dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4MUF0dHIpCi0gICAg
ICAgIHgxQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRY
MUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eTFBdHRyKQotICAgICAgICB5MUJh
c2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WTFCYXNlVmFs
dWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4MkF0dHIpCi0gICAgICAgIHgyQmFzZVZhbHVl
KCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYMkJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6eTJBdHRyKQotICAgICAgICB5MkJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WTJCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAg
aWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwotICAgICAg
ICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwot
ICAgICAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cikpIHJldHVybjsKKyAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKFNWR0xhbmdT
cGFjZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShhdHRyKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogICAgIH0KIH0KIAog
UGF0aCBTVkdMaW5lRWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CiB7Ci0gICAgZmxvYXQgX3gx
ID0geDEoKS0+dmFsdWUoKSwgX3kxID0geTEoKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfeDIgPSB4
MigpLT52YWx1ZSgpLCBfeTIgPSB5MigpLT52YWx1ZSgpOwotCi0gICAgcmV0dXJuIFBhdGg6OmNy
ZWF0ZUxpbmUoRmxvYXRQb2ludChfeDEsIF95MSksIEZsb2F0UG9pbnQoX3gyLCBfeTIpKTsKLX0K
LQotY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogU1ZHTGluZUVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVD
b250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpCi17Ci0gICAgLy8gQWxsIGF0
dHJpYnV0ZSdzIGNvbnRleHRzIGFyZSBlcXVhbCAoc28ganVzdCB0YWtlIHRoZSBvbmUgZnJvbSAn
eDEnKS4KLSAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiByZXN0b3JlID0geDEoKS0+Y29udGV4
dCgpOwotCi0gICAgeDEoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICB5MSgpLT5zZXRDb250
ZXh0KGNvbnRleHQpOwotICAgIHgyKCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgeTIoKS0+
c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICAKLSAgICBTVkdTdHlsZWRFbGVtZW50OjpwdXNoQXR0
cmlidXRlQ29udGV4dChjb250ZXh0KTsKLSAgICByZXR1cm4gcmVzdG9yZTsKLX0KLQotYm9vbCBT
VkdMaW5lRWxlbWVudDo6aGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0Ci17Ci0gICAgaWYgKHgx
KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8
Ci0gICAgICAgIHkxKCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9Q
RVJDRU5UQUdFIHx8Ci0gICAgICAgIHgyKCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdf
TEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHkyKCktPnVuaXRUeXBlKCkgPT0gU1ZH
TGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gUGF0aDo6Y3JlYXRlTGluZShGbG9hdFBv
aW50KHgxKCkudmFsdWUoKSwgeTEoKS52YWx1ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGbG9hdFBvaW50KHgyKCkudmFsdWUoKSwgeTIoKS52YWx1ZSgpKSk7CiB9CiAKIH0KIAot
Ly8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5v
ZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuaAkocmV2aXNpb24gMTgyNjApCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5IEBACiAgICAgQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHTGluZUVsZW1l
bnRJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdMaW5lRWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdM
aW5lRWxlbWVudF9ICisjZGVmaW5lIFNWR0xpbmVFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQ
T1JUCiAKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC00OSwy
MCArNTAsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQogICAgICAgICB2aXJ0dWFsIFBhdGggdG9QYXRoRGF0
YSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcHVz
aEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCk7Ci0KICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGhh
c1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdDsKLQogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQpCiAgCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdM
aW5lRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgxLCB4MSkKLSAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5n
dGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWTEsIHkxKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5n
dGg+LCBYMiwgeDIpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdM
aW5lRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFkyLCB5MikKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5n
dGgsIFNWR0xlbmd0aCwgWDEsIHgxKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZMSwgeTEpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVu
Z3RoLCBTVkdMZW5ndGgsIFgyLCB4MikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWTIsIHkyKQogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0zNywzNSArMzcsMzUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OlNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jKQogICAgIDogU1ZHR3JhZGllbnRFbGVtZW50KHRhZ05hbWUsIGRvYykKLSAgICAsIG1feDEo
bmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwg
bV95MShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQot
ICAgICwgbV94MihuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQo
KSkpCi0gICAgLCBtX3kyKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVs
ZW1lbnQoKSkpCisgICAgLCBtX3gxKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feTEo
dGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1feDIodGhpcywgTGVuZ3RoTW9kZVdpZHRo
KQorICAgICwgbV95Mih0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewotICAgIC8vIFNwZWMgOiBJ
ZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2
YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgbV94Mi0+c2V0VmFsdWVBc1N0cmlu
ZygiMTAwJSIpOworICAgIC8vIFNwZWM6IElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmll
ZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4K
KyAgICBzZXRYMkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMTAw
JSIpKTsKIH0KIAogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Ojp+U1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWDEsIHgxLCBTVkdO
YW1lczo6eDFBdHRyLmxvY2FsTmFtZSgpLCBtX3gxLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgs
IGxlbmd0aCwgWTEsIHkxLCBTVkdOYW1lczo6eTFBdHRyLmxvY2FsTmFtZSgpLCBtX3kxLmdldCgp
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWDIsIHgyLCBTVkdOYW1lczo6eDJBdHRyLmxv
Y2FsTmFtZSgpLCBtX3gyLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWTIsIHky
LCBTVkdOYW1lczo6eTJBdHRyLmxvY2FsTmFtZSgpLCBtX3kyLmdldCgpKQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBYMSwgeDEsIFNWR05hbWVzOjp4MUF0dHIubG9jYWxOYW1lKCksIG1feDEp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFkxLCB5MSwgU1ZHTmFtZXM6OnkxQXR0ci5sb2Nh
bE5hbWUoKSwgbV95MSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWDIsIHgyLCBTVkdOYW1l
czo6eDJBdHRyLmxvY2FsTmFtZSgpLCBtX3gyKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZ
MiwgeTIsIFNWR05hbWVzOjp5MkF0dHIubG9jYWxOYW1lKCksIG1feTIpCiAKIHZvaWQgU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
IGF0dHIpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7
CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eDFBdHRyKQotICAgICAgICB4MUJh
c2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WDFCYXNlVmFs
dWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnkxQXR0cikKLSAgICAgICAgeTFCYXNlVmFsdWUo
KS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFkxQmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6eDJBdHRyKQotICAgICAgICB4MkJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WDJCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnkyQXR0cikKLSAgICAgICAgeTJCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFkyQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UKICAgICAgICAgU1ZHR3JhZGllbnRFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KQEAgLTc1LDE1ICs3NSwzMiBAQCB2
b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAgICAgcmVidWlsZFN0b3Bz
KCk7IC8vIHJlYnVpbGQgc3RvcHMgYmVmb3JlIHBvc3NpYmx5IGltcG9ydGluZyB0aGVtIGZyb20g
YW55IHJlZmVyZW5jZWQgZ3JhZGllbnQuCiAKICAgICBib29sIGJib3ggPSAoZ3JhZGllbnRVbml0
cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCk7Ci0g
ICAgCi0gICAgeDEoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIHkxKCktPnNldEJib3hS
ZWxhdGl2ZShiYm94KTsKLSAgICB4MigpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgeTIo
KS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIAotICAgIGZsb2F0IF94MSA9IHgxKCktPnZh
bHVlKCksIF95MSA9IHkxKCktPnZhbHVlKCk7Ci0gICAgZmxvYXQgX3gyID0geDIoKS0+dmFsdWUo
KSwgX3kyID0geTIoKS0+dmFsdWUoKTsKIAorICAgIGZsb2F0IF94MSwgX3kxLCBfeDIsIF95MjsK
KworICAgIGlmIChiYm94KSB7CisgICAgICAgIF94MSA9IHgxKCkudmFsdWVJblNwZWNpZmllZFVu
aXRzKCk7CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeDEoKSkpCisgICAgICAg
ICAgICBfeDEgKj0gMTAwLjA7CisKKyAgICAgICAgX3kxID0geTEoKS52YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKTsKKyAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbih5MSgpKSkKKyAgICAg
ICAgICAgIF95MSAqPSAxMDAuMDsKKworICAgICAgICBfeDIgPSB4MigpLnZhbHVlSW5TcGVjaWZp
ZWRVbml0cygpOworICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHgyKCkpKQorICAg
ICAgICAgICAgX3gyICo9IDEwMC4wOworCisgICAgICAgIF95MiA9IHkyKCkudmFsdWVJblNwZWNp
ZmllZFVuaXRzKCk7CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeTIoKSkpCisg
ICAgICAgICAgICBfeTIgKj0gMTAwLjA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgX3gxID0geDEo
KS52YWx1ZSgpOworICAgICAgICBfeTEgPSB5MSgpLnZhbHVlKCk7CisgICAgICAgIF94MiA9IHgy
KCkudmFsdWUoKTsKKyAgICAgICAgX3kyID0geTIoKS52YWx1ZSgpOworICAgIH0gCisgCiAgICAg
UmVmUHRyPFNWR1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQ+IGdyYWQgPSBXVEY6OnN0YXRpY19w
b2ludGVyX2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJMaW5lYXJHcmFkaWVudD4oX2dyYWQpOwogICAgIEFm
ZmluZVRyYW5zZm9ybSBtYXQ7CiAgICAgaWYgKGdyYWRpZW50VHJhbnNmb3JtKCktPm51bWJlck9m
SXRlbXMoKSA+IDApCkBAIC05MSw0MCArMTA4LDI3IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50OjpidWlsZEdyYWQKIAogICAgIERlcHJlY2F0ZWRTdHJpbmcgcmVmID0gaHJlZigpLmRl
cHJlY2F0ZWRTdHJpbmcoKTsKICAgICBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXI+IHBzZXJ2ZXIgPSBn
ZXRQYWludFNlcnZlckJ5SWQoZG9jdW1lbnQoKSwgcmVmLm1pZCgxKSk7Ci0gICAgCisKICAgICBp
ZiAocHNlcnZlciAmJiAocHNlcnZlci0+dHlwZSgpID09IFJhZGlhbEdyYWRpZW50UGFpbnRTZXJ2
ZXIgfHwgcHNlcnZlci0+dHlwZSgpID09IExpbmVhckdyYWRpZW50UGFpbnRTZXJ2ZXIpKSB7CiAg
ICAgICAgIGJvb2wgaXNMaW5lYXIgPSBwc2VydmVyLT50eXBlKCkgPT0gTGluZWFyR3JhZGllbnRQ
YWludFNlcnZlcjsKICAgICAgICAgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudCogZ3JhZGllbnQgPSBz
dGF0aWNfY2FzdDxTVkdQYWludFNlcnZlckdyYWRpZW50Kj4ocHNlcnZlci5nZXQoKSk7CiAKICAg
ICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyKSkKICAg
ICAgICAgICAgIGJib3ggPSBncmFkaWVudC0+Ym91bmRpbmdCb3hNb2RlKCk7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICBpZiAoaXNMaW5lYXIpIHsKICAgICAgICAgICAgIFNWR1BhaW50U2VydmVy
TGluZWFyR3JhZGllbnQqIGxpbmVhciA9IHN0YXRpY19jYXN0PFNWR1BhaW50U2VydmVyTGluZWFy
R3JhZGllbnQqPihwc2VydmVyLmdldCgpKTsKICAgICAgICAgICAgIGlmICghaGFzQXR0cmlidXRl
KFNWR05hbWVzOjp4MUF0dHIpKQogICAgICAgICAgICAgICAgIF94MSA9IGxpbmVhci0+Z3JhZGll
bnRTdGFydCgpLngoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCi0gICAgICAgICAgICAg
ICAgX3gxICo9IDEwMC47CiAKICAgICAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVz
Ojp5MUF0dHIpKQogICAgICAgICAgICAgICAgIF95MSA9IGxpbmVhci0+Z3JhZGllbnRTdGFydCgp
LnkoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCi0gICAgICAgICAgICAgICAgX3kxICo9
IDEwMC47CiAKICAgICAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjp4MkF0dHIp
KQogICAgICAgICAgICAgICAgIF94MiA9IGxpbmVhci0+Z3JhZGllbnRFbmQoKS54KCk7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF94MiAqPSAxMDAuOwogCiAg
ICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6eTJBdHRyKSkKICAgICAgICAg
ICAgICAgICBfeTIgPSBsaW5lYXItPmdyYWRpZW50RW5kKCkueSgpOwotICAgICAgICAgICAgZWxz
ZSBpZiAoYmJveCkKLSAgICAgICAgICAgICAgICBfeTIgKj0gMTAwLjsKLSAgICAgICAgfSBlbHNl
IGlmIChiYm94KSB7Ci0gICAgICAgICAgICBfeDEgKj0gMTAwLjA7Ci0gICAgICAgICAgICBfeTEg
Kj0gMTAwLjA7Ci0gICAgICAgICAgICBfeDIgKj0gMTAwLjA7Ci0gICAgICAgICAgICBfeTIgKj0g
MTAwLjA7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6
Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKSkKQEAgLTE0MywxMyArMTQ3LDYgQEAgdm9pZCBTVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgICAgICAgICAgZ3JhZC0+c2V0R3JhZGll
bnRTcHJlYWRNZXRob2QoU1BSRUFETUVUSE9EX1JFUEVBVCk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGdyYWQtPnNldEdyYWRpZW50U3ByZWFkTWV0aG9kKFNQUkVBRE1FVEhPRF9QQUQpOwot
Ci0gICAgICAgIGlmIChiYm94KSB7Ci0gICAgICAgICAgICBfeDEgKj0gMTAwLjA7Ci0gICAgICAg
ICAgICBfeTEgKj0gMTAwLjA7Ci0gICAgICAgICAgICBfeDIgKj0gMTAwLjA7Ci0gICAgICAgICAg
ICBfeTIgKj0gMTAwLjA7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBncmFkLT5zZXRHcmFkaWVu
dFRyYW5zZm9ybShtYXQpOwpAQCAtMTYwLDYgKzE1Nyw2IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50OjpidWlsZEdyYWQKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnRJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnRJbXBsX0gKKyNpZm5kZWYgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50X0gKKyNkZWZpbmUgU1ZH
TGluZWFyR1JhZGllbnRFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRl
IDxTVkdHcmFkaWVudEVsZW1lbnQuaD4KQEAgLTQ2LDEwICs0NywxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgxLCB4MSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRy
PFNWR0xlbmd0aD4sIFkxLCB5MSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIFgyLCB4MikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFkyLCB5
MikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgxLCB4MSkKKyAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVu
Z3RoLCBTVkdMZW5ndGgsIFkxLCB5MSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgy
LCB4MikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFkyLCB5MikKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgor
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJv
amVjdApAQCAtNDIsMTAgKzQyLDEwIEBAIFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlckVsZW1l
bnQoY29uc3QKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKCkKICAgICAsIFNWR0ZpdFRvVmlld0JveCgpCi0gICAgLCBtX3JlZlgobmV3IFNW
R0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9yZWZZ
KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAg
LCBtX21hcmtlcldpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxl
bWVudCgpKSkKLSAgICAsIG1fbWFya2VySGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJ
R0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3JlZlgodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoKQorICAgICwgbV9yZWZZKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX21hcmtl
cldpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fbWFya2VySGVpZ2h0KHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQpIAogICAgICwgbV9tYXJrZXJVbml0cyhTVkdfTUFSS0VSVU5JVFNf
U1RST0tFV0lEVEgpCiAgICAgLCBtX29yaWVudFR5cGUoMCkKICAgICAsIG1fb3JpZW50QW5nbGUo
bmV3IFNWR0FuZ2xlKHRoaXMpKQpAQCAtNTYsNiArNTYsMTQgQEAgU1ZHTWFya2VyRWxlbWVudDo6
flNWR01hcmtlckVsZW1lbnQoKQogewogfQogCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSZWZYLCByZWZY
LCBTVkdOYW1lczo6cmVmWEF0dHIubG9jYWxOYW1lKCksIG1fcmVmWCkKK0FOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIFJlZlksIHJlZlksIFNWR05hbWVzOjpyZWZZQXR0ci5sb2NhbE5hbWUoKSwgbV9yZWZZKQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgaW50LCBFbnVt
ZXJhdGlvbiwgZW51bWVyYXRpb24sIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTmFtZXM6
Om1hcmtlclVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9tYXJrZXJVbml0cykKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCwgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0
ci5sb2NhbE5hbWUoKSwgbV9tYXJrZXJXaWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIE1hcmtlckhl
aWdodCwgbWFya2VySGVpZ2h0LCBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ci5sb2NhbE5hbWUo
KSwgbV9tYXJrZXJIZWlnaHQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJr
ZXJFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgT3JpZW50VHlwZSwgb3Jp
ZW50VHlwZSwgIm9yaWVudFR5cGUiLCBtX29yaWVudFR5cGUpCitBTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmdsZSosIEFuZ2xlLCBhbmdsZSwgT3Jp
ZW50QW5nbGUsIG9yaWVudEFuZ2xlLCAib3JpZW50QW5nbGUiLCBtX29yaWVudEFuZ2xlLmdldCgp
KQorCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+
dmFsdWUoKTsKQEAgLTYzLDEzICs3MSwxMyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmliCiAgICAgICAgIGlmICh2YWx1ZSA9PSAidXNlclNwYWNlT25Vc2UiKQogICAg
ICAgICAgICAgc2V0TWFya2VyVW5pdHNCYXNlVmFsdWUoU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFD
RU9OVVNFKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cmVmWEF0
dHIpCi0gICAgICAgIHJlZlhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Cisg
ICAgICAgIHNldFJlZlhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwg
dmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJlZllBdHRy
KQotICAgICAgICByZWZZQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAg
ICAgICBzZXRSZWZZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2
YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6bWFya2VyV2lk
dGhBdHRyKQotICAgICAgICBtYXJrZXJXaWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5n
KHZhbHVlKTsKKyAgICAgICAgc2V0TWFya2VyV2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMs
IExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIpCi0gICAgICAgIG1hcmtlckhlaWdodEJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0TWFya2VySGVpZ2h0QmFz
ZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6b3JpZW50QXR0cikgewogICAgICAgICBp
ZiAodmFsdWUgPT0gImF1dG8iKQogICAgICAgICAgICAgc2V0T3JpZW50VG9BdXRvKCk7CkBAIC05
MCwxNCArOTgsNiBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAg
ICAgfQogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50
LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgUmVmWCwgcmVmWCwgU1ZHTmFtZXM6OnJlZlhB
dHRyLmxvY2FsTmFtZSgpLCBtX3JlZlguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgUmVmWSwg
cmVmWSwgU1ZHTmFtZXM6OnJlZllBdHRyLmxvY2FsTmFtZSgpLCBtX3JlZlkuZ2V0KCkpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBpbnQsIEVudW1lcmF0
aW9uLCBlbnVtZXJhdGlvbiwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzLCBTVkdOYW1lczo6bWFy
a2VyVW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX21hcmtlclVuaXRzKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5n
dGgsIE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCwgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ci5s
b2NhbE5hbWUoKSwgbV9tYXJrZXJXaWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBNYXJr
ZXJIZWlnaHQsIG1hcmtlckhlaWdodCwgU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIubG9jYWxO
YW1lKCksIG1fbWFya2VySGVpZ2h0LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHTWFya2VyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE9yaWVu
dFR5cGUsIG9yaWVudFR5cGUsICJvcmllbnRUeXBlIiwgbV9vcmllbnRUeXBlKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHQW5nbGUqLCBBbmdsZSwg
YW5nbGUsIE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSwgIm9yaWVudEFuZ2xlIiwgbV9vcmllbnRB
bmdsZS5nZXQoKSkKLQogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0F1dG8oKQog
ewogICAgIHNldE9yaWVudFR5cGVCYXNlVmFsdWUoU1ZHX01BUktFUl9PUklFTlRfQVVUTyk7CkBA
IC0xMjYsNyArMTI2LDcgQEAgU1ZHUmVzb3VyY2UqIFNWR01hcmtlckVsZW1lbnQ6OmNhbnZhc1Jl
cwogICAgIGVsc2UKICAgICAgICAgbV9tYXJrZXItPnNldEF1dG9BbmdsZSgpOwogCi0gICAgbV9t
YXJrZXItPnNldFJlZihyZWZYKCktPnZhbHVlKCksIHJlZlkoKS0+dmFsdWUoKSk7CisgICAgbV9t
YXJrZXItPnNldFJlZihyZWZYKCkudmFsdWUoKSwgcmVmWSgpLnZhbHVlKCkpOwogICAgIG1fbWFy
a2VyLT5zZXRVc2VTdHJva2VXaWR0aChtYXJrZXJVbml0cygpID09IFNWR19NQVJLRVJVTklUU19T
VFJPS0VXSURUSCk7CiAgICAgCiAgICAgcmV0dXJuIG1fbWFya2VyLmdldCgpOwpAQCAtMTQ0LDYg
KzE0NCw2IEBAIFJlbmRlck9iamVjdCogU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlUmUKIAogfQog
Ci0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkocmV2aXNpb24gMTgy
NjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAg
ICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIyLDYgKzIyLDcgQEAK
IAogI2lmbmRlZiBTVkdNYXJrZXJFbGVtZW50X0gKICNkZWZpbmUgU1ZHTWFya2VyRWxlbWVudF9I
CisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VNYXJrZXIuaCIK
QEAgLTM0LDggKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIHsKICAgICBjbGFzcyBEb2N1bWVu
dDsKICAgICBjbGFzcyBTVkdBbmdsZTsKLSAgICBjbGFzcyBTVkdBbmdsZTsKLSAgICBjbGFzcyBT
VkdMZW5ndGg7CisgICAgCiAgICAgY2xhc3MgU1ZHTWFya2VyRWxlbWVudCA6IHB1YmxpYyBTVkdT
dHlsZWRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFu
Z1NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCwKQEAgLTc1LDEwICs3NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1Zp
ZXdCb3gsIEZsb2F0UmVjdCwgVmlld0JveCwgdmlld0JveCkKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvKiwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFJlZlgsIHJlZlgpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgUmVmWSwgcmVmWSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5n
dGg+LCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVu
Z3RoPiwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwg
UmVmWCwgcmVmWCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01h
cmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSZWZZLCByZWZZKQorICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBTVkdMZW5ndGgsIE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCkKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVu
Z3RoLCBNYXJrZXJIZWlnaHQsIG1hcmtlckhlaWdodCkKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgaW50LCBNYXJrZXJVbml0cywg
bWFya2VyVW5pdHMpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdN
YXJrZXJFbGVtZW50LCBpbnQsIGludCwgT3JpZW50VHlwZSwgb3JpZW50VHlwZSkKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0FuZ2xl
KiwgUmVmUHRyPFNWR0FuZ2xlPiwgT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQpJbmRleDogV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlr
b2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAy
MDA1IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAKQEAgLTQ1LDEwICs0NSwx
MCBAQCBTVkdNYXNrRWxlbWVudDo6U1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhCiAgICAgLCBTVkdU
ZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3Bv
cnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2
aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1f
V0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgo
dGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywgTGVu
Z3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBt
X3dpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExlbmd0
aE1vZGVIZWlnaHQpCiAgICAgLCBtX2RpcnR5KHRydWUpCiB7CiB9CkBAIC01NywxNCArNTcsMTQg
QEAgU1ZHTWFza0VsZW1lbnQ6On5TVkdNYXNrRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVu
Z3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgp
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0
aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9j
YWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgp
LCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVp
Z2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCiAKIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OmF0
dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpCiB7Ci0g
ICAgSW50U2l6ZSBuZXdTaXplID0gSW50U2l6ZShscm91bmRmKHdpZHRoKCktPnZhbHVlKCkpLCBs
cm91bmRmKGhlaWdodCgpLT52YWx1ZSgpKSk7CisgICAgSW50U2l6ZSBuZXdTaXplID0gSW50U2l6
ZShscm91bmRmKHdpZHRoKCkudmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0KCkudmFsdWUoKSkpOwog
ICAgIGlmICghbV9tYXNrZXIgfHwgIW1fbWFza2VyLT5tYXNrKCkgfHwgKG1fbWFza2VyLT5tYXNr
KCktPnNpemUoKSAhPSBuZXdTaXplKSkKICAgICAgICAgbV9kaXJ0eSA9IHRydWU7CiAgICAgU1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChhdHRyLCBwcmVzZXJ2ZURl
Y2xzKTsKQEAgLTgwLDEzICs4MCwxMyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0CiB7CiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZhbHVlKCktPnNldFZh
bHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1
ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0
aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBp
ZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTEwNyw3ICsxMDcsNyBAQCBTVkdSZXNvdXJjZUltYWdlKiBTVkdNYXNr
RWxlbWVudDo6ZHJhd01hCiAgICAgcmV0dXJuIDA7CiAgICAgU1ZHUmVzb3VyY2VJbWFnZSogbWFz
a0ltYWdlID0gbmV3IFNWR1Jlc291cmNlSW1hZ2UoKTsKIAotICAgIEludFNpemUgc2l6ZSA9IElu
dFNpemUobHJvdW5kZih3aWR0aCgpLT52YWx1ZSgpKSwgbHJvdW5kZihoZWlnaHQoKS0+dmFsdWUo
KSkpOworICAgIEludFNpemUgc2l6ZSA9IEludFNpemUobHJvdW5kZih3aWR0aCgpLnZhbHVlKCkp
LCBscm91bmRmKGhlaWdodCgpLnZhbHVlKCkpKTsKICAgICBtYXNrSW1hZ2UtPmluaXQoc2l6ZSk7
CiAKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0KGNvbnRleHRGb3JJbWFnZSht
YXNrSW1hZ2UpKTsKQEAgLTE0NCw2ICsxNDQsNiBAQCBTVkdSZXNvdXJjZSogU1ZHTWFza0VsZW1l
bnQ6OmNhbnZhc1Jlc291CiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19T
VVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01h
c2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1l
bnQuaAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpZm5kZWYgU1ZHTWFza0Vs
ZW1lbnRfSAogI2RlZmluZSBTVkdNYXNrRWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAog
CiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VNYXNrZXIuaCIKQEAgLTYwLDEwICs2MSwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFU
SU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJlZikKICAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCkKICAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01h
c2tFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwg
V2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
TWFza0VsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBIZWlnaHQsIGhlaWdo
dCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50
LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWSwgeSkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBT
VkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBI
ZWlnaHQsIGhlaWdodCkKIAogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCkluZGV4OiBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtNTIsMTAgKzUyLDEwIEBAIFNWR1BhdHRlcm5FbGVt
ZW50OjpTVkdQYXR0ZXJuRWxlbWVudChjb24KICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQoKQogICAgICwgU1ZHRml0VG9WaWV3Qm94KCkKICAgICAsIFNWR1Jlc291cmNlTGlzdGVu
ZXIoKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxl
bWVudCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3Bv
cnRFbGVtZW50KCkpKQotICAgICwgbV93aWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRI
LCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2hlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMs
IExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94KHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0
aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0KQogICAgICwgbV9wYXR0ZXJuVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBF
X09CSkVDVEJPVU5ESU5HQk9YKQogICAgICwgbV9wYXR0ZXJuQ29udGVudFVuaXRzKFNWR1VuaXRU
eXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKICAgICAsIG1fcGF0dGVyblRyYW5z
Zm9ybShuZXcgU1ZHVHJhbnNmb3JtTGlzdCkKQEAgLTY5LDEwICs2OSwxMCBAQCBTVkdQYXR0ZXJu
RWxlbWVudDo6flNWR1BhdHRlcm5FbGVtZW50KCkKIAogQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBQ
YXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIubG9j
YWxOYW1lKCksIG1fcGF0dGVyblVuaXRzKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHUGF0dGVybkVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBQYXR0ZXJu
Q29udGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdOYW1lczo6cGF0dGVybkNvbnRl
bnRVbml0c0F0dHIubG9jYWxOYW1lKCksIG1fcGF0dGVybkNvbnRlbnRVbml0cykKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5n
dGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwg
bV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1l
bnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3
aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgs
IEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWln
aHQuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2Fs
TmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxl
bWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxv
Y2FsTmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJu
RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1l
czo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhl
aWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQp
CiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHVHJh
bnNmb3JtTGlzdCosIFRyYW5zZm9ybUxpc3QsIHRyYW5zZm9ybUxpc3QsIFBhdHRlcm5UcmFuc2Zv
cm0sIHBhdHRlcm5UcmFuc2Zvcm0sIFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ci5sb2Nh
bE5hbWUoKSwgbV9wYXR0ZXJuVHJhbnNmb3JtLmdldCgpKQogCiB2b2lkIFNWR1BhdHRlcm5FbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCkBAIC05NSwx
MyArOTUsMTMgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAg
ICAgICAgICAgcGF0dGVyblRyYW5zZm9ybXMtPmNsZWFyKGVjKTsKICAgICAgICAgfQogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VW
YWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0
VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZh
bHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgo
dGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNl
dFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAg
IGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTE4LDE5ICsxMTgsNiBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgfQogfQogCi1jb25zdCBTVkdTdHlsZWRFbGVtZW50KiBT
VkdQYXR0ZXJuRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxl
bWVudCogY29udGV4dCkKLXsKLSAgICAvLyBBbGwgYXR0cmlidXRlJ3MgY29udGV4dHMgYXJlIGVx
dWFsIChzbyBqdXN0IHRha2UgdGhlIG9uZSBmcm9tICd4JykuCi0gICAgY29uc3QgU1ZHU3R5bGVk
RWxlbWVudCogcmVzdG9yZSA9IHgoKS0+Y29udGV4dCgpOwotCi0gICAgeCgpLT5zZXRDb250ZXh0
KGNvbnRleHQpOwotICAgIHkoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICB3aWR0aCgpLT5z
ZXRDb250ZXh0KGNvbnRleHQpOwotICAgIGhlaWdodCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwot
Ci0gICAgcmV0dXJuIHJlc3RvcmU7Ci19Ci0KIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnJlc291
cmNlTm90aWZpY2F0aW9uKCkgY29uc3QKIHsKICAgICAvLyBXZSdyZSByZWZlcmVuY2VkIGJ5IGEg
ImNsaWVudCIsIGNhbGN1bGF0ZSB0aGUgdGlsZSBub3cuLi4KQEAgLTE2OSwyNiArMTU2LDM4IEBA
IHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmZpbGxBdHRyaWJ1dGVzRnIKIAogdm9pZCBTVkdQYXR0
ZXJuRWxlbWVudDo6ZHJhd1BhdHRlcm5Db250ZW50SW50b1RpbGUoY29uc3QgU1ZHUGF0dGVybkVs
ZW1lbnQqIHRhcmdldCwgY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSwgQWZmaW5lVHJhbnNmb3JtIHBh
dHRlcm5UcmFuc2Zvcm1NYXRyaXgpCiB7Ci0gICAgU1ZHU3R5bGVkRWxlbWVudCogYWN0aXZlRWxl
bWVudCA9IHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPihtX3BhaW50U2VydmVyLT5hY3Rp
dmVDbGllbnQoKS0+ZWxlbWVudCgpKTsKLQogICAgIGJvb2wgYmJveCA9IChwYXR0ZXJuVW5pdHMo
KSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpOwogCi0g
ICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogc2F2ZWRDb250ZXh0ID0gMDsKKyAgICBmbG9hdCBf
eCwgX3ksIHcsIGg7CiAgICAgaWYgKGJib3gpIHsKLSAgICAgICAgaWYgKHdpZHRoKCktPnVuaXRU
eXBlKCkgIT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKQotICAgICAgICAg
ICAgd2lkdGgoKS0+bmV3VmFsdWVTcGVjaWZpZWRVbml0cyhTVkdMZW5ndGg6OlNWR19MRU5HVEhU
WVBFX1BFUkNFTlRBR0UsIHdpZHRoKCktPnZhbHVlKCkgKiAxMDAuKTsKLSAgICAgICAgaWYgKGhl
aWdodCgpLT51bml0VHlwZSgpICE9IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFH
RSkKLSAgICAgICAgICAgIGhlaWdodCgpLT5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKFNWR0xlbmd0
aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSwgaGVpZ2h0KCktPnZhbHVlKCkgKiAxMDAuKTsK
LSAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpCi0gICAgICAgICAgICBzYXZlZENvbnRleHQgPSBj
b25zdF9jYXN0PFNWR1BhdHRlcm5FbGVtZW50Kj4odGhpcyktPnB1c2hBdHRyaWJ1dGVDb250ZXh0
KGFjdGl2ZUVsZW1lbnQpOworICAgICAgICBfeCA9IHgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMo
KTsKKyAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbih4KCkpKQorICAgICAgICAgICAg
X3ggKj0gMTAwLjA7CisKKyAgICAgICAgX3kgPSB5KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7
CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeSgpKSkKKyAgICAgICAgICAgIF95
ICo9IDEwMC4wOworCisgICAgICAgIHcgPSB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygp
OworICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHdpZHRoKCkpKQorICAgICAgICAg
ICAgdyAqPSAxMDAuMDsKKworICAgICAgICBoID0gaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVu
aXRzKCk7CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oaGVpZ2h0KCkpKQorICAg
ICAgICAgICAgaCAqPSAxMDAuMDsKKyAgICB9IGVsc2UgeworICAgICAgICBfeCA9IHgoKS52YWx1
ZSgpOworICAgICAgICBfeSA9IHkoKS52YWx1ZSgpOworICAgICAgICB3ID0gd2lkdGgoKS52YWx1
ZSgpOworICAgICAgICBoID0gaGVpZ2h0KCkudmFsdWUoKTsKICAgICB9Ci0gICAgCisKICAgICBt
X3RpbGUgPSBuZXcgU1ZHUmVzb3VyY2VJbWFnZSgpOwogICAgIG1fdGlsZS0+aW5pdChuZXdTaXpl
KTsKIAogICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IHBhdHRlcm5Db250ZXh0KGNvbnRleHRG
b3JJbWFnZShtX3RpbGUuZ2V0KCkpKTsKIAotICAgIEZsb2F0UmVjdCByZWN0KHgoKS0+dmFsdWUo
KSwgeSgpLT52YWx1ZSgpLCB3aWR0aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7Cisg
ICAgRmxvYXRSZWN0IHJlY3QoX3gsIF95LCB3LCBoKTsKICAgICBtX3BhaW50U2VydmVyLT5zZXRC
Ym94KHJlY3QpOwogICAgIG1fcGFpbnRTZXJ2ZXItPnNldFBhdHRlcm5UcmFuc2Zvcm0ocGF0dGVy
blRyYW5zZm9ybU1hdHJpeCk7CiAgICAgbV9wYWludFNlcnZlci0+c2V0VGlsZShtX3RpbGUuZ2V0
KCkpOwpAQCAtMjQzLDkgKzI0Miw2IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmRyYXdQYXR0
ZXJuQ29udGUKICAgICAgICAgaXRlbS0+c2V0TG9jYWxUcmFuc2Zvcm0oc2F2ZWRNYXRyaXgubWF0
cml4KCkpOwogI2VuZGlmCiAgICAgfQotCi0gICAgaWYgKHNhdmVkQ29udGV4dCkKLSAgICAgICAg
Y29uc3RfY2FzdDxTVkdQYXR0ZXJuRWxlbWVudCo+KHRoaXMpLT5wdXNoQXR0cmlidXRlQ29udGV4
dChzYXZlZENvbnRleHQpOwogfQogCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50Ojpub3RpZnlDbGll
bnRzVG9SZXBhaW50KCkgY29uc3QKQEAgLTI3MSw3ICsyNjcsNyBAQCB2b2lkIFNWR1BhdHRlcm5F
bGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDCiAgICAgaWYgKCFtX3BhaW50U2VydmVyIHx8ICFtX3Bh
aW50U2VydmVyLT5hY3RpdmVDbGllbnQoKSB8fCBtX2lnbm9yZUF0dHJpYnV0ZUNoYW5nZXMpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEludFNpemUgbmV3U2l6ZSA9IEludFNpemUobHJvdW5kZih3
aWR0aCgpLT52YWx1ZSgpKSwgbHJvdW5kZihoZWlnaHQoKS0+dmFsdWUoKSkpOworICAgIEludFNp
emUgbmV3U2l6ZSA9IEludFNpemUobHJvdW5kZih3aWR0aCgpLnZhbHVlKCkpLCBscm91bmRmKGhl
aWdodCgpLnZhbHVlKCkpKTsKICAgICBpZiAobV90aWxlICYmIChtX3RpbGUtPnNpemUoKSA9PSBu
ZXdTaXplKSB8fCBuZXdTaXplLndpZHRoKCkgPCAxIHx8IG5ld1NpemUuaGVpZ2h0KCkgPCAxKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTMzMSwxMiArMzI3LDEzIEBAIFNWR1Jlc291cmNlKiBTVkdQ
YXR0ZXJuRWxlbWVudDo6Y2FudmFzUmUKIEFmZmluZVRyYW5zZm9ybSBTVkdQYXR0ZXJuRWxlbWVu
dDo6Z2V0Q1RNKCkgY29uc3QKIHsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OwotICAgIEFmZmlu
ZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLT52YWx1
ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3ggPSB2
aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KCkudmFsdWUoKSk7
CiAgICAgbWF0ICo9IHZpZXdCb3g7CiAgICAgcmV0dXJuIG1hdDsKIH0KIAogfQogCi0vLyB2aW06
dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKKworLy8gdmltOnRzPTQ6bm9ldApJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiAxODI2MCkKKysr
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBC
b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdQYXR0ZXJu
RWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR1BhdHRlcm5FbGVtZW50SW1wbF9ICisjaWZu
ZGVmIFNWR1BhdHRlcm5FbGVtZW50X0gKKyNkZWZpbmUgU1ZHUGF0dGVybkVsZW1lbnRfSAorCiAj
aWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1BhaW50U2VydmVyUGF0dGVybi5oIgpA
QCAtNzQsMTAgKzc1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0ZpdFRvVmlld0JveCwgRmxvYXRSZWN0LCBW
aWV3Qm94LCB2aWV3Qm94KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xB
UkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qLCBQcmVzZXJ2
ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRy
PFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5n
dGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdM
ZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQ
YXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBT
VkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBo
ZWlnaHQpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJu
RWxlbWVudCwgaW50LCBpbnQsIFBhdHRlcm5Vbml0cywgcGF0dGVyblVuaXRzKQogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIGludCwgaW50
LCBQYXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzKQogICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR1RyYW5zZm9y
bUxpc3QqLCBSZWZQdHI8U1ZHVHJhbnNmb3JtTGlzdD4sIFBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRl
cm5UcmFuc2Zvcm0pCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFz
IFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuaCIKIApAQCAtMzcsNDEgKzM4LDQxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0dyYWRpZW50
RWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX2N4KG5ldyBTVkdMZW5ndGgodGhpcywgTE1f
V0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fY3kobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcihuZXcgU1ZHTGVuZ3Ro
KHRoaXMsIExNX09USEVSLCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2Z4KG5ldyBTVkdM
ZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fZnkobmV3
IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1f
Y3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9jeSh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0KQorICAgICwgbV9yKHRoaXMsIExlbmd0aE1vZGVPdGhlcikKKyAgICAsIG1fZngodGhpcywg
TGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9meSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewog
ICAgIC8vIFNwZWM6IElmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVj
dCBpcyBhcyBpZiBhIHZhbHVlIG9mICI1MCUiIHdlcmUgc3BlY2lmaWVkLgotICAgIG1fY3gtPnNl
dFZhbHVlQXNTdHJpbmcoIjUwJSIpOwotICAgIG1fY3ktPnNldFZhbHVlQXNTdHJpbmcoIjUwJSIp
OwotICAgIG1fci0+c2V0VmFsdWVBc1N0cmluZygiNTAlIik7CisgICAgc2V0Q3hCYXNlVmFsdWUo
U1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpKTsKKyAgICBzZXRDeUJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjUwJSIpKTsKKyAgICBzZXRS
QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlT3RoZXIsICI1MCUiKSk7CiB9CiAK
IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6flNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCgpCiB7
CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4QXR0
ci5sb2NhbE5hbWUoKSwgbV9jeC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEN5
LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ci5sb2NhbE5hbWUoKSwgbV9jeS5nZXQoKSkKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgTGVuZ3RoLCBsZW5ndGgsIEZ4LCBmeCwgU1ZHTmFtZXM6OmZ4QXR0ci5sb2NhbE5hbWUoKSwg
bV9meC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEZ5LCBmeSwgU1ZHTmFtZXM6
OmZ5QXR0ci5sb2NhbE5hbWUoKSwgbV9meS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5n
dGgsIFIsIHIsIFNWR05hbWVzOjpyQXR0ci5sb2NhbE5hbWUoKSwgbV9yLmdldCgpKQorQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIubG9jYWxOYW1lKCks
IG1fY3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0
ci5sb2NhbE5hbWUoKSwgbV9jeSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgRngsIGZ4LCBT
VkdOYW1lczo6ZnhBdHRyLmxvY2FsTmFtZSgpLCBtX2Z4KQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVu
Z3RoLCBGeSwgZnksIFNWR05hbWVzOjpmeUF0dHIubG9jYWxOYW1lKCksIG1fZnkpCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFIsIHIsIFNWR05hbWVzOjpyQXR0ci5sb2NhbE5hbWUoKSwgbV9y
KQogCiB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUg
PSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN4QXR0
cikKLSAgICAgICAgY3hCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAg
ICAgIHNldEN4QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVl
KSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeUF0dHIpCi0gICAg
ICAgIGN5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRD
eUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJBdHRyKQotICAgICAgICByQmFz
ZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRSQmFzZVZhbHVl
KFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlT3RoZXIsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpmeEF0dHIpCi0gICAgICAgIGZ4QmFzZVZhbHVlKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRGeEJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6ZnlBdHRyKQotICAgICAgICBmeUJhc2VWYWx1ZSgpLT5zZXRWYWx1
ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0RnlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZQogICAgICAgICBTVkdHcmFkaWVu
dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtODMsMTUgKzg0LDQy
IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWQKICAgICBib29sIGJi
b3ggPSAoZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpF
Q1RCT1VORElOR0JPWCk7CiAgICAgYm9vbCBmeFNldCA9IGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6
ZnhBdHRyKTsKICAgICBib29sIGZ5U2V0ID0gaGFzQXR0cmlidXRlKFNWR05hbWVzOjpmeUF0dHIp
OwotICAgIGN4KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICBjeSgpLT5zZXRCYm94UmVs
YXRpdmUoYmJveCk7Ci0gICAgcigpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgZngoKS0+
c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIGZ5KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsK
LSAgICBmbG9hdCBfY3ggPSBjeCgpLT52YWx1ZSgpLCBfY3kgPSBjeSgpLT52YWx1ZSgpOwotICAg
IGZsb2F0IF9yID0gcigpLT52YWx1ZSgpOwotICAgIGZsb2F0IF9meCA9IGZ4U2V0ID8gZngoKS0+
dmFsdWUoKSA6IF9jeDsKLSAgICBmbG9hdCBfZnkgPSBmeVNldCA/IGZ5KCktPnZhbHVlKCkgOiBf
Y3k7CisgCisgICAgZmxvYXQgX2N4LCBfY3ksIF9yLCBfZngsIF9meTsKKworICAgIGlmIChiYm94
KSB7CisgICAgICAgIF9jeCA9IGN4KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAg
IGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oY3goKSkpCisgICAgICAgICAgICBfY3ggKj0gMTAw
LjA7CisKKyAgICAgICAgX2N5ID0gY3koKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAg
ICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbihjeSgpKSkKKyAgICAgICAgICAgIF9jeSAqPSAx
MDAuMDsKKworICAgICAgICBfciA9IHIoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAg
ICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbihyKCkpKQorICAgICAgICAgICAgX3IgKj0gMTAw
LjA7CisKKyAgICAgICAgaWYgKGZ4U2V0KSB7CisgICAgICAgICAgICBfZnggPSBmeCgpLnZhbHVl
SW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlv
bihmeCgpKSkKKyAgICAgICAgICAgICAgICBfZnggKj0gMTAwLjA7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgX2Z4ID0gX2N4OworICAgICAgICAKKyAgICAgICAgaWYgKGZ5U2V0KSB7Cisg
ICAgICAgICAgICBfZnkgPSBmeSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICAg
ICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbihmeSgpKSkKKyAgICAgICAgICAgICAgICBfZnkg
Kj0gMTAwLjA7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgX2Z5ID0gX2N5OworICAgIH0g
ZWxzZSB7CisgICAgICAgIF9jeCA9IGN4KCkudmFsdWUoKTsKKyAgICAgICAgX2N5ID0gY3koKS52
YWx1ZSgpOworICAgICAgICBfciA9IHIoKS52YWx1ZSgpOworICAgICAgICBfZnggPSBmeFNldCA/
IGZ4KCkudmFsdWUoKSA6IF9jeDsKKyAgICAgICAgX2Z5ID0gZnlTZXQgPyBmeSgpLnZhbHVlKCkg
OiBfY3k7CisgICAgfQogCiAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+
IGdyYWQgPSBXVEY6OnN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFk
aWVudD4oX2dyYWQpOwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXQ7CkBAIC0xMTIsMzIgKzE0MCwx
OCBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAgICAgICAgICAg
ICBSZWZQdHI8U1ZHUGFpbnRTZXJ2ZXJSYWRpYWxHcmFkaWVudD4gcmFkaWFsID0gV1RGOjpzdGF0
aWNfcG9pbnRlcl9jYXN0PFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+KHBzZXJ2ZXIpOwog
ICAgICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmN4QXR0cikpCiAgICAgICAg
ICAgICAgICAgX2N4ID0gcmFkaWFsLT5ncmFkaWVudENlbnRlcigpLngoKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGJib3gpCi0gICAgICAgICAgICAgICAgX2N4ICo9IDEwMC47CisKICAgICAgICAg
ICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpjeUF0dHIpKQogICAgICAgICAgICAgICAg
IF9jeSA9IHJhZGlhbC0+Z3JhZGllbnRDZW50ZXIoKS55KCk7Ci0gICAgICAgICAgICBlbHNlIGlm
IChiYm94KQotICAgICAgICAgICAgICAgIF9jeSAqPSAxMDAuOwogCiAgICAgICAgICAgICBpZiAo
IWZ4U2V0KQogICAgICAgICAgICAgICAgIF9meCA9IHJhZGlhbC0+Z3JhZGllbnRGb2NhbCgpLngo
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCi0gICAgICAgICAgICAgICAgX2Z4ICo9IDEw
MC47CisKICAgICAgICAgICAgIGlmICghZnlTZXQpCiAgICAgICAgICAgICAgICAgX2Z5ID0gcmFk
aWFsLT5ncmFkaWVudEZvY2FsKCkueSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoYmJveCkKLSAg
ICAgICAgICAgICAgICBfZnkgKj0gMTAwLjsKIAogICAgICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1
dGUoU1ZHTmFtZXM6OnJBdHRyKSkKICAgICAgICAgICAgICAgICBfciA9IHJhZGlhbC0+Z3JhZGll
bnRSYWRpdXMoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCi0gICAgICAgICAgICAgICAg
X3IgKj0gMTAwLjsKLSAgICAgICAgfSBlbHNlIGlmIChiYm94KSB7Ci0gICAgICAgICAgICBfY3gg
Kj0gMTAwLjA7Ci0gICAgICAgICAgICBfY3kgKj0gMTAwLjA7Ci0gICAgICAgICAgICBfZnggKj0g
MTAwLjA7Ci0gICAgICAgICAgICBfZnkgKj0gMTAwLjA7Ci0gICAgICAgICAgICBfciAqPSAxMDAu
MDsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpncmFk
aWVudFRyYW5zZm9ybUF0dHIpKQpAQCAtMTU2LDE0ICsxNzAsNiBAQCB2b2lkIFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAgICAgICAgICAgICBncmFkLT5zZXRHcmFkaWVudFNw
cmVhZE1ldGhvZChTUFJFQURNRVRIT0RfUkVQRUFUKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZ3JhZC0+c2V0R3JhZGllbnRTcHJlYWRNZXRob2QoU1BSRUFETUVUSE9EX1BBRCk7Ci0KLSAg
ICAgICAgaWYgKGJib3gpIHsKLSAgICAgICAgICAgIF9jeCAqPSAxMDAuMDsKLSAgICAgICAgICAg
IF9jeSAqPSAxMDAuMDsKLSAgICAgICAgICAgIF9meCAqPSAxMDAuMDsKLSAgICAgICAgICAgIF9m
eSAqPSAxMDAuMDsKLSAgICAgICAgICAgIF9yICo9IDEwMC4wOwotICAgICAgICB9CiAgICAgfQog
CiAgICAgZ3JhZC0+c2V0R3JhZGllbnRUcmFuc2Zvcm0obWF0KTsKQEAgLTE3NSw2ICsxODEsNiBA
QCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAKIH0KIAotLy8gdmlt
OnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCShyZXZp
c2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBr
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBA
IC0yMCw4ICsyMCw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0j
aWZuZGVmIEtTVkdfU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdf
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudF9ICisjZGVmaW5lIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudF9ICisKICNpZmRlZiBT
VkdfU1VQUE9SVAogCiAjaW5jbHVkZSA8U1ZHR3JhZGllbnRFbGVtZW50Lmg+CkBAIC00NiwxMSAr
NDcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBDeCwgY3gpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBDeSwgY3kpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xl
bmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBSLCByKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQ
dHI8U1ZHTGVuZ3RoPiwgRngsIGZ4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVu
Z3RoPiwgRnksIGZ5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgQ3gsIGN4KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgQ3ksIGN5KQorICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIFNW
R0xlbmd0aCwgUiwgcikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEZ4LCBmeCkKKyAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEZ5LCBmeSkKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMzUsMTIg
KzM1LDEyIEBAIFNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudChjb25zdCBRdWEKICAgICAs
IFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2
aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlH
SFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xl
bmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcngobmV3
IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9y
eShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAg
ICwgbV94KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hl
aWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV9yeCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgpCisgICAgLCBtX3J5KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTQ4
LDI4ICs0OCwyOCBAQCBTVkdSZWN0RWxlbWVudDo6flNWR1JlY3RFbGVtZW50KCkKIHsKIH0KIAot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCos
IExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feC5n
ZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdM
ZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgp
LCBtX3kuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6Ondp
ZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgSGVp
Z2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodC5n
ZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdM
ZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgUngsIHJ4LCBTVkdOYW1lczo6cnhBdHRyLmxvY2FsTmFt
ZSgpLCBtX3J4LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVs
ZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0
dHIubG9jYWxOYW1lKCksIG1fcnkuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFt
ZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFt
ZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRo
LCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9o
ZWlnaHQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUngsIHJ4LCBTVkdOYW1lczo6cnhBdHRyLmxvY2FsTmFt
ZSgpLCBtX3J4KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFJ5LCByeSwgU1ZHTmFtZXM6OnJ5QXR0ci5sb2Nh
bE5hbWUoKSwgbV9yeSkKIAogdm9pZCBTVkdSZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhB
dHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAg
ICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVl
KSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAg
ICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WUJh
c2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAgICAgICAgcnhCYXNl
VmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgICBzZXRSeEJhc2VWYWx1
ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cnlBdHRyKQotICAgICAgICByeUJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgIHNldFJ5QmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICB3aWR0aEJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIGhlaWdodEJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVl
KFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2Ugewog
ICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtODMsNDggKzgzLDIxIEBAIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXQKIAogUGF0aCBTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YSgpIGNv
bnN0CiB7Ci0gICAgRmxvYXRSZWN0IHJlY3QoeCgpLT52YWx1ZSgpLCB5KCktPnZhbHVlKCksIHdp
ZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52YWx1ZSgpKTsKKyAgICBGbG9hdFJlY3QgcmVjdCh4
KCkudmFsdWUoKSwgeSgpLnZhbHVlKCksIHdpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KCkudmFsdWUo
KSk7CiAKLSAgICBib29sIGhhc1J4ID0gaGFzQXR0cmlidXRlKCJyeCIpOwotICAgIGJvb2wgaGFz
UnkgPSBoYXNBdHRyaWJ1dGUoInJ5Iik7CisgICAgYm9vbCBoYXNSeCA9IGhhc0F0dHJpYnV0ZShT
VkdOYW1lczo6cnhBdHRyKTsKKyAgICBib29sIGhhc1J5ID0gaGFzQXR0cmlidXRlKFNWR05hbWVz
OjpyeUF0dHIpOwogICAgIGlmIChoYXNSeCB8fCBoYXNSeSkgewotICAgICAgICBmbG9hdCBfcngg
PSBoYXNSeCA/IHJ4KCktPnZhbHVlKCkgOiByeSgpLT52YWx1ZSgpOwotICAgICAgICBmbG9hdCBf
cnkgPSBoYXNSeSA/IHJ5KCktPnZhbHVlKCkgOiByeCgpLT52YWx1ZSgpOworICAgICAgICBmbG9h
dCBfcnggPSBoYXNSeCA/IHJ4KCkudmFsdWUoKSA6IHJ5KCkudmFsdWUoKTsKKyAgICAgICAgZmxv
YXQgX3J5ID0gaGFzUnkgPyByeSgpLnZhbHVlKCkgOiByeCgpLnZhbHVlKCk7CiAgICAgICAgIHJl
dHVybiBQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKHJlY3QsIEZsb2F0U2l6ZShfcngsIF9y
eSkpOwogICAgIH0KIAogICAgIHJldHVybiBQYXRoOjpjcmVhdGVSZWN0YW5nbGUocmVjdCk7CiB9
CiAKLWNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIFNWR1JlY3RFbGVtZW50OjpwdXNoQXR0cmlidXRl
Q29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KQotewotICAgIC8vIEFsbCBh
dHRyaWJ1dGUncyBjb250ZXh0cyBhcmUgZXF1YWwgKHNvIGp1c3QgdGFrZSB0aGUgb25lIGZyb20g
J3gnKS4KLSAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiByZXN0b3JlID0geCgpLT5jb250ZXh0
KCk7Ci0KLSAgICB4KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgeSgpLT5zZXRDb250ZXh0
KGNvbnRleHQpOwotICAgIHdpZHRoKCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgaGVpZ2h0
KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgCi0gICAgU1ZHU3R5bGVkRWxlbWVudDo6cHVz
aEF0dHJpYnV0ZUNvbnRleHQoY29udGV4dCk7Ci0gICAgcmV0dXJuIHJlc3RvcmU7Ci19Ci0KLWJv
b2wgU1ZHUmVjdEVsZW1lbnQ6Omhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdAotewotICAgIGlm
ICh4KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdF
IHx8Ci0gICAgICAgIHkoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBF
X1BFUkNFTlRBR0UgfHwKLSAgICAgICAgd2lkdGgoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6
OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgaGVpZ2h0KCktPnVuaXRUeXBl
KCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHJ4
KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8
Ci0gICAgICAgIHJ5KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9Q
RVJDRU5UQUdFKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShyZXZpc2lvbiAx
ODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAg
ICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAK
ICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdS
ZWN0RWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR1JlY3RFbGVtZW50SW1wbF9ICisjaWZu
ZGVmIFNWR1JlY3RFbGVtZW50X0gKKyNkZWZpbmUgU1ZHUmVjdEVsZW1lbnRfSAorCiAjaWZkZWYg
U1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIK
QEAgLTMxLDcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAgICBjbGFzcyBTVkdM
ZW5ndGg7CiAgICAgY2xhc3MgU1ZHUmVjdEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVz
dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLApAQCAt
NDksMjIgKzQ5LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0
aERhdGEoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQq
IHB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOwot
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCi0gICAgICAgIHZpcnR1YWwgYm9v
bCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3Q7Ci0KICAgICBwcml2YXRlOgogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVu
Z3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBo
ZWlnaHQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxl
bWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFJ4LCByeCkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgUnksIHJ5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xl
bmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwg
U1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3Ro
LCBSeCwgcngpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0
RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFJ5LCByeSkKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2
aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEs
NiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBP
UlQKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAKQEAgLTUzLDE5ICs1NCwxNSBAQCBTVkdT
VkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KGNvbnN0IFF1YWxpCiAgICAgLCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCkKICAgICAsIFNWR0ZpdFRvVmlld0JveCgpCiAgICAgLCBTVkdab29t
QW5kUGFuKCkKKyAgICAsIG1feCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRo
KQorICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKICAgICAsIG1fdXNlQ3Vy
cmVudFZpZXcoZmFsc2UpCiAgICAgLCBtX3RpbWVTY2hlZHVsZXIobmV3IFRpbWVTY2hlZHVsZXIo
ZG9jKSkKIHsKLSAgICBjb25zdCBTVkdFbGVtZW50KiB2aWV3cG9ydCA9IG93bmVyRG9jdW1lbnQo
KS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0gdGhpcyA/IHRoaXMgOiB2aWV3cG9ydEVsZW1lbnQoKTsK
LSAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0ID0gb3duZXJEb2N1bWVudCgpLT5k
b2N1bWVudEVsZW1lbnQoKSA9PSB0aGlzID8gMCA6IHRoaXM7Ci0KLSAgICBtX3ggPSBuZXcgU1ZH
TGVuZ3RoKGNvbnRleHQsIExNX1dJRFRILCB2aWV3cG9ydCk7Ci0gICAgbV95ID0gbmV3IFNWR0xl
bmd0aChjb250ZXh0LCBMTV9IRUlHSFQsIHZpZXdwb3J0KTsKLSAgICBtX3dpZHRoID0gbmV3IFNW
R0xlbmd0aChjb250ZXh0LCBMTV9XSURUSCwgdmlld3BvcnQpOwotICAgIG1faGVpZ2h0ID0gbmV3
IFNWR0xlbmd0aChjb250ZXh0LCBMTV9IRUlHSFQsIHZpZXdwb3J0KTsKLQotICAgIG1fd2lkdGgt
PnNldFZhbHVlQXNTdHJpbmcoIjEwMCUiKTsKLSAgICBtX2hlaWdodC0+c2V0VmFsdWVBc1N0cmlu
ZygiMTAwJSIpOworICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgsICIxMDAlIikpOworICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgIjEwMCUiKSk7CiB9CiAKIFNWR1NWR0VsZW1lbnQ6On5TVkdT
VkdFbGVtZW50KCkKQEAgLTczLDEwICs3MCwxMCBAQCBTVkdTVkdFbGVtZW50Ojp+U1ZHU1ZHRWxl
bWVudCgpCiAgICAgZGVsZXRlIG1fdGltZVNjaGVkdWxlcjsKIH0KIAotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgs
IFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBs
ZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVu
Z3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUo
KSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0Vs
ZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFt
ZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwg
TGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2Nh
bE5hbWUoKSwgbV9oZWlnaHQpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6
Y29udGVudFNjcmlwdFR5cGUoKSBjb25zdAogewpAQCAtMTA0LDEwICsxMDEsMTAgQEAgdm9pZCBT
VkdTVkdFbGVtZW50OjpzZXRDb250ZW50U3R5bGVUeXBlKAogCiBGbG9hdFJlY3QgU1ZHU1ZHRWxl
bWVudDo6dmlld3BvcnQoKSBjb25zdAogewotICAgIGRvdWJsZSBfeCA9IHgoKS0+dmFsdWUoKTsK
LSAgICBkb3VibGUgX3kgPSB5KCktPnZhbHVlKCk7Ci0gICAgZG91YmxlIHcgPSB3aWR0aCgpLT52
YWx1ZSgpOwotICAgIGRvdWJsZSBoID0gaGVpZ2h0KCktPnZhbHVlKCk7CisgICAgZG91YmxlIF94
ID0geCgpLnZhbHVlKCk7CisgICAgZG91YmxlIF95ID0geSgpLnZhbHVlKCk7CisgICAgZG91Ymxl
IHcgPSB3aWR0aCgpLnZhbHVlKCk7CisgICAgZG91YmxlIGggPSBoZWlnaHQoKS52YWx1ZSgpOwog
ICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3LCBo
KTsKICAgICB2aWV3Qm94Lm1hcChfeCwgX3ksICZfeCwgJl95KTsKICAgICB2aWV3Qm94Lm1hcCh3
LCBoLCAmdywgJmgpOwpAQCAtMTkwLDE1ICsxODcsMTUgQEAgdm9pZCBTVkdTVkdFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZQogICAgICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6Om9uem9vbUF0dHIpCiAgICAgICAgICAgICBhZGRTVkdXaW5kb3dFdmVudExpc3RuZXIo
em9vbUV2ZW50LCBhdHRyKTsKICAgICB9Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6eEF0dHIpIHsKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVl
KTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAg
ICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKLSAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHdpZHRo
QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQorICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjp5QXR0cikKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgeworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NfUFJPUF9XSURUSCwgdmFsdWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIGhlaWdodEJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVl
KFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgICAgICBhZGRD
U1NQcm9wZXJ0eShhdHRyLCBDU1NfUFJPUF9IRUlHSFQsIHZhbHVlKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpAQCAtMjc2
LDkgKzI3Myw5IEBAIGRvdWJsZSBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdOdW1iZXIoKQogICAg
IHJldHVybiAwLjA7CiB9CiAKLVNWR0xlbmd0aCogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTGVu
Z3RoKCkKK1NWR0xlbmd0aCBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdMZW5ndGgoKQogewotICAg
IHJldHVybiBuZXcgU1ZHTGVuZ3RoKDApOworICAgIHJldHVybiBTVkdMZW5ndGgoKTsKIH0KIAog
U1ZHQW5nbGUqIFNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR0FuZ2xlKCkKQEAgLTMxNiwxMCArMzEz
LDEwIEBAIFNWR1RyYW5zZm9ybSogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHIKIEFmZmluZVRy
YW5zZm9ybSBTVkdTVkdFbGVtZW50OjpnZXRDVE0oKSBjb25zdAogewogICAgIEFmZmluZVRyYW5z
Zm9ybSBtYXQ7Ci0gICAgbWF0LnRyYW5zbGF0ZSh4KCktPnZhbHVlKCksIHkoKS0+dmFsdWUoKSk7
CisgICAgbWF0LnRyYW5zbGF0ZSh4KCkudmFsdWUoKSwgeSgpLnZhbHVlKCkpOwogCiAgICAgaWYg
KGF0dHJpYnV0ZXMoKS0+Z2V0TmFtZWRJdGVtKFNWR05hbWVzOjp2aWV3Qm94QXR0cikpIHsKLSAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdp
ZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52YWx1ZSgpKTsKKyAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCkudmFsdWUoKSwgaGVp
Z2h0KCkudmFsdWUoKSk7CiAgICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCkBA
IC0zMjksMTAgKzMyNiwxMCBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0Q1RN
KCkgCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QK
IHsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0ID0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6
Z2V0U2NyZWVuQ1RNKCk7Ci0gICAgbWF0LnRyYW5zbGF0ZSh4KCktPnZhbHVlKCksIHkoKS0+dmFs
dWUoKSk7CisgICAgbWF0LnRyYW5zbGF0ZSh4KCkudmFsdWUoKSwgeSgpLnZhbHVlKCkpOwogCiAg
ICAgaWYgKGF0dHJpYnV0ZXMoKS0+Z2V0TmFtZWRJdGVtKFNWR05hbWVzOjp2aWV3Qm94QXR0cikp
IHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNm
b3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52YWx1ZSgpKTsKKyAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCkudmFsdWUo
KSwgaGVpZ2h0KCkudmFsdWUoKSk7CiAgICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAg
fQogCkBAIC00MTAsNiArNDA3LDYgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKEF0dAogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAog
CisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZp
c2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIsNiAr
MjIsNyBAQAogCiAjaWZuZGVmIFNWR1NWR0VsZW1lbnRfSAogI2RlZmluZSBTVkdTVkdFbGVtZW50
X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmgiCkBAIC0xMDQsNyArMTA1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAg
ICAgdm9pZCBkZXNlbGVjdEFsbCgpOwogCiAgICAgICAgIHN0YXRpYyBkb3VibGUgY3JlYXRlU1ZH
TnVtYmVyKCk7Ci0gICAgICAgIHN0YXRpYyBTVkdMZW5ndGgqIGNyZWF0ZVNWR0xlbmd0aCgpOwor
ICAgICAgICBzdGF0aWMgU1ZHTGVuZ3RoIGNyZWF0ZVNWR0xlbmd0aCgpOwogICAgICAgICBzdGF0
aWMgU1ZHQW5nbGUqIGNyZWF0ZVNWR0FuZ2xlKCk7CiAgICAgICAgIHN0YXRpYyBGbG9hdFBvaW50
IGNyZWF0ZVNWR1BvaW50KCk7CiAgICAgICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gY3JlYXRl
U1ZHTWF0cml4KCk7CkBAIC0xMzksMTAgKzE0MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdC
b3gsIEZsb2F0UmVjdCwgVmlld0JveCwgdmlld0JveCkKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvKiwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3Ro
PiwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0Vs
ZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5n
dGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0
aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0Vs
ZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFdp
ZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NW
R0VsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKIAogICAgICAg
ICBib29sIG1fdXNlQ3VycmVudFZpZXc7CiAgICAgICAgIFRpbWVTY2hlZHVsZXIqIG1fdGltZVNj
aGVkdWxlcjsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzMsMTQgKzEzMyw2IEBAIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6
dXBkYXRlQ2FudmFzSXRlbSgKICAgICBtX3VwZGF0ZVZlY3RvcmlhbCA9IGZhbHNlOwogfQogCi1j
b25zdCBTVkdTdHlsZWRFbGVtZW50KiBTVkdTdHlsZWRFbGVtZW50OjpwdXNoQXR0cmlidXRlQ29u
dGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KikKLXsKLSAgICBpZiAodmlldygpKQotICAgICAg
ICBzdGF0aWNfY2FzdDxSZW5kZXJQYXRoKj4ocmVuZGVyZXIoKSktPnNldFBhdGgodG9QYXRoRGF0
YSgpKTsKLQotICAgIHJldHVybiAwOwotfQotCiB9CiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGFibGUu
aCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlBhdGguaCIKQEAgLTU2LDE0
ICs1Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRl
Q2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CiAKLSAgICAg
ICAgLy8gSW1hZ2luZSB3ZSdyZSBhIDxyZWN0PiBpbnNpZGUgb2YgYSA8cGF0dGVybj4gc2VjdGlv
biB3aXRoIHBhdHRlcm5Db250ZW50VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IgotICAgICAgICAv
LyBhbmQgb3VyICd3aWR0aCcgYXR0cmlidXRlIGlzIHNldCB0byA1MCUuIFdoZW4gdGhlIHBhdHRl
cm4gZ2V0cyByZWZlcmVuY2VkIGl0IGtub3dzIHRoZSAiYmJveCIKLSAgICAgICAgLy8gb2YgaXQn
cyB1c2VyIGFuZCBoYXMgdG8gcHVzaCB0aGUgImFjdGl2ZSBjbGllbnQncyBiYm94IiBhcyBuZXcg
YXR0cmlidXRlIGNvbnRleHQgdG8gYWxsIGF0dHJpYnV0ZXMKLSAgICAgICAgLy8gb2YgdGhlICdy
ZWN0Jy4gVGhpcyBmdW5jdGlvbiBhbHNvIHJldHVybnMgdGhlIG9sZCBhdHRyaWJ1dGUgY29udGV4
dCwgdG8gYmUgYWJsZSB0byByZXN0b3JlIGl0Li4uCi0gICAgICAgIHZpcnR1YWwgY29uc3QgU1ZH
U3R5bGVkRWxlbWVudCogcHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVu
dCogY29udGV4dCk7Ci0KLSAgICAgICAgdmlydHVhbCBib29sIGhhc1BlcmNlbnRhZ2VWYWx1ZXMo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lk
IHVwZGF0ZUNhbnZhc0l0ZW0oKTsgLy8gSGFuZGxlcyAicGF0aCBkYXRhIiBvYmplY3QgY2hhbmdl
cy4uLiAobm90IGZvciBzdHlsZS90cmFuc2Zvcm0hKQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OlNWR1RleHRDb250ZW50RWxlCiAg
ICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX3RleHRMZW5ndGgobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9XSURUSCkpCisgICAgLCBtX3RleHRMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQog
ICAgICwgbV9sZW5ndGhBZGp1c3QoMCkKIHsKIH0KQEAgLTQ2LDcgKzQ2LDcgQEAgU1ZHVGV4dENv
bnRlbnRFbGVtZW50Ojp+U1ZHVGV4dENvbnRlbnRFbAogewogfQogCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwg
bGVuZ3RoLCBUZXh0TGVuZ3RoLCB0ZXh0TGVuZ3RoLCBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIu
bG9jYWxOYW1lKCksIG1fdGV4dExlbmd0aC5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
VGV4dExlbmd0aCwgdGV4dExlbmd0aCwgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLmxvY2FsTmFt
ZSgpLCBtX3RleHRMZW5ndGgpCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0
Q29udGVudEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBMZW5ndGhBZGp1
c3QsIGxlbmd0aEFkanVzdCwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIubG9jYWxOYW1lKCks
IG1fbGVuZ3RoQWRqdXN0KQogCiBsb25nIFNWR1RleHRDb250ZW50RWxlbWVudDo6Z2V0TnVtYmVy
T2ZDaGFycygpIGNvbnN0CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpzZWxlY3RTdWJTdHIKIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgLy9pZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyKQotICAgIC8vICAgIHhCYXNlVmFsdWUo
KS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgLy8gICAgc2V0WEJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIC8vZWxzZQogICAgIHsK
ICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCShyZXZpc2lvbiAxODI2
MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRl
OgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBUZXh0TGVuZ3RoLCB0ZXh0TGVuZ3RoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0
aCwgVGV4dExlbmd0aCwgdGV4dExlbmd0aCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgaW50LCBpbnQsIExlbmd0aEFkanVzdCwg
bGVuZ3RoQWRqdXN0KQogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
VGV4dC5oIgorI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aExpc3Qu
aCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNWR1RTcGFuRWxlbWVu
dC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEzICs1NiwxMyBAQCB2
b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlTWFwCiAgICAgY29uc3QgU3RyaW5n
JiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgCiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhCYXNlVmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVj
YXRlZFN0cmluZygpLCB0aGlzLCBMTV9XSURUSCk7CisgICAgICAgIHhCYXNlVmFsdWUoKS0+cGFy
c2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMZW5ndGhNb2RlV2lkdGgpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNl
VmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMTV9IRUlHSFQp
OworICAgICAgICB5QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSwg
dGhpcywgTGVuZ3RoTW9kZUhlaWdodCk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjpkeEF0dHIpCi0gICAgICAgIGR4QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJl
Y2F0ZWRTdHJpbmcoKSwgdGhpcywgTE1fV0lEVEgpOworICAgICAgICBkeEJhc2VWYWx1ZSgpLT5w
YXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRoaXMsIExlbmd0aE1vZGVXaWR0aCk7CiAg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpkeUF0dHIpCi0gICAgICAgIGR5
QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdGhpcywgTE1fSEVJ
R0hUKTsKKyAgICAgICAgZHlCYXNlVmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmlu
ZygpLCB0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpCiAgICAgICAgIHJvdGF0ZUJhc2VWYWx1ZSgpLT5wYXJz
ZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpOwogICAgIGVsc2UKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtk
ZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVy
bWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEtERSBwcm9qZWN0CkBAIC0yMSw2ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKIApAQCAt
NDIsMTAgKzQzLDEwIEBAIFNWR1VzZUVsZW1lbnQ6OlNWR1VzZUVsZW1lbnQoY29uc3QgUXVhbGkK
ICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCkKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgo
dGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBT
VkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVp
Z2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisg
ICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1f
aGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9CiAKQEAgLTUzLDIzICs1NCwyMyBA
QCBTVkdVc2VFbGVtZW50Ojp+U1ZHVXNlRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3Ro
LCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feC5nZXQoKSkKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwg
bGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCosIExl
bmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1l
KCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VF
bGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05h
bWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodC5nZXQoKSkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGgp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9j
YWxOYW1lKCksIG1faGVpZ2h0KQogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICAKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0
dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAg
ICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVl
KSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0g
ICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAg
ICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1
ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikK
LSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAg
ICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQs
IHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47CkBAIC05Myw4ICs5NCw4IEBAIHZv
aWQgU1ZHVXNlRWxlbWVudDo6Y2xvc2VSZW5kZXJlcigpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBmbG9hdCBfeCA9IHgoKS0+dmFsdWUoKSwgX3kgPSB5KCktPnZhbHVlKCk7Ci0gICAg
ZmxvYXQgX3cgPSB3aWR0aCgpLT52YWx1ZSgpLCBfaCA9IGhlaWdodCgpLT52YWx1ZSgpOworICAg
IGZsb2F0IF94ID0geCgpLnZhbHVlKCksIF95ID0geSgpLnZhbHVlKCk7CisgICAgZmxvYXQgX3cg
PSB3aWR0aCgpLnZhbHVlKCksIF9oID0gaGVpZ2h0KCkudmFsdWUoKTsKICAgICAKICAgICBTdHJp
bmcgd1N0cmluZyA9IFN0cmluZzo6bnVtYmVyKF93KTsKICAgICBTdHJpbmcgaFN0cmluZyA9IFN0
cmluZzo6bnVtYmVyKF9oKTsKQEAgLTE1OCw2ICsxNTksNiBAQCBSZW5kZXJPYmplY3QqIFNWR1Vz
ZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8v
IFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1VzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdVc2VF
bGVtZW50LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0
CkBAIC0yMCw4ICsyMCw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwog
Ci0jaWZuZGVmIEtTVkdfU1ZHVXNlRWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR1VzZUVs
ZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHVXNlRWxlbWVudF9ICisjZGVmaW5lIFNWR1VzZUVsZW1l
bnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQuaCIKQEAgLTYzLDEwICs2NCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RF
Q0xBUkFUSU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJlZikKIAotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwg
WSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1l
bnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwg
WCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1l
bnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRo
LCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVs
ZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24g
MTgyNjApCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTY0LDggKzU2NCw4IEBAIHN0YXRpYyBDdXJzb3Igc2VsZWN0Q3Vyc29yKGNvbnN0IE1vdXNl
RXYKICAgICAgICAgICAgIGlmICghY2ltYWdlKSB7CiAgICAgICAgICAgICAgICAgRWxlbWVudCog
ZSA9IG5vZGUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKCgqY3Vyc29ycylbaV0uY3Vyc29y
RnJhZ21lbnRJZCk7CiAgICAgICAgICAgICAgICAgaWYgKGUgJiYgZS0+aGFzVGFnTmFtZShjdXJz
b3JUYWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhvdFNwb3Quc2V0WChpbnQoc3RhdGljX2Nh
c3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT54KCktPnZhbHVlKCkpKTsKLSAgICAgICAgICAgICAg
ICAgICAgaG90U3BvdC5zZXRZKGludChzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSkt
PnkoKS0+dmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBob3RTcG90LnNldFgoaW50KHN0
YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eCgpLnZhbHVlKCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaG90U3BvdC5zZXRZKGludChzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50
Kj4oZSktPnkoKS52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIGNpbWFnZSA9IHN0YXRp
Y19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3Jl
aWduT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3Jl
aWduT2JqZWN0LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBSZW5k
ZXJGb3JlaWduT2JqZWN0OjpSZW5kZXJGb3JlaWduT2JqZWN0CiBBZmZpbmVUcmFuc2Zvcm0gUmVu
ZGVyRm9yZWlnbk9iamVjdDo6dHJhbnNsYXRpb25Gb3JBdHRyaWJ1dGVzKCkKIHsKICAgICBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudCogZm9yZWlnbiA9IHN0YXRpY19jYXN0PFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50Kj4oZWxlbWVudCgpKTsKLSAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCkudHJh
bnNsYXRlKGZvcmVpZ24tPngoKS0+dmFsdWUoKSwgZm9yZWlnbi0+eSgpLT52YWx1ZSgpKTsKKyAg
ICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRlKGZvcmVpZ24tPngoKS52YWx1ZSgp
LCBmb3JlaWduLT55KCkudmFsdWUoKSk7CiB9CiAKIHZvaWQgUmVuZGVyRm9yZWlnbk9iamVjdDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSkKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjgsMTEgKzQyOCw2
IEBAIHZvaWQgUmVuZGVyUGF0aDo6ZHJhd01hcmtlcnNJZk5lZWRlZChHcmEKICAgICBkcmF3TWFy
a2VyV2l0aERhdGEoY29udGV4dCwgZGF0YS5wcmV2aW91c01hcmtlckRhdGEpOwogfQogCi1ib29s
IFJlbmRlclBhdGg6Omhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCgpKS0+aGFzUGVyY2VudGFnZVZh
bHVlcygpOwotfQotCiB9CiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVApJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclBhdGguaAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQ
YXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDggKzkyLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkcmF3TWFya2Vyc0lmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IFBhdGgmKSBjb25zdDsKICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VC
Qm94KCkgY29uc3Q7CiAKLSAgICBib29sIGhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdDsKLQog
cHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1hcEFic29sdXRlUG9pbnRUb0xvY2FsKGNvbnN0IEZs
b2F0UG9pbnQmKSBjb25zdDsKICAgICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R0NvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgdm9p
ZCBSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAKICAgICBSZW5kZXJPYmplY3QqIGNoaWxk
ID0gZmlyc3RDaGlsZCgpOwogICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICBpZiAoIWNoaWxk
LT5pc1JlbmRlclBhdGgoKSB8fCBzdGF0aWNfY2FzdDxSZW5kZXJQYXRoKj4oY2hpbGQpLT5oYXNQ
ZXJjZW50YWdlVmFsdWVzKCkpCisgICAgICAgIC8vaWYgKCFjaGlsZC0+aXNSZW5kZXJQYXRoKCkp
CiAgICAgICAgICAgICBjaGlsZC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAgIGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQpAQCAtMjA2LDE1ICsyMDYsMTUgQEAgdm9p
ZCBSZW5kZXJTVkdDb250YWluZXI6OmNhbGNWaWV3cG9ydCgpCiAgICAgU1ZHRWxlbWVudCogc3Zn
ZWxlbSA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihlbGVtZW50KCkpOwogICAgIGlmIChzdmdl
bGVtLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpKSB7CiAgICAgICAgIFNWR1NWR0VsZW1l
bnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NWR0VsZW1lbnQqPihlbGVtZW50KCkpOwotICAgICAg
ICBkb3VibGUgeCA9IHN2Zy0+eCgpLT52YWx1ZSgpOwotICAgICAgICBkb3VibGUgeSA9IHN2Zy0+
eSgpLT52YWx1ZSgpOwotICAgICAgICBkb3VibGUgdyA9IHN2Zy0+d2lkdGgoKS0+dmFsdWUoKTsK
LSAgICAgICAgZG91YmxlIGggPSBzdmctPmhlaWdodCgpLT52YWx1ZSgpOworICAgICAgICBkb3Vi
bGUgeCA9IHN2Zy0+eCgpLnZhbHVlKCk7CisgICAgICAgIGRvdWJsZSB5ID0gc3ZnLT55KCkudmFs
dWUoKTsKKyAgICAgICAgZG91YmxlIHcgPSBzdmctPndpZHRoKCkudmFsdWUoKTsKKyAgICAgICAg
ZG91YmxlIGggPSBzdmctPmhlaWdodCgpLnZhbHVlKCk7CiAgICAgICAgIG1fdmlld3BvcnQgPSBG
bG9hdFJlY3QoeCwgeSwgdywgaCk7CiAgICAgfSBlbHNlIGlmIChzdmdlbGVtLT5oYXNUYWdOYW1l
KFNWR05hbWVzOjptYXJrZXJUYWcpKSB7CiAgICAgICAgIFNWR01hcmtlckVsZW1lbnQqIHN2ZyA9
IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihlbGVtZW50KCkpOwotICAgICAgICAgICAg
ZG91YmxlIHcgPSBzdmctPm1hcmtlcldpZHRoKCktPnZhbHVlKCk7Ci0gICAgICAgIGRvdWJsZSBo
ID0gc3ZnLT5tYXJrZXJIZWlnaHQoKS0+dmFsdWUoKTsKKyAgICAgICAgZG91YmxlIHcgPSBzdmct
Pm1hcmtlcldpZHRoKCkudmFsdWUoKTsKKyAgICAgICAgZG91YmxlIGggPSBzdmctPm1hcmtlckhl
aWdodCgpLnZhbHVlKCk7CiAgICAgICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3QoMCwgMCwgdywg
aCk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2
aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlv
dXQoKQogRmxvYXRSZWN0IFJlbmRlclNWR0ltYWdlOjpyZWxhdGl2ZUJCb3goYm9vbCBpbmNsdWRl
U3Ryb2tlKSBjb25zdAogewogICAgIFNWR0ltYWdlRWxlbWVudCAqaW1hZ2UgPSBzdGF0aWNfY2Fz
dDxTVkdJbWFnZUVsZW1lbnQqPihub2RlKCkpOwotICAgIHJldHVybiBGbG9hdFJlY3QoaW1hZ2Ut
PngoKS0+dmFsdWUoKSwgaW1hZ2UtPnkoKS0+dmFsdWUoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOwor
ICAgIHJldHVybiBGbG9hdFJlY3QoaW1hZ2UtPngoKS52YWx1ZSgpLCBpbWFnZS0+eSgpLnZhbHVl
KCksIHdpZHRoKCksIGhlaWdodCgpKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VD
aGFuZ2VkKENhY2hlZEltYWdlKiBpbWFnZSkKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIFJlbmRl
clNWR0ltYWdlOjppbWFnZUNoYW5nZWQoQ2FjaGVkCiBJbnRSZWN0IFJlbmRlclNWR0ltYWdlOjpn
ZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCkKIHsKICAgICBTVkdJbWFnZUVsZW1lbnQgKmltYWdlID0g
c3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVw
YWludFJlY3QgPSBhYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoRmxvYXRSZWN0KGltYWdlLT54
KCktPnZhbHVlKCksIGltYWdlLT55KCktPnZhbHVlKCksIHdpZHRoKCksIGhlaWdodCgpKSk7Cisg
ICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KEZs
b2F0UmVjdChpbWFnZS0+eCgpLnZhbHVlKCksIGltYWdlLT55KCkudmFsdWUoKSwgd2lkdGgoKSwg
aGVpZ2h0KCkpKTsKIAogICAgIC8vIEZpbHRlcnMgY2FuIGV4cGFuZCB0aGUgYm91bmRpbmcgYm94
CiAgICAgU1ZHUmVzb3VyY2VGaWx0ZXIgKmZpbHRlciA9IGdldEZpbHRlckJ5SWQoZG9jdW1lbnQo
KSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsdGVyKCkuc3Vic3RyaW5nKDEpKTsKQEAgLTI1Niw3
ICsyNTYsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjphYnNvbHV0ZVJlY3RzKFZlY3RvCiBBZmZp
bmVUcmFuc2Zvcm0gUmVuZGVyU1ZHSW1hZ2U6OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpCiB7
CiAgICAgU1ZHSW1hZ2VFbGVtZW50ICppbWFnZSA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVu
dCo+KG5vZGUoKSk7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShpbWFn
ZS0+eCgpLT52YWx1ZSgpLCBpbWFnZS0+eSgpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gQWZmaW5l
VHJhbnNmb3JtKCkudHJhbnNsYXRlKGltYWdlLT54KCkudmFsdWUoKSwgaW1hZ2UtPnkoKS52YWx1
ZSgpKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJldmlz
aW9uIDE4MjYwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY2LDggKzY2LDggQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpsYXlvdXQoKQog
ICAgICAgICBvbGRCb3VuZHMgPSBtX2Fic29sdXRlQm91bmRzOwogICAgIFNWR1RleHRFbGVtZW50
KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8U1ZHVGV4dEVsZW1lbnQqPihlbGVtZW50KCkpOwogICAgIC8v
RklYTUU6ICBuZWVkIHRvIGFsbG93IGZsb2F0aW5nIHBvaW50IHBvc2l0aW9ucwotICAgIGludCB4
T2Zmc2V0ID0gKGludCkodGV4dC0+eCgpLT5nZXRGaXJzdCgpID8gdGV4dC0+eCgpLT5nZXRGaXJz
dCgpLT52YWx1ZSgpIDogMCk7Ci0gICAgaW50IHlPZmZzZXQgPSAoaW50KSh0ZXh0LT55KCktPmdl
dEZpcnN0KCkgPyB0ZXh0LT55KCktPmdldEZpcnN0KCktPnZhbHVlKCkgOiAwKTsKKyAgICBpbnQg
eE9mZnNldCA9IChpbnQpKHRleHQtPngoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpKTsKKyAgICBpbnQg
eU9mZnNldCA9IChpbnQpKHRleHQtPnkoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpKTsKICAgICBzZXRQ
b3MoeE9mZnNldCwgeU9mZnNldCk7CiAgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOwogICAgIApJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDE4MjYw
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNSw5ICsxMjUsOCBAQCBzdGF0aWMgYm9vbCB0cmFuc2xhdGVCb3goSW5saW5lQm94
KiBib3gsCiAgICAgICAgIElubGluZUZsb3dCb3gqIGZsb3cgPSBzdGF0aWNfY2FzdDxJbmxpbmVG
bG93Qm94Kj4oYm94KTsKICAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCogdGV4dCA9
IHN0YXRpY19jYXN0PFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqPihib3gtPm9iamVjdCgpLT5l
bGVtZW50KCkpOwogICAgICAgICAKLSAgICAgICAgaWYgKHRvcExldmVsfHwhKHRleHQtPngoKS0+
Z2V0Rmlyc3QoKSB8fCB0ZXh0LT55KCktPmdldEZpcnN0KCkgfHwgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAodGV4dC0+ZHgoKS0+Z2V0Rmlyc3QoKSAmJiB0ZXh0LT5keCgpLT5nZXRGaXJzdCgp
LT52YWx1ZSgpKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgKHRleHQtPmR5KCktPmdldEZp
cnN0KCkgJiYgdGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSkpKSB7CisgICAgICAgIGlm
ICh0b3BMZXZlbCB8fCAhKHRleHQtPngoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpIHx8IHRleHQtPnko
KS0+Z2V0Rmlyc3QoKS52YWx1ZSgpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQt
PmR4KCktPmdldEZpcnN0KCkudmFsdWUoKSB8fCB0ZXh0LT5keSgpLT5nZXRGaXJzdCgpLnZhbHVl
KCkpKSB7CiAgICAgICAgICAgICBib3gtPnNldFhQb3MoYm94LT54UG9zKCkgKyB4KTsKICAgICAg
ICAgICAgIGJveC0+c2V0WVBvcyhib3gtPnlQb3MoKSArIHkpOwogICAgICAgICAgICAgZm9yIChJ
bmxpbmVCb3gqIGN1cnIgPSBmbG93LT5maXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5u
ZXh0T25MaW5lKCkpIApAQCAtMTY4LDEyICsxNjcsMTMgQEAgc3RhdGljIGludCBwbGFjZVBvc2l0
aW9uZWRCb3hlc0hvcml6b250YQogICAgICAgICAgICAgYXNzZXJ0KGN1cnItPm9iamVjdCgpLT5p
c0lubGluZUZsb3coKSk7CiAgICAgICAgICAgICBJbmxpbmVGbG93Qm94KiBmbG93ID0gc3RhdGlj
X2Nhc3Q8SW5saW5lRmxvd0JveCo+KGN1cnIpOwogICAgICAgICAgICAgU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudCogdGV4dCA9IHN0YXRpY19jYXN0PFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQq
PihmbG93LT5vYmplY3QoKS0+ZWxlbWVudCgpKTsKLSAgICAgICAgICAgIHggKz0gKGludCkodGV4
dC0+ZHgoKS0+Z2V0Rmlyc3QoKSA/IHRleHQtPmR4KCktPmdldEZpcnN0KCktPnZhbHVlKCkgOiAw
KTsKLSAgICAgICAgICAgIGlmICh0ZXh0LT54KCktPmdldEZpcnN0KCkpCi0gICAgICAgICAgICAg
ICAgeCA9IChpbnQpKHRleHQtPngoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSAtIHhQb3MpOwotICAg
ICAgICAgICAgaWYgKHRleHQtPngoKS0+Z2V0Rmlyc3QoKSB8fCB0ZXh0LT55KCktPmdldEZpcnN0
KCkgfHwgCi0gICAgICAgICAgICAgICAgKHRleHQtPmR4KCktPmdldEZpcnN0KCkgJiYgdGV4dC0+
ZHgoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSkgfHwKLSAgICAgICAgICAgICAgICAodGV4dC0+ZHko
KS0+Z2V0Rmlyc3QoKSAmJiB0ZXh0LT5keSgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpKSkgeworICAg
ICAgICAgICAgeCArPSAoaW50KSh0ZXh0LT5keCgpLT5nZXRGaXJzdCgpLnZhbHVlKCkpOworICAg
ICAgICAgICAgaWYgKHRleHQtPngoKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkKKyAgICAgICAgICAg
ICAgICB4ID0gKGludCkodGV4dC0+eCgpLT5nZXRGaXJzdCgpLnZhbHVlKCkgLSB4UG9zKTsKKyAg
ICAgICAgICAgIGlmICh0ZXh0LT54KCktPm51bWJlck9mSXRlbXMoKSA+IDAgfHwKKyAgICAgICAg
ICAgICAgICB0ZXh0LT55KCktPm51bWJlck9mSXRlbXMoKSA+IDAgfHwKKyAgICAgICAgICAgICAg
ICB0ZXh0LT5keCgpLT5udW1iZXJPZkl0ZW1zKCkgPiAwIHx8CisgICAgICAgICAgICAgICAgdGV4
dC0+ZHkoKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkgewogICAgICAgICAgICAgICAgIHNlZW5Qb3Np
dGlvbmVkRWxlbWVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgbmVlZHNXb3JkU3BhY2luZyA9
IGZhbHNlOwogICAgICAgICAgICAgICAgIGludCBpZ25vcmVYLCBpZ25vcmVZOwpAQCAtMjM2LDkg
KzIzNiw5IEBAIHN0YXRpYyB2b2lkIHBsYWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFic0IKICAgICBm
b3IgKElubGluZUJveCogY3VyciA9IGZsb3ctPmZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1
cnItPm5leHRPbkxpbmUoKSkgewogICAgICAgICBpZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkp
IHsKICAgICAgICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqIHRleHQgPSBzdGF0aWNf
Y2FzdDxTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Kj4oY3Vyci0+b2JqZWN0KCktPmVsZW1lbnQo
KSk7Ci0gICAgICAgICAgICBiYXNlbGluZSArPSAoaW50KSh0ZXh0LT5keSgpLT5nZXRGaXJzdCgp
ID8gdGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSA6IDApOwotICAgICAgICAgICAgaWYg
KHRleHQtPnkoKS0+Z2V0Rmlyc3QoKSkgewotICAgICAgICAgICAgICAgIGJhc2VsaW5lID0gKGlu
dCkodGV4dC0+eSgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpIC0geVBvcyk7CisgICAgICAgICAgICBi
YXNlbGluZSArPSAoaW50KSh0ZXh0LT5keSgpLT5nZXRGaXJzdCgpLnZhbHVlKCkpOworICAgICAg
ICAgICAgaWYgKHRleHQtPnkoKS0+bnVtYmVyT2ZJdGVtcygpID4gMCkgeworICAgICAgICAgICAg
ICAgIGJhc2VsaW5lID0gKGludCkodGV4dC0+eSgpLT5nZXRGaXJzdCgpLnZhbHVlKCkgLSB5UG9z
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBsYWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFi
c0Jhc2VsaW5lKHN0YXRpY19jYXN0PElubGluZUZsb3dCb3gqPihjdXJyKSwgaGVpZ2h0T2ZCbG9j
aywgbWluX3ksIG1heF95LCBiYXNlbGluZSwgeVBvcyk7CiAgICAgICAgIH0KSW5kZXg6IExheW91
dFRlc3RzL3N2Zy9XM0MtU1ZHLTEuMS9jb29yZHMtdW5pdHMtMDEtYi1leHBlY3RlZC5wbmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3Zu
Om1pbWUtdHlwZSA9IGltYWdlL3BuZwoKaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQWVBQUFBRm9D
QVlBQUFDUE55Z2dBQUFnQUVsRVFWUjRuT3pkZVZ3VTkvMC84TmZDTHBkaQpSRnp4QUFHUEZJd1VE
T0tCRWNVRXF3YU5oZUlaTlY3RnJ5Ym1NdFNrVVdOK0JpVzEwZGpHaURIV2hLaUFwdFlEeFlBZ1NF
UVV3VmJqCkdwQWNKUnBBRkJYa1duYmZ2ei9vVG5hWHZaQmppTHlmUG5qZzdzeDg1dk41ejh6bnpk
d1NJcUp4NDhhQk1jWVlZKzBqSXlNRDB1RGcKWUdSbVptTDgrUEZpMTRjeHhoaDc1SjArZlJyanhv
MkRGQUNDZ29LUW5wNHVkcDBZWTR5eFIxNXdjRERVYWpXc3hLNElZNHd4MWhseApBbWFNTWNaRXdB
bVlNY1lZRXdFbllNWVlZMHdFbklBWlk0d3hFWEFDWm93eHhrVEFDWmd4eGhnVEFTZGd4aGhqVEFT
Y2dCbGpqREVSCmNBSm1qREhHUk1BSm1ESEdHQk1CSjJER0dHTk1CSnlBR1dPTU1SRndBbWFNTWNa
RXdBbVlNY1lZRXdFbllDTlVLaFd1WGJzbWZMNTkKK3pZS0N3dmJiSDVWVlZXNGNlTkdtNVhmVW5W
MWRUaDc5dXhEVGR2V3NSTlRlNjhucmFtNnVscnNLblE2K3V1TE1XVmxaVWhMUzhPZApPM2ZhdEQ2
dHViNCtlUENnVmNycFRFUkx3Q2RQbmtSSVNBZ2tFZ21HRGgyS2VmUG00WVVYWHNEaXhZdXhiZHMy
S0pWS3NhcUdDeGN1CndNL1BEMy84NHgrRjc5YXVYWXZwMDZlM3lmeGlZMlBoN095TUF3Y090RW41
TFpXVGs0UGh3NGNqTEN6c29hWnZ5OWlKcWIzWGs5WjAKN3R3NUpDVWxpVjJOVHNYUSttTEl6cDA3
RVI4Zmo0eU1ERHp4eEJPb3E2dHJzenExNXZyNjQ0OC9JaUVob1ZYSzZqVEdqeDlQUVVGQgpKSWIw
OUhRQ1FGdTJiQkcrdTNUcEV0bmIyOU9TSlV0RXFaUEdpeSsrU0JNbVRCQStsNWVYVTBGQlFadk56
OFhGUlNjT0hjM216WnZKCnhjWEZvbkZyYTJzcExTMU4rTnpXc1JOVFc2NG4rbkZzTFltSmlSMTZY
VE9tcmVMUm52VFhGMzFWVlZYVXBVc1hVcWxVUkVUMDlkZGYKdCtyODIzcmJMQ2dvb0xmZWVxdlZ5
bnRVYWZLdXFJZWduWnljQUFBU2lVVDR6dGZYRndFQkFUaDkrclFvZFZLcjFRQUFxVlFLSzZ0Zgp3
dVBzN0l6Qmd3YzN1endpc21nOG1VeW1FNGVPeHNiR3htRDlHaG9hZEQ0cmxVck1temNQWjg2Y0Vi
NTcyTmgxWksyOW5sZ1NSMHVZClc5OUtTa3F3YWRNbXZQTEtLdzgxdlZoTXhVTS9kdHBhc3oybTVt
T09zZlZGMytYTGwxRmZYeStNRXhnWTJHcDFhbzl0Yy9EZ3dWQ3AKVkh4MHhVSlNzU3VnNzhHREIv
ajIyMit4ZVBGaW5lK3JxcXF3ZXZWcTJOcmFvcWlvQ1AzNzkwZE1UQXpzN2UyUmtKQ0ExMTU3RGF0
WApyOFpMTDcyRStQaDRyRnUzRHNIQndkaXhZd2ZTMDlNUkd4c0xWMWRYZUh0N0l6bzZHaktaRENk
T25JQ25weWVBeHZOaHExYXRRdS9lCnZYSHo1azE4ODgwM3NMT3pBd0Q4L1BQUGlJdUx3NkZEaDVD
ZG5XMXhlVkZSVWVqVnF4ZXlzckxRbzBjUERCczJESUdCZ1JnN2RxekIKdG12cUVCY1hCMWRYVjN6
eHhSZnc5dlkyMi82TEZ5L2l6VGZmeEkwYk4vRFJSeC9CMGRFUml4WXR3bXV2dllZRkN4WTBtVTll
WGg1aQpZMk1obDh0aGIyK1ByVnUzSWlrcENlN3U3b2lKaWNIRml4ZFJWVldGano3NkNLTkdqVEpZ
MTFPblRpRTNOeGNTaVFTSER4OUdiR3dzCmhnNGRpcTFidCtMSWtTTzRmdjA2aW9xS3NIYnRXbno1
NVpkQzdJNGRPNFlsUzViQXpjME4rL2Z2eDZCQmczRCsvSGxFUkVUZ2swOCsKd2NTSkUxRmFXbXB4
UFdwcWFyQmh3d1owNjlZTmVYbDVDQWdJd0twVnE4ekd6Tnh3WXpFYU9uUm9xNjRubHNaeCsvYnRx
S3FxTWhxWApoSVFFM0xsekIvZnYzOGZodzRlTm5xOWZzMmFOenFtRTFOUlVmUHJwcHhnMGFCQ1VT
aVgyN05rREd4c2I3TjY5Rzg4ODh3d0FHRjBlCnhtTGs0K05qZEprWUs4dGNyQXpGNDl5NWN3Wmpa
OG4yMTV4MXpOZ3lhbW0vb20vWHJsMDRlUEFnR2hvYXNHTEZDdGpiMjJQT25Ea0cKWTF4WldXbTA3
Y2EyQ1hQYnBybHR3cEwyQXNEczJiUHgvUFBQWTlLa1NiQzJ0amJZVnZZL1loNkN2blRwRWdHZ0Yx
NTRnZUxqNDJuVApwazNrNys5UGMrYk1vYkt5TXAxeGc0S0M2UFBQUHljaW92cjZlaG94WWdTRmhv
WUt3L3YxNjBmdnZmZWU4SG5peElrVUVSRkJSRVFsCkpTWDArT09QazVlWEZ4MDllcFIrK09FSCtz
MXZma05MbHk0VnhuLzIyV2NwUGo2ZWlJaFVLaFgxN2R1WFFrSkNpSWlvckt5TWxpMWIKUmoxNzly
UzR2TC85N1cvMCt1dXZFeEhSNWN1WENRREZ4TVRRRHovOFlEQVdycTZ1OU1RVFQ5Q1JJMGNvTFMy
TlBEdzhhTUNBQWFSVQpLaTFxZjJwcUtnR2dFeWRPMFBIangrbUREejR3R3ZmczdHeHljbklpUHo4
L09uandJRVZHUnBKQ29hREpreWZUL2Z2M1NhVlNVV1JrCkpNbmxjcXFvcUNBaW9tM2J0bEh2M3Iy
SmlLaXVybzc2OWVzbkhNcDY1NTEzS0R3OFhDamZ3OE9Eb3FPakRjYU9pR2pKa2lVMGVQQmcKNGJO
U3FhVFpzMmNURVZGRFE0UEpldWliTkdrU1pXZG5FeEZSYm00dUFhQ0xGeTlhRkROVHd3M0ZxS0Nn
b0ZYWGsrYkUwVlJjbEVvbApEUjgrWEpqdTFWZGZGUTVoNm52c3NjZm82Tkdqd3VmdnYvK2Vldlhx
Ulo2ZW5uVG16Qm5LeU1nZ1gxOWZjbk56TXp0Zll6RXl0a3hNCmxXWEpOcVVkRDNPeE03WDlOV2Nk
TXpXZmx2WXJoaVFtSnBLVmxaWHcyVkNNcjF5NVlyTHRwcllKYzl1bXFXM0NrdlpxcHBQSlpKU1QK
azJPMG5aMWRoemdFcmFGVUtsRlNVb0pMbHk2aHJLd01kWFYxdUgzN3RqQThPVGtaV1ZsWm1EVnJG
b0RHdzdXTEZpM0NzV1BIaEwvYwo3TzN0ZFE2Uk9qZzRDSjlkWEZ3d2NPQkErUGo0SURRMEZPN3U3
cGd3WVFLKy9mWmJBSTBYcEJ3L2ZoeS8rOTN2QUFCV1ZsYVlNbVdLClVKWmNMb2VQajQ5d09NdGNl
UUFRRnhjSFoyZG5BTURRb1VNaGw4c0JBTzd1N2tiak1ILytmRXlkT2hYQndjSFl0R2tUdnZ2dU82
U20KcGxyVS9xZWZmaG96Wjg3RVcyKzloYmk0T0t4Y3VkTG9mRWFOR2dVdkx5OTRlM3NqUER3Y08z
YnNRSDUrUG9nSVo4NmNRWEp5TXZyMAo2WU5idDI0aE16T3p5ZlF5bVF4aFlXSHc5ZlVGMEhnWVM2
RlE2SXlqaWIxKzdBRGd4UmRmUkdGaElTNWN1QUNnY1M4c0lpSUNBSkNZCm1HaHhQZExTMHBDZm40
K1JJMGNDQVB6OS9iRmp4dzY0dTd1YmpabTU0WVppZFB2MjdWWmRUNW9UUjFOeHVYdjNMaTVkdW9U
ang0OEQKQUpZdVhXcncwR3RaV1JudTNidUhYcjE2Q2Q5NWVIakF6YzBOMDZaTncxTlBQWVdnb0NE
RXg4ZWp1TGdZQ29YQzVId054YWk0dU5qbwpNakZWbGlYYmxIWTh6TVhPMVBiWG5IWE0xSHhhMnE5
WXdsQ01od3daWXJST3ByWUovUmpxcjYvbXRnbExsNUZNSm9PVGt4TUtDZ3FhCjFkYk9xRU1rNElD
QUFMejg4c3ZZdjM4L0Nnb0tVRnhjaktlZmZsbzR2M0grL0huSTVYTElaREpobWhFalJnQUE4dlB6
TFpxSFJDTFIKU2RDT2pvNm9yYTBGQUp3K2ZScGVYbDdvM3IyN01MeHIxNjQ2NCt0UGI2bzh6V2RO
Y2dTQTNyMTdDeHVGTVk4OTlwandmODNoc01MQwpRb3ZidjNuelpoUVVGTURmMzkvc29SOTdlM3Vo
VXdLQTdPeHNPRHM3dzhiR0JqWTJOaGd6Wmd4U1VsTGc3Ky9mWkZxSlJJSnQyN2JoCjd0MjdpSW1K
UVVaR0Jpb3JLNXVNby8xLy9mUDgvdjcrK09LTEx3QTBYaEgvN0xQUE5yc2VtWm1aQ0F3TTFDazdN
aklTenM3T1ptTm0KU1V6MVk5VGE2MGx6NG1ncUxqMTc5a1JZV0JpbVRwMktGU3RXd01QRHcrRHkv
KzY3N3dBQVBYcjBhRElQN2ZHOXZMemc1T1NFMU5SVQpzOHREUDBhbWxvbTVzc3h0VTlyeE1CYzdV
OXRmYTY3ckxlMVhMS0VmWTFOMU1oVi8vUmpxMTkrU2JjS1NaYVQ1L3RkeU81NllPdHc1CllEczdP
OHlZTVFPclZxMUNVbElTbm52dU9WUlhWNk84dkJ4VlZWWG8yclVyQU1ESHh3ZFNxYlJWN2ozNzZh
ZWZVRjVlM3VUN2xsd1UKOWVxcnIrS0ZGMTdBNWN1WFlXdHJDd2NIQjR3Yk44N2k2ZDNkM2VIbzZB
aEhSMGZjdUhIRG92YkxaRExJNVhLOC8vNzdXTHg0c2M2RwpiMDU1ZVRta1VxbHczcytjMk5oWVpH
VmxZZmZ1M2RpMWF4Zk9uejl2OGJ3QVlOR2lSVmkvZmowMmJOZ0FPenM3Mk5qWU5Mc2VwYVdsCnVI
TGxpc0ZoNXRhWmgxbW4ybUk5c1RTTzV1S3liOTgrOU8zYkZ4OSsrQ0h5OHZKdzh1UkpkT3ZXVFdj
Y1RTZHV5VzB0VmxaV2tFcWwKelY0dlRDMlQ1cFpsanFuWW1kcisybXRkYjR2MXhWeWRUTVhmbk5i
c1o1VktKUndjSEI2cUhwMUpoOWdEMXFkWlFWVXFGWURHdjhoVgpLcFZ3eUJKb1BKelcwTkFnWEtR
RS9IS2xZWFAxN2RzWHQyN2RhdFZESmxPbVRNSFNwVXVSbkp5TTNOeGNwS2VuTjJ2Nm16ZHZvckt5
CkVzT0dEYk80L1d2V3JNSHg0OGNoa1Vpd1pzMmFaczNQMDlNVEtTa3BPbi9ORXBIQnE5R3ZYcjJL
NWN1WFkvUG16VHAvTFdzejE4bk0KbVRNSDkrL2Z4MHN2dllUZi8vNzNEMVVQZDNkM0ZCWVdvcWlv
U0dmYy9QeDhzekd6TktiYVduczlhVTRjVGNXbHBLUUVaV1ZsMkxKbApDNUtUazNINThtWEV4OGMz
S2N2VDB4TjJkbmE0ZCsrZXlYb1ZGQlRnOXUzYmVQTEpKNXUxUEFEVHk2UzVaUm1paVllNTJKbmEv
bHA3ClhUZW1MZm9WYzNVeUZYOE5ZOXZtdzJ3VHhwU1dsc0xEdzZOWjAzUkdvaVpnelZOZXRDK2xy
Nm1wd2Y3OSt5R1h5ekYrL0hnQVFFUkUKQkZ4ZFhaR1NraUtNbDV1YkN5OHZMMHlhTkFsQTQxOXFP
VGs1cUsrdng4MmJOMUZVVktSekhybSt2bDRuUVZkWFZ3c0pmdWJNbVpCSwpwZGl4WTRjdy9OcTFh
eWd2THhmR3FhNnVSazFOalhDK3hGUjVBTEIrL1hvOC92ampXTGx5SmViTW1TTmNlV3VLOXZScGFX
bVlQbjA2CmZIMTlMV3AvY25JeUJnOGVERzl2YjhURXhPRGpqejgyZVhpK29hRUJOVFUxd3VlNWMr
ZWl0TFFVa1pHUnFLaW9RRmxaR2Q1OTkxM2gKRm9YNitucmg0U2dLaFFKcXRScFhyMTZGU3FWQ1Jr
WUdhbXRyUVVRZ0luVHYzaDAvL2ZRVEFLQ2lvcUpKN0FDZ2UvZnVDQXNMUTA1TwpqbkNZeTVKNmFK
czVjeWJzN095d2NPRkNLQlFLS0JRS1JFVkZ3YzNOeld6TUxJbXBmb3hhZXoxcFRoeERRME9OeHVY
MjdkdkNBeEFtClRweUk1NTU3VHRpRDBXWmxaWVhmL3ZhM0JoT0M5cmFTbnA2T3NXUEhZdVRJa1dh
WGg2RVlHVnNtbHF4anByWXA3WGhjdUhEQlpPeE0KYlgvTldjZk1MYU9XOWl2Njd0Ky9EN1ZhcmZP
VU12MFltNnJUakJrempNWmZQNGI2MjZZbDI0UzVaUVEwcmt0S3BSSUJBUUVHMjhpMAppSFVWOUZk
ZmZVVWhJU0VFZ056ZDNXblJva1VVRWhKQy92NytOSHYyYlBydmYvK3JNMzVlWGg0TkdUS0UvdktY
djlEeDQ4ZHAxcXhaCnBGQW9oT0duVHAwaVoyZG5HakJnQUwzeHhodTBiTmt5ZXZycHB5a3RMWTB5
TWpLb2UvZnUxTGR2WDhyT3pxWkxseTdSb0VHRHlOYlcKbHI3NjZpc2lJdHE3ZHk4NU9qcVN0N2Mz
elpneGc2Wk9uVXFCZ1lHMGQrOWV5c25Kb2RHalJ3c1BEVWxOVFRWYjNpdXZ2RUlBQ0FCWgpXMXVU
aTRzTExWKytuT3JxNmd6R1k5MjZkZVRqNDBPYk5tMmlqUnMzMHNzdnYwejM3OSszcVAxcGFXblV1
M2R2dW5UcEVoRVJYYjE2CmxheXRyY25UMDlQZ2xZaDc5KzZsTGwyNlVKOCtmU2doSVVINC91T1BQ
eVpiVzF1U1NDUWtsOHZwMEtGRFJFU1VrNU5EL3Y3K0JJQzIKYjk5T0ZSVVY1T2ZuUjEyN2RxV0ZD
eGRTVWxJU09UZzQwUFBQUDA5MWRYWDAxbHR2a1VRaW9VV0xGdEdKRXlkMFlxZmQvbE9uVHRIRwpq
UnViMU05WVBRdzVkT2dReWVWeVlUM0t5c3F5ZUoweE5keFlqRnB6UFhudzRJSEZjU3d0TFRVYWx5
dFhydERBZ1FNcE5qYVdEaDgrClRNdVhMeGV1bnRlWGxKUkVzMmJOMHZsdStQRGg1T2ZuUjJ2V3JL
SDE2OWZUeElrVHFhU2t4T3p5TUJZalU4dkVXRm1XYktQYThmaisKKys5TnhzN2M5bWZwT21acUdW
blNENWhhWC9TZE8zZU94bzRkU3dCbzFhcFZWRlJVWkRERzV0WWJVL0UzdDIyYTJpWXNXVVpFUkh2
Mgo3S0hwMDZjYmpDZHJwTW03b3Q2RzFGeHF0Wm9LQ2dybyt2WHJCb2ZYMWRWUmRYVTFFVFZlQ3Q5
Y0RRME5kT3ZXTFNJaXFxbXBlZmlLCkVsRjBkRFFWRkJUUWYvN3pIL3I2NjY4cEtTbUpGaXhZUUNr
cEtTYW4rL25ubjQxMm51YmEzeHJxNnVybyt2WHJSdXVnVFJOcm9xYngKMXNUUm5OcmEyaGJYUTYx
VzZ5UU0vV0dtWXZZd01XM045WVNvZVhFMEZCZk5MVWNWRlJWVVZWVmxkbjVUcGt5aEgzLzhVZmc4
ZlBodwpldTIxMTZpcXFxcko3WCttNW11S3FXWFMzTEswNmNmRFdPd3MyZjVhYTEwM3A3WFhGMHZx
WkNyKzVyYk5sdll6MDZaTm8yKysrZWFoCnB1MHNOSGxYTW43OGVGS3IxY2pJeUJCakIveVJ0SFBu
VGlRbUppSTFOVlhuKzVNblQyTGd3SUVZTkdpUVNEVmpETGh4NHdZMmJOaUEKTFZ1MndNN09EZ0VC
QVFnS0NzSmYvL3BYc2F2V0tuajdFOC9iYjcrTmtKQ1FabDF3MmhrRkJ3ZERyVlozdkt1Z0h3V2pS
NC9HeXBVcgpFUkVSQVg5L2Y5VFUxS0MwdEJTaG9hRzg4VFBSOWV2WEQyKy8vVGIyNzkrUEJRc1dD
TmRNUENwNCt4TkhabVltUWtORGpUNVJqRFhGCmU4QnQ1TjY5ZThqTXpFUkpTUW1DZzRONXcyY2Qw
bWVmZlNaY2xETmd3QURNbmoxYjVCcTFEdDcrV0VlbTJRUG1CTXdZWTR5MUkwMEMKN3BEM0FUUEdH
R09QT2s3QWpESEdtQWc0QVRQR0dHTWk0QVRNR0dPTWlZQVRNR09NTVNZQzBlNERWa3VzVVE4YktD
RXorV1BKT0dLTwoxMENtWC92SEdHT01HY0o3d0l3eHhwZ0lPQUV6eGhoakl1QUV6QmhqakltQUUz
QTdPWHIwS0h4OGZDQ1JTREJod2dUODRROS93Smd4ClkvRDczLzhlNTg2ZEU3dDZqREhHMmhrbjRI
WXlkZXBVTEZteUJBQVFIUjJOZ3djUElqTXpFejE3OXNTNGNlT1FsWlVsY2cxMTFkWFYKSVQwOVhl
eHFNTWJZSTRzVGNEdnEzcjA3QUVBaWtRQUFySzJ0OGZycnI2Tyt2aDU3OSs0VnMybzZsRW9sNXMy
Ymh6Tm56alFaMXREUQpZSFE2SW1yTGFqSEcyQ09GWDBjb3NsdTNiZ0VBZXZmdURRQW9MUzFGVEV3
TUxsNjhpS3FxS256MDBVY1lOV29VOHZMeUVCc2JDN2xjCkRudDdlMnpkdWhWSlNVbnc4ZkhCaGcw
YjBLMWJOK1RsNVNFZ0lBQ3JWcTB5V1ZaNmVqcGlZMlBoNnVvS2IyOXZSRWRIUXlhVDRjU0oKRS9E
MDlNVFdyVnR4NU1nUlhMOStIVVZGUmRpK2ZUdk9uVHVIM054Y1NDUVNIRDU4R0xHeHNSZzZkQ2dB
b0xxNkdsRlJVZWpWcXhleQpzckxRbzBjUERCczJESUdCZ1JnN2RxelJlakRHV0dmR2U4QWlxcXVy
dy8vN2YvOFBQWHIwd055NWM2RlNxYkJ3NFVLc1g3OGU2ZW5wCkNBZ0l3TFJwMDNEMzdsM1UxOWZq
d0lFRFNFcEtncGVYRjhMRHcrSGs1SVN3c0RCTW5Ub1ZmL3JUbnhBVkZZVTMzbmdEZVhsNUpzc2EK
TW1RSTh2UHprWlNVQkJjWEY2U2xwUUVBTm03Y0NBQjQ0NDAzMEtkUEgwUkVST0N6eno2RFRDYkRn
Z1VMTUdMRUNFUkZSV0hpeElsNAo1NTEzaEhiczNyMGJkbloyV0x0MkxUNzQ0QU1rSkNSQUlwR2dm
Ly8rSnV2QkdHT2RHZThCaXlBcUtncFdWbGE0ZWZNbS9QMzljZWJNCkdRd2FOQWo3OSs4SEVRbUhm
dnYwNllOYnQyNGhNek1UMDZaTmc1ZVhGenc4UEJBZUhvN3c4SENrcGFVaFB6OGZJMGVPQkFENCsv
dGoKeDQ0ZGNIZDNSMkppb3NteUJnNGNpSzVkdXlJME5CUUFNR0hDQkh6enpUYzY5ZFFjS3BmSlpB
Z0xDNE92cnk4QXdOblpHUXFGUWhndgpMaTRPMDZkUEJ3QU1IVG9VY3JrY0FPRHU3bTYyVFl3eDFs
bHhBaGJCeG8wYk1XTEVDRWlsdXVIUHpzNkdzN016Ykd4c0FBQmp4b3hCClNrb0t2TDI5QVFEMjl2
WkNjZ09Bek14TUJBWUdDb2tTQUNJakl5MHFTeUtSNkV6bjZPaUkydHBhbmZwb2hrc2tFbXpidGcz
ZmZmY2QKUHZua0UrVG01cUt5c2xKbjJ1enNiT0Z6Nzk2OWhUOEt6TldETWNZNkswN0FJckMydG02
U2ZBR2d2THdjVXFrVXp6enpqRVhsbEphVwo0c3FWS3dhSE5iY3NjMkpqWTVHVmxZWGR1M2RqMTY1
ZE9ILyt2RERzMVZkZnhRc3Z2SURMbHkvRDF0WVdEZzRPR0RkdVhKdlVnekhHCkhoVjhEcmdEOGZU
MFJFcEtpczZlS0JIaDlPblRCc2QzZDNkSFlXRWhpb3FLZE1iUHo4OXZkbG1HYVBhQXIxNjlpdVhM
bDJQejVzMlEKeVdSTnhwc3laUXFXTGwySzVPUms1T2JtNnR5KzFCcjFZSXl4UnhFbjRIYWt1ZUw1
enAwN0JvZlBuVHNYcGFXbGlJeU1SRVZGQmNySwp5dkR1dSs5aThPREJBQnB2QWFxcHFSSEduemx6
SnV6czdMQnc0VUlvRkFvb0ZBcEVSVVhCemMzTmJGbjE5ZlZRcTlWQ1dkWFYxVkNwClZNTG43dDI3
NDZlZmZnSUFYTGh3QVdxMUdsZXZYb1ZLcFVKR1JnWnFhMnRCUkNBaXJGKy9IbzgvL2poV3JseUpP
WFBtd043ZTN1STIKTWNaWVo4VUp1SjBjUFhvVW4zMzJHUURnTDMvNUMwNmVQTmxrbkNGRGhtRDc5
dTFJU0VpQXM3TXpoZzRkQ2w5ZlgvVHIxdy83OXUzRAp4WXNYY2V6WU1TUW1KZ0pvM0x2Y3YzOC9y
bDI3aGlGRGhtRHk1TW1ZUG4wNmV2YnNhYktzek14TTVPYm00dXpac3poMzdoeisvZTkvCkl6azVH
VmV1WEVGS1NncUF4cjNhdi8vOTcxaThlREhHalJzSFB6OC9USnMyRFV1WExzWDgrZk5SVlZXRitm
UG5RNmxVNHQ2OWUxaTQKY0NIczdPd2dsVXJSdTNkdnJGaXhBdlgxOVNicndSaGpuWmxrL1BqeHBG
YXJrWkdSMGE0ejV0Y1JHbGRmWDQvaTRtSzR1N3NiUEZlcwpqNGhRVmxZR0Z4ZVhGcGVscmJ5OEhE
MTc5aFErMTlUVUNIdTNTcVZTT0J5OWNlTkcvT0VQZjBCdGJTMHFLeXR4OSs1ZEpDWW00dm5uCm54
Zk8vYmFrSG93eDlpZ0pEZzZHV3EzbWk3QTZJaHNiR3d3Y09ORGk4U1VTaWNIayt6QmxhZE5PdmdC
MERpMXJrdS9PblR0eDZ0UXAKdlBubW16cmpXbHRidzhQRG8xWHF3UmhqanlKT3dLeEZSbzhlalpV
clZ5SWlJZ0wrL3Y2b3FhbEJhV2twUWtORE1XalFJTEdyeHhoagpIUlluWU5ZaVBqNCtLQzB0Ulda
bUprcEtTaEFjSE15Smx6SEdMQ0JhQWk1WjlrZW9ZQTBWcktHR2xjSGZCQ3RZd1JwU1dNTUtWcERD
CkdyWmE0K2lQYjZvc1krTVlIczhLS2hEVWFORDZYVzl3WElBdkpucnNzY2N3ZGVwVXNhdkJHR08v
S3FJbFlGSVRDQVJBRFlMRTZHOVQKNDFBci9GTURCbitiR3FiOW16SEdHSHNZb2lYZ1Bqcy9NWHVs
TVVHR0J0aWdRWlNyb0syZ2hOVHNlRHRpeFlvZ1k0eXhYek8rRDVneAp4aGdUQVNmZ1R1VDI3ZHNv
TEN3VXV4cU1NY2JBVjBHM204VEVSS3hidHc3WHJsMURjSEF3Qmc0Y0NDSkNUVTBOY25Oek1XREFB
Snc0CmNhSk42N0IyN1ZxY1BuMjZ5V3NIR1dPTXRUOU93TzFreG93WktDb3F3bHR2dllYbzZHaU1H
alZLR0ZaUlVZR0ZDeGUyK2p6cjZ1cHcKOXV4WkJBY0hBd0RlZmZkZG84K2hab3d4MXI3NEVIUTc2
dDY5T3dEb3ZJY1hBTHAwNllMWVdQTlhjelUwTkZnOEw2VlNpWG56NXVITQptVFBDZDg3T3p2d1NC
TVlZNnlCNEQxaGtSSVRWcTFmamd3OCtRRjVlSG1Kall5R1h5MkZ2YjQrdFc3Y2lLU2tKbFpXVnlN
M05oVVFpCndlSERoeEViRzR1aFE0Y0NhSHcrODRZTkc5Q3RXemZrNWVVaElDQUFxMWF0d3RhdFcz
SGt5QkZjdjM0ZFJVVkZXTHQyTGI3ODhrc2MKT25RSTJkblpBSUNxcWlxc1hyMGF0cmEyS0NvcVF2
LysvUkVURXdON2UzdWtwNmNqTmpZV3JxNnU4UGIyUm5SME5HUXlHVTZjT0FGUApUMDh4UThZWVk0
OEUzZ01Xd2ZIanh4RVhGNGRQUHZrRWMrZk9GVjc3VjE5Zmp3TUhEaUFwS1FsZVhsNElEdzlIbHk1
ZHNHREJBb3dZCk1RSlJVVkdZT0hFaTNubm5IYUdzc0xBd1RKMDZGWC82MDU4UUZSV0ZOOTU0QTNs
NWVYampqVGZRcDA4ZlJFUkU0TFBQUGtPM2J0M3cKL2ZmZjQvcjE2OEsweno3N0xFYU9ISW0vL3ZX
dk9IRGdBSEp5Y2pCanhnd0FqVzlteXMvUFIxSlNFbHhjWEpDV2xnYWc4Y1VMakRIRwpXbzczZ0VV
Z2s4bGdZMk1ESW9LTmpZM3dIdDVSbzBiQnk4c0xIaDRlQ0E4UFIzaDRPSWdJWVdGaDhQWDFCZEI0
R0ZtaFVBQUEwdExTCmtKK2ZqNUVqUndJQS9QMzlzV1BIRHJpN3V3dnowaHp1bHN2bDhQSHh3WUVE
QndBQXljbkp5TXJLUW1wcXFsQ25SWXNXWWRteVpjak8KenNibzBhTXhjT0JBZE8zYUZhR2hvUUNB
Q1JNbThBVmNqREhXU2pnQml5QWtKRVJJbXZQbXpjT3FWYXVFWWZiMjlwREw1Y0puaVVTQwpiZHUy
NGJ2dnZzTW5uM3lDM054Y1ZGWldBZ0F5TXpNUkdCaW9jMDQ1TWpKU1oxN2F3eVFTaWZENS9Qbnpr
TXZsd2x1TkFHREVpQkVBCmdQejhmSXdlUFZwbmZBQndkSFJFYlcxdGk5dlBHR09NRDBHTFRpS1JZ
Tk9tVFNiSGlZMk54YnAxNi9EYWE2OWh3b1FKUWxJc0xTM0YKbFN0WEhtcSsxZFhWS0M4dlIxVlZs
ZkNkajQ4UHBGSXBIang0OEZCbE1zWVlzeHduNEE1QWV5OVUzOVdyVjdGOCtYSnMzcnk1eVhqdQo3
dTRvTEN4RVVWR1I4QjBSSVQ4L1gvaXNmOFcxaHBlWEYxUXFGUzVjdUNCOFYxWldob2FHQm5oN2V6
OXNVeGhqakZtSUUzQTdxcW1wCkFkQjQzNjh4RFEwTnduZ0FvRkFvb0ZhcmNmWHFWYWhVS21Sa1pL
QzJ0aFpFaEJrelpzRE96ZzRMRnk2RVFxR0FRcUZBVkZRVTNOemMKQURUZTlxUzV3S3Vpb2dMVjFk
V29xYWtCRVNFaUlnS3VycTVJU1VrUjVwV2Jtd3N2THk5TW1qUUpRT05GWVdyMUw2K2NxSzZ1RnM1
WApNOFlZYXhsT3dPMGtNVEVSLy9qSFB3QUE3Ny8vUGs2ZlB0MWtuSDM3OXVIaXhZczRkdXdZRWhN
VEFRQ1RKMCtHbjU4ZnBrMmJocVZMCmwyTCsvUG1vcXFyQy9Qbno0ZXJxaXYzNzkrUGF0V3NZTW1R
SUprK2VqT25UcDZObno1NEFnQ2xUcHVEdmYvODdGaTllakp5Y0hIejUKNVpkNDhPQUJQdnp3UTho
a01odzVjZ1NIRHgvRzVzMmJjZUxFQ2V6ZnZ4K0hEaDJDVkNwRlptWW1jbk56Y2Zic1dadzdkdzcv
L3ZlLwprWnljakN0WHJ1Z2tiY1lZWXc5SE1uNzhlRktyMWNqSXlHalhHYXNsMWhhOW1hajEzM0xV
dXVNMWtIVzd4S3VtcGdiMjl2WUFHaCt5Cm9YMDRtb2hRVmxZR0Z4ZVhKdE9WbDVjTENka1FJc0wx
NjlkaFpXV0ZnUU1IdG43RkdXT002UWdPRG9aYXJlYXJvSDh0Tk1rWGFIck8KV0NLUkdFeStBRXdt
WDgyMC9IUXN4aGhyZjN3SW1qSEdHQk1CSjJER0dHTk1CS0lkZ2k1WjlrZW9ZQTBWcktHR2xjSGZC
Q3RZd1JwUwpXTU1LVnBEQ0dyWmE0K2lQYjZvc1krTVlIczhLS2hEVWFORDZYVzl3WEtDZldDRmtq
REgyS3laYUFpWTFnVUFBMUNCSWpQNDJOUTYxCndqODFZUEMzcVdIYXZ4bGpqTEdISVZvQzdyUHpF
N05YR2hOa2FJQU5Ha1M1Q3RvS1Nrak5qcmZEL0ZzRUdXT01zU2I0SERCampERW0KQWs3QW5kajkr
L2Z4NDQ4L0FnQXFLeXY1UlF1TU1kYU9PQUczazMvOTYxOTQ4c2tuSVpGSU1HclVLQnc3ZGt3WWR1
M2FOY3lZTVFNUwppUVQvOTMvL2g1S1NramF0eTQwYk40UzNNSDM0NFljSUNBakE2TkdqY2VuU3BU
YWRMMk9Nc1Yvd2d6amF5ZlRwMDFGV1ZvYkl5RWlzClhMbFNlTWN1MFBoaWhIMzc5dUhycjcvR3h4
OS8zT1oxZWZYVlYxRmZYNCs0dURnQWpVL1dDZ2dJRUo0YnpSaGpyTzN4SG5BN2NuSnkKMHZtdFRT
cVZ3cy9QeitCMFJOU3E5YmgyN1JxS2k0dWhWQ29CTkQ1WjZ4Ly8rQWZ1M0xuVDdQazNORFMwYXQw
WVk2eXo0RDNnRHNUSwpTdmZ2b1lTRUJOeTVjd2YzNzkvSDRjT0hjZmJzV1FDTjd3R09pWW5CeFlz
WFVWVlZoWTgrK2dpalJvMUNYbDRlWW1OaklaZkxZVzl2Cmo2MWJ0eUlwS1FralJvelFLWGZXckZu
NDg1Ly9qSkNRRUNRa0pNREZ4UVhEaGczRHNHSERBQUNwcWFuNDlOTlBNV2pRSUNpVlN1eloKc3dj
Mk5qYll2WHMzbm5ubUdRREFxVk9ua0p1YkM0bEVnaTZYcTlNQUFDQUFTVVJCVk1PSER5TTJOaFpE
aHc0RjBQamM2ZzBiTnFCYgp0MjdJeTh0RFFFQUFWcTFhWmJMdWpESFcyWEFDN3FBYUdocXdlZk5t
NFgyOXBhV2xVS3ZWSUNJc1hMZ1FDUWtKNk5LbEM1WXZYNDVwCjA2YWhvS0FBOWZYMU9IRGdBTnpk
M2ZIMjIyOGpQRHpjNE43Mml5KytpSlNVRkp3K2ZScERodzdGN3QyN01YWHFWR0g0b0VHRGtKYVcK
aHB5Y0hIeisrZWVZTW1VS1ZxNWNpVVdMRnVHLy8vMHY2dXZyc1dEQkFzVEZ4U0U0T0JnMU5UVjQ1
NTEzY1BEZ1FRQkFXRmdZMXExYgpoMUdqUnVIaXhZc1lQbnc0Smt5WUFGOWZYNk4xNzk2OWUvc0Vs
akhHT2dnK0JOMUIzYjE3RjVjdVhjTHg0OGNCQUV1WExnVVJJVEV4CkVVU0VNMmZPSURrNUdYMzY5
TUd0VzdlUW1abUpVYU5Hd2N2TEM5N2UzZ2dQRDhlT0hUc012bWloVzdkdStPcXJyL0RtbTIraW9x
SUMKMDZkUHgvYnQyNFhoSGg0ZWNITnp3N1JwMC9EVVUwOGhLQ2dJOGZIeEtDNHVoa0toZ0V3bVEx
aFlHSHg5ZlFFQXpzN09VQ2dVQUlDMAp0RFRrNStkajVNaVJBQUIvZjMvczJMRUQ3dTd1SnV2T0dH
T2REU2ZnRHFwbno1NElDd3ZEMUtsVHNXTEZDbmg0ZU1EYTJocloyZGx3CmRuYUdqWTBOYkd4c01H
Yk1HS1NrcE1EZjN4OUE0MXVUNUhLNTJmSmxNaG1pbzZOeDZ0UXB5T1Z5ckZpeEFnY09IQkNHU3lR
U1dGdi8KOHFwRkx5OHZPRGs1SVRVMUZSS0pCTnUyYmNQZHUzY1JFeE9Eakl3TVZGWldBZ0F5TXpN
UkdCZ0lpVVFpVEJzWkdRbG5aMmV6ZFdlTQpzYzZFRDBHM28vNzkrd05vZkVldklkb0pEd0QyN2R1
SHZuMzc0c01QUDBSZVhoNU9uanlKOHZKeVNLVlM0VnhzYy8zd3d3OXdkbmFHCm82TWpBR0RjdUhI
NDV6Ly9pVEZqeHVEQWdRT0lpSWd3T3EyVmxSV2swc1pWSmpZMkZsbFpXZGk5ZXpkMjdkcUY4K2ZQ
QTJnOFZIN2wKeWhXRDA3ZTA3b3d4OWlqaFBlQjI1T1BqQTJ0cmExeTdkcTNKc0I5Ly9GRkkwQUJR
VWxLQ3NySXliTm15QmNuSnliaDgrVExpNCtQaAo2ZW1KbEpRVW5ZZG1FQkZPbno1dFVSMUtTMHZ4
NFljZjZud1hHQmdJRHc4UEZCY1hHNTJ1b0tBQXQyL2Z4cE5QUG9tclY2OWkrZkxsCjJMeDVjNU4z
RTd1N3U2T3dzQkJGUlVVNjljdlB6Mjl4M1JsajdGSENDYmdkT1RnNElDZ29DQWNQSHRUWkMxYXIx
WGp2dmZmdy9QUFAKQzkvZHZuMGJDUWtKQUlDSkV5Zml1ZWVlUTlldVhURjM3bHlVbHBZaU1qSVNG
UlVWS0Nzcnc3dnZ2aXVjNjIxb2FFQk5UWTNST2d3WQpNQUJidG14QlFVR0I4RjFKU1FsKyt1a25U
Smt5UldmYzI3ZHZDLzlQVDAvSDJMRmpNWExrU0NnVUNxalZhbHk5ZWhVcWxRb1pHUm1vCnJhMEZF
V0hHakJtd3M3UER3b1VMb1ZBb29GQW9FQlVWQlRjM043TjFaNHl4em9RUFFiZXp3NGNQWSs3Y3VR
Z01ETVRZc1dOaGIyK1AKR3pkdVlNV0tGVTF1Ri9yNzMvOE9Cd2NIOU83ZEc5MjdkOGVNR1RNZ2xV
cXhmZnQydlBMS0s0aUxpMFBQbmoyeGMrZE85T3ZYRC92Mgo3Y1BGaXhkUldGaUl4TVJFekpneG84
bjg1WEk1ZXZYcWhXWExsc0hQenc5eXVSd0pDUWxZdEdnUlZxOWVyVFB1di8vOWI2eGR1eFpTCnFS
UmZmLzIxY0k1NDh1VEo4UFB6dzdScDB4QVJFWUg1OCtmajZOR2ptRDkvUGo3OTlGUHMzNzhmZi96
akh6Rmt5QkM0dTd0ajc5NjkKNk5tekozcjI3R20wN293eDF0bEl4bzhmVDJxMUdoa1pHZTA2WTdY
RTJxSTNFN1grVzQ1YWQ3d0dzamJmV0FPVVNpVUtDZ3JRcDA4Zgo5T2pSbzJsODFHcFlXVm5oN3Qy
N2tNbGs2TktsaTg3dyt2cDZGQmNYdzkzZFhUZ3ZhNms3ZCs2Z1I0OGVxSzZ1eHZmZmY0LysvZnNM
CjU0UTFBZ0lDRUJRVWhIZmZmUmZWMWRVR0wreXFxYW1CdmIyOTBCN3R3OUZFaExLeU1yaTR1RFNa
cmlWMVo0eXhYN3ZnNEdDbzFXcmUKQXhhTFRDYkRFMDg4WVhTNDVxRWN4dTZQdGJHeHdjQ0JBeDlx
M3BxRTcrRGdZTElPQU5DbFM1Y215VjlEazN3Qk5Ea1hMSkZJRENaZgpvR1YxWjR5eFJ3V2ZBMlpO
cU5WcTNMeDVVK2RDS3NZWVk2MkxFekJySWk0dURzdVhMMGRBUUFEMjc5OHZkblVZWSt5UnhJZWdX
Uk1MCkZpd1F1d3FNTWZiSUV5MEJXNUVLZGdEc3hLb0FZNHd4SmlJK0JNMFlZNHlKZ0JNd1k0d3hK
Z0pPd0l3eHhwZ0lPQUV6eGhoakl1QUUKekJoampJbUFFekJqakRFbUFrN0FqREhHbUFnNEFUUEdH
R01pNEFUTUdHT01pWUFUTUdPTU1TWUNUc0NNTWNhWUNEZ0JNOFlZWXlMZwpCTXdZWTR5SmdCTXdZ
NHd4SmdKT3dJd3h4cGdJT0FFenhoaGpJdUFFekJoampJbUFFN0FSS3BVSzE2NWRFejdmdm4wYmhZ
V0ZiVGEvCnFxb3EzTGh4bzgzS2I2bTZ1anFjUFh2Mm9hWnR5OWkxcEY0dFZWVlZoZUxpNG9lYXRy
cTZ1cFZydzh6UjM2YU5LU3NyUTFwYUd1N2MKdWRPbTlXbk43ZUxCZ3dldFVnNXJYNklsNEpNblR5
SWtKQVFTaVFSRGh3N0Z2SG56OE1JTEwyRHg0c1hZdG0wYmxFcWxXRlhEaFFzWAo0T2ZuaHovKzhZ
L0NkMnZYcnNYMDZkUGJaSDZ4c2JGd2RuYkdnUU1IMnFUOGxzckp5Y0h3NGNNUkZoYjJVTk8zVmV4
YVdxK1cyTGR2CkgxeGNYQkFYRjlmc2FjK2RPNGVrcEtRMnFCVXp4dEEyYmNqT25Uc1JIeCtQakl3
TVBQSEVFNmlycTJ1ek9yWG1kdkhqano4aUlTR2gKVmNwaTdXajgrUEVVRkJSRVlraFBUeWNBdEdY
TEZ1RzdTNWN1a2IyOVBTMVpza1NVT21tOCtPS0xOR0hDQk9GemVYazVGUlFVdE5uOApYRnhjZE9M
UTBXemV2SmxjWEZ3c0dyZTJ0cGJTMHRLRXoyMFp1K2JVcTZYMDIrWHQ3VTN2dmZkZXM4cElURXpz
ME12WkdQMjIveHJwCmI5UDZxcXFxcUV1WExxUlNxWWlJNk91dnYyN1YrYmYxZGxGUVVFQnZ2ZlZX
cTVYSDJvNG03NHA2Q05ySnlRa0FJSkZJaE85OGZYMFIKRUJDQTA2ZFBpMUludFZvTkFKQktwYkN5
K2lVOHpzN09HRHg0Y0xQTEl5S0x4cFBKWkRweDZHaHNiR3dNMXEraG9VSG5zMUtweEx4NQo4M0Rt
ekJuaHU0ZU5YVXZxMVJLR2xwbWhkalYzbVpXVWxHRFRwazE0NVpWWExKNXZSMkNvN1JyNnkxOWJh
N2JIMUh6TU1iWk42N3Q4CitUTHE2K3VGY1FJREExdXRUdTJ4WFF3ZVBCZ3FsWXFQcnZ5S1NNV3Vn
TDRIRHg3ZzIyKy94ZUxGaTNXK3I2cXF3dXJWcTJGcmE0dWkKb2lMMDc5OGZNVEV4c0xlM1IwSkNB
bDU3N1RXc1hyMGFMNzMwRXVMajQ3RnUzVG9FQndkang0NGRTRTlQUjJ4c0xGeGRYZUh0N1kzbwo2
R2pJWkRLY09IRUNucDZlQUJyUHlhMWF0UXE5ZS9mR3paczM4YzAzMzhET3pnNEE4UFBQUHlNdUxn
NkhEaDFDZG5hMnhlVkZSVVdoClY2OWV5TXJLUW84ZVBUQnMyREFFQmdaaTdOaXhCdHV1cVVOY1hC
eGNYVjN4eFJkZndOdmIyMno3TDE2OGlEZmZmQk0zYnR6QVJ4OTkKQkVkSFJ5eGF0QWl2dmZZYUZp
eFkwR1ErZVhsNWlJMk5oVnd1aDcyOVBiWnUzWXFrcENTNHU3c2pKaVlHRnk5ZVJGVlZGVDc2NkNP
TQpHalhLWUYxUG5UcUYzTnhjU0NRU0hENThHTEd4c1JnNmRDaTJidDJLSTBlTzRQcjE2eWdxS3NM
YXRXdng1WmRmQ3JFN2R1d1lsaXhaCkFqYzNOK3pmdngrREJnM0MrZlBuRVJFUmdVOCsrUVFUSjA1
RWFXbXB4ZlhRWjJ6YWxpNnpjK2ZPNmJScisvYnRBQm83OTdWcjEyTFAKbmozbzFxMGJqaDQ5S3BT
bmI4MmFOVHFIeTFOVFUvSHBwNTlpMEtCQlVDcVYyTE5uRDJ4c2JMQjc5MjQ4ODh3ekp0dGpiQm42
K1BoZwp3NFlONk5hdEcvTHk4aEFRRUlCVnExYTFLRGI2eTNUNzl1MDRkKzZjd2VWdkxvNWp4NDV0
MXZJMXRwNjFkSnZXdDJ2WExodzhlQkFOCkRRMVlzV0lGN08zdE1XZk9ISU14cnF5c05OcjJtcG9h
Zy9FM3QxMEFwcmR4UzlvTEFMTm56OGJ6enorUFNaTW13ZHJhMm9JdGhvbEsKekVQUWx5NWRJZ0Qw
d2dzdlVIeDhQRzNhdEluOC9mMXB6cHc1VkZaV3BqTnVVRkFRZmY3NTUwUkVWRjlmVHlOR2pLRFEw
RkJoZUw5KwovWFFPQjA2Y09KRWlJaUtJaUtpa3BJUWVmL3h4OHZMeW9xTkhqOUlQUC94QXYvbk5i
MmpwMHFYQytNOCsreXpGeDhjVEVaRktwYUsrCmZmdFNTRWdJRVJHVmxaWFJzbVhMcUdmUG5oYVg5
N2UvL1kxZWYvMTFJaUs2ZlBreUFhQ1ltQmo2NFljZkRNYkMxZFdWbm5qaUNUcHkKNUFpbHBhV1Jo
NGNIRFJnd2dKUktwVVh0VDAxTkpRQjA0c1FKT243OE9IM3d3UWRHNDU2ZG5VMU9UazdrNStkSEJ3
OGVwTWpJU0ZJbwpGRFI1OG1TNmYvOCtxVlFxaW95TUpMbGNUaFVWRlVSRXRHM2JOdXJkdXpjUkVk
WFYxVkcvZnYyRXcybnZ2UE1PaFllSEMrVjdlSGhRCmRIUzB3ZGdSRVMxWnNvUUdEeDRzZkZZcWxU
Ujc5bXdpSW1wb2FEQlpEMzNhOVRJMWJXc3NNKzEyRVJIOTlyZS9KVjlmWDBwTlRhWGkKNG1MeTh2
SXllZXJrc2NjZW82Tkhqd3Fmdi8vK2UrclZxeGQ1ZW5yU21UTm5LQ01qZzN4OWZjbk56YzFzZXd3
dHc0S0NBcG8wYVJKbApaMmNURVZGdWJpNEJvSXNYTDdZNE50cHRON2Y4VGNXeE9jdlgxSHhhdWsw
YmtwaVlTRlpXVnNKblF6RytjdVdLeWJZYmk3OStEQTF0CkY2YTJjVXZhcTVsT0pwTlJUazZPMFhZ
eThYV0lROUFhU3FVU0pTVWx1SFRwRXNyS3lsQlhWNGZidDI4THc1T1RrNUdWbFlWWnMyWUIKYUR6
MHQyalJJaHc3ZGt6NDY5SGUzbDduY0tDRGc0UHcyY1hGQlFNSERvU1BqdzlDUTBQaDd1Nk9DUk1t
NE50dnZ3WFFlRkhNOGVQSAo4YnZmL1E0QVlHVmxoU2xUcGdobHllVnkrUGo0Q0lmVXpKVUhBSEZ4
Y1hCMmRnWUFEQjA2RkhLNUhBRGc3dTV1TkE3ejU4L0gxS2xUCkVSd2NqRTJiTnVHNzc3NURhbXFx
UmUxLyt1bW5NWFBtVEx6MTFsdUlpNHZEeXBVcmpjNW4xS2hSOFBMeWdyZTNOOExEdzdGanh3N2sK
NStlRGlIRG16QmtrSnllalQ1OCt1SFhyRmpJek01dE1MNVBKRUJZV0JsOWZYd0NOaDlJVUNvWE9P
SnJZNjhjT0FGNTg4VVVVRmhiaQp3b1VMQUJyM0JDTWlJZ0FBaVltSkZ0ZERuNmxwVzJ1WjZSOXlE
ZzBOeGROUFB3MVhWMWNFQndjYnZjcTJyS3dNOSs3ZFE2OWV2WVR2ClBEdzg0T2JtaG1uVHB1R3Bw
NTVDVUZBUTR1UGpVVnhjRElWQ1liSTlocFpoY1hFeDh2UHpNWExrU0FDQXY3OC9kdXpZQVhkMzl4
YkgKUnJ2dDVwYS9xVGcyWi9tYW1rOUx0MmxMR0lyeGtDRkRqTllwTFMzTmFQejFZNmkvWFpqYnhp
MWRSaktaREU1T1RpZ29LR2hXVzVrNApPa1FDRGdnSXdNc3Z2NHo5Ky9lam9LQUF4Y1hGZVBycHA0
VnpMT2ZQbjRkY0xvZE1KaE9tR1RGaUJBQWdQei9mb25sSUpCS2R6dFBSCjBSRzF0YlVBZ05PblQ4
UEx5d3ZkdTNjWGhuZnQybFZuZlAzcFRaV24rYXhKamdEUXUzZHZZY00wNXJISEhoUCtyemtrVjFo
WWFISDcKTjIvZWpJS0NBdmo3KzVzOS9HUnZieTkwakFDUW5aME5aMmRuMk5qWXdNYkdCbVBHakVG
S1NncjgvZjJiVEN1UlNMQnQyemJjdlhzWApNVEV4eU1qSVFHVmxaWk54dFArdmY1N2YzOThmWDN6
eEJZREdLK0tmZmZiWlp0ZERuN2xwVzJPWjZTZGc3YzlPVGs2b3Fxb3lXTGZ2CnZ2c09BTkNqUjQ4
bTAyc3ZLeTh2THpnNU9TRTFOZFZzZS9TWFlXWm1KZ0lEQTNYcUZCa1pDV2RuNXhiSFJydXQ1cGEv
cVRpMjVuclcKMG0zYUV2b3hObFVuVS9IWGo2RisvUzNaeGkxWlJwcnYyL0tXU2RaNk90dzVZRHM3
Tzh5WU1RT3JWcTFDVWxJU25udnVPVlJYVjZPOAp2QnhWVlZYbzJyVXJBTURIeHdkU3FiUlY3bi83
NmFlZlVGNWUzdVQ3bGx6YzgrcXJyK0tGRjE3QTVjdVhZV3RyQ3djSEI0d2JOODdpCjZkM2QzZUhv
NkFoSFIwZmN1SEhEb3ZiTFpETEk1WEs4Ly83N1dMeDRzVTduWTA1NWVUbWtVcWx3N3RHYzJOaFla
R1ZsWWZmdTNkaTEKYXhmT256OXY4YndBWU5HaVJWaS9majAyYk5nQU96czcyTmpZUEZROVd0SUdm
UzFkWnFab09uRkxibXV4c3JLQ1ZDcHRkbnRLUzB0eAo1Y29WZzhOYUdodDlwcGEvcVRpMjEzcldG
dHUwdVRxWmlyODVyZG5IS1pWS09EZzRQRlE5V1B2cUVIdkEralFiaVVxbEF0QzRWNkJTCnFZUkRs
a0RqSWIyR2hnYmhJaVhnbDZzZG02dHYzNzY0ZGV0V3F4NjJtVEpsQ3BZdVhZcms1R1RrNXVZaVBU
MjlXZFBmdkhrVGxaV1YKR0Rac21NWHRYN05tRFk0ZlB3NkpSSUkxYTlZMGEzNmVucDVJU1VuUitZ
dWFpQXhlalg3MTZsVXNYNzRjbXpkdjF2bUxYWnU1am03TwpuRG00Zi84K1hucnBKZnorOTc5L3FI
cTBwQTJHV0xMTUhyWUQ5L1QwaEoyZEhlN2R1MmR5dklLQ0F0eStmUnRQUHZsa3M5dmo3dTZPCndz
SkNGQlVWNll5Zm41L2Y0dGdBdjdUZDNQSTNGY2ZXWHMrTWFZdHQybHlkVE1WZnc5ajZZK2syYm9u
UzBsSjRlSGcwYXhvbURsRVQKc09aSk05cVg4OWZVMUdELy92MlF5K1VZUDM0OEFDQWlJZ0t1cnE1
SVNVa1J4c3ZOellXWGx4Y21UWm9Fb1BHdnhaeWNITlRYMStQbQp6WnNvS2lyU09ZOWNYMSt2azZD
cnE2dUZCRDl6NWt4SXBWTHMyTEZER0g3dDJqV1VsNWNMNDFSWFY2T21wa1k0WjJPcVBBQll2MzQ5
CkhuLzhjYXhjdVJKejVzeUJ2YjI5Mlhob1Q1K1dsb2JwMDZmRDE5ZlhvdlluSnlkajhPREI4UGIy
Umt4TURENysrR09UaCtjYkdocFEKVTFNamZKNDdkeTVLUzBzUkdSbUppb29LbEpXVjRkMTMzeFZ1
azZpdnJ4Y2VqcUpRS0tCV3EzSDE2bFdvVkNwa1pHU2d0cllXUkFRaQpRdmZ1M2ZIVFR6OEJBQ29x
S3ByRURnQzZkKytPc0xBdzVPVGtDSWZhTEttSFB1MTZXZEtHbGl3elErM1NmcUpWVFUyTlRreTFX
VmxaCjRiZS8vYTNCaEtDOW5xYW5wMlBzMkxFWU9YS2syZmJvTDhPWk0yZkN6czRPQ3hjdWhFS2hn
RUtoUUZSVUZOemMzRm9jRysyMlg3aHcKd2VUeU54WEg1aXhmYyt0WlM3ZHBmZmZ2MzRkYXJkWlpw
dm94TmxXbkdUTm1HSTIvZmd6MXR3dEx0bkZ6eXdob1hKZVVTaVVDQWdJTQp0cEYxTUdKZEJmM1ZW
MTlSU0VnSUFTQjNkM2RhdEdnUmhZU0VrTCsvUDgyZVBadisrOS8vNm95Zmw1ZEhRNFlNb2IvODVT
OTAvUGh4Cm1qVnJGaWtVQ21INHFWT255Tm5abVFZTUdFQnZ2UEVHTFZ1MmpKNSsrbWxLUzB1ampJ
d002dDY5Ty9YdDI1ZXlzN1BwMHFWTE5HalEKSUxLMXRhV3Z2dnFLaUlqMjd0MUxqbzZPNU8zdFRU
Tm16S0NwVTZkU1lHQWc3ZDI3bDNKeWNtajA2TkhDUTBOU1UxUE5sdmZLSzY4UQpBQUpBMXRiVzVP
TGlRc3VYTDZlNnVqcUQ4VmkzYmgzNStQalFwazJiYU9QR2pmVHl5eS9UL2Z2M0xXcC9XbG9hOWU3
ZG15NWR1a1JFClJGZXZYaVZyYTJ2eTlQUTBlRFhrM3IxN3FVdVhMdFNuVHg5S1NFZ1F2di80NDQv
SjF0YVdKQklKeWVWeU9uVG9FQkVSNWVUa2tMKy8KUHdHZzdkdTNVMFZGQmZuNStWSFhybDFwNGNL
RmxKU1VSQTRPRHZUODg4OVRYVjBkdmZYV1d5U1JTR2pSb2tWMDRzUUpuZGhwdC8vVQpxVk8wY2VQ
R0p2VXpWZzk5K3ZXcXE2c3pPcTBsNjRDNVphYmRyazgvL1pTc3JLeG95SkFobEorZlQzbDVlZVR0
N1UxU3FaU09IRGxpCnNMNUpTVWswYTlZc25lK0dEeDlPZm41K3RHYk5HbHEvZmoxTm5EaVJTa3BL
ek1iQzJESThkT2dReWVWeVlidkt5c295VzVZbHNkRnUKKy9mZmYyOXkrWnVMbzZYTDk4R0RCMGJu
WThrMmFHcWIxbmZ1M0RrYU8zWXNBYUJWcTFaUlVWR1J3UmlicWxOZFhaM0orSnZiTGt4dAo0NVlz
SXlLaVBYdjIwUFRwMHczR2szVWNtcndyNm0xSXphVldxNm1nb0lDdVg3OXVjSGhkWFIxVlYxY1RV
ZVBsK00zVjBOQkF0MjdkCklpS2ltcHFhaDY4b0VVVkhSMU5CUVFIOTV6Ly9vYSsvL3BxU2twSm93
WUlGbEpLU1luSzZuMy8rV2JqMVNKKzU5cmVHdXJvNnVuNzkKdXRFNmFOUEVtcWhwdkRWeE5LZTJ0
cmJGOVdpdGFTMVpacGEyeTVncFU2YlFqei8rS0h3ZVBudzR2ZmJhYTFSVlZkWGsxanVONXJaSApy
VmJySlBHV2xLVk52KzNHbHI4bGNXeXQ5Y3ljMXR5bUxhMlRxZmliVzM5YXVvMVBtemFOdnZubW00
ZWFsclVmVGQ2VmpCOC9udFJxCk5USXlNa1RZLzM0MDdkeTVFNG1KaVVoTlRkWDUvdVRKa3hnNGND
QUdEUm9rVXMyWU1lMjF6RzdjdUlFTkd6Wmd5NVl0c0xPelEwQkEKQUlLQ2d2RFh2LzYxVmNvWEc2
Lzc0bm43N2JjUkVoTFNhaGNPc3JZVEhCd010Vm9OVHNCdDRQTGx5d2dJQ01EVXFWUGg3KytQbXBv
YQpsSmFXSWpRMEZLR2hvV0pYanhuUW5zdnN4bzBiK09xcnI3Qmd3UUs0dWJraElDQUEvL3JYdjFw
MUhtTGhkVjhjbVptWnNMR3hzZmlKCmNVeGNuSURiMkwxNzk1Q1ptWW1Ta2hJRUJ3ZnpYLzYvQXUy
OXpENzc3RFBob3B3QkF3Wmc5dXpaYlRxLzlzTHJQbU9tY1FKbWpESEcKUktCSndCM3lQbURHR0dQ
c1VjY0ptREhHR0JNQkoyREdHR05NQkp5QUdXT01NUkZ3QW1hTU1jWkVJTnJia0pyelRIc0pDRkkw
d0FwcQpTTkQ0UEdHQ0JHcFlvUUZTRUZyK2hwTzJSc1J0TnVkUmFUTmpqRm1pdzcyT1VKc3Q2bUNE
ZXNpZ05Oa3hLeUZEUFd4UUIxdVJhOXh5CjNPYk8wV2JHR091UUNkZ1dkYkJIVFpPTzJSb3FuWTVa
QmVzbUhYTU43SCtWSFRTM3VYTzBtVEhHTkRwVUFwYUEwQVVQNElCcTJLRVcKZHFnVk9tZFRIYk9t
VTY2RkhXeFFqMm80NEFHNi9Db09XWEtiTzBlYkdXTk1YNGRKd05aUW9Rc2VDRC8ycUJFNlo4M2Vr
YUdPV2JOWApWQXM3b1JPM2hncFdVT01CdWtBRmE1RmJaaHkzdVhPMG1USEdET2tRQ1ZpelIrU0lT
cUZqZGtDMTBEbmJvazQ0UEtuZE1Xc09TOWJCClZtY1B5Z3BxV0tIeHhkV1ZjT3lRZTBqYzVzN1Ja
c1lZTTZaREpHRHRQU0pEbmJOMng2enBjTFV2ek5HY0U5VHNQV21QbzRZVnF0QlYKek9ZWnhHM3VI
RzFtakRGalJFL0F0cWlEQTZxTmRzN2FlMGVHT21iTk9VRmpuYkxtOEdWSHVtQ0gyOXc1MnN3WVk2
YUlub0ExSGE4OQphblE2YU8zT1dYT09VQWFsVHNlcmhFdzRKNmpmYVd0ZnVOUFJibDNoTm5lT05q
UEdtQ21pSm1CYjFNRVdkVUxIYTZ4ejFsd3RxN253CkJnQlVzRVk5YklURGx2cWRzdll0SzVwemh4
MmhjK1kyZDQ0Mk04YVlPYUltWUp2LzdiZm9kODcycUduU09Xdk9FVXJSQUFEQ1lVbnQKemxyL2ZL
SDJMU3MycU84UUhUTzN1WE8wbVRIR3pCSHZVWlFneUtDRURFcWREbHE3azlic0pXazZaODNoU1FE
Q1lVbE5SNjE5RGxENwphbG5OclMweUtDRUJpWHFsTExlNWM3U1pNY1lzSVZvQ2xxSkI1MGZUZWNx
Z2JMS25wT21jSFZBTlc5UUJBT3BnSzNUUytnOXAwQzVMCmZ6NUt5TVJxTXJlNWs3U1pNY1lzSVZv
QzF0ekRhUTJWOEtQZlVXc2Z0blJBTmJyaFB1eFJBd0NvZ1QyQVgvYVF0QjlscVBuUkxsdjcKbmxH
eGNKczdSNXNaWTh3U29oNkNOdlNqNlVBMW5iYW1rOVk4Ti9neDNCUEswT3dkYVRwaDdXbU5sUzht
Ym5QbmFETmpqRm1DM3dmTQpHR09NaVVDMFBXREQreTBTclgyYlgrN3gxSDRLa29ibWJUaEt5TkFB
S1ZTdzFwbldXUGxpNGpaM2pqWXp4cGdsUkV2QTJwMnY1a2Y3Ck1ocnQrenMxRjl3QUVHNHhxWU10
cXVHQVd0aWhEcmFvaDQzUVNXdCt0TXZXekU5TTNPYk8wV2JHR0xPRWFBbFk5NXBWcWRiMXJES2gK
TTlaKzhEN1FlQ0dPL3UwcEQ5QUZOYkQvMzdXMGRzTGVrdVpIZno1aTRqWjNqall6eHBnbFJEMEVy
ZWs4dFI4anFOMHBhNTc3Q3pSMgo1TnIzZzJvZTBGQURlenhBRjJFdlNkTTVhL2FXTkh0TVNzaEVQ
elRKYmU0Y2JXYU1NVXVJdXF1ZzNTRnJPbVBOMjI2MG4vbXJlUnloCm9VY1Uxc0pPZURHN1ppOUpm
MDlKTTUrT2dOdmNPZHJNR0dQbWlKcUE5ZmVFdEYvSXJ2OHdmczJ0S0lZZTBxODVSS241cVlaRGs4
NjUKb3p5ZWtOdmNPZHJNR0dQbWlINnlyQWIyd3FNRXRlL3pCSnEraXM3VWErbzBoeWdOZGM3YVY5
VjJCTnptenRGbXhoZ3pSZlFFckxuSwpWZjhwUnZydmVMWGtSZTNhaHlpMU8raU90bGZFYmU0Y2JX
YU1NVk5FVDhBQThBQmRUSGJLbWd0MXBHZ1FubkpFa09oMHpKbzlJRU9kCmMwZkViZTRjYldhTU1X
TTZSQUltU0lRT1ZITWZwL2FEOTdYUEdXcDN6TnJ2ZzlXY0I5US9STmxScjRqbE5uZU9OalBHbURF
ZElnRUQKalZlN1ZzSlIyQ3ZTdm1wVys3eWhmc2VzLzRZYzdhdGxPM3FuekczdUhHMW1qREZET2t3
Q0JobzcyeXAwMVhrNmt2YmJiNHgxek5yagpheDVkK0d2QmJlNGNiV2FNTVgwZEtnRnI2TDlzWGZ2
Q0hPMk9XZnNDSFUzSC9HdkZiZTRjYldhTU1ZME9tWUExTkIyMEJHU3lZMzZVCkRrRnltenRIbXhs
anJFTW5ZQTNONHd3N0UyNHpZNHc5MnZpMU1Zd3h4cGdJT0FFenhoaGpJdUFFekJoampJbUFFekJq
akRFbUFrN0EKakRIR21BZzRBVFBHR0dNaTRBVE1HR09NaVlBVE1HT01NU1lDVHNDTU1jYVlDRGdC
TThZWVl5TGdCTXdZWTR5SmdCTXdZNHd4SmdKTwp3SXd4eHBnSU9BRXp4aGhqSXVBRXpCaGpqSW1B
RXpCampERW1BazdBakRIR21BZzRBVFBHR0dNaTRBVE1HR09NaVlBVE1HT01NU1lDClRzQ01NY2FZ
Q0RnQk04WVlZeUxnQk13WVk0eUpnQk13WTR3eEpnSk93SXd4eHBnSU9BRXp4aGhqSXVBRXpCaGpq
SW1BRTNDbmN4dEEKb2RpVkVObDlBRC8rNy8rVkFHcEZyQXRqckxNU01RRWZCZUFEUUFKZ0FvQS9B
QmdENFBjQXpvbFhyVGFWQ01BYnY3UjVLWUFsQU9ZQworQTJBeWUxUWg3VUFwcmZEZkRUK0JlQkpO
TFo1RklCaldzT3VBWmp4djJIL0I2Q2tqZXR5QThBOEFLc0FmQWdnQU1Cb0FKZmFlTDZNCk1kYVVh
QW1ZYUNxMmJsMENBTWpPamdiUlFUUTBaR0xKa3A2d3NSbUhNMmV5UUlRTzgxTmJXNGUwdFBTSG5y
Nnh6VE1RSFQxZnE4MmYKZ0dnWGlQYml6cDF6ZU80NTJ6YXZkM241dXlnbytGZTd4S3l4emRNUkc3
c01BTEIzNzBvUWhXcU40d1dsY2gvNjl1MExvbzlCMUx0Tgo2eE1SOFNxZWU2NFNSRHRCOUFIcTY4
L0MxMWVLQXdkK2F0VTJNOGFZSlVROUJOMjllM2NBZ0VRaUFRQllXMXZqOWRkZlIzMTlQZmJ1CjNT
dG0xWFFvbFVyTW16Y1BaODZjYVhGWittM1c2TktsQzJKalk4MU8zOURRWVBHOEROWGIyZGtaZ3dj
UHRyaU0xdURrNUtUelc1dFUKS29XZm41L0I2YWlWTTlxMWE5ZFFYRndNcFZJSkFKREpaUGpIUC82
Qk8zZnVOSHYrelZrT2pERm1pRlRzQ3VpN2Rlc1dBS0IzNzk0QQpnTkxTVXNURXhPRGl4WXVvcXFy
Q1J4OTloRkdqUmlFdkx3K3hzYkdReStXd3Q3ZkgxcTFia1pTVUJCOGZIMnpZc0FIZHVuVkRYbDRl
CkFnSUNzR3JWS3BObHBhZW5JelkyRnE2dXJ2RDI5a1owZERSa01obE9uRGdCVDA5UGJOMjZGVWVP
SE1IMTY5ZFJWRlNFN2R1M28wdVgKTHEzV1ppTEM2dFdyOGNFSEh4aHRWMlZsSlhKemN5R1JTSEQ0
OEdIRXhzWmk2TkNoQUlDYW1ocURiZGF2OTlxMWEvSGxsMS9pMEtGRAp5TTdPQmdCVVZWVmg5ZXJW
c0xXMVJWRlJFZnIzNzQrWW1CalkyOXVialV0cnNiTFMvVHN3SVNFQmQrN2N3ZjM3OTNINDhHR2NQ
WHNXClFQUFhoUkVqUnVpVU8ydldMUHo1ejM5R1NFZ0lFaElTNE9MaWdtSERobUhZc0dFQWdOVFVW
SHo2NmFjWU5HZ1FsRW9sOXV6WkF4c2IKRyt6ZXZSdlBQUE1NQU9EVXFWUE5YZzZtNnM0WTY4VEdq
eDlQUVVGQkpJWTllL1lRQURwMzdod1JFZFhXMWxKSVNBajE2TkdEQ2dzTApxYUdoZ1NaUG5rejM3
OThubFVwRmtaR1JKSmZMcWFLaWdyS3pzOG5KeVluOC9Qem80TUdERkJrWlNRVUZCVFJwMGlUS3pz
NG1JcUxjCjNGd0NRQmN2WGpSWlZrbEpDVDMrK09QazVlVkZSNDhlcFI5KytJRis4NXZmME5LbFM0
VzZlbmg0VUhSMGRJdmJ2SDM3ZGdKQWE5ZXUKcGM4Ly81eDI3dHhKczJmUHBvaUlDQ0lpZysyNnd3
WE1kZ0FBSUFCSlJFRlVjdVVLOWV2WGo5TFMwb2lJNkoxMzNxSHc4SENoVEdOdAoxcTkzV1ZrWkxW
dTJqSHIyN0NsTUd4UVVSSjkvL2prUkVkWFgxOU9JRVNNb05EU1VpTWlpdUZnaU1UR1JBTkR4NDhj
TkR0Zk1qNGhJCnFWVFM4T0hEaGMrdnZ2b3FxVlNxaDFvWDlOMjdkNC9Hang5UEFLaG56NTUwNU1n
Um5lSGZmLzg5OWVyVml6dzlQZW5NbVRPVWtaRkIKdnI2KzVPYm1Sa1JFZFhWMUQ3VWNUTldkTWRi
NWFQSnVoOWdEam9xS2dwV1ZGVzdldkFsL2YzK2NPWE1HZ3dZTnd2NzkrMEZFd2lIVQpQbjM2NE5h
dFc4ak16TVMwYWRQZzVlVUZEdzhQaEllSEl6dzhIR2xwYWNqUHo4ZklrU01CQVA3Ky90aXhZd2Zj
M2QyUm1KaG9zcXlCCkF3ZWlhOWV1Q0EwTkJRQk1tREFCMzN6empVNDk5UThidDRSTUpvT05qUTJJ
Q0RZMk5sQ3BWQUNBVWFOR05Xa1hFU0VzTEF5K3ZyNEEKR2c4akt4UUtBRERaWnYxNnkrVnkrUGo0
NE1DQkF3Q0E1T1JrWkdWbElUVTFWYWpUb2tXTHNHelpNbVJuWjJQMDZORVd4YVUxM2IxNwpGNWN1
WGNMeDQ4Y3haY29VTEYyNkZFUmtkdm5weDh5UWJ0MjY0YXV2dnNLNmRldncvdnZ2WS9yMDZmamIz
LzZHNWN1WEF3QThQRHpnCjV1YUdwNTU2Q2s4OTlSUUFJRDQrSHQ3ZTNsQW9GUER5OG5xbzVXQ3U3
b3l4enFsREpPQ05HemRpeElnUmtFcDFxNU9kblExbloyZlkKMk5nQUFNYU1HWU9VbEJSNGUzc0RB
T3p0N1NHWHk0WHhNek16RVJnWXFKTW9JeU1qTFNwTElwSG9UT2ZvNklqYVd0M2JVMW96QVllRQpo
QWlkOWJ4NTg0UkRsWWJhSlpGSXNHM2JObnozM1hmNDVKTlBrSnViaThyS1NyTnRObFJ2N1hhZVAz
OGVjcmtjTXBsTUdLNDViSnVmCm40L1JvMGRiRkpmVzFMTm5UNFNGaFdIcTFLbFl0bXdaTm0vZURH
dHI2MmF2QzhiSVpESkVSMGZqZDcvN0hXYk9uSWtWSzFaQUxwY2oKSWlJQ1FHTjhySzJ0aGZHOXZM
emc1T1NFMU5SVWVIdDdQOVJ5TUZkM3hsam4xQ0VTc0xXMWRaUGtDd0RsNWVXUVNxWEMrVGR6U2t0
TApjZVhLRllQRG1sdFdlNUpJSk5pMGFaUEpjV0pqWTVHVmxZWGR1M2RqMTY1ZE9ILytQQURUYlRh
bnVyb2E1ZVhscUtxcVF0ZXVYUUVBClBqNCtrRXFsZVBEZ3dVT1ZhVWovL3YwQk5DNERRN1FUSGdE
czI5ZDRaZlNISDM2SXZMdzhuRHg1c3NYTDc0Y2Zmb0N6c3pNY0hSMEIKQU9QR2pjTS8vL2xQakJr
ekJnY09IQkFTc0NGV1ZsYkMrdmt3eTZFanIzdU1NZkYwNkFkeGVIcDZJaVVsUldlUGk0aHcrdlJw
ZytPNwp1N3Vqc0xBUVJVVkZPdVBuNStjM3V5eERXbk1QV0ovMlhxaStxMWV2WXZueTVkaThlWE9U
OFV5MVdjTll2YjI4dktCU3FYRGh3Z1hoCnU3S3lNalEwTkxUcTNwbVBqdytzcmExeDdkcTFKc04r
L1BGSElVRURRRWxKQ2NyS3lyQmx5eFlrSnlmajh1WExpSStQYi9IeUt5MHQKeFljZmZxanpYV0Jn
SUR3OFBGQmNYR3gwdW9LQ0F0eStmUnRQUHZua1F5K0gxbGozR0dPUEhsRVRzT2FLWjJPM2djeWRP
eGVscGFXSQpqSXhFUlVVRnlzcks4TzY3N3dxMzBUUTBOS0NtcGtZWWYrYk1tYkN6czhQQ2hRdWhV
Q2lnVUNnUUZSVUZOemMzczJYVjE5ZERyVllMClpWVlhWd3ZuWllIRzI0ZCsrdWtuQUVCRlJRWHE2
dW9RSFIwdGZHY3BUWDByS2lxTWpxUGZMb1ZDQWJWYWphdFhyMEtsVWlFakl3TzEKdGJVZ0lzeVlN
Y05vbXczVnU3cTZHalUxTlNBaVJFUkV3TlhWRlNrcEtjSzhjbk56NGVYbGhVbVRKbGtVRjBzNE9E
Z2dLQ2dJQnc4ZQoxTmtMVnF2VmVPKzk5L0Q4ODg4TDM5MitmUnNKQ1FrQWdJa1RKK0s1NTU1RDE2
NWQvMzk3ZHg0V1ZkbitBZnc3cklLaUlFNklpb2k0CmdJcVFnTHNFbWt1K21wU3BZSnBDR1laTG1X
YW1hV2xtVXBaTGJ4cHBaWm9wdHVDR2thS0VvTGpna3Bvbzd1SUNpS0NJYkFOei8vN3cKTitlZE04
d0tBNE40ZjY3THl6bm5QT2Raem5tZWN6Tm56bUp3WDFEVnRtMWJMRisrSEJrWkdjSzhyS3dzM0x4
NUUwT0hEaFdsdlhmdgpudkE1TVRFUi9mcjFRNDhlUGFxOEgzVFZuVEgybERMVlZkQTdkdXlnTGwy
NkVBQUtDZ3FpK1BoNHRlbldyRmxEMXRiV0pKRklTQ3FWClVteHNMQkVSYmRxMGlSbzJiRWpPenM0
VUV4TWpwSStOalNXcFZFb0F5TlhWbFZKU1VuVG1sWlNVUlBiMjl0U2lSUXRLVFUybFU2ZE8KVWJ0
MjdjamEycHIyN05sRFJFUno1ODRsaVVSQzRlSGhsSjJkVGVmT25TT0pSRUkvL2ZTVDNtMk9pWWtS
dFRreE1iRlNHblh0ZXZUbwpFZm40K0ZDalJvMG9MQ3lNNHVMaXlOYldsc2FORzBlbHBhVmEyNnhj
N3ovLy9KTjY5ZXBGQUdqNTh1VlVXbHBLSjA2Y29FNmRPdEVYClgzeEJ1M2Z2cHBDUUVFcFBUOWQ3
dStpcm9LQ0FoZzhmVHUzYnQ2Znc4SENhTW1VS0JRY0gwOTY5ZTBYcHpwNDlTKzd1N2hRZEhVM2IK
dDIrbnlNaElrc2xrUkdSNFgxRGw0ZUZCUVVGQk5HUEdERnF5WkFsNWUzdlRtMisrU1dWbFpVSWFQ
ejgvOHZIeG9mbno1OVBDaFF0cAowS0JCbEpXVlZlMzlvS251akxHbmp5THVTZ0lEQTBrdWx5TXBL
Y21VZndkb1ZWWldoc3pNVExpNnVxcjlyVmdWRVNFbkp3ZE9UazdWCnprdFpibTR1bWpWckpremZ2
WHRYcnd0L2pLVzR1QmcyTmpZQUhqOWtRL2swcUxZMnE5WmJGUkhoMHFWTE1ETXpnN3U3dS9FcnJr
UW0Ka3lFakl3UE96czVvMnJScHBlVnl1UnhtWm1hNGYvOCtMQzB0SzkxdlhaMzlsNWVYaDZaTm02
S29xQWhYcjE1RjY5YXRoZCtFRmZ6OQovUkVRRUlCRml4YWhxS2hJN2Y2dDZuNm9UdDBaWS9WSFVG
QVE1SEk1bm9nQXpGaHRVUVRnTDcvODB0UlZZWXpWVTRvQVhLY3Z3bUtzCk5zbmxjdHkrZlZ0MElS
VmpqTlVVRHNDTS9iK05HemNpTWpJUy92NysyTHg1czZtcnd4aXI1L2lIS01iKzM0UUpFMHhkQmNi
WVU0Uy8KQVRQR0dHTW13QUdZTWNZWU13RU93SXd4eHBnSmNBQm1qREhHVElBRE1HT01NV1lDSElB
Wlk0d3hFK0FBekJoampKa0FCMkRHR0dQTQpCRGdBTThZWVl5YkFBWmd4eGhnekFRN0FqREhHbUFs
d0FHYU1NY1pNZ0FNd1k0d3haZ0ljZ0RXb3FLakErZlBuaGVsNzkrN2g0c1dMCk5WWmVZV0VoYnQy
NlZXUDVWMWRwYVNrT0hUcFVwWFZyZXRzWlFsZGRWUGU3cXNMQ1FtUm1adW9zSnlzckMzbDVlWHFu
cjBwZHExbzMKZlJRVkZSa2xINlkvWFgxUElTY25CL3YzNzBkZVhsNk4xc2VZNC9iUm8wZEd5YWUr
TVZrQS91dXZ2ekJ3NEVCSUpCSjA2ZElGNDhlUAp4OFNKRS9INjY2OWoxYXBWa01sa3Bxb2FqaDA3
Qmg4Zkg3ejU1cHZDdkFVTEZpQTRPTGhHeW91T2pvYWpveU4rL2ZYWEdzbS91bzRjCk9RSS9Qeis4
L1BMTFZWcS9KcmVkb2JUVlJkMStWL2JMTDcvQXlja0pHemR1MUZuTzdObXpzWDc5ZXIzVEcxclg2
dFJObDhPSER5TXUKTHE3YStURDk2ZXA3Q3Q5OTl4MjJiTm1DcEtRa2RPN2NHYVdscFRWV0oyT08y
K3ZYcnlNbUpzWW9lZFVyZ1lHQkZCQVFRS2FRbUpoSQpBR2o1OHVYQ3ZGT25UcEdOalEyOThjWWJK
cW1Ud3RTcFU2bC8vLzdDZEc1dUxtVmtaTlJZZVU1T1RxTHRVTmNzVzdhTW5KeWM5RXBiClVsSkMr
L2Z2RjZacmV0c1pRbGRkVlBlN2FsczhQVDNwMDA4LzFWcUdUQ2FqUG4zNjZKMitxblZWcGFzczFi
YW9zM1hyMWpyZER6WFIKcDIxMW5XcmZVMVZZV0VnTkd6YWtpb29LSWlJNmVQQ2dVY3V2NlhHYmta
RkJjK2ZPTlZwK1R6SkYzRFhwS1dnSEJ3Y0FnRVFpRWVaNQplM3ZEMzk4ZmYvLzl0MG5xSkpmTEFR
QVdGaFl3TS92ZjVuRjBkRVQ3OXUwTnpvK0k5RXBuYVdrcDJnNTFqWldWbGRyNmxaZVhpNlpsCk1o
bkdqeCtQNU9Sa1lWNVZ0MTFOMEZRWGRmdGRYVnYwMlUvSnljbm8xNitmM3VrTnJhdW1QcVd0TEhW
dFVaV1ZsWVdsUzVmaW5YZmUKVWJ0YzM3NWMyN1MxVGJWL0tqTm1lN1NWbzR1bVk0NnFNMmZPb0t5
c1RFalR1M2R2bzlXcE5zWnQrL2J0VVZGUndXZFhsTlM1MzRBZgpQWHFFQ3hjdVlQVG8wYUw1aFlX
Rm1EcDFLbWJPbkluZzRHQk1uejRkeGNYRkFJQ1ltQmkwYk5rU1gzLzlOUUJneTVZdDZOaXhJeVpQ
Cm5nd0FTRXhNUkVoSUNHYk5tb1h2di84ZTd1N3U4UER3d05XclY0WDhpNHFLRUJrWmljV0xGMlB5
NU1sSVMwc1RsdDI1Y3dlZmYvNDUKZXZYcVpWQitVNmRPeFNlZmZJSkJnd1loSkNRRVVWRlJXZytB
UlVWRm1EVnJGcHljbk9EcjY0djA5SFM5Mm4vOCtIRU1HalFJblR0Mwp4dDkvLzQzang0L0QyOXNi
UC8zMGs5cHlUcHc0Z1lpSUNIejQ0WWY0OU5OUElaVktjZlRvVVdSblorUGRkOS9GYzg4OUIxOWZY
eHcrCmZGaGpYZmZ0MjRlb3FDaDg5ZFZYNk5PbkQ4NmVQUXNBV0xGaUJYYnMySUZ0MjdaaHdvUUp1
SHo1c21qYjdkcTFDODJiTjRlL3Z6OHUKWGJvRUFEaDY5Q2hjWFYyeFo4OGVBTkM3SG4vODhRZWtV
aWxlZXVrbDNMOS9IK3ZYcjRkVUtzWEFnUU9GdkwvNjZpdjA2OWNQSlNVbApsZmFqWXB0cjJ1K3Fi
Vkg4amlXWHk3Rmd3UUswYnQwYVhicDBFZTEzQU5pK2ZUdEdqQmdoVEd0THI2bXRtdXFxcTA5cEtr
dFRXNVROCm56OWY5RE5EUWtJQ1FrTkRNWC8rZk15Wk13Zk96czVvM2JvMUVoSVNkTlpmVXg4ckxp
N0d2SG56RUJVVmhURmp4bURac21VNjg5STEKM3RTMVRWUC8xR2M3R21NY1ZQZVlvMnJkdW5YNCtP
T1BVVjVlamlsVHBtRFdyRmthdDdHMnRtdmEvcnJHTGFEOUdLUlBld0VnTkRRVQpjK2JNUVVWRmhj
YTJQbFZNZVFyNjFLbFRCSUFtVHB4SVc3WnNvYVZMbDVLdnJ5K05IVHVXY25KeVJHa0RBZ0pvdzRZ
TlJFUlVWbFpHCjNidDNwMkhEaGduTFc3WnNLVHI5Tm1qUUlCbzFhaFFSRVdWbFpWR0hEaDNJdzhP
RGR1N2NTZGV1WGFPT0hUdlNwRW1UaFBULytjOS8KYU11V0xVUkVWRkZSUVMxYXRLQ0JBd2NTRVZG
T1RnNU5uanlabWpWcnBuZCtYMy85TmMyY09aT0lpTTZjT1VNQUtDb3FpcTVkdTZaMgpXN1JxMVlv
NmQrNU1PM2Jzb1AzNzkxT2JObTJvYmR1MkpKUEo5R3AvUWtJQ0FhQS8vL3lUZHUvZVRWOTk5WlhH
N1o2YW1rb09EZzdrCjQrTkR2LzMyRzBWRVJGQjZlanE5OE1JTFZGQlFRQlVWRlJRUkVVRlNxWlR5
OC9PSmlHalZxbFhVdkhseklpSXFMUzJsbGkxYkNxZXIKUHY3NFl4bzVjcVNRZjVzMmJXakpraVZx
dHgwUjBSdHZ2RUh0MjdjWHBtVXlHWVdHaGhJUlVYbDV1ZFo2cU9yV3JSdUZoNGNMMDRHQgpnUlFX
RmlaTXg4WEYwWTgvL3FpeEx0cjJ1MnBiaUlpNmR1MUszdDdlbEpDUVFKbVptZVRoNFZIcDU1S2VQ
WHVTWEM3WG1WNWJXOVhWClZWZWYwbFUzMWJhb2F0S2tDZTNjdVZPWXZucjFLajN6ekRQazV1Wkd5
Y25KbEpTVVJON2UzdVRpNHFLei91cjZXRVpHQmcwWk1vUlMKVTFPSmlDZ3RMWTBBMFBIang3WG1w
Yzk0VTI2YnJ2NnBiVHNhMHYrMGxWUGRZNDQ2VzdkdUpUTXpNMkZhM1RZK2UvYXMxclpyMnY2cQoy
MUJkLzlOMkROS252WXIxTEMwdDZjaVJJeHJiK1RTb0U2ZWdGV1F5R2JLeXNuRHExQ25rNU9TZ3RM
UVU5KzdkRTViSHg4Y2pKU1VGCklTRWhBQjZmYWdzUEQ4ZXVYYnVRbXBvS0FMQ3hzUkdkZnJPMXRS
V21uWnljNE83dURpOHZMd3diTmd5dXJxN28zNzgvTGx5NEFPRHgKUlNlN2QrL0c0TUdEQVFCbVpt
WVlPblNva0pkVUtvV1hsNWR3eWtwWGZnQ3djZU5HT0RvNkFnQzZkT2tDcVZRS0FIQjFkZFc0SFY1
Nwo3VFVNSHo0Y1FVRkJXTHAwS2E1Y3VZS0VoQVM5Mmo5Z3dBQ01HVE1HYytmT3hjYU5HekY5K25T
TjVmVHMyUk1lSGg3dzlQVEV5SkVqCjhlMjMzK0xreVpNZ0lpUW5KeU0rUGg3T3pzNjRlL2N1RGh3
NFVHbDlTMHRMdlB6eXkvRDI5Z2J3K0ZTVjhyZDE0SDgvSzZodU93Q1kKT25VcUxsNjhpR1BIamdG
NC9FMXIxS2hSQUlDdFc3ZnFYUThBQ0FzTHcxOS8vU1djeG52KytlZXhjK2RPNGZTYmN0NnFkZEcx
MzFYYgpvakJzMkRBTUdEQUFyVnExUWxCUWtPaksxWC8rK1FkZVhsNmlkVFNsMTlaV2RkdE5uejZs
clc3cTJxS1FrNU9EQnc4ZTRKbG5uaEhtCnRXblRCaTR1TG5qeHhSZlJ0MjlmQkFRRVlNdVdMY2pN
ekVSNmVyclcrcXZyWTVtWm1UaDU4aVI2OU9nQkFQRDE5Y1czMzM0TFYxZFgKclhucE05NlUyNmFy
ZjJyYmpvYjBQMjNsVlBlWW93OTEyN2hUcDA0YTY3Ui8vMzZOMjE5MUc2cjJQMTNISUgzM2thV2xK
UndjSEpDUgprV0ZRVyt1ck9oR0EvZjM5OGZiYmIyUHo1czNJeU1oQVptWW1CZ3dZSUJ4RWp4NDlD
cWxVQ2t0TFMyR2Q3dDI3QXdCT25qeXBWeGtTCmlVUjA4TEd6czBOSlNRa0E0TysvLzRhSGh3ZnM3
ZTJGNVkwYU5SS2xWMTFmVzM2S2FVVndCSURtelpzTEhWK1RKazJhQ0o5Nzl1d0oKQUxoNDhhTGU3
VisyYkJreU1qTGc2K3NMYzNOenJXWFoyTmdJQng0QVNFMU5oYU9qSTZ5c3JHQmxaWVUrZmZwZzc5
Njk4UFgxcmJTdQpSQ0xCcWxXcmNQLytmVVJGUlNFcEtRa1BIejZzbEViNXMrcnYvTDYrdnZqNTU1
OEJQTDRpL2ovLytZL0I5UUFlbjlLNmUvZXVjUHJ3CjdObXp3aW5Ja3BJU3lPVnlOR3pZVUcxZDlO
bnZxbTFSblhad2NFQmhZYUV3dlgzN2RyejQ0b3Q2cGRmVlZuVjlURmVmMGxZM2RXMVIKdUhMbENn
Q2dhZE9tbGRJcjl5VVBEdzg0T0RnZ0lTRkJaLzFWKzlpQkF3ZlF1M2R2VVIwaUlpTGc2T2hZcFcy
aFBONlUyNmFyZjJyYgpqc1ljQjlVOTV1aERkUnRycTVPMjdhKzZEVlhycjg4eFNKOTlwSmhmVjI1
TE5EVUxVMWRBVllNR0RUQjY5R2pNbWpVTGNYRnhHREZpCkJJcUtpcENibTR2Q3drSTBhdFFJQU9E
bDVRVUxDd3VqM0Y5MjgrWk41T2JtVnBwZm5ZdWlac3lZZ1lrVEorTE1tVE93dHJhR3JhMHQKbm52
dU9iM1hkM1YxaFoyZEhlenM3SERyMWkyOTJtOXBhUW1wVklyUFAvOGNyNy8rdW1odzY1S2Jtd3NM
Q3dzOC8venplcVdQam81RwpTa29LZnZqaEI2eGJ0dzVIang3VnV5d0FDQThQeDhLRkM3RjQ4V0kw
YU5BQVZsWldWYXFIbzZNamhnMGJoazJiTnNIZTNoNStmbjR3Ck16UERsaTFiOE9EQkE2MjNVZFRF
Zms5SVNNRHMyYlAxU210b1c2dmJwN1JSSE1UMXVhM0Z6TXdNRmhZV0J0Yy9PenRiOUh1a01rUHoK
MGtWYi85UzJIV3RySE5SRTM5TlZKMjNiWHhkakhvTmxNaGxzYlcyclZJLzZwazU4QTFhbDZJU0tI
K285UER4UVVWRWhuTElFSHA4eQpLeTh2aDZlbnB6QlBjUnJTVUMxYXRNRGR1M2VOZWxwazZOQ2ht
RFJwRXVMajQ1R1dsb2JFeEVTRDFyOTkrelllUG55SVo1OTlWdS8yCno1OC9IN3QzNzRaRUlzSDgr
Zk1OS3MvTnpRMTc5KzRWL2NWS1JHcXZSajkzN2h3aUl5T3hiTmt5MFYvRXluUWRTTWFPSFl1Q2dn
Sk0KbXpZTkw3MzBVcFhxb1RCeDRrVDgrdXV2V0x0MkxkNTQ0dzJFaFlVaE5qWVdDUWtKV2dPVXZ2
dGQzNE5pWm1ZbXBGSXBHalJvb0ZkNgpROXRhM1Q0RmFHNkxtNXNiR2pSb2dBY1BIbWhkUHlNakEv
ZnUzVU8zYnQwTXJyK3JxeXN1WHJ5SXk1Y3ZpOUtmUEhteVN2dGRVOXQwCjlVOXQyOUhZNDBDVG1q
am02S3FUdHUydm9LbC82SHNNMGtkMmRqYmF0R2xqMERyMWxVa0RzT0pKTHNxWHl4Y1hGMlB6NXMy
UVNxVUkKREF3RUFJd2FOUXF0V3JYQzNyMTdoWFJwYVdudzhQREFrQ0ZEQUR6K2EreklrU01vS3l2
RDdkdTNjZm55WmRIdnlHVmxaYUlBWFZSVQpKQVQ0TVdQR3dNTENBdDkrKzYydy9QejU4OGpOelJY
U0ZCVVZvYmk0V1BoTlJGdCtBTEJ3NFVKMDZOQUIwNmRQeDlpeFkyRmpZNk56CmV5aXZ2My8vZmdR
SEI4UGIyMXV2OXNmSHg2TjkrL2J3OVBSRVZGUVUxcXhaby9YMGZIbDV1WEFGSXdDOCt1cXJ5TTdP
UmtSRUJQTHoKODVHVGs0TkZpeFlKdHlHVWxaVUpEMGRKVDArSFhDN0h1WFBuVUZGUmdhU2tKSlNV
bElDSVFFU3d0N2ZIelpzM0FRRDUrZm1WdGgwQQoyTnZiNCtXWFg4YVJJMGVFVTFuNjFFT2RGMTU0
QWRiVzFqQTNOMGVUSmszUXYzOS9ORzdjR003T3pwVU9LTXAxMFdlL3EydUw4bE9pCmlvdUxoZTJv
N3ZTenR2UzYycXE2M1hUMUtXMWxxV3VMTWpNek0zVHQybFZ0UUZBZVI0bUppZWpYcng5NjlPaWhz
LzZxZld6TW1ERm8KMEtBQndzTENrSjZlanZUMGRNeWVQUnN1TGk1NjlUOXQ0MDI1YmNlT0hkUGFQ
N1Z0UjBQNm42NXhVTjFqanFxQ2dnTEk1WExSUGxiZAp4dHJxTkhyMGFJM2JYM1VicW81YmZZNUJ1
dllSOExndnlXUXkrUHY3cTIzalU4ZFVWMEh2MmJPSEJnNGNTQURJMWRXVndzUERhZURBCmdlVHI2
MHVob2FGMDQ4WU5VZm9USjA1UXAwNmQ2SXN2dnFEZHUzZFRTRWdJcGFlbkM4djM3ZHRIam82TzFM
WnRXM3J2dmZkbzh1VEoKTkdEQUFOcS9mejhsSlNXUnZiMDl0V2pSZ2xKVFUrblVxVlBVcmwwN3Ny
YTJwajE3OWhBUjBhWk5tOGpPem80OFBUMXA5T2pSTkh6NApjT3JkdXpkdDJyU0pqaHc1UXIxNjlS
SWVHcEtRa0tBenYzZmVlWWNBRUFBeU56Y25KeWNuaW95TXBOTFNVclhiNDZPUFBpSXZMeTlhCnVu
UXBmZmJaWi9UMjIyOVRRVUdCWHUzZnYzOC9OVy9lbkU2ZE9rVkVST2ZPblNOemMzTnljM05UZTdY
aHBrMmJxR0hEaHVUczdFd3gKTVRIQy9EVnIxcEMxdFRWSkpCS1NTcVVVR3h0TFJFUkhqaHdoWDE5
ZkFrQ3JWNittL1B4ODh2SHhvVWFOR2xGWVdCakZ4Y1dScmEwdApqUnMzamtwTFMybnUzTGtra1Vn
b1BEeWMvdnp6VDlHMlUyNy92bjM3NkxQUFBxdFVQMDMxMEdiV3JGbDA2ZElsWVhyKy9QbWlhVVU3
ClZPdWliYjhUa2FndDMzLy9QWm1abVZHblRwM281TW1UZE9MRUNmTDA5Q1FMQ3d2YXNXTUhEUmt5
aEhKemM0WHlmdnZ0TjYzcGRXMXoKMWJwcTYxUDZsS1hjbHV6czdFcmJNQzR1amtKQ1FrVHovUHo4
eU1mSGgrYlBuMDhMRnk2a1FZTUdVVlpXbHM1OXBhbVB4Y2JHa2xRcQpGY1o5U2txS3pyejBHYi9L
YmJ0NjlhclcvcWxyYk9yYi94NDllcVN4SEgyT0VicjZuckxEaHc5VHYzNzlDQURObWpXTExsKyty
SFliCmE2dFRhV21wMXUydmE5eHFPd2JwczQrSWlOYXZYMC9Cd2NGcXQrZlRSQkYzVFhvYmtxSGtj
amxsWkdSVU9yQXFsSmFXVWxGUkVSRTkKdnR6ZFVPWGw1WFQzN2wwaUlpb3VMcTU2Ullsb3laSWxs
SkdSUWFkUG42YURCdzlTWEZ3Y1RaZ3dnZmJ1M2F0MXZUdDM3Z2kzSHFuUwoxWDVqS0MwdHBVdVhM
bW1zZ3pMRnRpYXF2TDBWMjFHWGtwS1NhdGREWFQ2YThsVkgxMzdYdHkxVnZiVkMzN1pXdFU4cDA5
V1dvVU9ICjB2WHIxNFZwUHo4L2V2ZmRkNm13c0xEU3JZR0cxbDlCTHBlTGduaDE4bEttMmpaTi9W
T2Y3V2lzY2FDTE1ZODUrdFpKMi9iWDFUK3EKZXd4NjhjVVg2ZDkvLzYzU3V2V0pJdTVLQWdNRFNT
NlhJeWtwcWZhL2Z0ZFQzMzMzSGJadTNTcDZZQUh3K0dwZmQzZDN0R3ZYemtRMQpZMCtxMnVwVHQy
N2R3dUxGaTdGOCtYSTBhTkFBL3Y3K0NBZ0l3SmRmZm1tVS9FMk54NmJwZlBqaGh4ZzRjS0RSTGh4
OGtnVUZCVUV1Cmw0TURjQTA0YytZTS9QMzlNWHo0Y1BqNitxSzR1QmpaMmRrWU5td1loZzBiWnVy
cXNTZFFiZmFwVzdkdVljK2VQWmd3WVFKY1hGemcKNysrUGJkdTJHYlVNVStHeGFSb0hEaHlBbFpX
VmNIdmwwNDREY0ExNzhPQUJEaHc0Z0t5c0xBUUZCZkZmMXF6YWFydFAvZlRUVDhKRgpPVzNidGtW
b2FHaU5sbGRiZUd3eVUrTUF6QmhqakptQUlnRFh5ZnVBR1dPTXNmcU9BekJqakRGbUFoeUFHV09N
TVJQZ0FNd1lZNHlaCmdNbGV4dkRSUngrWnFtaWpXcmh3b2FtcndKUnd2MkkxZ2ZzVnF3a21DY0FM
Rnk3RW9rV0w4UEhISDV1aWVLTlJkR2J1MUhVRDl5dFcKRXpUMnE3ZzRRT25sQkpVWW94OGFzUXp1
VjNXUHliNEJMMWl3b0Y3OFZWblZOekN4bXNIOWl0V0VTdjBxSmtaMzhLdHVQNnlCTXJoZgoxUzM4
R3pCampCbWl0QlNZT2ZQSkw0T1pIQWRneGhnenhHKy9BYmR1UGZsbE1KTXoyU2xveGhoN0lzWEdW
cG9sQVZXYVYzbE9IU3VECm1SeC9BMmFNTVVOb3V5anFTU3FEbVJ3SFlNWVlNOFNkTy9XakRHWnlm
QXFhTWNZTVVWWldhWmJSVHdYWFJobk01UGdiTUdPc1d1N2QKdTRlTEZ5K2F1aHFzbmlzb0tNRDE2
OWNCQUE4ZlBrUkpTWW1KYTFSOUhJQnJ5YzZkTytIbDVRV0pSSUwrL2Z2amxWZGVRWjgrZmZEUwpT
eS9oOE9IRHBxNGVlMEp0M2JvVm5wNmVRcithTkdrUzNuampEYno2NnF2bzJMRWpYbmpoaFJxdnc0
SUZDeEFjSEZ6ajViRGFzMjNiCk5uVHIxZzBTaVFROWUvYkVybDI3aEdYbno1L0g2TkdqSVpGSThO
WmJieUVySzZ0RzYzTHIxaTJNSHo4ZXMyYk53c3FWSytIdjc0OWUKdlhyaDFLbFROVnB1YmVCVDBM
VmsrUERodUhMbEN0NTU1eDBzV2JJRVBYdjJSRVZGQlNaUG5vem5ubnNPKy9idFE5KytmVTFkVFVG
cAphU2tPSFRxRW9LQWdVMWVGYVRGNjlHaGN2bndaYytmT0ZmcVZRbjUrUHNMQ3dveGVwbXJmV0xS
b0VmTHk4b3hlRGpPZDRPQmc1T1RrCklDSWlBdE9uVDhld1ljT0VaUjRlSHZqbGwxOXc4T0JCckZt
enBzYnJNbVBHREpTVmxXSGp4bzBBQUpsTUJuOS9mOXk4ZWJQR3k2NXAKL0EyNEZ0bmIyd01BSkJJ
SkFNRGMzQnd6Wjg1RVdWa1pObTNhWk1xcWljaGtNb3dmUHg3SnljbVZscFdYbDJ0Y2o0aC9wVElG
MVg2bAowTEJoUTBSSFIrdGNYOXMrVmFXdWJ6ZzZPcUo5Ky9aNjU4R2VEQTRPRHFML2xWbFlXTURI
eDBmdGVzWStEcHcvZng2Wm1abVF5V1FBCkFFdExTL3o0NDQ4YS8ralRWcjRoZmIwMjhEZGdFN3Q3
OXk0QW9Ibno1Z0NBN094c1JFVkY0Zmp4NHlnc0xNUTMzM3lEbmoxNzRzU0oKRTRpT2pvWlVLb1dO
alExV3JGaUJ1TGc0ZUhsNVlmSGl4V2pjdURGT25EZ0JmMzkvekpvMVMydGVpWW1KaUk2T1JxdFdy
ZURwNllrbApTNWJBMHRJU2YvNzVKOXpjM0xCaXhRcnMyTEVEbHk1ZHd1WExsN0Y2OVdvY1Bud1lh
V2xwa0VnazJMNTlPNktqbzlHbFN4Y0FRRkZSCkVXYlBubzFubm5rR0tTa3BhTnEwS1o1OTlsbjA3
dDBiL2ZyMTAxZ1BWbk9JQ0hQbXpNRlhYMzJsc2U4OGZQaFE0ejR0TGk1VzI2OVUKKzhhQ0JRdncr
KysvSXpZMkZxbXBxUUNBd3NKQ3pKa3pCOWJXMXJoOCtUSmF0MjZOcUtnbzJOalk2T3g3VDZ6UzBz
Y1B6NGlOZlh3TAowWjA3YWkra3F2TmxHTURNVFB6OUxTWW1Cbmw1ZVNnb0tNRDI3ZHR4Nk5BaEFJ
WWYwN3AzN3k3S055UWtCUFBtemNQQWdRTVJFeE1ECkp5Y25QUHZzczNqMjJXY0JBQWtKQ2ZqKysr
L1JybDA3eUdReXJGKy9IbFpXVnZqaGh4L3cvUFBQQXdEMjdkdG5jRi9YVm5lakNRd00KcElDQUFL
cE5IMy84TVMxWXNLQld5NndKaHJaai9mcjFCSUFPSHo1TVJFUWxKU1UwY09CQWF0cTBLVjI4ZUpI
S3k4dnBoUmRlb0lLQwpBcXFvcUtDSWlBaVNTcVdVbjU5UHFhbXA1T0RnUUQ0K1B2VGJiNzlSUkVR
RVpXUmswSkFoUXlnMU5aV0lpTkxTMGdnQUhUOStYR3RlCldWbFoxS0ZEQi9MdzhLQ2RPM2ZTdFd2
WHFHUEhqalJwMGlTaHJtM2F0S0VsUzVZUUVWRnBhU20xYk5tUzl1L2ZMN1I3NU1pUlF0cXYKdi82
YVpzNmNTVVJFWjg2Y0lRQVVGUlZGMTY1ZDAxb1BZM3RhKzlYcTFhc0pBQzFZc0lBMmJOaEEzMzMz
SFlXR2h0S29VYU9JaU5UMgpuYk5uejJyZHA1cjZGWkc0YitUazVORGt5Wk9wV2JObXdyb0JBUUcw
WWNNR0lpSXFLeXVqN3QyNzA3Qmh3NGlJOU9wN2RZM08vYkZsCkMxSExsa1NBK0o4eEdhRU1RL3ZW
MXExYkNRRHQzcjFiN1hMRlBpVWlrc2xrNU9mbkowelBtREdES2lvcXFuUk1VL1hnd1FNS0RBd2sK
QU5Tc1dUUGFzV09IYVBuVnExZnBtV2ZBMzczbUFBQWVLMGxFUVZTZUlUYzNOMHBPVHFha3BDVHk5
dlltRnhjWEl0SjkvS3JLTWJTNgpGSEdYVDBHYndPelpzeEVVRklTdVhidWlXYk5tU0U1T1JydDI3
YkIxNjFZUUVaS1RreEVmSHc5bloyZmN2WHNYQnc0Y1FNK2VQZUhoCjRRRlBUMCtNSERrUzMzNzdM
VEl6TTNIeTVFbjA2TkVEQU9EcjY0dHZ2LzBXcnE2dVd2TnljbktDdTdzN3ZMeThNR3pZTUxpNnVx
Si8KLy82NGNPR0NxSjZLVTVxV2xwWjQrZVdYNGUzdERlRHhLY2YwOUhRaDNjYU5HK0hvNkFnQTZO
S2xDNlJTS1FEb3JBY3pMa3RMUzFoWgpXY0hhMmhwV1ZsYkMvbFBYZHpwMTZxUnhuKzdmdjE5anYx
SlE1QzJWU3VIbDVTV2M5b3VQajBkS1NncENRa0tFT29XSGgyUFhybDFJClRVM1Z1Kzg5RWVSeVlN
b1VJQ1NrNWg0YldSdGxHTUg5Ky9keDZ0UXA3TjY5R3dBd2FkSWtFSkhCeHpSMVAyVTBidHdZZS9i
c3dRY2YKZklEOC9Id0VCd2RqOWVyVnd2STJiZHJBeGNVRkw3NzRJdnIyN1l1QWdBQnMyYklGbVpt
WlNFOVAxM3I4MHRiWGErUFl4YWVnVGVDegp6ejVEOSs3ZFlXRWgzdnlwcWFsd2RIU0VsWlVWQUtC
UG56N1l1M2N2UEQwOUFRQTJOalpDY0FPQUF3Y09vSGZ2M3FMZi9pSWlJdlRLClN5S1JpTmF6czdP
cmRGbS9ZcmxFSXNHcVZhdHc1Y29WckYyN0ZtbHBhWGo0OEtGb1hjWHBSK0R4NlhSRmg5WlZEMlk4
QXdjT0ZMYTcKNHFwUkJkVytvMjJmYXV0WHl1c3JmMVpNSHoxNkZGS3BGSmFXbHNKeXhTbkZreWRQ
b2xldlhucjF2U2ZDdEdtQVVpQjRZc3N3Z21iTgptdUhsbDEvRzhPSERNWG55WkN4YnRnem01dVlH
SDlNMHNiUzB4SklsU3pCNDhHQ01HVE1HVTZaTWdWUXF4YWhSb3dBODdvUG01dVpDCmVnOFBEemc0
T0NBaElRR2VucDVWNnV1MWNlemlBR3dDNXVibWxZSXZBT1RtNXNMQ3drTDQzVUtYN094c25EMTdW
dTB5US9QU0pUbzYKR2lrcEtmamhoeCt3YnQwNkhEMTZWRmcyWThZTVRKdzRFV2ZPbklHMXRUVnNi
VzN4M0hQUDFVZzltSDRrRWdtV0xsMnFOWTJtZmFxdApYK2xTVkZTRTNOeGNGQllXb2xHalJnQUFM
eTh2V0ZoWTROR2pSMVhLczA2S2lhbjV3RmdiWldqUnVuVnJBSS9Ic0RyS0FROEFmdm5sCkY3Um8w
UUlyVjY3RWlSTW44TmRmZjFWNy9GKzdkZzJPam82d3M3TURBRHozM0hQNDQ0OC8wS2RQSC96NjY2
OUNBRmJIek14TU9NNVcKcGEvWHhyR0xUMEhYSVc1dWJ0aTdkNi9vMndBUjRlKy8vMWFiM3RYVkZS
Y3ZYc1RseTVkRjZVK2VQR2x3WHVvby9pbzhkKzRjSWlNagpzV3paTXRFM0c0V2hRNGRpMHFSSmlJ
K1BSMXBhR2hJVEU2dmNKbVk4NnZhVmdyWjlxcTFmS2FoZWNhM2c0ZUdCaW9vS0hGTjZsbkZPClRn
N0t5OHZyejFtUHArUjFoRjVlWGpBM044ZjU4K2NyTGJ0Ky9ib1FvQUVnS3lzTE9UazVXTDU4T2VM
ajQzSG16QmxzMmJLbDJ1TS8KT3pzYksxZXVGTTNyM2JzMzJyUnBnOHpNVEkzclpXUms0TjY5ZStq
V3JWdVYrM3B0SExzNEFOY2l4UlhQbWk2ZmYvWFZWNUdkblkySQppQWprNStjakp5Y0hpeFl0RW40
WEtTOHZSM0Z4c1pCK3pKZ3hhTkNnQWNMQ3dwQ2VubzcwOUhUTW5qMGJMaTR1T3ZNcUt5c1R2Wnk3
CnFLZ0lGUlVWd3JTOXZiMXduOTJ4WThjZ2w4dHg3dHc1VkZSVUlDa3BDU1VsSlNBaUVCRVdMbHlJ
RGgwNllQcjA2Umc3ZGl4c2JHejAKYmhPclBrV2Z5TS9QMTVoR3RlK2twNmRyM0tlalI0L1cySzhB
Y2QvSXo4OUhVVkVSaW91TFFVUVlOV29VV3JWcWhiMTc5d3BscGFXbAp3Y1BEQTBPR0RBR2d1Ky9W
ZVUvSjZ3aHRiVzBSRUJDQTMzNzdUZlF0V0M2WDQ5TlBQOFc0Y2VPRWVmZnUzVU5NVEF3QVlOQ2dR
Umd4CllnUWFOV3BrOERGTlZkdTJiYkY4K1hKa1pHUUk4N0t5c25EejVrME1IVHBVbFBiZXZYdkM1
OFRFUlBUcjF3ODlldlNvY2wrdmxXTVgKWHdWZGRZYTBZOGVPSGRTbFN4Y0NRRUZCUVJRZkg2ODIz
Wm8xYThqYTJwb2tFZ2xKcFZLS2pZMGxJcUpObXpaUnc0WU55ZG5abVdKaQpZb1Qwc2JHeEpKVktD
UUM1dXJwU1NrcUt6cnlTa3BMSTN0NmVXclJvUWFtcHFYVHExQ2xxMTY0ZFdWdGIwNTQ5ZTRpSWFP
N2N1U1NSClNDZzhQSnl1WHIxS1BqNCsxS2hSSXdvTEM2TzR1RGl5dGJXbGNlUEdVV2xwS2Izenpq
dUV4NCtxSlhOemMzSnljcUxJeUVncUxTM1YKV2c5amV4cjdWVXhNaktoZkpTWW1Wa3FqcnU4OGV2
Ukk2ejdWMXErVSs4YWZmLzVKdlhyMUlnQzBmUGx5S2kwdHBSTW5UbENuVHAzbwppeSsrb04yN2Qx
TklTQWlscDZjVGtYNTlyNjZwdEQ5R2pxeDBOYkxxeGNuVnZnaTZCc3FveXZnb0tDaWc0Y09IVS92
MjdTazhQSnltClRKbEN3Y0hCdEhmdlhsRzZzMmZQa3J1N08wVkhSOVAyN2RzcE1qS1NaRElaRVJs
K1RGUGw0ZUZCUVVGQk5HUEdERnF5WkFsNWUzdlQKbTIrK1NXVmxaVUlhUHo4Lzh2SHhvZm56NTlQ
Q2hRdHAwS0JCbEpXVlJVVFY2K3MxZGV4U3hGMUpZR0FneWVWeUpDVWxHUytxNjdCdwo0VUxJNVhJ
c1hMaXcxc3FzQ1RYVmpyS3lNbVJtWnNMVjFWWHRiOFdxaUFnNU9UbHdjbktxZGw3S2NuTnowYXha
TTJHNnVMaFkrSFlyCms4bUUwem1mZmZZWlhubmxGWlNVbE9EaHc0ZTRmLzgrdG03ZGluSGp4Z20v
bjFTbkh2cmlmbVU0VGZzVTBONnZWUHVHS2lMQ3BVdVgKWUdabUJuZDNkK05YdkJaVjJoK3Vyc0NO
RzZJMGF0L1ZXNTNuVWRSQUdkWHBWektaREJrWkdYQjJka2JUcGswckxaZkw1VEF6TThQOQorL2Ro
YVdtSmhnMGJpcFpYWi96bjVlV2hhZE9tS0NvcXd0V3JWOUc2ZFd2aE4yRUZmMzkvQkFRRVlOR2lS
U2dxS2xKN1lWZFYrM3BOCkhMdUNnb0lnbDh2NUlxeTZ5TXJLeXFDRGxrUWlVZHR4cXBLWE10VURy
UEtwWlVYbi9lNjc3N0J2M3o1ODhNRUhvclRtNXVabzA2YU4KVWVyQmFvNjZmYXFnclY5cEM3Nktk
ZXZ0end4UDRlc0lMUzB0MGJselo0M0xGUS9sVUR5VlRWVjF4cjhpNE52YTJtcXRBL0Q0NlcrcQp3
VitocW4yOUpvOWRISUJadGZUcTFRdlRwMC9IcUZHajRPdnJpK0xpWW1SbloyUFlzR0ZvMTY2ZHFh
dkhtUEh4NndqckZMbGNqdHUzCmI0c3VwSHBTY0FCbTFlTGw1WVhzN0d3Y09IQUFXVmxaQ0FvSzRz
RExHS3MxR3pkdVJHUmtKQUJnOCtiTkNBME5OWEdOOU1jQm1GVmIKa3laTk1IejRjRk5YZ3pIMkZK
b3dZWUtwcTFCbDlmbzJwS0pEVC83N0lsbmR3LzJLTVdZTTlUb0EyL1pXLzdvc3hxcUQreFZqekJq
cQpkUUJtakxGYVVWb0tiTm9FdlBMSzQxdUkvdi81d1U5Y0dheFc4Vy9BakRGV0hURXhqeDhiV1pO
UHJxcU5NbGl0TTFrQVhyUm9rYW1LCk5wcEZpeFpod1lJRnBxNEdVOEw5aXRVRXRmMktDUGp6VHlB
dFRmMUtIMzFVL1lLTldBYjNxN3JISkUvQ0F2REVQNjFJNFNOakRESm0KTk55dldFM2dmc1dNU2ZF
a0xKTUZZTVlZWSt4cHBBakFmQkVXWTR3eFpnSWNnQmxqakRFVDRBRE1HR09NbVFBSFlNWVlZOHdF
T0FBegp4aGhqSnNBQm1ESEdHRE1CRHNDTU1jYVlDWEFBWm93eHhreUFBekJqakRGbUFoeUFHV09N
TVJQZ0FNd1lZNHlaQUFkZ3hoaGp6QVE0CkFEUEdHR01td0FHWU1jWVlNd0VPd0l3eHhwZ0pjQUJt
akRIR1RJQURNR09NTVdZQ0hJQVpZNHd4RStBQXpCaGpqSmtBQjJER0dHUE0KQkRnQU04WVlZeWJB
QVpneHhoZ3pBUTdBakRIR21BbHdBR2FNTWNaTWdBTXdZNHd4WmdJY2dCbGpqREVUNEFETUdHT01t
UUFIWU1ZWQpZOHdFakJxQUN3c0xVVkpTWXN3c0dXTW13dU9ac1pwbDFBQWNHQmlJK2ZQbkd6Tkx4
cGlKOEhobXJHYnhLZWc2UkNhVDRlTEZpL1d1CkxNWVlZNVZaVkRlRFI0OGU0WjkvL3NHSkV5ZHc4
K1pOSkNjblkrM2F0ZkR5OGtMbnpwMWhaMmVuZHIzRXhFUWNQWHBVcnpMTXpjM1IKcEVrVE5HM2FG
TTJhTmNPenp6Nkx4bzBiVjdmcWRjcnAwNmN4ZVBCZ1pHVmxZZWpRb1lpTGk2c1haZFUzZS9ic1FY
UjBOSDcvL2ZkNgpXVzVWeHpOanJBb0NBd01wSUNDQURGVlNVa0x6NTg4bkt5c3JhdENnQVEwY09K
QWNIQnlvYTlldUZCZ1lTSFoyZGlTUlNHakFnQUYwCjVNaVJTdXVmUG4yYWxpMWJSb01IRHlZQUJ2
MHpOemVuN3QyN1UxUlVGRDE2OU1qZ3V0ZEZrWkdSb2pZZVBYcTBYcFJWWCt6ZnY1LzYKOXUxTEFN
amUzcjdlbFZ2ZDhjd1kwNThpN2xZcEFGKzllcFhhdDI5UEFDZzRPSml5czdPSmlNalQwNU5telpw
RlJFUVBIejZrbVRObgprb1dGQlFHZ1YxNTVSV04rMDZaTnF4UmsxNjVkUzdkdjM2YmMzRnk2ZE9r
U0hUeDRrSll1WFVyZTN0NmlkTTJiTjZlZE8zZFdmVXZVCkVhdFdyUkxhWkcxdFRYZnYzcTBYWlQz
cGtwT1RLVEF3VU5UbmFpTUExMmE1eGg3UGpESHRxaHlBUzB0THlkL2Zud0JRbno1OXFLS2kKUWxp
bVBHQVZZbUppQ0FCWldWbHB6UFBBZ1FPaUEwMkRCZzJvdkx4Y1kvbXZ2ZmFhS0wybHBlVVRINFFm
UFhwRWl4Y3ZwdUhEaDFOYwpYRnk5S2V0SmRlclVLUm83ZGl5RmhvYlN4SWtUeWNyS3FsWUNjRzJY
V3hQam1UR21uU0x1R3Z3YjhNcVZLM0hzMkRFQXdQejU4MkZtCnB2MDZydEdqUnlNMU5SV3JWNi9X
bUtaNTgrYWlhUXNMQzVpYm02dE5hMlZsaFo5KytnbjI5dlpZdFdvVmdNY1hGRTJlUEJsWHJseUIK
bFpXVkljMnBNMnh0YlRGdjNyeDZWOWFUcW1IRGh2anh4eCtGL2lTWHk3Rmh3d1lBZ0VRaXFUZmwx
c1I0Wm96cHgrQ3JvQk1TRW9UUApuVHAxMG11ZGQ5OTlWK3ZBdHJHeEVVM3JjNkI1L2ZYWFJkTzNi
dDJxOVF0aldQM1ZybDA3MFI5emJkdTJGVDRUVWIwcHR5YkdNMk5NClB3YVBvck5uendxZk16SXk5
RnJIeGNVRjNidDNON1FvcmJ5OHZOQzBhVk9OZFdQTW1Dd3MvbmV5cUNhL0FkZDJ1WFZsUERQMk5E
STQKQUhmczJGSDQvT09QUCtxOVhtSmlvcUZGYVNXUlNOQzVjMmZSdkR0MzdoaTFETWJxdTdveW5o
bDdHaG44RzdDZm41OHcrRFp0Mm9UKwovZnNqUER4YzUzckdQbVZWWGw2T2YvNzVSelRQM2QzZDRI
d3FLaXJ3NzcvL0lpOHZEMTVlWG5CMGROU1l0cWlvQ0xkdTNkSzQzTjdlCkhsS3BWRFF2UHo4ZnVi
bTVsZEs2dTd0cjNDYlhyMStIbFpVVm5KMmR0ZGI5NXMyYk9IMzZOSzVkdXdZM056ZDA2ZElGTGk0
dUlDS1UKbEpSVU9yVmZuYktVNWVmbjQ1OS8vb0dkblIwNmRlcWtWem1xcmwyN2hyS3lNblRvMEVH
WVYxQlFnTFMwTk55N2R3OUJRVUZvMXF5WgpYbms5ZVBBQVI0OGVSV0JnSUN3dExRMnV5OU9zcm94
bnhwNUdCbytpS1ZPbW9FbVRKc0wwcEVtVDhORkhINkdpb3NLb0ZkUGwyTEZqCktDZ29FTTN6OXZi
V2UvME5HellnSUNBQVRabzBnYmUzdDNEQWQzTnp3ODgvLzZ4Mm5UdDM3bUQ2OU9ubzFLa1RPblRv
SVBvM2JkbzAKSERwMHFOSTZwMCtmeHR0dnYxMHByVXdtRTZXN2YvOCsxcTlmai83OSs4UE56VTI0
TUVhZHZMdzh2UFhXVytqUW9RTmlZbUp3Ky9adApyRnk1VXFoWDc5Njk4YzAzMzJoYzM1Q3lGSzVk
dTRhUWtCQzR1Ym5CMmRrWkkwZU9oSitmSCt6czdPRHA2WW5wMDZkWDJoK3FMbDY4CmlLVkxsOExm
M3g5dWJtNklqWTBGQUJRWEYyUE9uRGxvMWFvVkJnd1lnTkdqUjZONTgrWVlNR0NBMmo5ZWxCMDhl
QkF0VzdiRW9FR0QKMEtaTkc5eS9mMTluVzlqLzFKWHh6TmhUcVNyM0FmL3l5eStWN3R2dDE2OGZ0
V2pSb3RKdEMvckl6TXdVNVdWblo2ZHpuWWlJQ05FNgpiZHUycFlLQ0FwM3JsWldWVVdSa0pEVnUz
SmdXTFZwRXljbkpkT1RJRVZxeFlnVkpwVklodjBHREJtbk1iOU9tVGFLeVBUdzh0SlpaClVWRWgz
T3F4ZE9sUzBmeWZmdnFKaGcwYkpycmRCQUJ0Mzc1ZFkvMjdkKzlPQUNncEtVbTA3T3JWcStUcTZr
b0FhUEhpeFpYcVlHaFoKQ2ovLy9ETTFidHlZbkoyZDZkZGZmeVdaVEVaeXVaeU9IajFLYytmT0pY
Tnpjd0pBTGk0dUZCOGZYMm45MU5SVTZ0eTVjNlUrczNUcApVcnAwNlJKMTZ0U0pBSkNEZzBPbHVn
MGFORWgwYTR5cVYxOTlWWlIreFlvVld0dFNWWXNYTHhiS2NIQndxSkV5VEZXdXNjY3pZMHk3CmFq
MklnNGpvNjYrL0prdEx5MG9EdDJmUG5uVGx5aFdEOGpJa0FCY1VGTkRJa1NORjZhMnNyT2pZc1dN
Nnl5a3JLNk9BZ0FCcTJMQWgKSlNjblYxcCs1c3daYXRxMHFaRHZwRW1UTk9iMXdnc3ZDT21rVWlu
SlpES3RaZmZ2MzUrYU5tMUtSVVZGd2p5WlRFWjc5dXloVzdkdQowZXpaczBWdDJyRmpoOXA4UHZu
a0V3SkF2cjYrYXBkZnZYcVZiRzF0YWNHQ0JhTDVWU21MaUdqV3JGbEN1Z01IRHFoTjgrV1hYNHJ5
Clc3MTZ0V2g1Y1hFeFhiOStuV2JPbkNsS04yclVLSHJtbVdkb3dvUUp0SC8vZmlvdkw2ZlMwbEph
dW5TcEtGMTBkTFRHK2kxY3VGQ1UKZHUvZXZSclRWa2Q5RHNCRXhoM1BqREh0cWgyQWlZZ09IanhJ
Ym01dWxRYXR0YlUxdmYvKyszcDlJeVhTSFlETHk4dnArUEhqdEh6NQpjdkx3OEJDbDlmSHhVUnRN
MVZteFlnVUJvRTgrK1VSam1ubno1b255Lyt1dnY5U21PM1Rva043Zkl2UHk4c2pLeW9wbXo1NnRN
VTFHClJvWmUrU2tlUy9qNjY2OXJ6R3ZLbENrMFo4NmNhcGQxNk5BaGtrZ2tCSURHangrdk1UOGlF
ajBjcFZHalJuVHQyalcxNlpUUE1saFkKV05DNmRldlVwdXZRb1lPUUxpd3NUR081ZCsvZXBUZmZm
SlBhdG0xTEgzNzRJY25sY3EzMXJLcjZIb0NKakRlZUdXUGFHU1VBRXhFVgpGUlhSKysrL0x6eWlU
dm1mazVNVC9mcnJyenJ6VUEzQUZoWVdOR0RBQU9yYXRTczVPenRYK3N2YzN0NmVnb09EYWYzNjlW
cFBUeXJMCnk4c1R2dDFldUhCQll6clZwM0tOR3pkT1k5cHUzYm9KNllZT0hhb3gzWm8xYTBnaWtk
RGx5NWMxcGlrb0tOQXJLRG82T2hJQWF0S2sKaWNibllDY2tKTkNNR1RPcVZaWk1KaU12THk4aFRV
Wkdoc2I4aUlodTNMZ2hCR3NBTkdUSUVMWHBmSDE5UmQrQU5aa3dZWUtRcmtlUApIbHJMcmcxUFF3
QW1NczU0Wm94cHA0aTcxYjZVMGNiR0JrdVhMc1dKRXlmZzVPUWtXcGFkblkxUm8wWmh6cHc1a012
bGV1Y3BsOHRSClVsS0M1czJibzZLaVFuVEJVcjkrL1pDYm00dlkyRmhNbURCQjc2c3hQLy84YytU
bDVhRmx5NWE0Y2VNR0VoSVMxUDdMeXNvU3JmZnYKdi85cXpIUEtsQ25DNS9qNGVGeS9mbDF0dW5Y
cjF1SDU1NThYUFZSQmxlclZ1NXJ1K1d6ZHVqV0F4MWYrRGg0OEdEZHYzcXlVcG0vZgp2Z2dORGEx
V1daczNiOGFaTTJjQVBMNFhWVnZkZ2NmM2hnWUZCUW5UOGZIeE9INzhlS1YweWcrWjBMYnZldmJz
S1h5K2NPR0MxcktaCjhkVEVlR2FNcVdlMGV3bTh2THpRcWxVckJBWUd3dFhWVmJRc0tpb0s0OGFO
MHp1dmhnMGJJaVVsQlgvOTlSZTJiZHNtQ2hqSnljbjQKNG9zdkRLN2ZnUU1IQUFDM2I5L0drQ0ZE
TlA0TERRMkZ1Ym01OE8vU3BVc2FEemFob2FGd2NIQUE4UGlQaG5YcjFsVktjL0xrU1J3LwpmaHdS
RVJFRzExbWRFU05HQ0o5VFVsTGc0K09EVFpzMmlaNlNaRzF0RFg5Ly8ycVZveHc4VzdkdXJmSFJv
TXJHang4dm1sWUU4S3F3CnQ3Y1hQaGNYRjFjNUgxWTF4aHpQakRIMWpINHpuNStmSDg2ZVBZdkpr
eWVMNW0vZXZCbTdkdTB5T0w5ZXZYcmhxNisrRXMyYk4yOGUKZHUvZWJWQSs2ZW5wQUlBQkF3YWd2
THhjNzM4RkJRVWF2Nm5aMk5pSTdwbjg0WWNmVUY1ZUxrcXpkdTFhTkcvZUhDKysrS0pCOWRWawo5
dXpaOFBEd0VLYnYzYnVIY2VQR29WdTNidGl6WjQ5UnlnREVUMGpTOWUxWG9WZXZYcUxwYytmT0dh
MCt6RFNNUFo0WlkvOVRJM2ZUCk4yclVDR3ZXck1HMzMzNHJtdi9CQng5VUtiK3BVNmVLVHFuSzVY
S01IVHRXNzFPVDJkblp5TS9QQndDY1AzKytTblhRNUsyMzNoSk8KNGQ2K2ZSczdkKzRVbGhVVkZl
R1hYMzVCV0ZpWTBSNFFZV05qZytUazVFcVBBangxNmhRR0R4Nk1NV1BHSUNjbnA5cmxLQWRnZlUv
egp1N2k0aUthMW5iNW5UdzVqajJmRzJHTTEramliaUlnSXZQYmFhOEwwdVhQblVGcGFXcVc4MXE1
ZEszcjA1SU1IRHpCaXhBZzhlUEJBCjU3cktBZW5telpzb0xDeXNVaDNVY1hkM3g1QWhRNFRwNk9o
bzRmT3Z2LzZLZ29JQ1RKbzB5V2psQVVDelpzMlFuSnlNeFlzWG8wR0QKQnFKbFc3ZHV4YlBQUGx2
dDMwMlYvMkM0Y2VPR1h1dlkydHFLbmlUR1QwdXFYNHc1bmhsakJnYmd3c0pDM0x0M3o2QUNGaXhZ
SUh5Vwp5K1Y2UC9CZFZjT0dEZkg3NzcvRHpzNU9tSGZod2dXTUhUdFc1d1VocXFkUWpYMVJqL0xG
V0h2MzdzWFZxMWNCUEw3NGF0Q2dRWEJ6CmN6TnFlY0RqaTVubXpadUhmLy85RjhIQndhSmx0Mi9m
UmxCUWtQQ3R2eXE2ZE9raWZOWTNBQU9QdnkycHk0UFZQYVljejR3eEF3UHcKeVpNbjhja25ueGhV
Z0x1N3UraFJkOVhSc1dOSC9QRERENko1dTNmdnh0eTVjN1d1MTdCaFE3Um8wVUtZVnMxREc1bE1o
ci8rK2t0cgptaGRlZUVFSXNuSzVIR3ZYcnNYNTgrZVJrcEppdEl1dkZGUmZPTkcyYlZ2RXhzWmkz
NzU5b2piZXVYTUhuMzMyV1pYTFVUN2JVRlJVCkpQeFJvWXZ5VmVTcUw4dGdkWXVweHpOalR6dUR6
eEZ1MjdiTm9QVGw1ZVhDYVNwTFMwdlIyMWVxNHBWWFhzRzc3NzRybWhjVkZZWE4KbXpkclhjL1Qw
MVA0dkhidFdseTZkRW12OHViUG40KzB0RFN0YWN6TXpQRFdXMjhKMHovKytDTldyMTROWjJkbkRC
OCtYSzl5OUtWOAp1bHRaLy83OWNlVElFWFR0MmxXWXQzZnYzaXFYNCtQakk1clc5SHhzWlhsNWVh
SlRrcjYrdmxVdW45VU9VNDlueHA1bUJnZmc2OWV2CjQ3ZmZmdE03L2RteloxRlNVZ0lBQ0FnSUVO
MEhxbEJXVmlhYTFuVktPU29xQ3YzNjlSUE5lLzMxMTNIaXhBbU42MFJHUmdxZlpUSVoKWnN5WVVl
bUZDS3BpWW1MdzNYZmZZZXJVcVZyVEFVQjRlTGp3ZTJ4V1ZoYSsrZVliaEllSGk5N25hZ3czYjk0
VXJ1aFcxYXBWSzZ4WgpzMGFZcnM3dE82TkhqeGI5MGJKKy9YcWRMNFJYL2tObDdOaXhvdlZyR3Qr
WFdqVTFNWjRaWS9xcDBsVXk3Ny8vUG03ZnZxMVhXc1c5CnNSS0pCQjkvL0xIYU5IbDVlYUxwUjQ4
ZWFiMjR3OExDQWpFeE1XamV2TGt3cjdpNEdNSEJ3UnF2QUg3cHBaZEViMHZhdFdzWEFnSUMKa0pt
WldTbHRlWGs1VnE1Y2lWZGZmUldmZi82NVhxZmNIQjBkRVJJU0lwcG55TVZYang0OTBqcXRUUGxD
TDFVOWUvWVVYZy9vNStkWAo1Yktzckt3UUhSMHRYT0Y5NWNvVjBSWGU2cXhmdng3QTQ5K0JOZDJy
clhxYmxpWkZSVVhDWjIzQjljNmRPM2pwcFpkZ2IyK1BzTEN3CkdydG5XTmNmYTdvVUZ4Zmp2ZmZl
UTd0MjdUQmp4Z3k5THdTc2JybjZNUFo0Wm96cHAwb0IrTXFWSy9EMTlWWDcrajFscTFhdEVsNkwK
OStXWFg2SnYzNzVxMDZtN05laml4WXRhODNaMmRzYVdMVnRFM3pBek16TXhZc1FJdFJjZlNTUVNM
Rm15UkhSbDd1SERoOUdsU3hlTQpHREVDbjMzMkdhS2pvL0hlZSsvQjA5TVQ3N3p6RHFaTm00WTMz
bmhEYXoyVUtWK01OWGp3NEVvUE1ORG03dDI3b21sdHR4S3RYYnNXCnFhbXBhcGRsWjJlanVMZ1lF
b2xFZE1WcVZjcnExNitmNkkrSUNSTW1hTHpvNXRLbFM4THJCVC81NUJQUjc5R2F5dEwyNmtEbGdD
Q1QKeVVTM1JTbjc3My8vaTIzYnR1SGh3NGRZdjM0OU5tellvREhQNmxCKzR0akRodzhybmJYUlpk
T21UVmkyYkJrdVg3Nk1GU3RXQ0grcwoxSFM1K2pEMmVHYU02Y21RWjBGWFZGVFExcTFicVd2WHJz
SmJpTWFPSFV2TGx5K241T1JrOHZMeW9na1RKdEN5WmN1RTE4OTE3ZHFWCmR1N2NxVEhQMDZkUGk1
NDVyUGczYU5BZ3VucjFxczQ2ZmZIRkY1WFc3ZHk1TXgwL2ZsenRnL24vK09NUHNyR3hxYlNPOGor
SlJFTFQKcGsyajh2Snl2YmFMTXNXckFtTmpZL1ZlUnk2WDAvdnZ2eStxUTU4K2ZhaTR1TGhTV3NY
enJCczFha1Q3OSs4WExTc3FLcUxnNEdBQwpVT2x0U0ZVcGkranhQdi9razArRVp3TjM2TkNoMHJP
MGI5eTRRYTZ1cm1ScmEwc2JObXpRMk02a3BDUlJ1VTJiTnFYczdPeEs2Zkx6Cjh5dTlkT1Bqano5
V20yZFlXSmdvbmFaMlY4ZUZDeGZJM3Q1ZVZNN1BQLzlzVUI3VHBrMFRyYS90VFZ2R0xGZWJtaGpQ
akRIZHF2MHkKaHBTVUZKb3padzRGQlFWUm16WnR5TTdPamdDUXBhVWwrZmo0ME91dnYwNWJ0MjdW
K0hhYXI3LyttcHljbkxRR1FnRFVzbVZMV3JseQpwZGE2dlB6eXkyclhkWFoycGhzM2JsUktmL1Rv
VWVyU3BZdm81UUdLZjU2ZW5wU1NrbUx3OWxEWXVIRWp0V3paVXVmckNZbUlybDI3ClJxTkhqeVoz
ZDNlMTlXL2V2RG1OSERtU3pwOC9MNnpqNXVaR29hR2h3dHVDWEZ4Y0tEUTBsTWFQSDA4dUxpN1V1
WE5uaW91TE0wcFoKeWxKVFU2bDkrL1pDZWc4UEQ0cU1qS1QrL2Z0VGd3WU55TXZMaTg2ZVBhdDIz
ZlQwZEJvOGVMRGFCL3hiVzF0VFVGQ1FFTlFqSWlLbwpXYk5tYXV2bzd1NWU2WFdEeDQ4Zkp3Y0hC
d0pBN2R1M3A1czNiK3JjN3ZvNGZmbzBqUnc1a3JwMTY2YTJueWlDVVVoSUNQMzN2Ly9WCm1kK3BV
NmZJMnRwYUNIUkhqaHlwbFhMMVZkM3h6QmpUbnlMdVNnSURBMGt1bHlNcEtVbjdWMlU5K1BuNUlT
Z29xRXJQYWphRkJ3OGUKSUMwdERlZlBuMGU3ZHUzZzVlV2w4ZFNwdmlvcUtuRHUzRGw0ZVhrWnFa
WmlPVGs1ZU9hWlp3QThQaVY1OGVKRlhMbHlCYzJhTlVQNwo5dTNSc21YTEdpbFhJVE16RThlUEg4
Zng0OGRoYVdrSlgxOWYrUG41Vlhwd2YyMHFLaXJDbVRObjBMMTdkNDB2c2FnTDd0MjdoOTI3CmQy
UHc0TUhDUHF6TG5yVHh6TmlUSWlnb0NISzVITWE5UlBjSjA2UkpFd3dZTUFBREJnd3dXcDdtNXVZ
MUZud0JpQTdjZG5aMjZOYXQKRzdwMTYxWmo1YWx5Y1hHQmk0dExwWWQvbUpLdHJTMTY5T2hoNm1y
bzVPam9XT21GRll5eHB4Yy9LNUF4eGhnekFhTitBNTR3WVFMYwozZDJObVNWanpFUjRQRE5XczR6
Nkd6QmpqREhHdEZQOEJzeW5vQmxqakRFVDRBRE1HR09NbVFBSFlNWVlZOHdFT0FBenhoaGpKc0FC
Cm1ESEdHRE1CRHNDTU1jYVlDWEFBWm93eHhreUFBekJqakRGbUFoeUFHV09NTVJQZ0FNd1lZNHla
QUFkZ3hoaGp6QVE0QURQR0dHTW0Kd0FHWU1jWVlNd0VMQURodzRBQ2VlKzQ1VTllRk1jWVlxL2NP
SERpQWdJQUFTSWlJZ29LQ1RGMGZ4aGhqN0ttUm1KaUkvd05YK0R1ZwplMVMwWXdBQUFBQkpSVTVF
cmtKZ2dnPT0KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11889</attachid>
            <date>2006-12-16 14:27:14 -0800</date>
            <delta_ts>2006-12-17 04:11:49 -0800</delta_ts>
            <desc>Updated patch II</desc>
            <filename>UpdatedSVGLengthPatch.diff</filename>
            <type>text/plain</type>
            <size>214097</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYtMTItMTYgIE5pa29sYXMgWmltbWVybWFu
biAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBSb2IuCisKKyAg
ICAgICAgRml4ZXM6IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODEz
CisKKyAgICAgICAgVXBkYXRlIGJhc2VsaW5lIGFmdGVyIHRoZSBTVkdMZW5ndGggcGF0Y2guCisg
ICAgICAgICogc3ZnL1czQy1TVkctMS4xL2Nvb3Jkcy11bml0cy0wMS1iLWV4cGVjdGVkLnBuZzoK
KwogMjAwNi0xMi0xNiAgTWl0eiBQZXR0ZWwgIDxtaXR6QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgT2xpdmVyLgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNjUgQEAKKzIwMDYtMTItMTYgIE5pa29sYXMg
WmltbWVybWFubiAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBS
b2IuCisKKyAgICAgICAgRml4ZXM6IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExODEzCisKKyAgICAgICAgUGFzcyBTVkdMZW5ndGggYXJvdW5kIGJ5IHZhbHVlLCByZW1v
dmUgYW55IFNWR0xlbmd0aCogdXNhZ2UuCisgICAgICAgIEJpbmRpbmdzIHdvcmsgZmluZSwgYXMg
dGhlIFNWRyBQT0QgSlMgV3JhcHBlciBzdHVmZiBpcyBhbHJlYWR5IGluIHN2bi4KKworICAgICAg
ICBObyBuZXcgcmVncmVzc2lvbnMsIG5vbmUgZml4ZWQuIEJ1dCB0aGUgY29kZSBpdHNlbGYgaXMg
bXVjaCBjbGVhbmVyLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAqIGtzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OktTVkdQYWludGVyRmFjdG9yeTo6Y3NzUHJpbWl0aXZlVG9MZW5ndGgpOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmg6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVu
dDo6U1ZHQ2lyY2xlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVt
ZW50Ojp0b1BhdGhEYXRhKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5o
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0Vs
ZW1lbnQuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50Ojp0b1BhdGhEYXRhKToKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVt
ZW50OjpTVkdGaWx0ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVs
ZW1lbnQ6OmNhbnZhc1Jlc291cmNlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnNldFN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRml0
VG9WaWV3Qm94OjpwYXJzZVZpZXdCb3gpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxl
bWVudDo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cik6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6CisgICAg
ICAgICoga3N2ZzIvc3ZnL1NWR0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdIZWxw
ZXI6OnBhcnNlU2VwYXJhdGVkTGlzdCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0hlbHBlci5o
OgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMZW5ndGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RvcmVVbml0KToKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Omxlbmd0aFR5cGVUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdUb0xl
bmd0aFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpTVkdMZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjp1bml0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMZW5ndGg6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6dmFsdWVBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMZW5ndGg6Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMZW5ndGg6OmlzRnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpkcGkp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpQZXJjZW50YWdlT2ZWaWV3cG9ydCk6Cisg
ICAgICAgICoga3N2ZzIvc3ZnL1NWR0xlbmd0aC5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGVu
Z3RoLmlkbDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGhMaXN0OjpTVkdMZW5ndGhMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xlbmd0aExpc3Q6OnBhcnNlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGVuZ3Ro
TGlzdC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGluZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xpbmVFbGVtZW50Ojp0b1BhdGhEYXRhKToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHTGluZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdy
YWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWRpZW50KToKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6
U1ZHTWFya2VyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50
OjpjYW52YXNSZXNvdXJjZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQu
aDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hc2tFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R01hc2tFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdNYXNrRWxlbWVudDo6ZHJhd01hc2tlckNvbnRlbnQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpkcmF3UGF0dGVy
bkNvbnRlbnRJbnRvVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6
bm90aWZ5QXR0cmlidXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVt
ZW50OjpnZXRDVE0pOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQ6OmJ1aWxkR3JhZGllbnQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OlNWR1JlY3RFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YSk6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojp2aWV3cG9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmdldFNjcmVlbkNUTSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaDoK
KyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVu
dDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250
ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGV4dEVsZW1l
bnQuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmNsb3NlUmVuZGVyZXIpOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2VsZWN0Q3Vyc29yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGb3JlaWduT2Jq
ZWN0Ojp0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJQYXRoLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUGF0aC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29u
dGFpbmVyOjpjYWxjVmlld3BvcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cmVsYXRpdmVCQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjp0cmFuc2xhdGlvbkZvckF0dHJp
YnV0ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1NW
R0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNsYXRlQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYWNlUG9zaXRpb25lZEJveGVzSG9yaXpvbnRhbGx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnBsYWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFic0Jhc2VsaW5lKToKKwogMjAw
Ni0xMi0xNiAgWmFjayBSdXNpbiAgPHphY2tAa2RlLm9yZz4KIAogICAgICAgICBBZGQgYSBzdHVi
IGZvciBTZWFyY2hQb3B1cE1lbnUgZm9yIFF0IGNvZGUuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNyBAQCBteSAlcHJpbWl0aXZlVHlwZUhhc2ggPSAoImludCIgPT4gMSwgInNoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgInVuc2lnbmVkIGxvbmciID0+IDEsICJmbG9hdCIgPT4gMSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZG91YmxlIiA9PiAxLCAiYm9vbGVhbiIgPT4gMSwgInZv
aWQiID0+IDEpOwogCi1teSAlcG9kVHlwZUhhc2ggPSAoIlJHQkNvbG9yIiA9PiAxLCAiU1ZHUG9p
bnQiID0+IDEsICJTVkdSZWN0IiA9PiAxLCAiU1ZHTnVtYmVyIiA9PiAxLCAiU1ZHTWF0cml4IiA9
PiAxKTsKK215ICVwb2RUeXBlSGFzaCA9ICgiUkdCQ29sb3IiID0+IDEsICJTVkdMZW5ndGgiID0+
IDEsICJTVkdQb2ludCIgPT4gMSwgIlNWR1JlY3QiID0+IDEsICJTVkdOdW1iZXIiID0+IDEsICJT
VkdNYXRyaXgiID0+IDEpOwogIAogbXkgJXN0cmluZ1R5cGVIYXNoID0gKCJET01TdHJpbmciID0+
IDEsICJBdG9taWNTdHJpbmciID0+IDEpOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTA5OCw2
ICsxMDk4LDcgQEAgc3ViIEdldE5hdGl2ZVR5cGUKICAgICByZXR1cm4gIkZsb2F0UmVjdCIgaWYg
JHR5cGUgZXEgIlNWR1JlY3QiOwogICAgIHJldHVybiAiRmxvYXRQb2ludCIgaWYgJHR5cGUgZXEg
IlNWR1BvaW50IjsKICAgICByZXR1cm4gIkFmZmluZVRyYW5zZm9ybSIgaWYgJHR5cGUgZXEgIlNW
R01hdHJpeCI7CisgICAgcmV0dXJuICJTVkdMZW5ndGgiIGlmICR0eXBlIGVxICJTVkdMZW5ndGgi
OwogICAgIHJldHVybiAiZG91YmxlIiBpZiAkdHlwZSBlcSAiU1ZHTnVtYmVyIjsKICAgICByZXR1
cm4gIlNWR1BhaW50OjpTVkdQYWludFR5cGUiIGlmICR0eXBlIGVxICJTVkdQYWludFR5cGUiOwog
CkluZGV4OiBXZWJDb3JlL2tzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcAko
cmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0
eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlNWR1Bh
aW50U2VydmVyU29saWQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJS
ZW5kZXJQYXRoLmgiCisjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3Ro
LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVt
ZW50LmgiCkBAIC0xMDgsMTEgKzEwOSwxMSBAQCBkb3VibGUgS1NWR1BhaW50ZXJGYWN0b3J5Ojpj
c3NQcmltaXRpdmVUCiAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiAKICAgICBpZiAoY3Nz
VHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIHsKLSAgICAgICAgU1ZH
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihpdGVtLT5lbGVtZW50
KCkpOworICAgICAgICBTVkdTdHlsZWRFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZH
U3R5bGVkRWxlbWVudCo+KGl0ZW0tPmVsZW1lbnQoKSk7CiAgICAgICAgIFNWR0VsZW1lbnQqIHZp
ZXdwb3J0RWxlbWVudCA9IChlbGVtZW50ID8gZWxlbWVudC0+dmlld3BvcnRFbGVtZW50KCkgOiAw
KTsKICAgICAgICAgaWYgKHZpZXdwb3J0RWxlbWVudCkgewogICAgICAgICAgICAgZG91YmxlIHJl
c3VsdCA9IHByaW1pdGl2ZS0+Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwLjA7Ci0gICAgICAgICAgICBy
ZXR1cm4gU1ZHSGVscGVyOjpQZXJjZW50YWdlT2ZWaWV3cG9ydChyZXN1bHQsIHZpZXdwb3J0RWxl
bWVudCwgTE1fT1RIRVIpOworICAgICAgICAgICAgcmV0dXJuIFNWR0xlbmd0aDo6UGVyY2VudGFn
ZU9mVmlld3BvcnQocmVzdWx0LCBlbGVtZW50LCBMZW5ndGhNb2RlT3RoZXIpOwogICAgICAgICB9
CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCShy
ZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGJvb2w+IFNWR0FuaW1hdGVkQm9vbGVhbjsK
ICAgICB0eXBlZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8aW50PiBTVkdBbmltYXRlZEVudW1lcmF0
aW9uOwogICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxsb25nPiBTVkdBbmltYXRlZElu
dGVnZXI7Ci0gICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR0xlbmd0aCo+IFNWR0Fu
aW1hdGVkTGVuZ3RoOworICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdMZW5ndGg+
IFNWR0FuaW1hdGVkTGVuZ3RoOwogICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxTVkdM
ZW5ndGhMaXN0Kj4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OwogICAgIHR5cGVkZWYgU1ZHQW5pbWF0
ZWRUZW1wbGF0ZTxkb3VibGU+IFNWR0FuaW1hdGVkTnVtYmVyOwogICAgIHR5cGVkZWYgU1ZHQW5p
bWF0ZWRUZW1wbGF0ZTxTVkdOdW1iZXJMaXN0Kj4gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0OyAKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2MCkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAg
ICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAg
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSwxMiArMjEsMTIg
QEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5j
bHVkZSAiU1ZHQ2lyY2xlRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2lu
Y2x1ZGUgIlNWR0hlbHBlci5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDkgKzM2LDkgQEAgU1ZHQ2ly
Y2xlRWxlbWVudDo6U1ZHQ2lyY2xlRWxlbWVudChjb25zdAogICAgICwgU1ZHVGVzdHMoKQogICAg
ICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQot
ICAgICwgbV9jeChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQo
KSkpCi0gICAgLCBtX2N5KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVs
ZW1lbnQoKSkpCi0gICAgLCBtX3IobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9PVEhFUiwgdmlld3Bv
cnRFbGVtZW50KCkpKQorICAgICwgbV9jeChTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRo
KSkKKyAgICAsIG1fY3koU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpKQorICAgICwg
bV9yKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlT3RoZXIpKQogewogfQogCkBAIC00NiwxOSAr
NDYsMTkgQEAgU1ZHQ2lyY2xlRWxlbWVudDo6flNWR0NpcmNsZUVsZW1lbnQoKQogewogfQogCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgq
LCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLmxvY2FsTmFtZSgpLCBt
X2N4LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ci5s
b2NhbE5hbWUoKSwgbV9jeS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBSLCByLCBTVkdOYW1l
czo6ckF0dHIubG9jYWxOYW1lKCksIG1fci5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEN4LCBj
eCwgU1ZHTmFtZXM6OmN4QXR0ci5sb2NhbE5hbWUoKSwgbV9jeCkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ci5sb2NhbE5hbWUoKSwgbV9jeSkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIFIsIHIsIFNWR05hbWVzOjpyQXR0ci5sb2NhbE5hbWUoKSwgbV9yKQogCiB2b2lkIFNW
R0NpcmNsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0
cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAgIGN4QmFzZVZh
bHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRDeEJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOyAgICAgICAKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN5QXR0cikKLSAgICAgICAgY3lCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEN5QmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ckF0dHIpCi0gICAgICAgIHJCYXNlVmFsdWUoKS0+c2V0
VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFJCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVPdGhlciwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKFNW
R1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTcyLDM3ICs3MiwyMSBAQCB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmliCiAKIFBhdGggU1ZHQ2lyY2xlRWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CiB7Ci0gICAg
ZmxvYXQgX2N4ID0gY3goKS0+dmFsdWUoKSwgX2N5ID0gY3koKS0+dmFsdWUoKTsKLSAgICBmbG9h
dCBfciA9IHIoKS0+dmFsdWUoKTsKLQotICAgIHJldHVybiBQYXRoOjpjcmVhdGVDaXJjbGUoRmxv
YXRQb2ludChfY3gsIF9jeSksIF9yKTsKLX0KLQotY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogU1ZH
Q2lyY2xlRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVu
dCogY29udGV4dCkKLXsKLSAgICAvLyBBbGwgYXR0cmlidXRlJ3MgY29udGV4dHMgYXJlIGVxdWFs
IChzbyBqdXN0IHRha2UgdGhlIG9uZSBmcm9tICdjeCcpLgotICAgIGNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnQqIHJlc3RvcmUgPSBjeCgpLT5jb250ZXh0KCk7Ci0KLSAgICBjeCgpLT5zZXRDb250ZXh0
KGNvbnRleHQpOwotICAgIGN5KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgcigpLT5zZXRD
b250ZXh0KGNvbnRleHQpOwotICAgIAotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnB1c2hBdHRyaWJ1
dGVDb250ZXh0KGNvbnRleHQpOwotICAgIHJldHVybiByZXN0b3JlOworICAgIHJldHVybiBQYXRo
OjpjcmVhdGVDaXJjbGUoRmxvYXRQb2ludChjeCgpLnZhbHVlKCksIGN5KCkudmFsdWUoKSksIHIo
KS52YWx1ZSgpKTsKIH0KIAogYm9vbCBTVkdDaXJjbGVFbGVtZW50OjpoYXNQZXJjZW50YWdlVmFs
dWVzKCkgY29uc3QKIHsKLSAgICBpZiAoY3goKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNW
R19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgY3koKS0+dW5pdFR5cGUoKSA9PSBT
VkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgcigpLT51bml0
VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSkKKyAgICBpZiAo
Y3goKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8CisgICAgICAgIGN5KCku
dW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSB8fAorICAgICAgICByKCkudW5pdFR5
cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICByZXR1cm4gZmFsc2U7CiB9Ci0KKyAgCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAv
LyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdDaXJjbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Q2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0NpcmNsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUu
b3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIw
MDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0NpcmNsZUVsZW1lbnRJbXBsX0gKLSNkZWZp
bmUgS1NWR19TVkdDaXJjbGVFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0NpcmNsZUVsZW1lbnRf
SAorI2RlZmluZSBTVkdDaXJjbGVFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNp
bmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC0zMSw3ICszMiw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7Ci0gICAgY2xhc3MgU1ZHTGVuZ3RoOwogICAgIGNsYXNz
IFNWR0NpcmNsZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKQEAgLTQ5LDI0ICs0OSwy
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29u
c3Q7CiAKLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBwdXNoQXR0cmli
dXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KTsKLQogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVyY2Vu
dGFnZVZhbHVlcygpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwg
Ym9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCkKIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEN4LCBjeCkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCos
IFJlZlB0cjxTVkdMZW5ndGg+LCBDeSwgY3kpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3Ro
PiwgUiwgcikKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0NpcmNs
ZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBDeCwgY3gpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xl
bmd0aCwgQ3ksIGN5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
Q2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFIsIHIpCiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKLSNlbmRpZgorI2Vu
ZGlmIC8vIFNWR0NpcmNsZUVsZW1lbnRfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVy
bWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yMSw2ICsyMSw3IEBACiAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNWR0N1cnNv
ckVsZW1lbnQuaCIKIApAQCAtNDAsOCArNDEsOCBAQCBTVkdDdXJzb3JFbGVtZW50OjpTVkdDdXJz
b3JFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAg
ICAsIFNWR1VSSVJlZmVyZW5jZSgpCiAgICAgLCBDYWNoZWRSZXNvdXJjZUNsaWVudCgpCi0gICAg
LCBtX3gobmV3IFNWR0xlbmd0aCgwLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAg
ICwgbV95KG5ldyBTVkdMZW5ndGgoMCwgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisg
ICAgLCBtX3goMCwgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KDAsIExlbmd0aE1vZGVIZWln
aHQpCiB7CiAgICAgbV9jYWNoZWRJbWFnZSA9IDA7CiB9CkBAIC01MiwxNiArNTMsMTYgQEAgU1ZH
Q3Vyc29yRWxlbWVudDo6flNWR0N1cnNvckVsZW1lbnQoKQogICAgICAgICBtX2NhY2hlZEltYWdl
LT5kZXJlZih0aGlzKTsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ3Vy
c29yRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4
QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNW
R05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
WCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkKIAogdm9pZCBTVkdDdXJz
b3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiB7
Ci0gICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOworICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCgwLCBMZW5n
dGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05h
bWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVl
KTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgoMCwgTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgyLDYgKzgzLDYgQEAgdm9p
ZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogCiB9CiAKLS8vIHZpbTp0cz00
Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC0yMCwxMiArMjAsMTQgQEAKICAgICBCb3N0b24s
IE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdDdXJzb3JFbGVtZW50
SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHQ3Vyc29yRWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdD
dXJzb3JFbGVtZW50X0gKKyNkZWZpbmUgU1ZHQ3Vyc29yRWxlbWVudF9ICisKICNpZmRlZiBTVkdf
U1VQUE9SVAogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKIAorI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgog
I2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogI2luY2x1ZGUg
IlNWR1VSSVJlZmVyZW5jZS5oIgpAQCAtMzQsOCArMzYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZQogewotICAgIGNsYXNzIFNWR0xlbmd0aDsKLQogICAgIGNsYXNzIFNWR0N1cnNvckVsZW1lbnQg
OiBwdWJsaWMgU1ZHRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTVkdUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLApAQCAtNjAsOCArNjAsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJl
ZikKIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ3Vyc29yRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCiAKICAgICAgICAgQ2FjaGVkSW1hZ2UgKm1fY2FjaGVk
SW1hZ2U7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAx
ODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAg
ICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAg
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2ICsyMSw3IEBA
CiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1
ZGUgIlNWR0VsZW1lbnQuaCIKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3
aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lm
ZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHRWxsaXBzZUVsZW1lbnQuaCIKIApAQCAtMzYs
MTAgKzM3LDEwIEBAIFNWR0VsbGlwc2VFbGVtZW50OjpTVkdFbGxpcHNlRWxlbWVudChjb24KICAg
ICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1fY3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURU
SCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9jeShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExN
X0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9yeChuZXcgU1ZHTGVuZ3RoKHRo
aXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3J5KG5ldyBTVkdMZW5n
dGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX2N4KHRoaXMs
IExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fY3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAg
ICAsIG1fcngodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9yeSh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0KQogewogfSAgICAKIApAQCAtNDcsMjIgKzQ4LDIyIEBAIFNWR0VsbGlwc2VFbGVt
ZW50Ojp+U1ZHRWxsaXBzZUVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEN4
LCBjeCwgU1ZHTmFtZXM6OmN4QXR0ci5sb2NhbE5hbWUoKSwgbV9jeC5nZXQoKSkKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5n
dGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5Lmdl
dCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNW
R0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBSeCwgcngsIFNWR05hbWVzOjpyeEF0dHIubG9jYWxO
YW1lKCksIG1fcnguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxp
cHNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFJ5LCByeSwgU1ZHTmFtZXM6
OnJ5QXR0ci5sb2NhbE5hbWUoKSwgbV9yeS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeCwg
Y3gsIFNWR05hbWVzOjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3gpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3Ro
LCBsZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ci5sb2NhbE5hbWUoKSwgbV9yeCkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIubG9jYWxOYW1lKCksIG1f
cnkpCiAKIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0
ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeEF0dHIpCi0g
ICAgICAgIGN4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwotICAgIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN5QXR0cikKLSAgICAgICAgY3lCYXNlVmFsdWUoKS0+
c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6cnhBdHRyKQotICAgICAgICByeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVl
KTsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyeUF0dHIpCi0gICAgICAgIHJ5
QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRDeEJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgIGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3lBdHRyKQorICAgICAgICBzZXRDeUJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKKyAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKKyAgICAgICAgc2V0UnhCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKKyAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ5QXR0cikKKyAgICAgICAgc2V0UnlCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC03NiwzOSArNzcsMjMgQEAgdm9pZCBTVkdFbGxpcHNlRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaQogCiBQYXRoIFNWR0VsbGlwc2VFbGVtZW50Ojp0b1BhdGhE
YXRhKCkgY29uc3QKIHsKLSAgICBmbG9hdCBfY3ggPSBjeCgpLT52YWx1ZSgpLCBfY3kgPSBjeSgp
LT52YWx1ZSgpOwotICAgIGZsb2F0IF9yeCA9IHJ4KCktPnZhbHVlKCksIF9yeSA9IHJ5KCktPnZh
bHVlKCk7Ci0KLSAgICByZXR1cm4gUGF0aDo6Y3JlYXRlRWxsaXBzZShGbG9hdFBvaW50KF9jeCwg
X2N5KSwgX3J4LCBfcnkpOwotfQotCi1jb25zdCBTVkdTdHlsZWRFbGVtZW50KiBTVkdFbGxpcHNl
RWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29u
dGV4dCkKLXsKLSAgICAvLyBBbGwgYXR0cmlidXRlJ3MgY29udGV4dHMgYXJlIGVxdWFsIChzbyBq
dXN0IHRha2UgdGhlIG9uZSBmcm9tICdjeCcpLgotICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQq
IHJlc3RvcmUgPSBjeCgpLT5jb250ZXh0KCk7Ci0KLSAgICBjeCgpLT5zZXRDb250ZXh0KGNvbnRl
eHQpOwotICAgIGN5KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgcngoKS0+c2V0Q29udGV4
dChjb250ZXh0KTsKLSAgICByeSgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotCi0gICAgU1ZHU3R5
bGVkRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29udGV4dCk7Ci0gICAgcmV0dXJuIHJl
c3RvcmU7CisgICAgcmV0dXJuIFBhdGg6OmNyZWF0ZUVsbGlwc2UoRmxvYXRQb2ludChjeCgpLnZh
bHVlKCksIGN5KCkudmFsdWUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcngo
KS52YWx1ZSgpLCByeSgpLnZhbHVlKCkpOwogfQogCiBib29sIFNWR0VsbGlwc2VFbGVtZW50Ojpo
YXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3QKIHsKLSAgICBpZiAoY3goKS0+dW5pdFR5cGUoKSA9
PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgY3koKS0+
dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAg
ICAgICAgcngoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNF
TlRBR0UgfHwKLSAgICAgICAgcnkoKS0+dW5pdFR5cGUoKSA9PSBTVkdMZW5ndGg6OlNWR19MRU5H
VEhUWVBFX1BFUkNFTlRBR0UpCisgICAgaWYgKGN4KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBl
UGVyY2VudGFnZSB8fAorICAgICAgICBjeSgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNl
bnRhZ2UgfHwKKyAgICAgICAgcngoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdl
IHx8CisgICAgICAgIHJ5KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9Ci0KKyAKIH0KIAotLy8g
dmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQK
SW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAkocmV2aXNpb24gMTgyNjAp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5IEBACiAg
ICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHRWxs
aXBzZUVsZW1lbnRJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdFbGxpcHNlRWxlbWVudEltcGxfSAor
I2lmbmRlZiBTVkdFbGxpcHNlRWxlbWVudF9ICisjZGVmaW5lIFNWR0VsbGlwc2VFbGVtZW50X0gK
KwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLmgiCkBAIC0zMSw3ICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7Ci0gICAg
Y2xhc3MgU1ZHTGVuZ3RoOwogICAgIGNsYXNzIFNWR0VsbGlwc2VFbGVtZW50IDogcHVibGljIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR0xhbmdTcGFjZSwKQEAgLTQ5LDIwICs0OSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpIHsg
cmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9CiAgICAgICAg
IHZpcnR1YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29uc3Q7CiAKLSAgICAgICAgdmlydHVhbCBjb25z
dCBTVkdTdHlsZWRFbGVtZW50KiBwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRF
bGVtZW50KiBjb250ZXh0KTsKLQogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBjb25z
dCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KLQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0OwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMo
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKICAKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8
U1ZHTGVuZ3RoPiwgQ3gsIGN4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBDeSwg
Y3kpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFJ4LCByeCkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgUnksIHJ5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBDeCwg
Y3gpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxl
bWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN5LCBjeSkKKyAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0
aCwgUngsIHJ4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRWxs
aXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSeSwgcnkpCiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxk
Zm94QGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNh
bS53ZWluaWdAZ21haWwuY29tPgogCkBAIC00MywyMSArNDMsMjAgQEAgU1ZHRmlsdGVyRWxlbWVu
dDo6U1ZHRmlsdGVyRWxlbWVudChjb25zdAogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCgpCiAgICAgLCBtX2ZpbHRlclVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9P
QkpFQ1RCT1VORElOR0JPWCkKICAgICAsIG1fcHJpbWl0aXZlVW5pdHMoU1ZHVW5pdFR5cGVzOjpT
VkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgodGhp
cywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVuZ3Ro
KHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV93aWR0aChuZXcg
U1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2hl
aWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQor
ICAgICwgbV94KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBt
X2hlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV9maWx0ZXJSZXNYKDApCiAg
ICAgLCBtX2ZpbHRlclJlc1koMCkKLQogewogICAgIC8vIFNwZWM6IElmIHRoZSBhdHRyaWJ1dGUg
aXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICItMTAlIiB3
ZXJlIHNwZWNpZmllZC4KLSAgICBtX3gtPnNldFZhbHVlQXNTdHJpbmcoIi0xMCUiKTsKLSAgICBt
X3ktPnNldFZhbHVlQXNTdHJpbmcoIi0xMCUiKTsKLQorICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKSk7CisgICAgc2V0WUJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiKSk7CisgCiAgICAgLy8gU3Bl
YzogSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlm
IGEgdmFsdWUgb2YgIjEyMCUiIHdlcmUgc3BlY2lmaWVkLgotICAgIG1fd2lkdGgtPnNldFZhbHVl
QXNTdHJpbmcoIjEyMCUiKTsKLSAgICBtX2hlaWdodC0+c2V0VmFsdWVBc1N0cmluZygiMTIwJSIp
OworICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgs
ICIxMjAlIikpOworICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCwgIjEyMCUiKSk7CiB9CiAKIFNWR0ZpbHRlckVsZW1lbnQ6On5TVkdGaWx0ZXJF
bGVtZW50KCkKQEAgLTY2LDEwICs2NSwxMCBAQCBTVkdGaWx0ZXJFbGVtZW50Ojp+U1ZHRmlsdGVy
RWxlbWVudCgpCiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1l
bnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBGaWx0ZXJVbml0cywgZmlsdGVyVW5p
dHMsIFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIubG9jYWxOYW1lKCksIG1fZmlsdGVyVW5pdHMp
CiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBpbnQsIEVu
dW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgUHJpbWl0aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzLCBT
VkdOYW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX3ByaW1pdGl2ZVVuaXRz
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwg
bV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2Nh
bE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmls
dGVyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZH
TmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwg
bGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCks
IG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVy
RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRy
LmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0
ZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0
dHIubG9jYWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0Zp
bHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZH
TmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWln
aHQpCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBsb25n
LCBJbnRlZ2VyLCBpbnRlZ2VyLCBGaWx0ZXJSZXNYLCBmaWx0ZXJSZXNYLCAiZmlsdGVyUmVzWCIs
IG1fZmlsdGVyUmVzWCkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVs
ZW1lbnQsIGxvbmcsIEludGVnZXIsIGludGVnZXIsIEZpbHRlclJlc1ksIGZpbHRlclJlc1ksICJm
aWx0ZXJSZXNZIiwgbV9maWx0ZXJSZXNZKQogCkBAIC05MSwxMyArOTAsMTMgQEAgdm9pZCBTVkdG
aWx0ZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgICAgICBlbHNlIGlmICh2YWx1ZSA9
PSAib2JqZWN0Qm91bmRpbmdCb3giKQogICAgICAgICAgICAgc2V0UHJpbWl0aXZlVW5pdHNCYXNl
VmFsdWUoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKTsKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhC
YXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhCYXNlVmFs
dWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZhbHVlKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0
aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5z
ZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAg
ICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgcmV0
dXJuOwogICAgICAgICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KSkgcmV0dXJuOwpAQCAtMTE3LDEzICsxMTYsMzEgQEAgU1ZHUmVzb3VyY2UqIFNWR0ZpbHRlckVs
ZW1lbnQ6OmNhbnZhc1JlcwogCiAgICAgYm9vbCBmaWx0ZXJCQm94TW9kZSA9IGZpbHRlclVuaXRz
KCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwogICAg
IG1fZmlsdGVyLT5zZXRGaWx0ZXJCb3VuZGluZ0JveE1vZGUoZmlsdGVyQkJveE1vZGUpOwotICAg
IAotICAgIHgoKS0+c2V0QmJveFJlbGF0aXZlKGZpbHRlckJCb3hNb2RlKTsKLSAgICB5KCktPnNl
dEJib3hSZWxhdGl2ZShmaWx0ZXJCQm94TW9kZSk7Ci0gICAgd2lkdGgoKS0+c2V0QmJveFJlbGF0
aXZlKGZpbHRlckJCb3hNb2RlKTsKLSAgICBoZWlnaHQoKS0+c2V0QmJveFJlbGF0aXZlKGZpbHRl
ckJCb3hNb2RlKTsKLSAgICBtX2ZpbHRlci0+c2V0RmlsdGVyUmVjdChGbG9hdFJlY3QoeCgpLT52
YWx1ZSgpLCB5KCktPnZhbHVlKCksIHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52YWx1ZSgp
KSk7Ci0gICAgCisKKyAgICBmbG9hdCBfeCwgX3ksIHcsIGg7CisKKyAgICBpZiAoZmlsdGVyQkJv
eE1vZGUgJiYgeCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAg
IF94ID0geCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpIC8gMTAwLjA7CisgICAgZWxzZQorICAg
ICAgICBfeCA9IHgoKS52YWx1ZSgpOworCisgICAgaWYgKGZpbHRlckJCb3hNb2RlICYmIHkoKS51
bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAgICAgICBfeSA9IHkoKS52YWx1
ZUluU3BlY2lmaWVkVW5pdHMoKSAvIDEwMC4wOworICAgIGVsc2UKKyAgICAgICAgX3kgPSB5KCku
dmFsdWUoKTsKKworICAgIGlmIChmaWx0ZXJCQm94TW9kZSAmJiB3aWR0aCgpLnVuaXRUeXBlKCkg
PT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgIHcgPSB3aWR0aCgpLnZhbHVlSW5TcGVj
aWZpZWRVbml0cygpIC8gMTAwLjA7CisgICAgZWxzZQorICAgICAgICB3ID0gd2lkdGgoKS52YWx1
ZSgpOworCisgICAgaWYgKGZpbHRlckJCb3hNb2RlICYmIGhlaWdodCgpLnVuaXRUeXBlKCkgPT0g
TGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgIGggPSBoZWlnaHQoKS52YWx1ZUluU3BlY2lm
aWVkVW5pdHMoKSAvIDEwMC4wOworICAgIGVsc2UKKyAgICAgICAgaCA9IGhlaWdodCgpLnZhbHVl
KCk7CisKKyAgICBtX2ZpbHRlci0+c2V0RmlsdGVyUmVjdChGbG9hdFJlY3QoX3gsIF95LCB3LCBo
KSk7CisKICAgICBib29sIHByaW1pdGl2ZUJCb3hNb2RlID0gcHJpbWl0aXZlVW5pdHMoKSA9PSBT
VkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7CiAgICAgbV9maWx0
ZXItPnNldEVmZmVjdEJvdW5kaW5nQm94TW9kZShwcmltaXRpdmVCQm94TW9kZSk7CiAgICAgLy8g
RklYTUU6IFdoZW4gZG9lcyB0aGlzIGluZm8gZ2V0IHBhc3NlZCB0byB0aGUgZmlsdGVycyBlbGVt
ZW50cz8KQEAgLTE0Myw2ICsxNjAsNiBAQCBTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxlbWVudDo6
Y2FudmFzUmVzCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JU
CiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBr
ZGUub3JnPgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogICAgIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vp
bmlnQGdtYWlsLmNvbT4KIApAQCAtMjEsOCArMjEsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEt
MTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0ZpbHRlckVsZW1lbnRJbXBsX0gKLSNk
ZWZpbmUgS1NWR19TVkdGaWx0ZXJFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0ZpbHRlckVsZW1l
bnRfSAorI2RlZmluZSBTVkdGaWx0ZXJFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAK
ICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgpAQCAtNTksMTAgKzYwLDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZpbHRlckVsZW1lbnQsIGludCwgaW50LCBGaWx0ZXJVbml0cywgZmlsdGVyVW5pdHMpCiAg
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBp
bnQsIGludCwgUHJpbWl0aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzKQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVm
UHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwg
eSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1l
bnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5n
dGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xl
bmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zp
bHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdM
ZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdo
dCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1l
bnQsIGxvbmcsIGxvbmcsIEZpbHRlclJlc1gsIGZpbHRlclJlc1gpCiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBsb25nLCBsb25nLCBGaWx0
ZXJSZXNZLCBmaWx0ZXJSZXNZKQogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9u
IDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
cHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAj
aWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaCIKIApAQCAtMzUsMzcgKzM2LDM3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvYykKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgbV94KG5l
dyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1f
eShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAg
ICwgbV93aWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQo
KSkpCi0gICAgLCBtX2hlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3Bv
cnRFbGVtZW50KCkpKQorICAgICwgbV94KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1f
eSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewotICAgIC8v
IFNwZWMgOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMg
YXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgbV93aWR0aC0+c2V0
VmFsdWVBc1N0cmluZygiMTAwJSIpOwotICAgIG1faGVpZ2h0LT5zZXRWYWx1ZUFzU3RyaW5nKCIx
MDAlIik7CisgICAgLy8gU3BlYzogSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0
aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgorICAg
IHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAl
IikpOworICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCwgIjEwMCUiKSk7CiB9CiAKIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6flNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcygpCiB7CiB9CiAKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcywgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5s
b2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kuZ2V0KCkpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVz
Ojp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xl
bmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0
dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcywgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRy
LmxvY2FsTmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNW
R05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodCkKIEFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU3Ry
aW5nLCBTdHJpbmcsIHN0cmluZywgUmVzdWx0LCByZXN1bHQsIFNWR05hbWVzOjpyZXN1bHRBdHRy
LmxvY2FsTmFtZSgpLCBtX3Jlc3VsdCkKIAogdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikK
IHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNT
dHJpbmcodmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpyZXN1bHRBdHRyKQogICAgICAgICBzZXRSZXN1bHRCYXNlVmFsdWUodmFs
dWUpOwogICAgIGVsc2UKQEAgLTc3LDI2ICs3OCwzMSBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAgQVNTRVJUKGZpbHRlckVmZmVjdCk7CiAgICAgaWYgKCFm
aWx0ZXJFZmZlY3QpCiAgICAgICAgIHJldHVybjsKKwogICAgIGJvb2wgYmJveCA9IGZhbHNlOwog
ICAgIGlmIChwYXJlbnROb2RlKCkgJiYgcGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKFNWR05hbWVz
OjpmaWx0ZXJUYWcpKQogICAgICAgICBiYm94ID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyRWxlbWVu
dCo+KHBhcmVudE5vZGUoKSktPnByaW1pdGl2ZVVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdf
VU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwogCi0gICAgeCgpLT5zZXRCYm94UmVsYXRpdmUo
YmJveCk7Ci0gICAgeSgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgd2lkdGgoKS0+c2V0
QmJveFJlbGF0aXZlKGJib3gpOwotICAgIGhlaWdodCgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7
Ci0gICAgZmxvYXQgX3ggPSB4KCktPnZhbHVlKCksIF95ID0geSgpLT52YWx1ZSgpOwotICAgIGZs
b2F0IF93aWR0aCA9IHdpZHRoKCktPnZhbHVlKCksIF9oZWlnaHQgPSBoZWlnaHQoKS0+dmFsdWUo
KTsKLSAgICBpZiAoYmJveCkKLSAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRTdWJSZWdpb24oRmxv
YXRSZWN0KF94ICogMTAwLmYsIF95ICogMTAwLmYsIF93aWR0aCAqIDEwMC5mLCBfaGVpZ2h0ICog
MTAwLmYpKTsKLSAgICBlbHNlCi0gICAgICAgIGZpbHRlckVmZmVjdC0+c2V0U3ViUmVnaW9uKEZs
b2F0UmVjdChfeCwgX3ksIF93aWR0aCwgX2hlaWdodCkpOwotCisgICAgZmxvYXQgX3gsIF95LCBf
d2lkdGgsIF9oZWlnaHQ7CisgIAorICAgIGlmIChiYm94KSB7CisgICAgICAgIF94ID0geCgpLnZh
bHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBfeSA9IHkoKS52YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKTsKKyAgICAgICAgX3dpZHRoID0gd2lkdGgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMo
KTsKKyAgICAgICAgX2hlaWdodCA9IGhlaWdodCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIF94ID0geCgpLnZhbHVlKCk7CisgICAgICAgIF95ID0geSgp
LnZhbHVlKCk7CisgICAgICAgIF93aWR0aCA9IHdpZHRoKCkudmFsdWUoKTsKKyAgICAgICAgX2hl
aWdodCA9IGhlaWdodCgpLnZhbHVlKCk7CisgICAgfSAKKyAgICAKKyAgICBmaWx0ZXJFZmZlY3Qt
PnNldFN1YlJlZ2lvbihGbG9hdFJlY3QoX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQpKTsKICAgICBm
aWx0ZXJFZmZlY3QtPnNldFJlc3VsdChyZXN1bHQoKSk7CiB9CiAKIH0KIAotLy8gdmltOnRzPTQ6
bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCwxNSArMjAsMTUgQEAKICAgICBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNJbXBsX0gKKyNpZm5kZWYgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzX0gKKyNkZWZpbmUgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzX0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdTdHlsZWRF
bGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdGaWx0ZXJFZmZl
Y3Q7Ci0gICAgY2xhc3MgU1ZHTGVuZ3RoOwogCiAgICAgY2xhc3MgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzIDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnQKICAgICB7CkBAIC01
MCwxMCArNTAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xl
bmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZH
TGVuZ3RoPiwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNW
R0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgs
IFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIEhlaWdodCwgaGVpZ2h0KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTdHJpbmcsIFN0cmluZywg
UmVzdWx0LCByZXN1bHQpCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0
VG9WaWV3Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRUb1Zp
ZXdCb3guY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRv
Vmlld0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBTVkdGaXRU
b1ZpZXdCb3g6OnBhcnNlVmlld0JveChjb25zdAogICAgIAogICAgIGlmIChwIDwgZW5kKSAvLyBu
b3RoaW5nIHNob3VsZCBjb21lIGFmdGVyIHRoZSBsYXN0LCBmb3VydGggbnVtYmVyCiAgICAgICAg
IGdvdG8gYmFpbF9vdXQ7Ci0KKyAgICAKICAgICBzZXRWaWV3Qm94QmFzZVZhbHVlKEZsb2F0UmVj
dCh4LCB5LCB3LCBoKSk7CiAgICAgcmV0dXJuOwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjAsNiArMjAsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZH
X1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgiCkBAIC00MCwx
MCArNDEsMTAgQEAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OlNWR0ZvcmVpZ25PYmplYwogICAg
ICwgU1ZHVGVzdHMoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQoKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgs
IHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hF
SUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV93aWR0aChuZXcgU1ZHTGVuZ3RoKHRo
aXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2hlaWdodChuZXcgU1ZH
TGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94KHRo
aXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQor
ICAgICwgbV93aWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0KQogewogfQogCkBAIC01MSwyMyArNTIsMjMgQEAgU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6On5TVkdGb3JlaWduT2JqZQogewogfQogCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNW
R0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1l
KCksIG1feS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBT
VkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCos
IExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9j
YWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgs
IFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUo
KSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZH
TmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogCiB2b2lkIFNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0
dHIpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAg
ICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZhbHVlKCktPnNldFZh
bHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZh
bHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgo
dGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShh
dHRyLCBDU1NfUFJPUF9XSURUSCwgdmFsdWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5z
ZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NfUFJPUF9IRUlHSFQsIHZhbHVlKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpAQCAtODAsMTIgKzgx
LDEyIEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGUKICAgICB9CiB9
CiAKLVJlbmRlck9iamVjdCAqU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hICphcmVuYSwgUmVuZGVyU3R5bGUgKnN0eWxlKQorUmVuZGVyT2JqZWN0KiBT
VkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckZv
cmVpZ25PYmplY3QodGhpcyk7CiB9CiAKLWJvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSAqY2hpbGQpIGNvbnN0Citib29sIFNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqIGNoaWxkKSBj
b25zdAogewogICAgIC8vIFNraXAgb3ZlciBTVkcgcnVsZXMgd2hpY2ggZGlzYWxsb3cgbm9uLVNW
RyBraWRzCiAgICAgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoY2hpbGQpOwpAQCAtOTMsNiArOTQsNiBAQCBib29sIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
OjpjaGlsZFNob3VsCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotLy8gdmltOnRzPTQ6bm9l
dAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkocmV2aXNpb24gMTgyNjAp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xOSw4ICsxOSw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnRJbXBsX0gKLSNkZWZp
bmUgS1NWR19TVkdGb3JlaWduT2JqZWN0RWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudF9ICisjZGVmaW5lIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50X0gKKwogI2lm
ZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdUZXN0cy5oIgpAQCAtNDUsMTEgKzQ2LDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgflNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50KCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAotICAgICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpIHsgcmV0
dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOyB9Ci0gICAgICAgIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlICpjaGlsZCkgY29uc3Q7Ci0gICAgICAg
IHZpcnR1YWwgUmVuZGVyT2JqZWN0ICpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJlbmEs
IFJlbmRlclN0eWxlICpzdHlsZSk7CisgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJ
c05lZWRlZChzdHlsZSk7IH0KKyAgICAgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KE5vZGUqKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKTsKIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KQEAgLTU4LDEwICs1OSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKSAKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
Rk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYp
CiAKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBT
VkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0
cjxTVkdMZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0
aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdM
ZW5ndGgsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVu
Z3RoLCBIZWlnaHQsIGhlaWdodCkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdIZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR0hlbHBlci5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHSGVscGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBL
REUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgor
CiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdIZWxwZXIuaCIKIApAQCAtMzYsNDcg
KzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1m
bG9hdCBTVkdIZWxwZXI6OlBlcmNlbnRhZ2VPZlZpZXdwb3J0KGZsb2F0IHZhbHVlLCBjb25zdCBT
VkdFbGVtZW50KiB2aWV3cG9ydEVsZW1lbnQsIExlbmd0aE1vZGUgbW9kZSkKLXsKLSAgICBmbG9h
dCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Ci0gICAgaWYgKCF2aWV3cG9ydEVsZW1lbnQpCi0gICAg
ICAgIHJldHVybiAwLjA7Ci0gCi0gICAgaWYgKHZpZXdwb3J0RWxlbWVudC0+aXNTVkcoKSkgewot
ICAgICAgICBjb25zdCBTVkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxjb25zdCBTVkdT
VkdFbGVtZW50Kj4odmlld3BvcnRFbGVtZW50KTsKLSAgICAgICAgaWYgKHN2Zy0+aGFzQXR0cmli
dXRlKFNWR05hbWVzOjp2aWV3Qm94QXR0cikpIHsKLSAgICAgICAgICAgIHdpZHRoID0gc3ZnLT52
aWV3Qm94KCkud2lkdGgoKTsKLSAgICAgICAgICAgIGhlaWdodCA9IHN2Zy0+dmlld0JveCgpLmhl
aWdodCgpOwotICAgICAgICB9IGVsc2UgaWYgKHN2Zy0+d2lkdGgoKS0+dW5pdFR5cGUoKSA9PSBT
VkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgfHwKLSAgICAgICAgICAgICAgICBz
dmctPmhlaWdodCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVS
Q0VOVEFHRSkgewotICAgICAgICAgICAgLy8gVE9ETzogU2hvdWxkbid0IHcvaCBiZSBtdWx0aXBs
aWVkIHdpdGggdGhlIHBlcmNlbnRhZ2UgdmFsdWVzPyEKLSAgICAgICAgICAgIC8vIEFGQUlLLCB0
aGlzIGFzc3VtZXMgd2lkdGggJiBoZWlnaHQgPT0gMTAwJSwgUm9iPz8KLSAgICAgICAgICAgIERv
Y3VtZW50ICpkb2MgPSBzdmctPmRvY3VtZW50KCk7Ci0gICAgICAgICAgICBpZiAoZG9jLT5kb2N1
bWVudEVsZW1lbnQoKSA9PSBzdmcpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGFz
ayB0aGUgY2FudmFzIGZvciB0aGUgZnVsbCAiY2FudmFzIHNpemUiLi4uCi0gICAgICAgICAgICAg
ICAgUmVuZGVyVmlldyogdmlldyA9IHN0YXRpY19jYXN0PFJlbmRlclZpZXcgKj4oZG9jLT5yZW5k
ZXJlcigpKTsKLSAgICAgICAgICAgICAgICBpZiAodmlldykgewotICAgICAgICAgICAgICAgICAg
ICB3aWR0aCA9IHZpZXctPmZyYW1lVmlldygpLT52aXNpYmxlV2lkdGgoKTsgLy8gVE9ETzogcmVj
aGVjayEKLSAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gdmlldy0+ZnJhbWVWaWV3KCktPnZp
c2libGVIZWlnaHQoKTsgLy8gVE9ETzogcmVjaGVjayEKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB3aWR0aCA9IHN2Zy0+d2lk
dGgoKS0+dmFsdWUoKTsKLSAgICAgICAgICAgIGhlaWdodCA9IHN2Zy0+aGVpZ2h0KCktPnZhbHVl
KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobW9kZSA9PSBMTV9XSURUSCkKLSAgICAg
ICAgcmV0dXJuIHZhbHVlICogd2lkdGg7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBMTV9IRUlHSFQp
Ci0gICAgICAgIHJldHVybiB2YWx1ZSAqIGhlaWdodDsKLSAgICBlbHNlIGlmIChtb2RlID09IExN
X09USEVSKQotICAgICAgICByZXR1cm4gdmFsdWUgKiBzcXJ0KHBvdyhkb3VibGUod2lkdGgpLCAy
KSArIHBvdyhkb3VibGUoaGVpZ2h0KSwgMikpIC8gc3FydCgyLjApOwotICAgIAotICAgIHJldHVy
biAwLjA7Ci19Ci0KLXZvaWQgU1ZHSGVscGVyOjpwYXJzZVNlcGFyYXRlZExpc3QoU1ZHU3RyaW5n
TGlzdCAqbGlzdCwgY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIpCit2b2lkIFNW
R0hlbHBlcjo6cGFyc2VTZXBhcmF0ZWRMaXN0KFNWR1N0cmluZ0xpc3QqIGxpc3QsIGNvbnN0IFN0
cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVyKQogewogICAgIC8vIFRPRE8gOiBtb3JlIGVycm9y
IGNoZWNraW5nL3JlcG9ydGluZwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtOTEsNiAr
NTIsNiBAQCB2b2lkIFNWR0hlbHBlcjo6cGFyc2VTZXBhcmF0ZWRMaXN0KFNWR1N0CiAKIH0KIAot
Ly8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5v
ZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0hlbHBlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0hlbHBlci5oCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0hlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAj
ZGVmaW5lIEtTVkdfU1ZHSGVscGVyX0gKICNpZmRlZiBTVkdfU1VQUE9SVAogCisjaW5jbHVkZSAi
U1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzIsMTggKzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IFNWR1N0cmluZ0xpc3Q7CiAKICAgICAvLyBLU1ZHIGV4dGVuc2lvbgotICAgIGVudW0gTGVuZ3Ro
TW9kZSB7Ci0gICAgICAgIExNX1VOS05PV04gPSAwLAotICAgICAgICBMTV9XSURUSCwKLSAgICAg
ICAgTE1fSEVJR0hULAotICAgICAgICBMTV9PVEhFUgotICAgIH07Ci0KICAgICBjbGFzcyBTVkdI
ZWxwZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGZsb2F0IFBlcmNlbnRhZ2VPZlZp
ZXdwb3J0KGZsb2F0IHZhbHVlLCBjb25zdCBTVkdFbGVtZW50ICp2aWV3cG9ydEVsZW1lbnQsIExl
bmd0aE1vZGUgbW9kZSk7Ci0KLSAgICAgICAgc3RhdGljIHZvaWQgcGFyc2VTZXBhcmF0ZWRMaXN0
KFNWR1N0cmluZ0xpc3QgKmxpc3QsIGNvbnN0IFN0cmluZyAmZGF0YSwgVUNoYXIgZGVsaW1pdGVy
ID0gJywnKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcGFyc2VTZXBhcmF0ZWRMaXN0KFNWR1N0cmlu
Z0xpc3QqIGxpc3QsIGNvbnN0IFN0cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVyID0gJywnKTsK
ICAgICB9OwogCiAgICAgLy8gTGF6eSBjcmVhdGlvbiwgdGVtcGxhdGUtYmFzZWQKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcg
KzEsNyBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICAgICAgICAgICAgICAg
ICAgMjAwNiAgICAgICBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgorICAgICAg
ICAgICAgICAgICAgMjAwNiBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogCiAg
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTIyLDYgKzIyLDcg
QEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5j
bHVkZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAKQEAgLTQ1LDEwICs0NiwxMCBAQCBTVkdJbWFnZUVs
ZW1lbnQ6OlNWR0ltYWdlRWxlbWVudChjb25zdCBRCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAg
ICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdVUklSZWZlcmVuY2Uo
KQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVu
dCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRF
bGVtZW50KCkpKQotICAgICwgbV93aWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2
aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2hlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExN
X0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94KHRoaXMsIExlbmd0aE1vZGVX
aWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0KQogICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKG5ldyBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvKHRoaXMpKQogICAgICwgbV9pbWFnZUxvYWRlcih0aGlzKQogewpAQCAtNTgsMjYgKzU5LDI2
IEBAIFNWR0ltYWdlRWxlbWVudDo6flNWR0ltYWdlRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgq
LCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3ku
Z2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNW
R0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0
dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQs
IGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0LmdldCgp
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1f
eCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVu
Z3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBt
X3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5s
b2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0lt
YWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNW
R05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodCkKIEFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyos
IFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0
UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlv
QXR0ci5sb2NhbE5hbWUoKSwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLmdldCgpKQogCiB2b2lkIFNW
R0ltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRy
KQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVl
KCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1
ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKQogICAgICAgICBwcmVzZXJ2ZUFzcGVj
dFJhdGlvQmFzZVZhbHVlKCktPnBhcnNlUHJlc2VydmVBc3BlY3RSYXRpbyh2YWx1ZS5pbXBsKCkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0g
ICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAg
ICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1
ZSkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NfUFJPUF9XSURUSCwgdmFsdWUp
OwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7
Ci0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAg
ICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NfUFJPUF9IRUlHSFQs
IHZhbHVlKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKGF0dHIpKQpAQCAtMTE0LDYgKzExNSw2IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50
OjphdHRhY2goKQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9S
VAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
aAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAt
MjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lm
bmRlZiBLU1ZHX1NWR0ltYWdlRWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0ltYWdlRWxl
bWVudEltcGxfSAorI2lmbmRlZiBTVkdJbWFnZUVsZW1lbnRfSAorI2RlZmluZSBTVkdJbWFnZUVs
ZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQuaCIKQEAgLTY2LDEwICs2NywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKSAKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FS
RF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZH
TGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
SW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgV2lkdGgsIHdpZHRo
KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50
LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0
aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwg
aGVpZ2h0KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VF
bGVtZW50LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKiwgUmVmUHRyPFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW8+LCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogCiAgICAg
ICAgIFNWR0ltYWdlTG9hZGVyIG1faW1hZ2VMb2FkZXI7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdMZW5ndGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0
aC5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApA
QCAtMjEsODAgKzIxLDIwNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYg
U1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKIAotI2luY2x1ZGUgIkludFJlY3Qu
aCIKLSNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCi0jaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIlNWR0xlbmd0aC5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJpbmcuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxl
bWVudC5oIgorI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJzdmdwYXRo
cGFyc2VyLmgiCi0jaW5jbHVkZSA8bWF0aC5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi0v
LyBrZWVwIHRyYWNrIG9mIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhlIHVuaXQgdHlwZQotc3Rh
dGljIGNvbnN0IGNoYXIqIFVuaXRUZXh0W10gPQotewotICAgICIiLCAiIiwKLSAgICAiJSIsICJl
bSIsCi0gICAgImV4IiwgInB4IiwKLSAgICAiY20iLCAibW0iLAotICAgICJpbiIsICJwdCIsCi0g
ICAgInBjIgotfTsKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNWR0xlbmd0aDo6U1ZHTGVuZ3RoKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNv
bnRleHQsIExlbmd0aE1vZGUgbW9kZSwgY29uc3QgU1ZHRWxlbWVudCogdmlld3BvcnQpCi0gICAg
OiBTaGFyZWQ8U1ZHTGVuZ3RoPigpCi0gICAgLCBtX3ZhbHVlKDApCi0gICAgLCBtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cygwKQotICAgICwgbV9tb2RlKG1vZGUpCi0gICAgLCBtX2Jib3hSZWxhdGl2
ZShmYWxzZSkKLSAgICAsIG1fdW5pdFR5cGUoU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTikKLSAgICAs
IG1fcmVxdWlyZXNMYXlvdXQoZmFsc2UpCi0gICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAs
IG1fdmlld3BvcnRFbGVtZW50KHZpZXdwb3J0KQorLy8gSGVscGVyIGZ1bmN0aW9ucworaW5saW5l
IHVuc2lnbmVkIGludCBzdG9yZVVuaXQoU1ZHTGVuZ3RoTW9kZSBtb2RlLCBTVkdMZW5ndGhUeXBl
IHR5cGUpCiB7CisgICAgcmV0dXJuIChtb2RlIDw8IDQpIHwgdHlwZTsKIH0KIAotU1ZHTGVuZ3Ro
Ojp+U1ZHTGVuZ3RoKCkKK2lubGluZSBTVkdMZW5ndGhNb2RlIGV4dHJhY3RNb2RlKHVuc2lnbmVk
IGludCB1bml0KQogeworICAgIHVuc2lnbmVkIGludCBtb2RlID0gdW5pdCA+PiA0OyAgICAKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoTW9kZT4obW9kZSk7Cit9CisKK2lubGluZSBT
VkdMZW5ndGhUeXBlIGV4dHJhY3RUeXBlKHVuc2lnbmVkIGludCB1bml0KQoreworICAgIHVuc2ln
bmVkIGludCBtb2RlID0gdW5pdCA+PiA0OworICAgIHVuc2lnbmVkIGludCB0eXBlID0gdW5pdCBe
IChtb2RlIDw8IDQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMZW5ndGhUeXBlPih0eXBl
KTsKK30KKworaW5saW5lIFN0cmluZyBsZW5ndGhUeXBlVG9TdHJpbmcoU1ZHTGVuZ3RoVHlwZSB0
eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246
CisgICAgY2FzZSBMZW5ndGhUeXBlTnVtYmVyOgorICAgICAgICByZXR1cm4gIiI7ICAgIAorICAg
IGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6CisgICAgICAgIHJldHVybiAiJSI7CisgICAgY2Fz
ZSBMZW5ndGhUeXBlRU1TOgorICAgICAgICByZXR1cm4gImVtIjsKKyAgICBjYXNlIExlbmd0aFR5
cGVFWFM6CisgICAgICAgIHJldHVybiAiZXgiOworICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgorICAg
ICAgICByZXR1cm4gInB4IjsKKyAgICBjYXNlIExlbmd0aFR5cGVDTToKKyAgICAgICAgcmV0dXJu
ICJjbSI7CisgICAgY2FzZSBMZW5ndGhUeXBlTU06CisgICAgICAgIHJldHVybiAibW0iOworICAg
IGNhc2UgTGVuZ3RoVHlwZUlOOgorICAgICAgICByZXR1cm4gImluIjsKKyAgICBjYXNlIExlbmd0
aFR5cGVQVDoKKyAgICAgICAgcmV0dXJuICJwdCI7CisgICAgY2FzZSBMZW5ndGhUeXBlUEM6Cisg
ICAgICAgIHJldHVybiAicGMiOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
U1ZHTGVuZ3RoOjpTVkdMZW5ndGhUeXBlIFNWR0xlbmd0aDo6dW5pdFR5cGUoKSBjb25zdAoraW5s
aW5lIFNWR0xlbmd0aFR5cGUgc3RyaW5nVG9MZW5ndGhUeXBlKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogewotICAgIHJldHVybiBtX3VuaXRUeXBlOworICAgIGlmIChzdHJpbmcuZW5kc1dpdGgoIiUi
KSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVQZXJjZW50YWdlOworICAgIGVsc2UgaWYgKHN0
cmluZy5lbmRzV2l0aCgiZW0iKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVFTVM7CisgICAg
ZWxzZSBpZiAoc3RyaW5nLmVuZHNXaXRoKCJleCIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlw
ZUVYUzsKKyAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dpdGgoInB4IikpCisgICAgICAgIHJldHVy
biBMZW5ndGhUeXBlUFg7CisgICAgZWxzZSBpZiAoc3RyaW5nLmVuZHNXaXRoKCJjbSIpKQorICAg
ICAgICByZXR1cm4gTGVuZ3RoVHlwZUNNOworICAgIGVsc2UgaWYgKHN0cmluZy5lbmRzV2l0aCgi
bW0iKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVNTTsKKyAgICBlbHNlIGlmIChzdHJpbmcu
ZW5kc1dpdGgoImluIikpCisgICAgICAgIHJldHVybiBMZW5ndGhUeXBlSU47CisgICAgZWxzZSBp
ZiAoc3RyaW5nLmVuZHNXaXRoKCJwdCIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZVBUOwor
ICAgIGVsc2UgaWYgKHN0cmluZy5lbmRzV2l0aCgicGMiKSkKKyAgICAgICAgcmV0dXJuIExlbmd0
aFR5cGVQQzsKKyAgICBlbHNlIGlmICghc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IExlbmd0aFR5cGVOdW1iZXI7CisKKyAgICByZXR1cm4gTGVuZ3RoVHlwZVVua25vd247Cit9CisK
K1NWR0xlbmd0aDo6U1ZHTGVuZ3RoKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQsIFNW
R0xlbmd0aE1vZGUgbW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQorICAgIDogbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMoMC4wKQorICAgICwgbV91bml0KHN0b3JlVW5pdChtb2RlLCBM
ZW5ndGhUeXBlTnVtYmVyKSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQoreworICAgIHNldFZh
bHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZyk7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1
ZShmbG9hdCB2YWx1ZSkKK1NWR0xlbmd0aFR5cGUgU1ZHTGVuZ3RoOjp1bml0VHlwZSgpIGNvbnN0
CiB7Ci0gICAgbV92YWx1ZSA9IHZhbHVlOwotICAgIHVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRVbml0
cygpOworICAgIHJldHVybiBleHRyYWN0VHlwZShtX3VuaXQpOwogfQogCiBmbG9hdCBTVkdMZW5n
dGg6OnZhbHVlKCkgY29uc3QKIHsKLSAgICBpZiAobV9yZXF1aXJlc0xheW91dCkKLSAgICAgICAg
Y29uc3RfY2FzdDxTVkdMZW5ndGgqPih0aGlzKS0+dXBkYXRlVmFsdWUoZmFsc2UpOworICAgIFNW
R0xlbmd0aFR5cGUgdHlwZSA9IGV4dHJhY3RUeXBlKG1fdW5pdCk7CisgICAgaWYgKHR5cGUgPT0g
TGVuZ3RoVHlwZVVua25vd24pCisgICAgICAgIHJldHVybiAwLjA7CisKKyAgICBzd2l0Y2ggKHR5
cGUpIHsKKyAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6CisgICAgICAgIHJldHVybiBtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0czsKKyAgICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdlOgorICAgICAg
ICByZXR1cm4gU1ZHTGVuZ3RoOjpQZXJjZW50YWdlT2ZWaWV3cG9ydChtX3ZhbHVlSW5TcGVjaWZp
ZWRVbml0cyAvIDEwMC4wLCBtX2NvbnRleHQsIGV4dHJhY3RNb2RlKG1fdW5pdCkpOworICAgIGNh
c2UgTGVuZ3RoVHlwZUVNUzoKKyAgICBjYXNlIExlbmd0aFR5cGVFWFM6CisgICAgeworICAgICAg
ICBSZW5kZXJTdHlsZSogc3R5bGUgPSAwOworICAgICAgICBpZiAobV9jb250ZXh0ICYmIG1fY29u
dGV4dC0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHN0eWxlID0gbV9jb250ZXh0LT5yZW5kZXJl
cigpLT5zdHlsZSgpOworICAgICAgICBpZiAoc3R5bGUpIHsKKyAgICAgICAgICAgIGZsb2F0IHVz
ZVNpemUgPSBzdHlsZS0+Zm9udFNpemUoKTsKKyAgICAgICAgICAgIEFTU0VSVCh1c2VTaXplID4g
MCk7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBMZW5ndGhUeXBlRU1TKQorICAgICAgICAgICAg
ICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAqIHVzZVNpemU7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBmbG9hdCB4SGVpZ2h0ID0gc3R5bGUtPmZvbnQoKS54
SGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgLy8gVXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwg
bWF0Y2ggdG8gdGhlIFczQ3MgZXhwZWN0ZWQgb3V0cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2
ZworICAgICAgICAgICAgICAgIC8vIGlmIHRoaXMgY2F1c2VzIHByb2JsZW1zIGluIHJlYWwgd29y
bGQgY2FzZXMgbWF5YmUgaXQgd291bGQgYmUgYmVzdCB0byByZW1vdmUgdGhpcworICAgICAgICAg
ICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAqIGNlaWwoeEhlaWdodCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDAuMDsKKyAgICB9CisgICAg
Y2FzZSBMZW5ndGhUeXBlUFg6CisgICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
czsKKyAgICBjYXNlIExlbmd0aFR5cGVDTToKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNp
ZmllZFVuaXRzIC8gMi41NCAqIGRwaSgpOworICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgICAg
ICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAyNS40ICogZHBpKCk7CisgICAgY2Fz
ZSBMZW5ndGhUeXBlSU46CisgICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAq
IGRwaSgpOworICAgIGNhc2UgTGVuZ3RoVHlwZVBUOgorICAgICAgICByZXR1cm4gbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgLyA3Mi4wICogZHBpKCk7CisgICAgY2FzZSBMZW5ndGhUeXBlUEM6Cisg
ICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDYuMCAqIGRwaSgpOworICAg
IGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KIAotICAgIGlmIChtX3VuaXRUeXBlICE9
IFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UpCi0gICAgICAgIHJldHVybiBtX3ZhbHVlOworICAg
IEFTU0VSVChmYWxzZSk7CisgICAgcmV0dXJuIDAuMDsKK30KIAotICAgIGZsb2F0IHZhbHVlID0g
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAxMDAuMDsKLSAgICBpZiAobV9iYm94UmVsYXRpdmUp
Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKK3ZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1ZShmbG9hdCB2
YWx1ZSkKK3sKKyAgICBTVkdMZW5ndGhUeXBlIHR5cGUgPSBleHRyYWN0VHlwZShtX3VuaXQpOwor
ICAgIEFTU0VSVCh0eXBlICE9IExlbmd0aFR5cGVVbmtub3duKTsKIAotICAgIC8vIFVzZSB0aGUg
bWFudWFsIG92ZXJyaWRlICJtX3ZpZXdwb3J0RWxlbWVudCIgd2hlbiB0aGVyZSBpcyBubyBjb250
ZXh0IGVsZW1lbnQgb2ZmIG9mIHdoaWNoIHRvIGVzdGFibGlzaCB0aGUgdmlld3BvcnQuCi0gICAg
cmV0dXJuIFNWR0hlbHBlcjo6UGVyY2VudGFnZU9mVmlld3BvcnQodmFsdWUsIG1fY29udGV4dCA/
IG1fY29udGV4dC0+dmlld3BvcnRFbGVtZW50KCkgOiBtX3ZpZXdwb3J0RWxlbWVudCwgc3RhdGlj
X2Nhc3Q8TGVuZ3RoTW9kZT4obV9tb2RlKSk7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2Fz
ZSBMZW5ndGhUeXBlTnVtYmVyOgorICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZh
bHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdlOgorICAg
IGNhc2UgTGVuZ3RoVHlwZUVNUzoKKyAgICBjYXNlIExlbmd0aFR5cGVFWFM6CisgICAgICAgIEFT
U0VSVChmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgorICAg
ICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIExlbmd0aFR5cGVDTToKKyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2
YWx1ZSAqIDIuNTQgLyBkcGkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBl
TU06CisgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWUgKiAyNS40IC8gZHBp
KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgorICAgICAgICBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlIC8gZHBpKCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgTGVuZ3RoVHlwZVBUOgorICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZh
bHVlICogNzIuMCAvIGRwaSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVQ
QzoKKyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZSAvIDYuMCAqIGRwaSgp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBpZiAobV9jb250ZXh0ICYmIG1fY29udGV4dC0+b3duZXJEb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKSAhPSBtX2NvbnRleHQpCisgICAgICAgIG1fY29udGV4dC0+bm90aWZ5QXR0cmli
dXRlQ2hhbmdlKCk7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1ZUluU3BlY2lmaWVkVW5p
dHMoZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKQordm9pZCBTVkdMZW5ndGg6OnNldFZhbHVl
SW5TcGVjaWZpZWRVbml0cyhmbG9hdCB2YWx1ZSkKIHsKLSAgICBtX3ZhbHVlSW5TcGVjaWZpZWRV
bml0cyA9IHZhbHVlSW5TcGVjaWZpZWRVbml0czsKLSAgICB1cGRhdGVWYWx1ZSgpOworICAgIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWU7CisKKyAgICBpZiAobV9jb250ZXh0ICYmIG1f
Y29udGV4dC0+b3duZXJEb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSAhPSBtX2NvbnRleHQp
ICAgIAorICAgICAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwogfQogCiBm
bG9hdCBTVkdMZW5ndGg6OnZhbHVlSW5TcGVjaWZpZWRVbml0cygpIGNvbnN0CkBAIC0xMDcsNzEg
KzIzNCw1MSBAQCB2b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWVBc1N0cmluZyhjb25zdCBTCiAgICAg
aWYgKHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBEZXByZWNhdGVkU3RyaW5n
IHZhbHVlQXNRU3RyaW5nID0gcy5kZXByZWNhdGVkU3RyaW5nKCk7Ci0KICAgICBkb3VibGUgY29u
dmVydGVkTnVtYmVyID0gMDsKLSAgICBjb25zdCBjaGFyKiBzdGFydCA9IHZhbHVlQXNRU3RyaW5n
LmxhdGluMSgpOwotICAgIGNvbnN0IGNoYXIqIGVuZCA9IHBhcnNlQ29vcmQoc3RhcnQsIGNvbnZl
cnRlZE51bWJlcik7CisgICAgRGVwcmVjYXRlZFN0cmluZyBkZXBTdHJpbmcgPSBzLmRlcHJlY2F0
ZWRTdHJpbmcoKTsKKyAgICBjb25zdCBjaGFyKiBzdGFydCA9IGRlcFN0cmluZy5sYXRpbjEoKTsK
KyAgICBwYXJzZUNvb3JkKHN0YXJ0LCBjb252ZXJ0ZWROdW1iZXIpOworICAgIAorICAgIG1fdW5p
dCA9IHN0b3JlVW5pdChleHRyYWN0TW9kZShtX3VuaXQpLCBzdHJpbmdUb0xlbmd0aFR5cGUocykp
OwogICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gY29udmVydGVkTnVtYmVyOwotCi0gICAg
dW5zaWduZWQgaW50IGRpZmYgPSBlbmQgLSBzdGFydDsKLSAgICBpZiAoZGlmZiA8IHZhbHVlQXNR
U3RyaW5nLmxlbmd0aCgpKSB7Ci0gICAgICAgIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19M
RU5HVEhUWVBFX1BYXSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVf
UFg7Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVf
Q01dKSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RIVFlQRV9DTTsKLSAgICAg
ICAgZWxzZSBpZiAocy5lbmRzV2l0aChVbml0VGV4dFtTVkdfTEVOR1RIVFlQRV9QQ10pKQotICAg
ICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX1BDOwotICAgICAgICBlbHNlIGlm
IChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX01NXSkpCi0gICAgICAgICAgICBt
X3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfTU07Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dp
dGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfSU5dKSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUg
PSBTVkdfTEVOR1RIVFlQRV9JTjsKLSAgICAgICAgZWxzZSBpZiAocy5lbmRzV2l0aChVbml0VGV4
dFtTVkdfTEVOR1RIVFlQRV9QVF0pKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5H
VEhUWVBFX1BUOwotICAgICAgICAgZWxzZSBpZiAocy5lbmRzV2l0aChVbml0VGV4dFtTVkdfTEVO
R1RIVFlQRV9QRVJDRU5UQUdFXSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdU
SFRZUEVfUEVSQ0VOVEFHRTsKLSAgICAgICAgZWxzZSBpZiAocy5lbmRzV2l0aChVbml0VGV4dFtT
VkdfTEVOR1RIVFlQRV9FTVNdKSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RI
VFlQRV9FTVM7Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdU
SFRZUEVfRVhTXSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfRVhT
OwotICAgICAgICBlbHNlIGlmIChzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUg
PSBTVkdfTEVOR1RIVFlQRV9OVU1CRVI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdW5p
dFR5cGUgPSBTVkdfTEVOR1RIVFlQRV9VTktOT1dOOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAg
IG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RIVFlQRV9QWDsKLQotICAgIHVwZGF0ZVZhbHVlKCk7CiB9
CiAKIFN0cmluZyBTVkdMZW5ndGg6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVy
biBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyBVbml0VGV4dFttX3Vu
aXRUeXBlXTsKKyAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMpICsgbGVuZ3RoVHlwZVRvU3RyaW5nKGV4dHJhY3RUeXBlKG1fdW5pdCkpOwogfQogCi12b2lk
IFNWR0xlbmd0aDo6bmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlw
ZSwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKQordm9pZCBTVkdMZW5ndGg6Om5ld1ZhbHVl
U3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdHlwZSwgZmxvYXQgdmFsdWUpCiB7Ci0gICAg
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZUluU3BlY2lmaWVkVW5pdHM7Ci0gICAgbV91
bml0VHlwZSA9IChTVkdMZW5ndGhUeXBlKXVuaXRUeXBlOwotICAgIHVwZGF0ZVZhbHVlKCk7Cisg
ICAgQVNTRVJUKHR5cGUgPD0gTGVuZ3RoVHlwZVBDKTsKKworICAgIG1fdW5pdCA9IHN0b3JlVW5p
dChleHRyYWN0TW9kZShtX3VuaXQpLCAoU1ZHTGVuZ3RoVHlwZSkgdHlwZSk7CisgICAgbV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsKIH0KIAotdm9pZCBTVkdMZW5ndGg6OmNvbnZlcnRU
b1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKQordm9pZCBTVkdMZW5ndGg6
OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHR5cGUpCiB7Ci0gICAgbV91
bml0VHlwZSA9IChTVkdMZW5ndGhUeXBlKXVuaXRUeXBlOwotICAgIHVwZGF0ZVZhbHVlSW5TcGVj
aWZpZWRVbml0cygpOworICAgIEFTU0VSVCh0eXBlIDw9IExlbmd0aFR5cGVQQyk7CisKKyAgICBm
bG9hdCB2YWx1ZUluVXNlclVuaXRzID0gdmFsdWUoKTsKKyAgICBtX3VuaXQgPSBzdG9yZVVuaXQo
ZXh0cmFjdE1vZGUobV91bml0KSwgKFNWR0xlbmd0aFR5cGUpIHR5cGUpOworICAgIHNldFZhbHVl
KHZhbHVlSW5Vc2VyVW5pdHMpOworfQorCitib29sIFNWR0xlbmd0aDo6aXNGcmFjdGlvbihjb25z
dCBTVkdMZW5ndGgmIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gKGxlbmd0aC51bml0VHlwZSgpID09
IExlbmd0aFR5cGVOdW1iZXIgJiYgbGVuZ3RoLnZhbHVlKCkgPj0gMCAmJiBsZW5ndGgudmFsdWUo
KSA8PSAxKTsKIH0KIAogZG91YmxlIFNWR0xlbmd0aDo6ZHBpKCkgY29uc3QKIHsKICAgICAvKiBG
SVhNRTogRFBJIGRldGVjdGlvbgogICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQtPm93bmVyRG9j
KCkpIHsKLSAgICAgICAgaWYgKG1vZGUgPT0gTE1fV0lEVEgpCisgICAgICAgIGlmIChtb2RlID09
IExlbmd0aE1vZGVXaWR0aCkKICAgICAgICAgICAgIHJldHVybiAyNS40ICogY29udGV4dC0+b3du
ZXJEb2MoKS0+c2NyZWVuUGl4ZWxzUGVyTWlsbGltZXRlclgoKTsKLSAgICAgICAgZWxzZSBpZiAo
bW9kZSA9PSBMTV9IRUlHSFQpCisgICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTGVuZ3RoTW9kZUhl
aWdodCkKICAgICAgICAgICAgIHJldHVybiAyNS40ICogY29udGV4dC0+b3duZXJEb2MoKS0+c2Ny
ZWVuUGl4ZWxzUGVyTWlsbGltZXRlclkoKTsKLSAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBMTV9P
VEhFUikKKyAgICAgICAgZWxzZSBpZiAobW9kZSA9PSBMZW5ndGhNb2RlT3RoZXIpCiAgICAgICAg
ICAgICByZXR1cm4gMjUuNCAqIGNvbnRleHQtPm93bmVyRG9jKCktPnNjcmVlblBpeGVsc1Blck1p
bGxpbWV0ZXJYKCk7CiAgICAgfQogICAgICovCkBAIC0xNzksMTI2ICsyODYsNDQgQEAgZG91Ymxl
IFNWR0xlbmd0aDo6ZHBpKCkgY29uc3QKICAgICByZXR1cm4gOTAuMDsKIH0KIAotdm9pZCBTVkdM
ZW5ndGg6OnVwZGF0ZVZhbHVlKGJvb2wgbm90aWZ5KQorZmxvYXQgU1ZHTGVuZ3RoOjpQZXJjZW50
YWdlT2ZWaWV3cG9ydChmbG9hdCB2YWx1ZSwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4
dCwgU1ZHTGVuZ3RoTW9kZSBtb2RlKQogewotICAgIHN3aXRjaCAobV91bml0VHlwZSkgewotICAg
ICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1BYOgotICAgICAgICAgICAgbV92YWx1ZSA9IG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZH
X0xFTkdUSFRZUEVfQ006Ci0gICAgICAgICAgICBtX3ZhbHVlID0gKG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzIC8gMi41NCkgKiBkcGkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFNWR19MRU5HVEhUWVBFX01NOgotICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0cyAvIDI1LjQpICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBTVkdfTEVOR1RIVFlQRV9JTjoKLSAgICAgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cyAqIGRwaSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
U1ZHX0xFTkdUSFRZUEVfUFQ6Ci0gICAgICAgICAgICBtX3ZhbHVlID0gKG1fdmFsdWVJblNwZWNp
ZmllZFVuaXRzIC8gNzIuMCkgKiBkcGkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFNWR19MRU5HVEhUWVBFX1BDOgotICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cyAvIDYuMCkgKiBkcGkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFNWR19MRU5HVEhUWVBFX0VNUzoKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9F
WFM6IHsKLSAgICAgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IDA7Ci0gICAgICAgICAgICBp
ZiAobV9jb250ZXh0ICYmIG1fY29udGV4dC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICBz
dHlsZSA9IG1fY29udGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKG1fdmlld3BvcnRFbGVtZW50ICYmIG1fdmlld3BvcnRFbGVtZW50LT5yZW5kZXJlcigpKQot
ICAgICAgICAgICAgICAgIHN0eWxlID0gbV92aWV3cG9ydEVsZW1lbnQtPnJlbmRlcmVyKCktPnN0
eWxlKCk7Ci0gICAgICAgICAgICBpZiAoc3R5bGUpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCB1
c2VTaXplID0gc3R5bGUtPmZvbnRTaXplKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHVzZVNp
emUgPiAwKTsKLSAgICAgICAgICAgICAgICBpZiAobV91bml0VHlwZSA9PSBTVkdfTEVOR1RIVFlQ
RV9FTVMpCi0gICAgICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBtX3ZhbHVlSW5TcGVjaWZpZWRV
bml0cyAqIHVzZVNpemU7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHhIZWlnaHQgPSBzdHlsZS0+Zm9udCgpLnhIZWlnaHQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gVXNlIG9mIGNlaWwgYWxsb3dzIGEgcGl4ZWwgbWF0Y2ggdG8gdGhlIFczQ3Mg
ZXhwZWN0ZWQgb3V0cHV0IG9mIGNvb3Jkcy11bml0cy0wMy1iLnN2ZwotICAgICAgICAgICAgICAg
ICAgICAvLyBpZiB0aGlzIGNhdXNlcyBwcm9ibGVtcyBpbiByZWFsIHdvcmxkIGNhc2VzIG1heWJl
IGl0IHdvdWxkIGJlIGJlc3QgdG8gcmVtb3ZlIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgbV92
YWx1ZSA9IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzICogY2VpbCh4SGVpZ2h0KTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbV9yZXF1aXJlc0xheW91dCA9IGZhbHNlOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3JlcXVpcmVzTGF5b3V0ID0gdHJ1
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgIGZsb2F0IHdpZHRoID0g
MCwgaGVpZ2h0ID0gMDsKKyAgICBTVkdFbGVtZW50KiB2aWV3cG9ydEVsZW1lbnQgPSBjb250ZXh0
LT52aWV3cG9ydEVsZW1lbnQoKTsKKworICAgIERvY3VtZW50KiBkb2MgPSBjb250ZXh0LT5kb2N1
bWVudCgpOworICAgIGlmIChkb2MtPmRvY3VtZW50RWxlbWVudCgpID09IGNvbnRleHQpIHsKKyAg
ICAgICAgLy8gV2UgaGF2ZSB0byBhc2sgdGhlIGNhbnZhcyBmb3IgdGhlIGZ1bGwgImNhbnZhcyBz
aXplIi4uLgorICAgICAgICBSZW5kZXJWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVmll
dyAqPihkb2MtPnJlbmRlcmVyKCkpOworICAgICAgICBpZiAodmlldykgeworICAgICAgICAgICAg
d2lkdGggPSB2aWV3LT5mcmFtZVZpZXcoKS0+dmlzaWJsZVdpZHRoKCk7IC8vIFRPRE86IHJlY2hl
Y2shCisgICAgICAgICAgICBoZWlnaHQgPSB2aWV3LT5mcmFtZVZpZXcoKS0+dmlzaWJsZUhlaWdo
dCgpOyAvLyBUT0RPOiByZWNoZWNrIQorICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoIXZpZXdw
b3J0RWxlbWVudCkKKyAgICAgICAgcmV0dXJuIDAuMDsKKyAgICBlbHNlIGlmICh2aWV3cG9ydEVs
ZW1lbnQtPmlzU1ZHKCkpIHsKKyAgICAgICAgY29uc3QgU1ZHU1ZHRWxlbWVudCogc3ZnID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgU1ZHU1ZHRWxlbWVudCo+KHZpZXdwb3J0RWxlbWVudCk7CisgICAgICAg
IGlmIChzdmctPmhhc0F0dHJpYnV0ZShTVkdOYW1lczo6dmlld0JveEF0dHIpKSB7CisgICAgICAg
ICAgICB3aWR0aCA9IHN2Zy0+dmlld0JveCgpLndpZHRoKCk7CisgICAgICAgICAgICBoZWlnaHQg
PSBzdmctPnZpZXdCb3goKS5oZWlnaHQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHdpZHRoID0gc3ZnLT53aWR0aCgpLnZhbHVlKCk7CisgICAgICAgICAgICBoZWlnaHQgPSBzdmct
PmhlaWdodCgpLnZhbHVlKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQ
RV9VTktOT1dOOgotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX05VTUJFUjoKLSAgICAgICAg
Y2FzZSBTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFOgotICAgICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIGlmIChub3RpZnkgJiYgbV9jb250ZXh0KQotICAgICAgICBtX2NvbnRleHQtPm5vdGlm
eUF0dHJpYnV0ZUNoYW5nZSgpOwotfQogCi1ib29sIFNWR0xlbmd0aDo6dXBkYXRlVmFsdWVJblNw
ZWNpZmllZFVuaXRzKGJvb2wgbm90aWZ5KQotewotICAgIGlmIChtX3VuaXRUeXBlID09IFNWR19M
RU5HVEhUWVBFX1VOS05PV04pCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobW9kZSA9
PSBMZW5ndGhNb2RlV2lkdGgpCisgICAgICAgIHJldHVybiB2YWx1ZSAqIHdpZHRoOworICAgIGVs
c2UgaWYgKG1vZGUgPT0gTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAgICAgcmV0dXJuIHZhbHVlICog
aGVpZ2h0OworICAgIGVsc2UgaWYgKG1vZGUgPT0gTGVuZ3RoTW9kZU90aGVyKQorICAgICAgICBy
ZXR1cm4gdmFsdWUgKiBzcXJ0KHBvdyhkb3VibGUod2lkdGgpLCAyKSArIHBvdyhkb3VibGUoaGVp
Z2h0KSwgMikpIC8gc3FydCgyLjApOwogCi0gICAgc3dpdGNoIChtX3VuaXRUeXBlKSB7Ci0gICAg
ICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIC8va2RFcnJv
cigpIDw8ICJ1cGRhdGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBTVkdfTEVOR1RIVFlQRV9QRVJD
RU5UQUdFIC0gVU5TVVBQT1JURUQhIFBsZWFzZSByZXBvcnQhIiA8PCBlbmRsOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX0VNUzoKLSAgICAg
ICAgICAgIC8va2RFcnJvcigpIDw8ICJ1cGRhdGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBTVkdf
TEVOR1RIVFlQRV9FTVMgLSBVTlNVUFBPUlRFRCEgUGxlYXNlIHJlcG9ydCEiIDw8IGVuZGw7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfRVhT
OgotICAgICAgICAgICAgLy9rZEVycm9yKCkgPDwgInVwZGF0ZVZhbHVlSW5TcGVjaWZpZWRVbml0
cygpIFNWR19MRU5HVEhUWVBFX0VYUyAtIFVOU1VQUE9SVEVEISBQbGVhc2UgcmVwb3J0ISIgPDwg
ZW5kbDsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RI
VFlQRV9QWDoKLSAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gbV92YWx1ZTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX0NNOgotICAg
ICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBtX3ZhbHVlIC8gZHBpKCkgKiAyLjU0
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfTU06Ci0g
ICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IG1fdmFsdWUgLyBkcGkoKSAqIDI1
LjQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9JTjoK
LSAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gbV92YWx1ZSAvIGRwaSgpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfUFQ6Ci0gICAg
ICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IG1fdmFsdWUgLyBkcGkoKSAqIDcyLjA7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9QQzoKLSAg
ICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gbV92YWx1ZSAvIGRwaSgpICogNi4w
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfVU5LTk9X
TjoKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9OVU1CRVI6Ci0gICAgICAgICAgICBicmVh
azsKLSAgICB9OwotICAgIAotICAgIGlmIChub3RpZnkgJiYgbV9jb250ZXh0KQotICAgICAgICBt
X2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwotCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIDAuMDsKIH0KIAotYm9vbCBTVkdMZW5ndGg6OmJib3hSZWxhdGl2ZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fYmJveFJlbGF0aXZlOwogfQogCi12b2lkIFNWR0xlbmd0aDo6c2V0
QmJveFJlbGF0aXZlKGJvb2wgcmVsYXRpdmUpCi17Ci0gICAgbV9iYm94UmVsYXRpdmUgPSByZWxh
dGl2ZTsKLX0KLQotY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogU1ZHTGVuZ3RoOjpjb250ZXh0KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZXh0OwotfQotCi12b2lkIFNWR0xlbmd0aDo6c2V0
Q29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KQotewotICAgIG1fY29udGV4
dCA9IGNvbnRleHQ7Ci19Ci0KLX0KLQotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19T
VVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xl
bmd0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aC5oCShyZXZp
c2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlr
b2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4MSArMjAs
ODcgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NW
R19TVkdMZW5ndGhJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdMZW5ndGhJbXBsX0gKKyNpZm5kZWYg
U1ZHTGVuZ3RoX0gKKyNkZWZpbmUgU1ZHTGVuZ3RoX0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBSZW5kZXJQYXRoOwotICAgIGNsYXNzIFNW
R0VsZW1lbnQ7CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudDsKIAotICAgIGNsYXNzIFNWR0xl
bmd0aCA6IHB1YmxpYyBTaGFyZWQ8U1ZHTGVuZ3RoPiB7CisgICAgZW51bSBTVkdMZW5ndGhUeXBl
IHsKKyAgICAgICAgTGVuZ3RoVHlwZVVua25vd24gPSAwLAorICAgICAgICBMZW5ndGhUeXBlTnVt
YmVyID0gMSwKKyAgICAgICAgTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgPSAyLAorICAgICAgICBMZW5n
dGhUeXBlRU1TID0gMywKKyAgICAgICAgTGVuZ3RoVHlwZUVYUyA9IDQsCisgICAgICAgIExlbmd0
aFR5cGVQWCA9IDUsCisgICAgICAgIExlbmd0aFR5cGVDTSA9IDYsCisgICAgICAgIExlbmd0aFR5
cGVNTSA9IDcsCisgICAgICAgIExlbmd0aFR5cGVJTiA9IDgsCisgICAgICAgIExlbmd0aFR5cGVQ
VCA9IDksCisgICAgICAgIExlbmd0aFR5cGVQQyA9IDEwCisgICAgfTsKKworICAgIGVudW0gU1ZH
TGVuZ3RoTW9kZSB7CisgICAgICAgIExlbmd0aE1vZGVXaWR0aCA9IDAsCisgICAgICAgIExlbmd0
aE1vZGVIZWlnaHQsCisgICAgICAgIExlbmd0aE1vZGVPdGhlcgorICAgIH07CisKKyAgICBjbGFz
cyBTVkdMZW5ndGggewogICAgIHB1YmxpYzoKLSAgICAgICAgU1ZHTGVuZ3RoKGNvbnN0IFNWR1N0
eWxlZEVsZW1lbnQqIGNvbnRleHQsIExlbmd0aE1vZGUgbW9kZSA9IExNX1VOS05PV04sIGNvbnN0
IFNWR0VsZW1lbnQqIHZpZXdwb3J0ID0gMCk7Ci0gICAgICAgIHZpcnR1YWwgflNWR0xlbmd0aCgp
OwotICAgICAgICAKLSAgICAgICAgZW51bSBTVkdMZW5ndGhUeXBlIHsKLSAgICAgICAgICAgIFNW
R19MRU5HVEhUWVBFX1VOS05PV04gICAgICAgICAgPSAwLAotICAgICAgICAgICAgU1ZHX0xFTkdU
SFRZUEVfTlVNQkVSICAgICAgICAgICA9IDEsCi0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9Q
RVJDRU5UQUdFICAgICAgID0gMiwKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX0VNUyAgICAg
ICAgICAgICAgPSAzLAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfRVhTICAgICAgICAgICAg
ICA9IDQsCi0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9QWCAgICAgICAgICAgICAgID0gNSwK
LSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX0NNICAgICAgICAgICAgICAgPSA2LAotICAgICAg
ICAgICAgU1ZHX0xFTkdUSFRZUEVfTU0gICAgICAgICAgICAgICA9IDcsCi0gICAgICAgICAgICBT
VkdfTEVOR1RIVFlQRV9JTiAgICAgICAgICAgICAgID0gOCwKLSAgICAgICAgICAgIFNWR19MRU5H
VEhUWVBFX1BUICAgICAgICAgICAgICAgPSA5LAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVf
UEMgICAgICAgICAgICAgICA9IDEwCisgICAgICAgIC8vIEZvcndhcmQgZGVjbGFyZSB0aGVzZSBl
bnVtcyBpbiB0aGUgdzNjIG5hbWluZyBzY2hlbWUsIGZvciBJREwgZ2VuZXJhdGlvbgorICAgICAg
ICBlbnVtIHsKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gPSBMZW5ndGhUeXBl
VW5rbm93biwKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX05VTUJFUiA9IExlbmd0aFR5cGVO
dW1iZXIsCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFID0gTGVuZ3RoVHlw
ZVBlcmNlbnRhZ2UsCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9FTVMgPSBMZW5ndGhUeXBl
RU1TLAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfRVhTID0gTGVuZ3RoVHlwZUVYUywKKyAg
ICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BYID0gTGVuZ3RoVHlwZVBYLAorICAgICAgICAgICAg
U1ZHX0xFTkdUSFRZUEVfQ00gPSBMZW5ndGhUeXBlQ00sCisgICAgICAgICAgICBTVkdfTEVOR1RI
VFlQRV9NTSA9IExlbmd0aFR5cGVNTSwKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX0lOID0g
TGVuZ3RoVHlwZUlOLAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUFQgPSBMZW5ndGhUeXBl
UFQsCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9QQyA9IExlbmd0aFR5cGVQQwogICAgICAg
ICB9OwogCisgICAgICAgIFNWR0xlbmd0aChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0
ID0gMCwgU1ZHTGVuZ3RoTW9kZSBtb2RlID0gTGVuZ3RoTW9kZU90aGVyLCBjb25zdCBTdHJpbmcm
IHZhbHVlQXNTdHJpbmcgPSBTdHJpbmcoKSk7CisKICAgICAgICAgLy8gJ1NWR0xlbmd0aCcgZnVu
Y3Rpb25zCiAgICAgICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUoKSBjb25zdDsKIAogICAgICAg
ICBmbG9hdCB2YWx1ZSgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFZhbHVlKGZsb2F0IHZhbHVl
KTsKKyAgICAgICAgdm9pZCBzZXRWYWx1ZShmbG9hdCk7CiAKICAgICAgICAgZmxvYXQgdmFsdWVJ
blNwZWNpZmllZFVuaXRzKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0VmFsdWVJblNwZWNpZmll
ZFVuaXRzKGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgICAgIHZvaWQgc2V0VmFs
dWVJblNwZWNpZmllZFVuaXRzKGZsb2F0KTsKIAogICAgICAgICBTdHJpbmcgdmFsdWVBc1N0cmlu
ZygpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJik7
CiAKLSAgICAgICAgdm9pZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVu
aXRUeXBlLCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgICAgICB2b2lkIGNvbnZl
cnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKTsKLQotICAgICAgICAv
LyBIZWxwZXJzCi0gICAgICAgIGJvb2wgYmJveFJlbGF0aXZlKCkgY29uc3Q7Ci0gICAgICAgIHZv
aWQgc2V0QmJveFJlbGF0aXZlKGJvb2wpOworICAgICAgICB2b2lkIG5ld1ZhbHVlU3BlY2lmaWVk
VW5pdHModW5zaWduZWQgc2hvcnQsIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAg
ICAgIHZvaWQgY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQpOwogCi0gICAg
ICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQoKSBjb25zdDsKLSAgICAgICAgdm9p
ZCBzZXRDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOworICAgICAgICAv
LyBIZWxwZXIgZnVuY3Rpb25zCisgICAgICAgIHN0YXRpYyBib29sIGlzRnJhY3Rpb24oY29uc3Qg
U1ZHTGVuZ3RoJik7CisgICAgICAgIHN0YXRpYyBmbG9hdCBQZXJjZW50YWdlT2ZWaWV3cG9ydChm
bG9hdCB2YWx1ZSwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCAqY29udGV4dCwgU1ZHTGVuZ3RoTW9k
ZSBtb2RlKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgdXBkYXRlVmFsdWVJblNwZWNp
ZmllZFVuaXRzKGJvb2wgbm90aWZ5ID0gdHJ1ZSk7Ci0gICAgICAgIHZvaWQgdXBkYXRlVmFsdWUo
Ym9vbCBub3RpZnkgPSB0cnVlKTsKLQogICAgICAgICBkb3VibGUgZHBpKCkgY29uc3Q7CiAKLSAg
ICAgICAgZmxvYXQgbV92YWx1ZTsKICAgICAgICAgZmxvYXQgbV92YWx1ZUluU3BlY2lmaWVkVW5p
dHM7Ci0KLSAgICAgICAgTGVuZ3RoTW9kZSBtX21vZGUgOiAyOwotICAgICAgICBib29sIG1fYmJv
eFJlbGF0aXZlIDogMTsKLSAgICAgICAgU1ZHTGVuZ3RoVHlwZSBtX3VuaXRUeXBlIDogNDsKLSAg
ICAgICAgYm9vbCBtX3JlcXVpcmVzTGF5b3V0IDogMTsKKyAgICAgICAgdW5zaWduZWQgaW50IG1f
dW5pdDsKIAogICAgICAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBtX2NvbnRleHQ7Ci0gICAg
ICAgIGNvbnN0IFNWR0VsZW1lbnQqIG1fdmlld3BvcnRFbGVtZW50OwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYgLy8gS1NW
R19TVkdMZW5ndGhJbXBsX0gKKyNlbmRpZiAvLyBTVkdMZW5ndGhfSAogCiAvLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aC5pZGwJKHJldmlzaW9uIDE4MjYwKQorKysgV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NyBAQAogCiBtb2R1bGUgc3ZnIHsKIAotICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHLCBH
ZW5lcmF0ZUNvbnN0cnVjdG9yXSBTVkdMZW5ndGggeyAKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlv
bmFsPVNWRywgR2VuZXJhdGVDb25zdHJ1Y3RvciwgUE9EVHlwZT1TVkdMZW5ndGhdIFNWR0xlbmd0
aCB7IAogICAgICAgICAvLyBMZW5ndGggVW5pdCBUeXBlcwogICAgICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBTVkdfTEVOR1RIVFlQRV9VTktOT1dOICAgID0gMDsKICAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgU1ZHX0xFTkdUSFRZUEVfTlVNQkVSICAgICA9IDE7CkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdMZW5ndGhMaXN0OjpTVkdMZW5ndGhMaXN0KCkKLSAg
ICA6IFNWR0xpc3Q8UmVmUHRyPFNWR0xlbmd0aD4gPigpCisgICAgOiBTVkdMaXN0PFNWR0xlbmd0
aD4oKQogewogfQogCkBAIC0zNywxNyArMzcsMTQgQEAgU1ZHTGVuZ3RoTGlzdDo6flNWR0xlbmd0
aExpc3QoKQogewogfQogCi12b2lkIFNWR0xlbmd0aExpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYg
dmFsdWUsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQsIExlbmd0aE1vZGUgbW9kZSkK
K3ZvaWQgU1ZHTGVuZ3RoTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU1ZH
U3R5bGVkRWxlbWVudCogY29udGV4dCwgU1ZHTGVuZ3RoTW9kZSBtb2RlKQogewogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogCiAgICAgVmVjdG9yPFN0cmluZz4gbGVuZ3RocyA9IHZhbHVlLnNw
bGl0KCcgJyk7CiAgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxlbmd0
aHMuZW5kKCk7Ci0gICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBs
ZW5ndGhzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBTVkdMZW5ndGgqIGxl
bmd0aCA9IG5ldyBTVkdMZW5ndGgoY29udGV4dCwgbW9kZSk7Ci0gICAgICAgIGxlbmd0aC0+c2V0
VmFsdWVBc1N0cmluZygqaXQpOwotICAgICAgICBhcHBlbmRJdGVtKGxlbmd0aCwgZWMpOwotICAg
IH0KKyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxlbmd0aHMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBhcHBlbmRJdGVtKFNWR0xlbmd0aChj
b250ZXh0LCBtb2RlLCAqaXQpLCBlYyk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0xlbmd0aExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5n
dGhMaXN0LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3Ro
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUKIHsKLSAgICBjbGFzcyBTVkdMZW5ndGhMaXN0IDogcHVibGljIFNWR0xpc3Q8UmVmUHRy
PFNWR0xlbmd0aD4gPgorICAgIGNsYXNzIFNWR0xlbmd0aExpc3QgOiBwdWJsaWMgU1ZHTGlzdDxT
VkdMZW5ndGg+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHTGVuZ3RoTGlzdCgpOwog
ICAgICAgICB2aXJ0dWFsIH5TVkdMZW5ndGhMaXN0KCk7CiAKLSAgICAgICAgdm9pZCBwYXJzZShj
b25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0LCBMZW5n
dGhNb2RlIG1vZGUpOworICAgICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNv
bnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQsIFNWR0xlbmd0aE1vZGUgbW9kZSk7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
TGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVF
bGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5l
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3
aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lm
ZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHTGluZUVsZW1lbnQuaCIKIApAQCAtMzYsMTAg
KzM3LDEwIEBAIFNWR0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudChjb25zdCBRdWEKICAgICAs
IFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1feDEobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwg
dmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95MShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hF
SUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV94MihuZXcgU1ZHTGVuZ3RoKHRoaXMs
IExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kyKG5ldyBTVkdMZW5ndGgo
dGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3gxKHRoaXMsIExl
bmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feTEodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAs
IG1feDIodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95Mih0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0KQogewogfQogCkBAIC00Nyw1OSArNDgsNDYgQEAgU1ZHTGluZUVsZW1lbnQ6On5TVkdM
aW5lRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xp
bmVFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWDEsIHgxLCBTVkdOYW1lczo6
eDFBdHRyLmxvY2FsTmFtZSgpLCBtX3gxLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZMSwgeTEs
IFNWR05hbWVzOjp5MUF0dHIubG9jYWxOYW1lKCksIG1feTEuZ2V0KCkpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5n
dGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2NhbE5hbWUoKSwgbV94Mi5nZXQoKSkKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgqLCBM
ZW5ndGgsIGxlbmd0aCwgWTIsIHkyLCBTVkdOYW1lczo6eTJBdHRyLmxvY2FsTmFtZSgpLCBtX3ky
LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNW
R0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgxLCB4MSwgU1ZHTmFtZXM6OngxQXR0ci5sb2NhbE5h
bWUoKSwgbV94MSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50
LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5MUF0dHIubG9j
YWxOYW1lKCksIG1feTEpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxl
bWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWDIsIHgyLCBTVkdOYW1lczo6eDJBdHRy
LmxvY2FsTmFtZSgpLCBtX3gyKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGlu
ZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFkyLCB5MiwgU1ZHTmFtZXM6Onky
QXR0ci5sb2NhbE5hbWUoKSwgbV95MikKIAogdm9pZCBTVkdMaW5lRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OngxQXR0cikKLSAgICAgICAgeDFCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2
YWx1ZSk7CisgICAgICAgIHNldFgxQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5
MUF0dHIpCi0gICAgICAgIHkxQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwor
ICAgICAgICBzZXRZMUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngyQXR0cikK
LSAgICAgICAgeDJCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAg
IHNldFgyQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MkF0dHIpCi0gICAgICAg
IHkyQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZMkJh
c2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBl
bHNlCiAgICAgewotICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpKSByZXR1cm47Ci0gICAgICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKGF0dHIpKSByZXR1cm47Ci0gICAgICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOworICAgICAgICBpZiAoU1ZH
VGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQorICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cik7CiAgICAgfQogfQogCiBQYXRoIFNWR0xpbmVFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29u
c3QKIHsKLSAgICBmbG9hdCBfeDEgPSB4MSgpLT52YWx1ZSgpLCBfeTEgPSB5MSgpLT52YWx1ZSgp
OwotICAgIGZsb2F0IF94MiA9IHgyKCktPnZhbHVlKCksIF95MiA9IHkyKCktPnZhbHVlKCk7Ci0K
LSAgICByZXR1cm4gUGF0aDo6Y3JlYXRlTGluZShGbG9hdFBvaW50KF94MSwgX3kxKSwgRmxvYXRQ
b2ludChfeDIsIF95MikpOwotfQotCi1jb25zdCBTVkdTdHlsZWRFbGVtZW50KiBTVkdMaW5lRWxl
bWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4
dCkKLXsKLSAgICAvLyBBbGwgYXR0cmlidXRlJ3MgY29udGV4dHMgYXJlIGVxdWFsIChzbyBqdXN0
IHRha2UgdGhlIG9uZSBmcm9tICd4MScpLgotICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHJl
c3RvcmUgPSB4MSgpLT5jb250ZXh0KCk7Ci0KLSAgICB4MSgpLT5zZXRDb250ZXh0KGNvbnRleHQp
OwotICAgIHkxKCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgeDIoKS0+c2V0Q29udGV4dChj
b250ZXh0KTsKLSAgICB5MigpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIAotICAgIFNWR1N0
eWxlZEVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnRleHQpOwotICAgIHJldHVybiBy
ZXN0b3JlOworICAgIHJldHVybiBQYXRoOjpjcmVhdGVMaW5lKEZsb2F0UG9pbnQoeDEoKS52YWx1
ZSgpLCB5MSgpLnZhbHVlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UG9p
bnQoeDIoKS52YWx1ZSgpLCB5MigpLnZhbHVlKCkpKTsKIH0KIAogYm9vbCBTVkdMaW5lRWxlbWVu
dDo6aGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHgxKCktPnVuaXRUeXBl
KCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHkx
KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8
Ci0gICAgICAgIHgyKCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9Q
RVJDRU5UQUdFIHx8Ci0gICAgICAgIHkyKCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdf
TEVOR1RIVFlQRV9QRVJDRU5UQUdFKQorICAgIGlmICh4MSgpLnVuaXRUeXBlKCkgPT0gTGVuZ3Ro
VHlwZVBlcmNlbnRhZ2UgfHwKKyAgICAgICAgeTEoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQ
ZXJjZW50YWdlIHx8CisgICAgICAgIHgyKCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2Vu
dGFnZSB8fAorICAgICAgICB5MigpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2Up
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDYgKzk1
LDYgQEAgYm9vbCBTVkdMaW5lRWxlbWVudDo6aGFzUGVyY2VudGFnZVZhbHVlcwogCiB9CiAKLS8v
IHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDE4MjYwKQorKysg
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVy
bWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3Rv
biwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0xpbmVFbGVtZW50
SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHTGluZUVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHTGlu
ZUVsZW1lbnRfSAorI2RlZmluZSBTVkdMaW5lRWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9S
VAogCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNDksMjAg
KzUwLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJl
cklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEo
KSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hB
dHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOwotCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQ
ZXJjZW50YWdlVmFsdWVzKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQogIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGlu
ZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYMSwgeDEpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgUmVmUHRyPFNWR0xlbmd0aD4sIFkxLCB5MSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3Ro
PiwgWDIsIHgyKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGlu
ZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZMiwgeTIpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBTVkdMZW5ndGgsIFgxLCB4MSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWTEsIHkxKQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0
aCwgU1ZHTGVuZ3RoLCBYMiwgeDIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFkyLCB5MikKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMzcsMzUgKzM3LDM1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
YykKICAgICA6IFNWR0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3gxKG5l
dyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1f
eTEobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAg
ICAsIG1feDIobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkp
KQotICAgICwgbV95MihuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVt
ZW50KCkpKQorICAgICwgbV94MSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kxKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3gyKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkK
KyAgICAsIG1feTIodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKLSAgICAvLyBTcGVjIDogSWYg
dGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFs
dWUgb2YgIjEwMCUiIHdlcmUgc3BlY2lmaWVkLgotICAgIG1feDItPnNldFZhbHVlQXNTdHJpbmco
IjEwMCUiKTsKKyAgICAvLyBTcGVjOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQs
IHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCisg
ICAgc2V0WDJCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUi
KSk7CiB9CiAKIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6flNWR0xpbmVhckdyYWRpZW50RWxl
bWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgxLCB4MSwgU1ZHTmFt
ZXM6OngxQXR0ci5sb2NhbE5hbWUoKSwgbV94MS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBs
ZW5ndGgsIFkxLCB5MSwgU1ZHTmFtZXM6OnkxQXR0ci5sb2NhbE5hbWUoKSwgbV95MS5nZXQoKSkK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwg
U1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2Nh
bE5hbWUoKSwgbV94Mi5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFkyLCB5Miwg
U1ZHTmFtZXM6OnkyQXR0ci5sb2NhbE5hbWUoKSwgbV95Mi5nZXQoKSkKK0FOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgWDEsIHgxLCBTVkdOYW1lczo6eDFBdHRyLmxvY2FsTmFtZSgpLCBtX3gxKQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBT
VkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5MUF0dHIubG9jYWxO
YW1lKCksIG1feTEpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6
OngyQXR0ci5sb2NhbE5hbWUoKSwgbV94MikKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWTIs
IHkyLCBTVkdOYW1lczo6eTJBdHRyLmxvY2FsTmFtZSgpLCBtX3kyKQogCiB2b2lkIFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBh
dHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwog
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngxQXR0cikKLSAgICAgICAgeDFCYXNl
VmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFgxQmFzZVZhbHVl
KFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MUF0dHIpCi0gICAgICAgIHkxQmFzZVZhbHVlKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZMUJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OngyQXR0cikKLSAgICAgICAgeDJCYXNlVmFsdWUoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFgyQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjp5MkF0dHIpCi0gICAgICAgIHkyQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJp
bmcodmFsdWUpOworICAgICAgICBzZXRZMkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlCiAgICAgICAgIFNWR0dyYWRpZW50RWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkBAIC03NSwxNSArNzUsMzIgQEAgdm9p
ZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIHJlYnVpbGRTdG9wcygp
OyAvLyByZWJ1aWxkIHN0b3BzIGJlZm9yZSBwb3NzaWJseSBpbXBvcnRpbmcgdGhlbSBmcm9tIGFu
eSByZWZlcmVuY2VkIGdyYWRpZW50LgogCiAgICAgYm9vbCBiYm94ID0gKGdyYWRpZW50VW5pdHMo
KSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpOwotICAg
IAotICAgIHgxKCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICB5MSgpLT5zZXRCYm94UmVs
YXRpdmUoYmJveCk7Ci0gICAgeDIoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIHkyKCkt
PnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICAKLSAgICBmbG9hdCBfeDEgPSB4MSgpLT52YWx1
ZSgpLCBfeTEgPSB5MSgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF94MiA9IHgyKCktPnZhbHVlKCks
IF95MiA9IHkyKCktPnZhbHVlKCk7CiAKKyAgICBmbG9hdCBfeDEsIF95MSwgX3gyLCBfeTI7CisK
KyAgICBpZiAoYmJveCkgeworICAgICAgICBfeDEgPSB4MSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0
cygpOworICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHgxKCkpKQorICAgICAgICAg
ICAgX3gxICo9IDEwMC4wOworCisgICAgICAgIF95MSA9IHkxKCkudmFsdWVJblNwZWNpZmllZFVu
aXRzKCk7CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeTEoKSkpCisgICAgICAg
ICAgICBfeTEgKj0gMTAwLjA7CisKKyAgICAgICAgX3gyID0geDIoKS52YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKTsKKyAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbih4MigpKSkKKyAgICAg
ICAgICAgIF94MiAqPSAxMDAuMDsKKworICAgICAgICBfeTIgPSB5MigpLnZhbHVlSW5TcGVjaWZp
ZWRVbml0cygpOworICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHkyKCkpKQorICAg
ICAgICAgICAgX3kyICo9IDEwMC4wOworICAgIH0gZWxzZSB7CisgICAgICAgIF94MSA9IHgxKCku
dmFsdWUoKTsKKyAgICAgICAgX3kxID0geTEoKS52YWx1ZSgpOworICAgICAgICBfeDIgPSB4Migp
LnZhbHVlKCk7CisgICAgICAgIF95MiA9IHkyKCkudmFsdWUoKTsKKyAgICB9IAorIAogICAgIFJl
ZlB0cjxTVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50PiBncmFkID0gV1RGOjpzdGF0aWNfcG9p
bnRlcl9jYXN0PFNWR1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQ+KF9ncmFkKTsKICAgICBBZmZp
bmVUcmFuc2Zvcm0gbWF0OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9ybSgpLT5udW1iZXJPZkl0
ZW1zKCkgPiAwKQpAQCAtOTEsNDAgKzEwOCwyNyBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6YnVpbGRHcmFkCiAKICAgICBEZXByZWNhdGVkU3RyaW5nIHJlZiA9IGhyZWYoKS5kZXBy
ZWNhdGVkU3RyaW5nKCk7CiAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyPiBwc2VydmVyID0gZ2V0
UGFpbnRTZXJ2ZXJCeUlkKGRvY3VtZW50KCksIHJlZi5taWQoMSkpOwotICAgIAorCiAgICAgaWYg
KHBzZXJ2ZXIgJiYgKHBzZXJ2ZXItPnR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFBhaW50U2VydmVy
IHx8IHBzZXJ2ZXItPnR5cGUoKSA9PSBMaW5lYXJHcmFkaWVudFBhaW50U2VydmVyKSkgewogICAg
ICAgICBib29sIGlzTGluZWFyID0gcHNlcnZlci0+dHlwZSgpID09IExpbmVhckdyYWRpZW50UGFp
bnRTZXJ2ZXI7CiAgICAgICAgIFNWR1BhaW50U2VydmVyR3JhZGllbnQqIGdyYWRpZW50ID0gc3Rh
dGljX2Nhc3Q8U1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudCo+KHBzZXJ2ZXIuZ2V0KCkpOwogCiAgICAg
ICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0cikpCiAgICAg
ICAgICAgICBiYm94ID0gZ3JhZGllbnQtPmJvdW5kaW5nQm94TW9kZSgpOwotICAgICAgICAgICAg
CisKICAgICAgICAgaWYgKGlzTGluZWFyKSB7CiAgICAgICAgICAgICBTVkdQYWludFNlcnZlckxp
bmVhckdyYWRpZW50KiBsaW5lYXIgPSBzdGF0aWNfY2FzdDxTVkdQYWludFNlcnZlckxpbmVhckdy
YWRpZW50Kj4ocHNlcnZlci5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShT
VkdOYW1lczo6eDFBdHRyKSkKICAgICAgICAgICAgICAgICBfeDEgPSBsaW5lYXItPmdyYWRpZW50
U3RhcnQoKS54KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAg
IF94MSAqPSAxMDAuOwogCiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6
eTFBdHRyKSkKICAgICAgICAgICAgICAgICBfeTEgPSBsaW5lYXItPmdyYWRpZW50U3RhcnQoKS55
KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF95MSAqPSAx
MDAuOwogCiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6eDJBdHRyKSkK
ICAgICAgICAgICAgICAgICBfeDIgPSBsaW5lYXItPmdyYWRpZW50RW5kKCkueCgpOwotICAgICAg
ICAgICAgZWxzZSBpZiAoYmJveCkKLSAgICAgICAgICAgICAgICBfeDIgKj0gMTAwLjsKIAogICAg
ICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnkyQXR0cikpCiAgICAgICAgICAg
ICAgICAgX3kyID0gbGluZWFyLT5ncmFkaWVudEVuZCgpLnkoKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGJib3gpCi0gICAgICAgICAgICAgICAgX3kyICo9IDEwMC47Ci0gICAgICAgIH0gZWxzZSBp
ZiAoYmJveCkgewotICAgICAgICAgICAgX3gxICo9IDEwMC4wOwotICAgICAgICAgICAgX3kxICo9
IDEwMC4wOwotICAgICAgICAgICAgX3gyICo9IDEwMC4wOwotICAgICAgICAgICAgX3kyICo9IDEw
MC4wOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6Omdy
YWRpZW50VHJhbnNmb3JtQXR0cikpCkBAIC0xNDMsMTMgKzE0Nyw2IEBAIHZvaWQgU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWQKICAgICAgICAgICAgIGdyYWQtPnNldEdyYWRpZW50
U3ByZWFkTWV0aG9kKFNQUkVBRE1FVEhPRF9SRVBFQVQpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBncmFkLT5zZXRHcmFkaWVudFNwcmVhZE1ldGhvZChTUFJFQURNRVRIT0RfUEFEKTsKLQot
ICAgICAgICBpZiAoYmJveCkgewotICAgICAgICAgICAgX3gxICo9IDEwMC4wOwotICAgICAgICAg
ICAgX3kxICo9IDEwMC4wOwotICAgICAgICAgICAgX3gyICo9IDEwMC4wOwotICAgICAgICAgICAg
X3kyICo9IDEwMC4wOwotICAgICAgICB9CiAgICAgfQogCiAgICAgZ3JhZC0+c2V0R3JhZGllbnRU
cmFuc2Zvcm0obWF0KTsKQEAgLTE2MCw2ICsxNTcsNiBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50
RWxlbWVudDo6YnVpbGRHcmFkCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNW
R19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5IEBACiAgICAgQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
SW1wbF9ICisjaWZuZGVmIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudF9ICisjZGVmaW5lIFNWR0xp
bmVhckdSYWRpZW50RWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSA8
U1ZHR3JhZGllbnRFbGVtZW50Lmg+CkBAIC00NiwxMCArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCos
IFJlZlB0cjxTVkdMZW5ndGg+LCBYMSwgeDEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxT
VkdMZW5ndGg+LCBZMSwgeTEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+
LCBYMiwgeDIpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZMiwgeTIp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYMSwgeDEpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0
aCwgU1ZHTGVuZ3RoLCBZMSwgeTEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYMiwg
eDIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZMiwgeTIpCiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxk
Zm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKQEAgLTQyLDEwICs0MiwxMCBAQCBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50
KGNvbnN0CiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZCgpCiAgICAgLCBTVkdGaXRUb1ZpZXdCb3goKQotICAgICwgbV9yZWZYKG5ldyBTVkdM
ZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcmVmWShu
ZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwg
bV9tYXJrZXJXaWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1l
bnQoKSkpCi0gICAgLCBtX21hcmtlckhlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdI
VCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV9yZWZYKHRoaXMsIExlbmd0aE1vZGVXaWR0
aCkKKyAgICAsIG1fcmVmWSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV9tYXJrZXJX
aWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX21hcmtlckhlaWdodCh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0KSAKICAgICAsIG1fbWFya2VyVW5pdHMoU1ZHX01BUktFUlVOSVRTX1NU
Uk9LRVdJRFRIKQogICAgICwgbV9vcmllbnRUeXBlKDApCiAgICAgLCBtX29yaWVudEFuZ2xlKG5l
dyBTVkdBbmdsZSh0aGlzKSkKQEAgLTU2LDYgKzU2LDE0IEBAIFNWR01hcmtlckVsZW1lbnQ6On5T
VkdNYXJrZXJFbGVtZW50KCkKIHsKIH0KIAorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUmVmWCwgcmVmWCwg
U1ZHTmFtZXM6OnJlZlhBdHRyLmxvY2FsTmFtZSgpLCBtX3JlZlgpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBSZWZZLCByZWZZLCBTVkdOYW1lczo6cmVmWUF0dHIubG9jYWxOYW1lKCksIG1fcmVmWSkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgRW51bWVy
YXRpb24sIGVudW1lcmF0aW9uLCBNYXJrZXJVbml0cywgbWFya2VyVW5pdHMsIFNWR05hbWVzOjpt
YXJrZXJVbml0c0F0dHIubG9jYWxOYW1lKCksIG1fbWFya2VyVW5pdHMpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVu
Z3RoLCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgsIFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIu
bG9jYWxOYW1lKCksIG1fbWFya2VyV2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBNYXJrZXJIZWln
aHQsIG1hcmtlckhlaWdodCwgU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIubG9jYWxOYW1lKCks
IG1fbWFya2VySGVpZ2h0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2Vy
RWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE9yaWVudFR5cGUsIG9yaWVu
dFR5cGUsICJvcmllbnRUeXBlIiwgbV9vcmllbnRUeXBlKQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHQW5nbGUqLCBBbmdsZSwgYW5nbGUsIE9yaWVu
dEFuZ2xlLCBvcmllbnRBbmdsZSwgIm9yaWVudEFuZ2xlIiwgbV9vcmllbnRBbmdsZS5nZXQoKSkK
Kwogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqIGF0dHIpCiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZh
bHVlKCk7CkBAIC02MywxMyArNzEsMTMgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYgogICAgICAgICBpZiAodmFsdWUgPT0gInVzZXJTcGFjZU9uVXNlIikKICAgICAg
ICAgICAgIHNldE1hcmtlclVuaXRzQmFzZVZhbHVlKFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VP
TlVTRSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJlZlhBdHRy
KQotICAgICAgICByZWZYQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAg
ICAgICBzZXRSZWZYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZh
bHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyZWZZQXR0cikK
LSAgICAgICAgcmVmWUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAg
ICAgc2V0UmVmWUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFs
dWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om1hcmtlcldpZHRo
QXR0cikKLSAgICAgICAgbWFya2VyV2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2
YWx1ZSk7CisgICAgICAgIHNldE1hcmtlcldpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjptYXJrZXJIZWlnaHRBdHRyKQotICAgICAgICBtYXJrZXJIZWlnaHRCYXNlVmFsdWUo
KS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldE1hcmtlckhlaWdodEJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9yaWVudEF0dHIpIHsKICAgICAgICAgaWYg
KHZhbHVlID09ICJhdXRvIikKICAgICAgICAgICAgIHNldE9yaWVudFRvQXV0bygpOwpAQCAtOTAs
MTQgKzk4LDYgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAg
IH0KIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFJlZlgsIHJlZlgsIFNWR05hbWVzOjpyZWZYQXR0
ci5sb2NhbE5hbWUoKSwgbV9yZWZYLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFJlZlksIHJl
ZlksIFNWR05hbWVzOjpyZWZZQXR0ci5sb2NhbE5hbWUoKSwgbV9yZWZZLmdldCgpKQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlv
biwgZW51bWVyYXRpb24sIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTmFtZXM6Om1hcmtl
clVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9tYXJrZXJVbml0cykKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3Ro
LCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgsIFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIubG9j
YWxOYW1lKCksIG1fbWFya2VyV2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgTWFya2Vy
SGVpZ2h0LCBtYXJrZXJIZWlnaHQsIFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLmxvY2FsTmFt
ZSgpLCBtX21hcmtlckhlaWdodC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR01hcmtlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBPcmllbnRU
eXBlLCBvcmllbnRUeXBlLCAib3JpZW50VHlwZSIsIG1fb3JpZW50VHlwZSkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0FuZ2xlKiwgQW5nbGUsIGFu
Z2xlLCBPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUsICJvcmllbnRBbmdsZSIsIG1fb3JpZW50QW5n
bGUuZ2V0KCkpCi0KIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BdXRvKCkKIHsK
ICAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKFNWR19NQVJLRVJfT1JJRU5UX0FVVE8pOwpAQCAt
MTI2LDcgKzEyNiw3IEBAIFNWR1Jlc291cmNlKiBTVkdNYXJrZXJFbGVtZW50OjpjYW52YXNSZXMK
ICAgICBlbHNlCiAgICAgICAgIG1fbWFya2VyLT5zZXRBdXRvQW5nbGUoKTsKIAotICAgIG1fbWFy
a2VyLT5zZXRSZWYocmVmWCgpLT52YWx1ZSgpLCByZWZZKCktPnZhbHVlKCkpOworICAgIG1fbWFy
a2VyLT5zZXRSZWYocmVmWCgpLnZhbHVlKCksIHJlZlkoKS52YWx1ZSgpKTsKICAgICBtX21hcmtl
ci0+c2V0VXNlU3Ryb2tlV2lkdGgobWFya2VyVW5pdHMoKSA9PSBTVkdfTUFSS0VSVU5JVFNfU1RS
T0tFV0lEVEgpOwogICAgIAogICAgIHJldHVybiBtX21hcmtlci5nZXQoKTsKQEAgLTE0NCw2ICsx
NDQsNiBAQCBSZW5kZXJPYmplY3QqIFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZVJlCiAKIH0KIAot
Ly8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5v
ZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDE4MjYw
KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMiw2ICsyMiw3IEBACiAK
ICNpZm5kZWYgU1ZHTWFya2VyRWxlbWVudF9ICiAjZGVmaW5lIFNWR01hcmtlckVsZW1lbnRfSAor
CiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1Jlc291cmNlTWFya2VyLmgiCkBA
IC0zNCw4ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAgICAgY2xhc3MgRG9jdW1lbnQ7
CiAgICAgY2xhc3MgU1ZHQW5nbGU7Ci0gICAgY2xhc3MgU1ZHQW5nbGU7Ci0gICAgY2xhc3MgU1ZH
TGVuZ3RoOworICAgIAogICAgIGNsYXNzIFNWR01hcmtlckVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5
bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdT
cGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQsCkBAIC03NSwxMCArNzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3
Qm94LCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gpCiAgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0ZpdFRvVmlld0JveCwgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNW
R0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBSZWZYLCByZWZYKQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVm
UHRyPFNWR0xlbmd0aD4sIFJlZlksIHJlZlkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3Ro
PiwgTWFya2VyV2lkdGgsIG1hcmtlcldpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIE1hcmtlckhlaWdodCwgbWFya2VySGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFJl
ZlgsIHJlZlgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJr
ZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgUmVmWSwgcmVmWSkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwg
U1ZHTGVuZ3RoLCBNYXJrZXJXaWR0aCwgbWFya2VyV2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0
aCwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZ
X0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBpbnQsIGludCwgTWFya2VyVW5pdHMsIG1h
cmtlclVuaXRzKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFy
a2VyRWxlbWVudCwgaW50LCBpbnQsIE9yaWVudFR5cGUsIG9yaWVudFR5cGUpCiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmdsZSos
IFJlZlB0cjxTVkdBbmdsZT4sIE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3
aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29s
YXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAw
NSBBbGV4YW5kZXIgS2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogCkBAIC00NSwxMCArNDUsMTAg
QEAgU1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KGNvbnN0IFF1YQogICAgICwgU1ZHVGVz
dHMoKQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQoKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0
RWxlbWVudCgpKSkKLSAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmll
d3BvcnRFbGVtZW50KCkpKQotICAgICwgbV93aWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJ
RFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2hlaWdodChuZXcgU1ZHTGVuZ3RoKHRo
aXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94KHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkKKyAgICAsIG1feSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93
aWR0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0KQogICAgICwgbV9kaXJ0eSh0cnVlKQogewogfQpAQCAtNTcsMTQgKzU3LDE0IEBA
IFNWR01hc2tFbGVtZW50Ojp+U1ZHTWFza0VsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5n
dGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0
aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgq
LCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2Fs
TmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
TWFza0VsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwg
U1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3Ro
LCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3Ro
LCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3Ro
LCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwg
bV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBT
VkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdo
dEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogCiB2b2lkIFNWR01hc2tFbGVtZW50OjphdHRy
aWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSogYXR0ciwgYm9vbCBwcmVzZXJ2ZURlY2xzKQogewotICAg
IEludFNpemUgbmV3U2l6ZSA9IEludFNpemUobHJvdW5kZih3aWR0aCgpLT52YWx1ZSgpKSwgbHJv
dW5kZihoZWlnaHQoKS0+dmFsdWUoKSkpOworICAgIEludFNpemUgbmV3U2l6ZSA9IEludFNpemUo
bHJvdW5kZih3aWR0aCgpLnZhbHVlKCkpLCBscm91bmRmKGhlaWdodCgpLnZhbHVlKCkpKTsKICAg
ICBpZiAoIW1fbWFza2VyIHx8ICFtX21hc2tlci0+bWFzaygpIHx8IChtX21hc2tlci0+bWFzaygp
LT5zaXplKCkgIT0gbmV3U2l6ZSkpCiAgICAgICAgIG1fZGlydHkgPSB0cnVlOwogICAgIFNWR1N0
eWxlZExvY2F0YWJsZUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoYXR0ciwgcHJlc2VydmVEZWNs
cyk7CkBAIC04MCwxMyArODAsMTMgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dAogewogICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVl
KCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1
ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgo
dGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYg
KFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMDcsNyArMTA3LDcgQEAgU1ZHUmVzb3VyY2VJbWFnZSogU1ZHTWFza0Vs
ZW1lbnQ6OmRyYXdNYQogICAgIHJldHVybiAwOwogICAgIFNWR1Jlc291cmNlSW1hZ2UqIG1hc2tJ
bWFnZSA9IG5ldyBTVkdSZXNvdXJjZUltYWdlKCk7CiAKLSAgICBJbnRTaXplIHNpemUgPSBJbnRT
aXplKGxyb3VuZGYod2lkdGgoKS0+dmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0KCktPnZhbHVlKCkp
KTsKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKGxyb3VuZGYod2lkdGgoKS52YWx1ZSgpKSwg
bHJvdW5kZihoZWlnaHQoKS52YWx1ZSgpKSk7CiAgICAgbWFza0ltYWdlLT5pbml0KHNpemUpOwog
CiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gY29udGV4dChjb250ZXh0Rm9ySW1hZ2UobWFz
a0ltYWdlKSk7CkBAIC0xNDQsNiArMTQ0LDYgQEAgU1ZHUmVzb3VyY2UqIFNWR01hc2tFbGVtZW50
OjpjYW52YXNSZXNvdQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQ
UE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNr
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50
LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogCiAjaWZuZGVmIFNWR01hc2tFbGVt
ZW50X0gKICNkZWZpbmUgU1ZHTWFza0VsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAog
I2luY2x1ZGUgIlNWR1Jlc291cmNlTWFza2VyLmgiCkBAIC02MCwxMCArNjEsMTAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElP
TlMoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCiAgCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNr
RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwg
UmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdp
ZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01h
c2tFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwg
U1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisg
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVp
Z2h0LCBoZWlnaHQpCiAKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTUyLDEwICs1MiwxMCBAQCBTVkdQYXR0ZXJuRWxlbWVu
dDo6U1ZHUGF0dGVybkVsZW1lbnQoY29uCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCkKICAgICAsIFNWR0ZpdFRvVmlld0JveCgpCiAgICAgLCBTVkdSZXNvdXJjZUxpc3RlbmVy
KCkKLSAgICAsIG1feChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1l
bnQoKSkpCi0gICAgLCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0
RWxlbWVudCgpKSkKLSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwg
dmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xlbmd0aCh0aGlzLCBM
TV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgo
dGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCkKICAgICAsIG1fcGF0dGVyblVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9P
QkpFQ1RCT1VORElOR0JPWCkKICAgICAsIG1fcGF0dGVybkNvbnRlbnRVbml0cyhTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCiAgICAgLCBtX3BhdHRlcm5UcmFuc2Zv
cm0obmV3IFNWR1RyYW5zZm9ybUxpc3QpCkBAIC02OSwxMCArNjksMTAgQEAgU1ZHUGF0dGVybkVs
ZW1lbnQ6On5TVkdQYXR0ZXJuRWxlbWVudCgpCiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgUGF0
dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLmxvY2Fs
TmFtZSgpLCBtX3BhdHRlcm5Vbml0cykKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R1BhdHRlcm5FbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgUGF0dGVybkNv
bnRlbnRVbml0cywgcGF0dGVybkNvbnRlbnRVbml0cywgU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50
VW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX3BhdHRlcm5Db250ZW50VW5pdHMpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0
aCosIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1f
eS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50
LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lk
dGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBI
ZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0
LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5h
bWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1l
bnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2Nh
bE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVs
ZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6
OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWln
aHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQog
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR1RyYW5z
Zm9ybUxpc3QqLCBUcmFuc2Zvcm1MaXN0LCB0cmFuc2Zvcm1MaXN0LCBQYXR0ZXJuVHJhbnNmb3Jt
LCBwYXR0ZXJuVHJhbnNmb3JtLCBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIubG9jYWxO
YW1lKCksIG1fcGF0dGVyblRyYW5zZm9ybS5nZXQoKSkKIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQpAQCAtOTUsMTMg
Kzk1LDEzIEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAg
ICAgICAgIHBhdHRlcm5UcmFuc2Zvcm1zLT5jbGVhcihlYyk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZhbHVlKCktPnNldFZh
bHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1
ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0
aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBp
ZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTExOCwxOSArMTE4LDYgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaQogICAgIH0KIH0KIAotY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogU1ZH
UGF0dGVybkVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1l
bnQqIGNvbnRleHQpCi17Ci0gICAgLy8gQWxsIGF0dHJpYnV0ZSdzIGNvbnRleHRzIGFyZSBlcXVh
bCAoc28ganVzdCB0YWtlIHRoZSBvbmUgZnJvbSAneCcpLgotICAgIGNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnQqIHJlc3RvcmUgPSB4KCktPmNvbnRleHQoKTsKLQotICAgIHgoKS0+c2V0Q29udGV4dChj
b250ZXh0KTsKLSAgICB5KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgd2lkdGgoKS0+c2V0
Q29udGV4dChjb250ZXh0KTsKLSAgICBoZWlnaHQoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLQot
ICAgIHJldHVybiByZXN0b3JlOwotfQotCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpyZXNvdXJj
ZU5vdGlmaWNhdGlvbigpIGNvbnN0CiB7CiAgICAgLy8gV2UncmUgcmVmZXJlbmNlZCBieSBhICJj
bGllbnQiLCBjYWxjdWxhdGUgdGhlIHRpbGUgbm93Li4uCkBAIC0xNjksMjYgKzE1NiwzOCBAQCB2
b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpmaWxsQXR0cmlidXRlc0ZyCiAKIHZvaWQgU1ZHUGF0dGVy
bkVsZW1lbnQ6OmRyYXdQYXR0ZXJuQ29udGVudEludG9UaWxlKGNvbnN0IFNWR1BhdHRlcm5FbGVt
ZW50KiB0YXJnZXQsIGNvbnN0IEludFNpemUmIG5ld1NpemUsIEFmZmluZVRyYW5zZm9ybSBwYXR0
ZXJuVHJhbnNmb3JtTWF0cml4KQogewotICAgIFNWR1N0eWxlZEVsZW1lbnQqIGFjdGl2ZUVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4obV9wYWludFNlcnZlci0+YWN0aXZl
Q2xpZW50KCktPmVsZW1lbnQoKSk7Ci0KICAgICBib29sIGJib3ggPSAocGF0dGVyblVuaXRzKCkg
PT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKTsKIAotICAg
IGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHNhdmVkQ29udGV4dCA9IDA7CisgICAgZmxvYXQgX3gs
IF95LCB3LCBoOwogICAgIGlmIChiYm94KSB7Ci0gICAgICAgIGlmICh3aWR0aCgpLT51bml0VHlw
ZSgpICE9IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAg
IHdpZHRoKCktPm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQ
RV9QRVJDRU5UQUdFLCB3aWR0aCgpLT52YWx1ZSgpICogMTAwLik7Ci0gICAgICAgIGlmIChoZWln
aHQoKS0+dW5pdFR5cGUoKSAhPSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0Up
Ci0gICAgICAgICAgICBoZWlnaHQoKS0+bmV3VmFsdWVTcGVjaWZpZWRVbml0cyhTVkdMZW5ndGg6
OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UsIGhlaWdodCgpLT52YWx1ZSgpICogMTAwLik7Ci0g
ICAgICAgIGlmIChhY3RpdmVFbGVtZW50KQotICAgICAgICAgICAgc2F2ZWRDb250ZXh0ID0gY29u
c3RfY2FzdDxTVkdQYXR0ZXJuRWxlbWVudCo+KHRoaXMpLT5wdXNoQXR0cmlidXRlQ29udGV4dChh
Y3RpdmVFbGVtZW50KTsKKyAgICAgICAgX3ggPSB4KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7
CisgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeCgpKSkKKyAgICAgICAgICAgIF94
ICo9IDEwMC4wOworCisgICAgICAgIF95ID0geSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOwor
ICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHkoKSkpCisgICAgICAgICAgICBfeSAq
PSAxMDAuMDsKKworICAgICAgICB3ID0gd2lkdGgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsK
KyAgICAgICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbih3aWR0aCgpKSkKKyAgICAgICAgICAg
IHcgKj0gMTAwLjA7CisKKyAgICAgICAgaCA9IGhlaWdodCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0
cygpOworICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKGhlaWdodCgpKSkKKyAgICAg
ICAgICAgIGggKj0gMTAwLjA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgX3ggPSB4KCkudmFsdWUo
KTsKKyAgICAgICAgX3kgPSB5KCkudmFsdWUoKTsKKyAgICAgICAgdyA9IHdpZHRoKCkudmFsdWUo
KTsKKyAgICAgICAgaCA9IGhlaWdodCgpLnZhbHVlKCk7CiAgICAgfQotICAgIAorCiAgICAgbV90
aWxlID0gbmV3IFNWR1Jlc291cmNlSW1hZ2UoKTsKICAgICBtX3RpbGUtPmluaXQobmV3U2l6ZSk7
CiAKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBwYXR0ZXJuQ29udGV4dChjb250ZXh0Rm9y
SW1hZ2UobV90aWxlLmdldCgpKSk7CiAKLSAgICBGbG9hdFJlY3QgcmVjdCh4KCktPnZhbHVlKCks
IHkoKS0+dmFsdWUoKSwgd2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkpOworICAg
IEZsb2F0UmVjdCByZWN0KF94LCBfeSwgdywgaCk7CiAgICAgbV9wYWludFNlcnZlci0+c2V0QmJv
eChyZWN0KTsKICAgICBtX3BhaW50U2VydmVyLT5zZXRQYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5U
cmFuc2Zvcm1NYXRyaXgpOwogICAgIG1fcGFpbnRTZXJ2ZXItPnNldFRpbGUobV90aWxlLmdldCgp
KTsKQEAgLTI0Myw5ICsyNDIsNiBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpkcmF3UGF0dGVy
bkNvbnRlCiAgICAgICAgIGl0ZW0tPnNldExvY2FsVHJhbnNmb3JtKHNhdmVkTWF0cml4Lm1hdHJp
eCgpKTsKICNlbmRpZgogICAgIH0KLQotICAgIGlmIChzYXZlZENvbnRleHQpCi0gICAgICAgIGNv
bnN0X2Nhc3Q8U1ZHUGF0dGVybkVsZW1lbnQqPih0aGlzKS0+cHVzaEF0dHJpYnV0ZUNvbnRleHQo
c2F2ZWRDb250ZXh0KTsKIH0KIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6bm90aWZ5Q2xpZW50
c1RvUmVwYWludCgpIGNvbnN0CkBAIC0yNzEsNyArMjY3LDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxl
bWVudDo6bm90aWZ5QXR0cmlidXRlQwogICAgIGlmICghbV9wYWludFNlcnZlciB8fCAhbV9wYWlu
dFNlcnZlci0+YWN0aXZlQ2xpZW50KCkgfHwgbV9pZ25vcmVBdHRyaWJ1dGVDaGFuZ2VzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBJbnRTaXplIG5ld1NpemUgPSBJbnRTaXplKGxyb3VuZGYod2lk
dGgoKS0+dmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0KCktPnZhbHVlKCkpKTsKKyAgICBJbnRTaXpl
IG5ld1NpemUgPSBJbnRTaXplKGxyb3VuZGYod2lkdGgoKS52YWx1ZSgpKSwgbHJvdW5kZihoZWln
aHQoKS52YWx1ZSgpKSk7CiAgICAgaWYgKG1fdGlsZSAmJiAobV90aWxlLT5zaXplKCkgPT0gbmV3
U2l6ZSkgfHwgbmV3U2l6ZS53aWR0aCgpIDwgMSB8fCBuZXdTaXplLmhlaWdodCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0zMzEsMTIgKzMyNywxMyBAQCBTVkdSZXNvdXJjZSogU1ZHUGF0
dGVybkVsZW1lbnQ6OmNhbnZhc1JlCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHUGF0dGVybkVsZW1lbnQ6
OmdldENUTSgpIGNvbnN0CiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKLSAgICBBZmZpbmVU
cmFuc2Zvcm0gdmlld0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUo
KSwgaGVpZ2h0KCktPnZhbHVlKCkpOworICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmll
d0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpLnZhbHVlKCksIGhlaWdodCgpLnZhbHVlKCkpOwog
ICAgIG1hdCAqPSB2aWV3Qm94OwogICAgIHJldHVybiBtYXQ7CiB9CiAKIH0KIAotLy8gdmltOnRz
PTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMTgyNjApCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5IEBACiAgICAgQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHUGF0dGVybkVs
ZW1lbnRJbXBsX0gKLSNkZWZpbmUgS1NWR19TVkdQYXR0ZXJuRWxlbWVudEltcGxfSAorI2lmbmRl
ZiBTVkdQYXR0ZXJuRWxlbWVudF9ICisjZGVmaW5lIFNWR1BhdHRlcm5FbGVtZW50X0gKKwogI2lm
ZGVmIFNWR19TVVBQT1JUCiAKICNpbmNsdWRlICJTVkdQYWludFNlcnZlclBhdHRlcm4uaCIKQEAg
LTc0LDEwICs3NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIEZsb2F0UmVjdCwgVmll
d0JveCwgdmlld0JveCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJB
VElPTlMoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKiwgUHJlc2VydmVB
c3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxT
VkdMZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQs
IFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3Ro
KiwgUmVmUHRyPFNWR0xlbmd0aD4sIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVu
Z3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0
dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZH
TGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVp
Z2h0KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVs
ZW1lbnQsIGludCwgaW50LCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cykKICAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQsIGludCwg
UGF0dGVybkNvbnRlbnRVbml0cywgcGF0dGVybkNvbnRlbnRVbml0cykKICAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdUcmFuc2Zvcm1M
aXN0KiwgUmVmUHRyPFNWR1RyYW5zZm9ybUxpc3Q+LCBQYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJu
VHJhbnNmb3JtKQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRm
b3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmgiCiAKQEAgLTM3LDQxICszOCw0MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdHcmFkaWVudEVs
ZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgbV9jeChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJ
RFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2N5KG5ldyBTVkdMZW5ndGgodGhpcywg
TE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3IobmV3IFNWR0xlbmd0aCh0
aGlzLCBMTV9PVEhFUiwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9meChuZXcgU1ZHTGVu
Z3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2Z5KG5ldyBT
VkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX2N4
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fY3kodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCkKKyAgICAsIG1fcih0aGlzLCBMZW5ndGhNb2RlT3RoZXIpCisgICAgLCBtX2Z4KHRoaXMsIExl
bmd0aE1vZGVXaWR0aCkKKyAgICAsIG1fZnkodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAg
ICAvLyBTcGVjOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3Qg
aXMgYXMgaWYgYSB2YWx1ZSBvZiAiNTAlIiB3ZXJlIHNwZWNpZmllZC4KLSAgICBtX2N4LT5zZXRW
YWx1ZUFzU3RyaW5nKCI1MCUiKTsKLSAgICBtX2N5LT5zZXRWYWx1ZUFzU3RyaW5nKCI1MCUiKTsK
LSAgICBtX3ItPnNldFZhbHVlQXNTdHJpbmcoIjUwJSIpOworICAgIHNldEN4QmFzZVZhbHVlKFNW
R0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICI1MCUiKSk7CisgICAgc2V0Q3lCYXNlVmFs
dWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICI1MCUiKSk7CisgICAgc2V0UkJh
c2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZU90aGVyLCAiNTAlIikpOwogfQogCiBT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6On5TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoKQogewog
fQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIu
bG9jYWxOYW1lKCksIG1fY3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBDeSwg
Y3ksIFNWR05hbWVzOjpjeUF0dHIubG9jYWxOYW1lKCksIG1fY3kuZ2V0KCkpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCos
IExlbmd0aCwgbGVuZ3RoLCBGeCwgZngsIFNWR05hbWVzOjpmeEF0dHIubG9jYWxOYW1lKCksIG1f
ZnguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBGeSwgZnksIFNWR05hbWVzOjpm
eUF0dHIubG9jYWxOYW1lKCksIG1fZnkuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3Ro
LCBSLCByLCBTVkdOYW1lczo6ckF0dHIubG9jYWxOYW1lKCksIG1fci5nZXQoKSkKK0FOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3Ro
LCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLmxvY2FsTmFtZSgpLCBt
X2N4KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeSwgY3ksIFNWR05hbWVzOjpjeUF0dHIu
bG9jYWxOYW1lKCksIG1fY3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEZ4LCBmeCwgU1ZH
TmFtZXM6OmZ4QXR0ci5sb2NhbE5hbWUoKSwgbV9meCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgRnksIGZ5LCBTVkdOYW1lczo6ZnlBdHRyLmxvY2FsTmFtZSgpLCBtX2Z5KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBSLCByLCBTVkdOYW1lczo6ckF0dHIubG9jYWxOYW1lKCksIG1fcikK
IAogdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0g
YXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeEF0dHIp
Ci0gICAgICAgIGN4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAg
ICBzZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3lBdHRyKQotICAgICAg
ICBjeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0Q3lC
YXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyQXR0cikKLSAgICAgICAgckJhc2VW
YWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0UkJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6ZnhBdHRyKQotICAgICAgICBmeEJhc2VWYWx1ZSgpLT5z
ZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0RnhCYXNlVmFsdWUoU1ZHTGVuZ3Ro
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OmZ5QXR0cikKLSAgICAgICAgZnlCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEZ5QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UKICAgICAgICAgU1ZHR3JhZGllbnRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KQEAgLTgzLDE1ICs4NCw0MiBA
QCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAgICAgYm9vbCBiYm94
ID0gKGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1gpOwogICAgIGJvb2wgZnhTZXQgPSBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZ4
QXR0cik7CiAgICAgYm9vbCBmeVNldCA9IGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6ZnlBdHRyKTsK
LSAgICBjeCgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgY3koKS0+c2V0QmJveFJlbGF0
aXZlKGJib3gpOwotICAgIHIoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIGZ4KCktPnNl
dEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICBmeSgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0g
ICAgZmxvYXQgX2N4ID0gY3goKS0+dmFsdWUoKSwgX2N5ID0gY3koKS0+dmFsdWUoKTsKLSAgICBm
bG9hdCBfciA9IHIoKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfZnggPSBmeFNldCA/IGZ4KCktPnZh
bHVlKCkgOiBfY3g7Ci0gICAgZmxvYXQgX2Z5ID0gZnlTZXQgPyBmeSgpLT52YWx1ZSgpIDogX2N5
OworIAorICAgIGZsb2F0IF9jeCwgX2N5LCBfciwgX2Z4LCBfZnk7CisKKyAgICBpZiAoYmJveCkg
eworICAgICAgICBfY3ggPSBjeCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBp
ZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKGN4KCkpKQorICAgICAgICAgICAgX2N4ICo9IDEwMC4w
OworCisgICAgICAgIF9jeSA9IGN5KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAg
IGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oY3koKSkpCisgICAgICAgICAgICBfY3kgKj0gMTAw
LjA7CisKKyAgICAgICAgX3IgPSByKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAg
IGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24ocigpKSkKKyAgICAgICAgICAgIF9yICo9IDEwMC4w
OworCisgICAgICAgIGlmIChmeFNldCkgeworICAgICAgICAgICAgX2Z4ID0gZngoKS52YWx1ZUlu
U3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24o
ZngoKSkpCisgICAgICAgICAgICAgICAgX2Z4ICo9IDEwMC4wOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIF9meCA9IF9jeDsKKyAgICAgICAgCisgICAgICAgIGlmIChmeVNldCkgeworICAg
ICAgICAgICAgX2Z5ID0gZnkoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgICAg
IGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oZnkoKSkpCisgICAgICAgICAgICAgICAgX2Z5ICo9
IDEwMC4wOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIF9meSA9IF9jeTsKKyAgICB9IGVs
c2UgeworICAgICAgICBfY3ggPSBjeCgpLnZhbHVlKCk7CisgICAgICAgIF9jeSA9IGN5KCkudmFs
dWUoKTsKKyAgICAgICAgX3IgPSByKCkudmFsdWUoKTsKKyAgICAgICAgX2Z4ID0gZnhTZXQgPyBm
eCgpLnZhbHVlKCkgOiBfY3g7CisgICAgICAgIF9meSA9IGZ5U2V0ID8gZnkoKS52YWx1ZSgpIDog
X2N5OworICAgIH0KIAogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50PiBn
cmFkID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGll
bnQ+KF9ncmFkKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OwpAQCAtMTEyLDMyICsxNDAsMTgg
QEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgICAgICAgICAg
UmVmUHRyPFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+IHJhZGlhbCA9IFdURjo6c3RhdGlj
X3BvaW50ZXJfY2FzdDxTVkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50Pihwc2VydmVyKTsKICAg
ICAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpjeEF0dHIpKQogICAgICAgICAg
ICAgICAgIF9jeCA9IHJhZGlhbC0+Z3JhZGllbnRDZW50ZXIoKS54KCk7Ci0gICAgICAgICAgICBl
bHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF9jeCAqPSAxMDAuOworCiAgICAgICAgICAg
ICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6Y3lBdHRyKSkKICAgICAgICAgICAgICAgICBf
Y3kgPSByYWRpYWwtPmdyYWRpZW50Q2VudGVyKCkueSgpOwotICAgICAgICAgICAgZWxzZSBpZiAo
YmJveCkKLSAgICAgICAgICAgICAgICBfY3kgKj0gMTAwLjsKIAogICAgICAgICAgICAgaWYgKCFm
eFNldCkKICAgICAgICAgICAgICAgICBfZnggPSByYWRpYWwtPmdyYWRpZW50Rm9jYWwoKS54KCk7
Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF9meCAqPSAxMDAu
OworCiAgICAgICAgICAgICBpZiAoIWZ5U2V0KQogICAgICAgICAgICAgICAgIF9meSA9IHJhZGlh
bC0+Z3JhZGllbnRGb2NhbCgpLnkoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCi0gICAg
ICAgICAgICAgICAgX2Z5ICo9IDEwMC47CiAKICAgICAgICAgICAgIGlmICghaGFzQXR0cmlidXRl
KFNWR05hbWVzOjpyQXR0cikpCiAgICAgICAgICAgICAgICAgX3IgPSByYWRpYWwtPmdyYWRpZW50
UmFkaXVzKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF9y
ICo9IDEwMC47Ci0gICAgICAgIH0gZWxzZSBpZiAoYmJveCkgewotICAgICAgICAgICAgX2N4ICo9
IDEwMC4wOwotICAgICAgICAgICAgX2N5ICo9IDEwMC4wOwotICAgICAgICAgICAgX2Z4ICo9IDEw
MC4wOwotICAgICAgICAgICAgX2Z5ICo9IDEwMC4wOwotICAgICAgICAgICAgX3IgKj0gMTAwLjA7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6Z3JhZGll
bnRUcmFuc2Zvcm1BdHRyKSkKQEAgLTE1NiwxNCArMTcwLDYgQEAgdm9pZCBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgICAgICAgICAgZ3JhZC0+c2V0R3JhZGllbnRTcHJl
YWRNZXRob2QoU1BSRUFETUVUSE9EX1JFUEVBVCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGdyYWQtPnNldEdyYWRpZW50U3ByZWFkTWV0aG9kKFNQUkVBRE1FVEhPRF9QQUQpOwotCi0gICAg
ICAgIGlmIChiYm94KSB7Ci0gICAgICAgICAgICBfY3ggKj0gMTAwLjA7Ci0gICAgICAgICAgICBf
Y3kgKj0gMTAwLjA7Ci0gICAgICAgICAgICBfZnggKj0gMTAwLjA7Ci0gICAgICAgICAgICBfZnkg
Kj0gMTAwLjA7Ci0gICAgICAgICAgICBfciAqPSAxMDAuMDsKLSAgICAgICAgfQogICAgIH0KIAog
ICAgIGdyYWQtPnNldEdyYWRpZW50VHJhbnNmb3JtKG1hdCk7CkBAIC0xNzUsNiArMTgxLDYgQEAg
dm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogCiB9CiAKLS8vIHZpbTp0
cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4
OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNp
b24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAt
MjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lm
bmRlZiBLU1ZHX1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnRfSAorI2RlZmluZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnRfSAorCiAjaWZkZWYgU1ZH
X1NVUFBPUlQKIAogI2luY2x1ZGUgPFNWR0dyYWRpZW50RWxlbWVudC5oPgpAQCAtNDYsMTEgKzQ3
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRl
OgotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgQ3gsIGN4KQotICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgQ3ksIGN5KQotICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5n
dGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgUiwgcikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRy
PFNWR0xlbmd0aD4sIEZ4LCBmeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIEZ5LCBmeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN4LCBjeCkKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN5LCBjeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdM
ZW5ndGgsIFIsIHIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBGeCwgZngpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBGeSwgZnkpCiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNp
b24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAg
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTM1LDEyICsz
NSwxMiBAQCBTVkdSZWN0RWxlbWVudDo6U1ZHUmVjdEVsZW1lbnQoY29uc3QgUXVhCiAgICAgLCBT
VkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCgpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmll
d3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hU
LCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywg
TE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5n
dGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3J4KG5ldyBT
VkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcnko
bmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAs
IG1feCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWln
aHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fcngodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoKQorICAgICwgbV9yeSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewogfQogCkBAIC00OCwy
OCArNDgsMjggQEAgU1ZHUmVjdEVsZW1lbnQ6On5TVkdSZWN0RWxlbWVudCgpCiB7CiB9CiAKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBM
ZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0
KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVu
Z3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwg
bV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQs
IFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0
aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdo
dCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0
KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVu
Z3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ci5sb2NhbE5hbWUo
KSwgbV9yeC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVt
ZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgUnksIHJ5LCBTVkdOYW1lczo6cnlBdHRy
LmxvY2FsTmFtZSgpLCBtX3J5LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVz
Ojp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVz
Ojp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwg
U1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVp
Z2h0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ci5sb2NhbE5hbWUo
KSwgbV9yeCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBT
VkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIubG9jYWxO
YW1lKCksIG1fcnkpCiAKIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
ID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0
cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAg
ICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkp
OwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAg
IHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyeEF0dHIpCi0gICAgICAgIHJ4QmFzZVZh
bHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICAgc2V0UnhCYXNlVmFsdWUo
U1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ5QXR0cikKLSAgICAgICAgcnlCYXNlVmFsdWUoKS0+
c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgICBzZXRSeUJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+
c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xl
bmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUo
KS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAg
ICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTgzLDQxICs4MywyNSBAQCB2b2lkIFNWR1JlY3RFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0CiAKIFBhdGggU1ZHUmVjdEVsZW1lbnQ6OnRvUGF0aERhdGEoKSBjb25z
dAogewotICAgIEZsb2F0UmVjdCByZWN0KHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1ZSgpLCB3aWR0
aCgpLT52YWx1ZSgpLCBoZWlnaHQoKS0+dmFsdWUoKSk7CisgICAgRmxvYXRSZWN0IHJlY3QoeCgp
LnZhbHVlKCksIHkoKS52YWx1ZSgpLCB3aWR0aCgpLnZhbHVlKCksIGhlaWdodCgpLnZhbHVlKCkp
OwogCi0gICAgYm9vbCBoYXNSeCA9IGhhc0F0dHJpYnV0ZSgicngiKTsKLSAgICBib29sIGhhc1J5
ID0gaGFzQXR0cmlidXRlKCJyeSIpOworICAgIGJvb2wgaGFzUnggPSBoYXNBdHRyaWJ1dGUoU1ZH
TmFtZXM6OnJ4QXR0cik7CisgICAgYm9vbCBoYXNSeSA9IGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6
cnlBdHRyKTsKICAgICBpZiAoaGFzUnggfHwgaGFzUnkpIHsKLSAgICAgICAgZmxvYXQgX3J4ID0g
aGFzUnggPyByeCgpLT52YWx1ZSgpIDogcnkoKS0+dmFsdWUoKTsKLSAgICAgICAgZmxvYXQgX3J5
ID0gaGFzUnkgPyByeSgpLT52YWx1ZSgpIDogcngoKS0+dmFsdWUoKTsKKyAgICAgICAgZmxvYXQg
X3J4ID0gaGFzUnggPyByeCgpLnZhbHVlKCkgOiByeSgpLnZhbHVlKCk7CisgICAgICAgIGZsb2F0
IF9yeSA9IGhhc1J5ID8gcnkoKS52YWx1ZSgpIDogcngoKS52YWx1ZSgpOwogICAgICAgICByZXR1
cm4gUGF0aDo6Y3JlYXRlUm91bmRlZFJlY3RhbmdsZShyZWN0LCBGbG9hdFNpemUoX3J4LCBfcnkp
KTsKICAgICB9CiAKICAgICByZXR1cm4gUGF0aDo6Y3JlYXRlUmVjdGFuZ2xlKHJlY3QpOwogfQog
Ci1jb25zdCBTVkdTdHlsZWRFbGVtZW50KiBTVkdSZWN0RWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNv
bnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCkKLXsKLSAgICAvLyBBbGwgYXR0
cmlidXRlJ3MgY29udGV4dHMgYXJlIGVxdWFsIChzbyBqdXN0IHRha2UgdGhlIG9uZSBmcm9tICd4
JykuCi0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcmVzdG9yZSA9IHgoKS0+Y29udGV4dCgp
OwotCi0gICAgeCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHkoKS0+c2V0Q29udGV4dChj
b250ZXh0KTsKLSAgICB3aWR0aCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIGhlaWdodCgp
LT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIAotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnB1c2hB
dHRyaWJ1dGVDb250ZXh0KGNvbnRleHQpOwotICAgIHJldHVybiByZXN0b3JlOwotfQotCiBib29s
IFNWR1JlY3RFbGVtZW50OjpoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3QKIHsKLSAgICBpZiAo
eCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8
fAotICAgICAgICB5KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9Q
RVJDRU5UQUdFIHx8Ci0gICAgICAgIHdpZHRoKCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpT
VkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIGhlaWdodCgpLT51bml0VHlwZSgp
ID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICByeCgp
LT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAot
ICAgICAgICByeSgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVS
Q0VOVEFHRSkKKyAgICBpZiAoeCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2Ug
fHwKKyAgICAgICAgeSgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgfHwKKyAg
ICAgICAgd2lkdGgoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8CisgICAg
ICAgIGhlaWdodCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI1LDYgKzEwOSw2IEBAIGJv
b2wgU1ZHUmVjdEVsZW1lbnQ6Omhhc1BlcmNlbnRhZ2VWYWx1ZXMKIAogfQogCi0vLyB2aW06dHM9
NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDog
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBCb3N0b24sIE1BIDAy
MTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdSZWN0RWxlbWVudEltcGxfSAot
I2RlZmluZSBLU1ZHX1NWR1JlY3RFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR1JlY3RFbGVtZW50
X0gKKyNkZWZpbmUgU1ZHUmVjdEVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2lu
Y2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTMxLDcgKzMyLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAgICBjbGFzcyBTVkdMZW5ndGg7CiAgICAgY2xhc3Mg
U1ZHUmVjdEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLApAQCAtNDksMjIgKzQ5LDE5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJl
bmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAot
ICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hBdHRyaWJ1dGVDb250
ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOwotCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gdGhpczsgfQotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFs
dWVzKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9G
T1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xl
bmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdS
ZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkK
LSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBT
VkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwg
UmVmUHRyPFNWR0xlbmd0aD4sIFJ4LCByeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwg
UnksIHJ5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVs
ZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZ
LCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1l
bnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSeCwgcngpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3Ro
LCBTVkdMZW5ndGgsIFJ5LCByeSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVy
bWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdT
VkdFbGVtZW50LmgiCiAKQEAgLTUzLDE5ICs1NCwxNSBAQCBTVkdTVkdFbGVtZW50OjpTVkdTVkdF
bGVtZW50KGNvbnN0IFF1YWxpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkK
ICAgICAsIFNWR0ZpdFRvVmlld0JveCgpCiAgICAgLCBTVkdab29tQW5kUGFuKCkKKyAgICAsIG1f
eCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCkKKyAgICAsIG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQo
dGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKICAgICAsIG1fdXNlQ3VycmVudFZpZXcoZmFsc2UpCiAg
ICAgLCBtX3RpbWVTY2hlZHVsZXIobmV3IFRpbWVTY2hlZHVsZXIoZG9jKSkKIHsKLSAgICBjb25z
dCBTVkdFbGVtZW50KiB2aWV3cG9ydCA9IG93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50
KCkgPT0gdGhpcyA/IHRoaXMgOiB2aWV3cG9ydEVsZW1lbnQoKTsKLSAgICBjb25zdCBTVkdTdHls
ZWRFbGVtZW50KiBjb250ZXh0ID0gb3duZXJEb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA9
PSB0aGlzID8gMCA6IHRoaXM7Ci0KLSAgICBtX3ggPSBuZXcgU1ZHTGVuZ3RoKGNvbnRleHQsIExN
X1dJRFRILCB2aWV3cG9ydCk7Ci0gICAgbV95ID0gbmV3IFNWR0xlbmd0aChjb250ZXh0LCBMTV9I
RUlHSFQsIHZpZXdwb3J0KTsKLSAgICBtX3dpZHRoID0gbmV3IFNWR0xlbmd0aChjb250ZXh0LCBM
TV9XSURUSCwgdmlld3BvcnQpOwotICAgIG1faGVpZ2h0ID0gbmV3IFNWR0xlbmd0aChjb250ZXh0
LCBMTV9IRUlHSFQsIHZpZXdwb3J0KTsKLQotICAgIG1fd2lkdGgtPnNldFZhbHVlQXNTdHJpbmco
IjEwMCUiKTsKLSAgICBtX2hlaWdodC0+c2V0VmFsdWVBc1N0cmluZygiMTAwJSIpOworICAgIHNl
dFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikp
OworICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCwgIjEwMCUiKSk7CiB9CiAKIFNWR1NWR0VsZW1lbnQ6On5TVkdTVkdFbGVtZW50KCkKQEAgLTcz
LDEwICs3MCwxMCBAQCBTVkdTVkdFbGVtZW50Ojp+U1ZHU1ZHRWxlbWVudCgpCiAgICAgZGVsZXRl
IG1fdGltZVNjaGVkdWxlcjsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
U1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4
QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05h
bWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRo
LCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5nZXQoKSkK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCos
IExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9j
YWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6
OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6
eUF0dHIubG9jYWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZH
TmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhl
aWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQp
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFNjcmlwdFR5cGUo
KSBjb25zdAogewpAQCAtMTA0LDEwICsxMDEsMTAgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRD
b250ZW50U3R5bGVUeXBlKAogCiBGbG9hdFJlY3QgU1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQoKSBj
b25zdAogewotICAgIGRvdWJsZSBfeCA9IHgoKS0+dmFsdWUoKTsKLSAgICBkb3VibGUgX3kgPSB5
KCktPnZhbHVlKCk7Ci0gICAgZG91YmxlIHcgPSB3aWR0aCgpLT52YWx1ZSgpOwotICAgIGRvdWJs
ZSBoID0gaGVpZ2h0KCktPnZhbHVlKCk7CisgICAgZG91YmxlIF94ID0geCgpLnZhbHVlKCk7Cisg
ICAgZG91YmxlIF95ID0geSgpLnZhbHVlKCk7CisgICAgZG91YmxlIHcgPSB3aWR0aCgpLnZhbHVl
KCk7CisgICAgZG91YmxlIGggPSBoZWlnaHQoKS52YWx1ZSgpOwogICAgIEFmZmluZVRyYW5zZm9y
bSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1RyYW5zZm9ybSh3LCBoKTsKICAgICB2aWV3Qm94Lm1h
cChfeCwgX3ksICZfeCwgJl95KTsKICAgICB2aWV3Qm94Lm1hcCh3LCBoLCAmdywgJmgpOwpAQCAt
MTkwLDE1ICsxODcsMTUgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZQogICAgICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9uem9vbUF0dHIp
CiAgICAgICAgICAgICBhZGRTVkdXaW5kb3dFdmVudExpc3RuZXIoem9vbUV2ZW50LCBhdHRyKTsK
ICAgICB9Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAg
ICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKLSAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgeUJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6d2lkdGhBdHRyKSB7Ci0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZh
bHVlQXNTdHJpbmcodmFsdWUpOworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhB
dHRyKQorICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0
cikKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRo
QXR0cikgeworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NfUFJP
UF9XSURUSCwgdmFsdWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
OjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3Ry
aW5nKHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBD
U1NfUFJPUF9IRUlHSFQsIHZhbHVlKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoU1ZHVGVz
dHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQpAQCAtMjc2LDkgKzI3Myw5IEBAIGRvdWJs
ZSBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdOdW1iZXIoKQogICAgIHJldHVybiAwLjA7CiB9CiAK
LVNWR0xlbmd0aCogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTGVuZ3RoKCkKK1NWR0xlbmd0aCBT
VkdTVkdFbGVtZW50OjpjcmVhdGVTVkdMZW5ndGgoKQogewotICAgIHJldHVybiBuZXcgU1ZHTGVu
Z3RoKDApOworICAgIHJldHVybiBTVkdMZW5ndGgoKTsKIH0KIAogU1ZHQW5nbGUqIFNWR1NWR0Vs
ZW1lbnQ6OmNyZWF0ZVNWR0FuZ2xlKCkKQEAgLTMxNiwxMCArMzEzLDEwIEBAIFNWR1RyYW5zZm9y
bSogU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHVHIKIEFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVt
ZW50OjpnZXRDVE0oKSBjb25zdAogewogICAgIEFmZmluZVRyYW5zZm9ybSBtYXQ7Ci0gICAgbWF0
LnRyYW5zbGF0ZSh4KCktPnZhbHVlKCksIHkoKS0+dmFsdWUoKSk7CisgICAgbWF0LnRyYW5zbGF0
ZSh4KCkudmFsdWUoKSwgeSgpLnZhbHVlKCkpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMoKS0+Z2V0
TmFtZWRJdGVtKFNWR05hbWVzOjp2aWV3Qm94QXR0cikpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNm
b3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhl
aWdodCgpLT52YWx1ZSgpKTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3ggPSB2aWV3
Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KCkudmFsdWUoKSk7CiAg
ICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCkBAIC0zMjksMTAgKzMyNiwxMCBA
QCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKCkgCiBBZmZpbmVUcmFuc2Zv
cm0gU1ZHU1ZHRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKIHsKICAgICBBZmZpbmVUcmFu
c2Zvcm0gbWF0ID0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCk7Ci0g
ICAgbWF0LnRyYW5zbGF0ZSh4KCktPnZhbHVlKCksIHkoKS0+dmFsdWUoKSk7CisgICAgbWF0LnRy
YW5zbGF0ZSh4KCkudmFsdWUoKSwgeSgpLnZhbHVlKCkpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMo
KS0+Z2V0TmFtZWRJdGVtKFNWR05hbWVzOjp2aWV3Qm94QXR0cikpIHsKLSAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVl
KCksIGhlaWdodCgpLT52YWx1ZSgpKTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3gg
PSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KCkudmFsdWUo
KSk7CiAgICAgICAgIG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCkBAIC00MTAsNiArNDA3
LDYgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKEF0dAogCiB9CiAKLS8v
IHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0
CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAxODI2MCkKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIsNiArMjIsNyBAQAogCiAjaWZuZGVm
IFNWR1NWR0VsZW1lbnRfSAogI2RlZmluZSBTVkdTVkdFbGVtZW50X0gKKwogI2lmZGVmIFNWR19T
VVBQT1JUCiAKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCkBAIC0x
MDQsNyArMTA1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdm9pZCBkZXNlbGVjdEFs
bCgpOwogCiAgICAgICAgIHN0YXRpYyBkb3VibGUgY3JlYXRlU1ZHTnVtYmVyKCk7Ci0gICAgICAg
IHN0YXRpYyBTVkdMZW5ndGgqIGNyZWF0ZVNWR0xlbmd0aCgpOworICAgICAgICBzdGF0aWMgU1ZH
TGVuZ3RoIGNyZWF0ZVNWR0xlbmd0aCgpOwogICAgICAgICBzdGF0aWMgU1ZHQW5nbGUqIGNyZWF0
ZVNWR0FuZ2xlKCk7CiAgICAgICAgIHN0YXRpYyBGbG9hdFBvaW50IGNyZWF0ZVNWR1BvaW50KCk7
CiAgICAgICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gY3JlYXRlU1ZHTWF0cml4KCk7CkBAIC0x
MzksMTAgKzE0MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIEZsb2F0UmVjdCwgVmll
d0JveCwgdmlld0JveCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJB
VElPTlMoU1ZHRml0VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKiwgUHJlc2VydmVB
c3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xl
bmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdT
VkdFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCos
IFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVu
Z3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwg
U1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0
aCwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKIAogICAgICAgICBib29sIG1fdXNlQ3VycmVu
dFZpZXc7CiAgICAgICAgIFRpbWVTY2hlZHVsZXIqIG1fdGltZVNjaGVkdWxlcjsKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzMsMTQgKzEzMyw2IEBAIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6dXBkYXRlQ2FudmFzSXRlbSgK
ICAgICBtX3VwZGF0ZVZlY3RvcmlhbCA9IGZhbHNlOwogfQogCi1jb25zdCBTVkdTdHlsZWRFbGVt
ZW50KiBTVkdTdHlsZWRFbGVtZW50OjpwdXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHls
ZWRFbGVtZW50KikKLXsKLSAgICBpZiAodmlldygpKQotICAgICAgICBzdGF0aWNfY2FzdDxSZW5k
ZXJQYXRoKj4ocmVuZGVyZXIoKSktPnNldFBhdGgodG9QYXRoRGF0YSgpKTsKLQotICAgIHJldHVy
biAwOwotfQotCiB9CiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGFibGUuaCIKICNpbmNsdWRlICJTVkdS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIlBhdGguaCIKQEAgLTU2LDE3ICs1NywxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2Uo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRl
KiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOwogCi0gICAgICAgIC8vIEltYWdpbmUgd2Un
cmUgYSA8cmVjdD4gaW5zaWRlIG9mIGEgPHBhdHRlcm4+IHNlY3Rpb24gd2l0aCBwYXR0ZXJuQ29u
dGVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIKLSAgICAgICAgLy8gYW5kIG91ciAnd2lkdGgn
IGF0dHJpYnV0ZSBpcyBzZXQgdG8gNTAlLiBXaGVuIHRoZSBwYXR0ZXJuIGdldHMgcmVmZXJlbmNl
ZCBpdCBrbm93cyB0aGUgImJib3giCi0gICAgICAgIC8vIG9mIGl0J3MgdXNlciBhbmQgaGFzIHRv
IHB1c2ggdGhlICJhY3RpdmUgY2xpZW50J3MgYmJveCIgYXMgbmV3IGF0dHJpYnV0ZSBjb250ZXh0
IHRvIGFsbCBhdHRyaWJ1dGVzCi0gICAgICAgIC8vIG9mIHRoZSAncmVjdCcuIFRoaXMgZnVuY3Rp
b24gYWxzbyByZXR1cm5zIHRoZSBvbGQgYXR0cmlidXRlIGNvbnRleHQsIHRvIGJlIGFibGUgdG8g
cmVzdG9yZSBpdC4uLgotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1
c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOwotCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLQogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCB1cGRhdGVDYW52YXNJdGVt
KCk7IC8vIEhhbmRsZXMgInBhdGggZGF0YSIgb2JqZWN0IGNoYW5nZXMuLi4gKG5vdCBmb3Igc3R5
bGUvdHJhbnNmb3JtISkKIAorICAgICAgICBmcmllbmQgY2xhc3MgUmVuZGVyUGF0aDsKKyAgICAg
ICAgdmlydHVhbCBib29sIGhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8Q1NTU3R5bGVEZWNs
YXJhdGlvbj4gbV9wYTsKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R1N0eWxlZEVsZW1lbnQsIFN0cmluZywgU3RyaW5nLCBDbGFzc05hbWUsIGNsYXNzTmFtZSkKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNp
b24gMTgyNjApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIFNWR1RleHRDb250ZW50RWxlbWVudDo6
U1ZHVGV4dENvbnRlbnRFbGUKICAgICAsIFNWR1Rlc3RzKCkKICAgICAsIFNWR0xhbmdTcGFjZSgp
CiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIG1fdGV4dExlbmd0
aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRIKSkKKyAgICAsIG1fdGV4dExlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlV2lkdGgpCiAgICAgLCBtX2xlbmd0aEFkanVzdCgwKQogewogfQpAQCAtNDYs
NyArNDYsNyBAQCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6On5TVkdUZXh0Q29udGVudEVsCiB7CiB9
CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwg
U1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFRleHRMZW5ndGgsIHRleHRMZW5ndGgsIFNWR05h
bWVzOjp0ZXh0TGVuZ3RoQXR0ci5sb2NhbE5hbWUoKSwgbV90ZXh0TGVuZ3RoLmdldCgpKQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBUZXh0TGVuZ3RoLCB0ZXh0TGVuZ3RoLCBTVkdOYW1lczo6dGV4
dExlbmd0aEF0dHIubG9jYWxOYW1lKCksIG1fdGV4dExlbmd0aCkKIEFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51
bWVyYXRpb24sIExlbmd0aEFkanVzdCwgbGVuZ3RoQWRqdXN0LCBTVkdOYW1lczo6bGVuZ3RoQWRq
dXN0QXR0ci5sb2NhbE5hbWUoKSwgbV9sZW5ndGhBZGp1c3QpCiAKIGxvbmcgU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpnZXROdW1iZXJPZkNoYXJzKCkgY29uc3QKQEAgLTk2LDcgKzk2LDcgQEAgdm9p
ZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnNlbGVjdFN1YlN0cgogdm9pZCBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsK
ICAgICAvL2lmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpCi0g
ICAgLy8gICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAvLyAg
ICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7
CiAgICAgLy9lbHNlCiAgICAgewogICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKGF0dHIpKQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmgJKHJldmlzaW9uIDE4MjYwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRf
REVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZH
TGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFRleHRMZW5ndGgsIHRleHRMZW5ndGgpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQs
IFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBUZXh0TGVuZ3RoLCB0ZXh0TGVuZ3RoKQogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBpbnQs
IGludCwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QpCiAgICAgfTsKIApJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdUZXh0LmgiCisjaW5jbHVkZSAiU1ZHSGVscGVyLmgiCiAjaW5j
bHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclN0eWxlLmgiCiAjaW5j
bHVkZSAiU1ZHVFNwYW5FbGVtZW50LmgiCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsMTMgKzU2LDEzIEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VN
YXAKICAgICBjb25zdCBTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICAKICAgICBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgp
LT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRoaXMsIExNX1dJRFRIKTsKKyAgICAg
ICAgeEJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRoaXMsIExl
bmd0aE1vZGVXaWR0aCk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5
QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5n
KCksIHRoaXMsIExNX0hFSUdIVCk7CisgICAgICAgIHlCYXNlVmFsdWUoKS0+cGFyc2UodmFsdWUu
ZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KTsKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmR4QXR0cikKLSAgICAgICAgZHhCYXNlVmFsdWUo
KS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMTV9XSURUSCk7CisgICAg
ICAgIGR4QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdGhpcywg
TGVuZ3RoTW9kZVdpZHRoKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OmR5QXR0cikKLSAgICAgICAgZHlCYXNlVmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0
cmluZygpLCB0aGlzLCBMTV9IRUlHSFQpOworICAgICAgICBkeUJhc2VWYWx1ZSgpLT5wYXJzZSh2
YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpOwogICAgIGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cm90YXRlQXR0cikKICAgICAgICAgcm90
YXRlQmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CiAgICAgZWxz
ZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjYwKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZH
VXNlRWxlbWVudC5oIgogCkBAIC00MiwxMCArNDMsMTAgQEAgU1ZHVXNlRWxlbWVudDo6U1ZHVXNl
RWxlbWVudChjb25zdCBRdWFsaQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZHVVJJUmVmZXJlbmNlKCkKLSAgICAsIG1f
eChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAg
LCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkK
LSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVt
ZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZp
ZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAg
LCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKIH0K
IApAQCAtNTMsMjMgKzU0LDIzIEBAIFNWR1VzZUVsZW1lbnQ6On5TVkdVc2VFbGVtZW50KCkKIHsK
IH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVu
Z3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwg
bV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5h
bWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6
OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBI
ZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0
LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgp
LCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCks
IG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5s
b2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1Vz
ZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdO
YW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCiAKIHZvaWQgU1ZHVXNlRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIAogICAgIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCkt
PnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0
aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFz
U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKFNW
R1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTkzLDggKzk0LDggQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpjbG9zZVJlbmRlcmVyKCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZsb2F0IF94ID0geCgpLT52YWx1ZSgpLCBfeSA9
IHkoKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfdyA9IHdpZHRoKCktPnZhbHVlKCksIF9oID0gaGVp
Z2h0KCktPnZhbHVlKCk7CisgICAgZmxvYXQgX3ggPSB4KCkudmFsdWUoKSwgX3kgPSB5KCkudmFs
dWUoKTsKKyAgICBmbG9hdCBfdyA9IHdpZHRoKCkudmFsdWUoKSwgX2ggPSBoZWlnaHQoKS52YWx1
ZSgpOwogICAgIAogICAgIFN0cmluZyB3U3RyaW5nID0gU3RyaW5nOjpudW1iZXIoX3cpOwogICAg
IFN0cmluZyBoU3RyaW5nID0gU3RyaW5nOjpudW1iZXIoX2gpOwpAQCAtMTU4LDYgKzE1OSw2IEBA
IFJlbmRlck9iamVjdCogU1ZHVXNlRWxlbWVudDo6Y3JlYXRlUmVuZGUKIAogfQogCi0vLyB2aW06
dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRl
eDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2aXNpb24gMTgyNjApCisrKyBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBCb3N0b24sIE1BIDAy
MTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdVc2VFbGVtZW50SW1wbF9ICi0j
ZGVmaW5lIEtTVkdfU1ZHVXNlRWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdVc2VFbGVtZW50X0gK
KyNkZWZpbmUgU1ZHVXNlRWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVk
ZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNjMsMTAgKzY0LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBI
cmVmLCBocmVmKQogCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdV
c2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCos
IFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdp
ZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1Vz
ZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNW
R0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5n
dGgsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwg
aGVpZ2h0KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjQsOCArNTY0LDggQEAgc3RhdGljIEN1cnNvciBzZWxl
Y3RDdXJzb3IoY29uc3QgTW91c2VFdgogICAgICAgICAgICAgaWYgKCFjaW1hZ2UpIHsKICAgICAg
ICAgICAgICAgICBFbGVtZW50KiBlID0gbm9kZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQo
KCpjdXJzb3JzKVtpXS5jdXJzb3JGcmFnbWVudElkKTsKICAgICAgICAgICAgICAgICBpZiAoZSAm
JiBlLT5oYXNUYWdOYW1lKGN1cnNvclRhZykpIHsKLSAgICAgICAgICAgICAgICAgICAgaG90U3Bv
dC5zZXRYKGludChzdGF0aWNfY2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPngoKS0+dmFsdWUo
KSkpOwotICAgICAgICAgICAgICAgICAgICBob3RTcG90LnNldFkoaW50KHN0YXRpY19jYXN0PFNW
R0N1cnNvckVsZW1lbnQqPihlKS0+eSgpLT52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgICAg
IGhvdFNwb3Quc2V0WChpbnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT54KCku
dmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAgICBob3RTcG90LnNldFkoaW50KHN0YXRpY19j
YXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eSgpLnZhbHVlKCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgY2ltYWdlID0gc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT5jYWNoZWRJ
bWFnZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBAIFJlbmRlckZvcmVpZ25PYmplY3Q6OlJlbmRlckZvcmVpZ25PYmplY3QK
IEFmZmluZVRyYW5zZm9ybSBSZW5kZXJGb3JlaWduT2JqZWN0Ojp0cmFuc2xhdGlvbkZvckF0dHJp
YnV0ZXMoKQogewogICAgIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KiBmb3JlaWduID0gc3RhdGlj
X2Nhc3Q8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQqPihlbGVtZW50KCkpOwotICAgIHJldHVybiBB
ZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoZm9yZWlnbi0+eCgpLT52YWx1ZSgpLCBmb3JlaWdu
LT55KCktPnZhbHVlKCkpOworICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUo
Zm9yZWlnbi0+eCgpLnZhbHVlKCksIGZvcmVpZ24tPnkoKS52YWx1ZSgpKTsKIH0KIAogdm9pZCBS
ZW5kZXJGb3JlaWduT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHBhcmVu
dFgsIGludCBwYXJlbnRZKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwCShyZXZpc2lvbiAxODI2MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0Nv
bnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxNSArMjA2LDE1IEBAIHZvaWQgUmVu
ZGVyU1ZHQ29udGFpbmVyOjpjYWxjVmlld3BvcnQoKQogICAgIFNWR0VsZW1lbnQqIHN2Z2VsZW0g
PSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oZWxlbWVudCgpKTsKICAgICBpZiAoc3ZnZWxlbS0+
aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKSkgewogICAgICAgICBTVkdTVkdFbGVtZW50KiBz
dmcgPSBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4oZWxlbWVudCgpKTsKLSAgICAgICAgZG91
YmxlIHggPSBzdmctPngoKS0+dmFsdWUoKTsKLSAgICAgICAgZG91YmxlIHkgPSBzdmctPnkoKS0+
dmFsdWUoKTsKLSAgICAgICAgZG91YmxlIHcgPSBzdmctPndpZHRoKCktPnZhbHVlKCk7Ci0gICAg
ICAgIGRvdWJsZSBoID0gc3ZnLT5oZWlnaHQoKS0+dmFsdWUoKTsKKyAgICAgICAgZG91YmxlIHgg
PSBzdmctPngoKS52YWx1ZSgpOworICAgICAgICBkb3VibGUgeSA9IHN2Zy0+eSgpLnZhbHVlKCk7
CisgICAgICAgIGRvdWJsZSB3ID0gc3ZnLT53aWR0aCgpLnZhbHVlKCk7CisgICAgICAgIGRvdWJs
ZSBoID0gc3ZnLT5oZWlnaHQoKS52YWx1ZSgpOwogICAgICAgICBtX3ZpZXdwb3J0ID0gRmxvYXRS
ZWN0KHgsIHksIHcsIGgpOwogICAgIH0gZWxzZSBpZiAoc3ZnZWxlbS0+aGFzVGFnTmFtZShTVkdO
YW1lczo6bWFya2VyVGFnKSkgewogICAgICAgICBTVkdNYXJrZXJFbGVtZW50KiBzdmcgPSBzdGF0
aWNfY2FzdDxTVkdNYXJrZXJFbGVtZW50Kj4oZWxlbWVudCgpKTsKLSAgICAgICAgICAgIGRvdWJs
ZSB3ID0gc3ZnLT5tYXJrZXJXaWR0aCgpLT52YWx1ZSgpOwotICAgICAgICBkb3VibGUgaCA9IHN2
Zy0+bWFya2VySGVpZ2h0KCktPnZhbHVlKCk7CisgICAgICAgIGRvdWJsZSB3ID0gc3ZnLT5tYXJr
ZXJXaWR0aCgpLnZhbHVlKCk7CisgICAgICAgIGRvdWJsZSBoID0gc3ZnLT5tYXJrZXJIZWlnaHQo
KS52YWx1ZSgpOwogICAgICAgICBtX3ZpZXdwb3J0ID0gRmxvYXRSZWN0KDAsIDAsIHcsIGgpOwog
ICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9u
IDE4MjYwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KCkK
IEZsb2F0UmVjdCBSZW5kZXJTVkdJbWFnZTo6cmVsYXRpdmVCQm94KGJvb2wgaW5jbHVkZVN0cm9r
ZSkgY29uc3QKIHsKICAgICBTVkdJbWFnZUVsZW1lbnQgKmltYWdlID0gc3RhdGljX2Nhc3Q8U1ZH
SW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KGltYWdlLT54KCkt
PnZhbHVlKCksIGltYWdlLT55KCktPnZhbHVlKCksIHdpZHRoKCksIGhlaWdodCgpKTsKKyAgICBy
ZXR1cm4gRmxvYXRSZWN0KGltYWdlLT54KCkudmFsdWUoKSwgaW1hZ2UtPnkoKS52YWx1ZSgpLCB3
aWR0aCgpLCBoZWlnaHQoKSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdl
ZChDYWNoZWRJbWFnZSogaW1hZ2UpCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBSZW5kZXJTVkdJ
bWFnZTo6aW1hZ2VDaGFuZ2VkKENhY2hlZAogSW50UmVjdCBSZW5kZXJTVkdJbWFnZTo6Z2V0QWJz
b2x1dGVSZXBhaW50UmVjdCgpCiB7CiAgICAgU1ZHSW1hZ2VFbGVtZW50ICppbWFnZSA9IHN0YXRp
Y19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7Ci0gICAgRmxvYXRSZWN0IHJlcGFpbnRS
ZWN0ID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0UmVjdChpbWFnZS0+eCgpLT52
YWx1ZSgpLCBpbWFnZS0+eSgpLT52YWx1ZSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkpOworICAgIEZs
b2F0UmVjdCByZXBhaW50UmVjdCA9IGFic29sdXRlVHJhbnNmb3JtKCkubWFwUmVjdChGbG9hdFJl
Y3QoaW1hZ2UtPngoKS52YWx1ZSgpLCBpbWFnZS0+eSgpLnZhbHVlKCksIHdpZHRoKCksIGhlaWdo
dCgpKSk7CiAKICAgICAvLyBGaWx0ZXJzIGNhbiBleHBhbmQgdGhlIGJvdW5kaW5nIGJveAogICAg
IFNWR1Jlc291cmNlRmlsdGVyICpmaWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKGRvY3VtZW50KCksIHN0
eWxlKCktPnN2Z1N0eWxlKCktPmZpbHRlcigpLnN1YnN0cmluZygxKSk7CkBAIC0yNTYsNyArMjU2
LDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6YWJzb2x1dGVSZWN0cyhWZWN0bwogQWZmaW5lVHJh
bnNmb3JtIFJlbmRlclNWR0ltYWdlOjp0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMoKQogewogICAg
IFNWR0ltYWdlRWxlbWVudCAqaW1hZ2UgPSBzdGF0aWNfY2FzdDxTVkdJbWFnZUVsZW1lbnQqPihu
b2RlKCkpOwotICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoaW1hZ2UtPngo
KS0+dmFsdWUoKSwgaW1hZ2UtPnkoKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIEFmZmluZVRyYW5z
Zm9ybSgpLnRyYW5zbGF0ZShpbWFnZS0+eCgpLnZhbHVlKCksIGltYWdlLT55KCkudmFsdWUoKSk7
CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwCShyZXZpc2lvbiAx
ODI2MCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw4ICs2Niw4IEBAIHZvaWQgUmVuZGVyU1ZHVGV4dDo6bGF5b3V0KCkKICAgICAg
ICAgb2xkQm91bmRzID0gbV9hYnNvbHV0ZUJvdW5kczsKICAgICBTVkdUZXh0RWxlbWVudCogdGV4
dCA9IHN0YXRpY19jYXN0PFNWR1RleHRFbGVtZW50Kj4oZWxlbWVudCgpKTsKICAgICAvL0ZJWE1F
OiAgbmVlZCB0byBhbGxvdyBmbG9hdGluZyBwb2ludCBwb3NpdGlvbnMKLSAgICBpbnQgeE9mZnNl
dCA9IChpbnQpKHRleHQtPngoKS0+Z2V0Rmlyc3QoKSA/IHRleHQtPngoKS0+Z2V0Rmlyc3QoKS0+
dmFsdWUoKSA6IDApOwotICAgIGludCB5T2Zmc2V0ID0gKGludCkodGV4dC0+eSgpLT5nZXRGaXJz
dCgpID8gdGV4dC0+eSgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpIDogMCk7CisgICAgaW50IHhPZmZz
ZXQgPSAoaW50KSh0ZXh0LT54KCktPmdldEZpcnN0KCkudmFsdWUoKSk7CisgICAgaW50IHlPZmZz
ZXQgPSAoaW50KSh0ZXh0LT55KCktPmdldEZpcnN0KCkudmFsdWUoKSk7CiAgICAgc2V0UG9zKHhP
ZmZzZXQsIHlPZmZzZXQpOwogICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKICAgICAKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1NWR0lubGluZUZsb3dCb3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1NWR0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lvbiAxODI2MCkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL1NWR0lubGluZUZsb3dCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjUsOSArMTI1LDggQEAgc3RhdGljIGJvb2wgdHJhbnNsYXRlQm94KElubGluZUJveCogYm94
LAogICAgICAgICBJbmxpbmVGbG93Qm94KiBmbG93ID0gc3RhdGljX2Nhc3Q8SW5saW5lRmxvd0Jv
eCo+KGJveCk7CiAgICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqIHRleHQgPSBzdGF0
aWNfY2FzdDxTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Kj4oYm94LT5vYmplY3QoKS0+ZWxlbWVu
dCgpKTsKICAgICAgICAgCi0gICAgICAgIGlmICh0b3BMZXZlbHx8ISh0ZXh0LT54KCktPmdldEZp
cnN0KCkgfHwgdGV4dC0+eSgpLT5nZXRGaXJzdCgpIHx8IAotICAgICAgICAgICAgICAgICAgICAg
ICAgKHRleHQtPmR4KCktPmdldEZpcnN0KCkgJiYgdGV4dC0+ZHgoKS0+Z2V0Rmlyc3QoKS0+dmFs
dWUoKSkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICh0ZXh0LT5keSgpLT5nZXRGaXJzdCgp
ICYmIHRleHQtPmR5KCktPmdldEZpcnN0KCktPnZhbHVlKCkpKSkgeworICAgICAgICBpZiAodG9w
TGV2ZWwgfHwgISh0ZXh0LT54KCktPmdldEZpcnN0KCkudmFsdWUoKSB8fCB0ZXh0LT55KCktPmdl
dEZpcnN0KCkudmFsdWUoKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LT5keCgp
LT5nZXRGaXJzdCgpLnZhbHVlKCkgfHwgdGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpKSkg
ewogICAgICAgICAgICAgYm94LT5zZXRYUG9zKGJveC0+eFBvcygpICsgeCk7CiAgICAgICAgICAg
ICBib3gtPnNldFlQb3MoYm94LT55UG9zKCkgKyB5KTsKICAgICAgICAgICAgIGZvciAoSW5saW5l
Qm94KiBjdXJyID0gZmxvdy0+Zmlyc3RDaGlsZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dE9u
TGluZSgpKSAKQEAgLTE2OCwxMiArMTY3LDEzIEBAIHN0YXRpYyBpbnQgcGxhY2VQb3NpdGlvbmVk
Qm94ZXNIb3Jpem9udGEKICAgICAgICAgICAgIGFzc2VydChjdXJyLT5vYmplY3QoKS0+aXNJbmxp
bmVGbG93KCkpOwogICAgICAgICAgICAgSW5saW5lRmxvd0JveCogZmxvdyA9IHN0YXRpY19jYXN0
PElubGluZUZsb3dCb3gqPihjdXJyKTsKICAgICAgICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQqIHRleHQgPSBzdGF0aWNfY2FzdDxTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Kj4oZmxv
dy0+b2JqZWN0KCktPmVsZW1lbnQoKSk7Ci0gICAgICAgICAgICB4ICs9IChpbnQpKHRleHQtPmR4
KCktPmdldEZpcnN0KCkgPyB0ZXh0LT5keCgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpIDogMCk7Ci0g
ICAgICAgICAgICBpZiAodGV4dC0+eCgpLT5nZXRGaXJzdCgpKQotICAgICAgICAgICAgICAgIHgg
PSAoaW50KSh0ZXh0LT54KCktPmdldEZpcnN0KCktPnZhbHVlKCkgLSB4UG9zKTsKLSAgICAgICAg
ICAgIGlmICh0ZXh0LT54KCktPmdldEZpcnN0KCkgfHwgdGV4dC0+eSgpLT5nZXRGaXJzdCgpIHx8
IAotICAgICAgICAgICAgICAgICh0ZXh0LT5keCgpLT5nZXRGaXJzdCgpICYmIHRleHQtPmR4KCkt
PmdldEZpcnN0KCktPnZhbHVlKCkpIHx8Ci0gICAgICAgICAgICAgICAgKHRleHQtPmR5KCktPmdl
dEZpcnN0KCkgJiYgdGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSkpIHsKKyAgICAgICAg
ICAgIHggKz0gKGludCkodGV4dC0+ZHgoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpKTsKKyAgICAgICAg
ICAgIGlmICh0ZXh0LT54KCktPm51bWJlck9mSXRlbXMoKSA+IDApCisgICAgICAgICAgICAgICAg
eCA9IChpbnQpKHRleHQtPngoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpIC0geFBvcyk7CisgICAgICAg
ICAgICBpZiAodGV4dC0+eCgpLT5udW1iZXJPZkl0ZW1zKCkgPiAwIHx8CisgICAgICAgICAgICAg
ICAgdGV4dC0+eSgpLT5udW1iZXJPZkl0ZW1zKCkgPiAwIHx8CisgICAgICAgICAgICAgICAgdGV4
dC0+ZHgoKS0+bnVtYmVyT2ZJdGVtcygpID4gMCB8fAorICAgICAgICAgICAgICAgIHRleHQtPmR5
KCktPm51bWJlck9mSXRlbXMoKSA+IDApIHsKICAgICAgICAgICAgICAgICBzZWVuUG9zaXRpb25l
ZEVsZW1lbnQgPSB0cnVlOwogICAgICAgICAgICAgICAgIG5lZWRzV29yZFNwYWNpbmcgPSBmYWxz
ZTsKICAgICAgICAgICAgICAgICBpbnQgaWdub3JlWCwgaWdub3JlWTsKQEAgLTIzNiw5ICsyMzYs
OSBAQCBzdGF0aWMgdm9pZCBwbGFjZUJveGVzVmVydGljYWxseVdpdGhBYnNCCiAgICAgZm9yIChJ
bmxpbmVCb3gqIGN1cnIgPSBmbG93LT5maXJzdENoaWxkKCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5u
ZXh0T25MaW5lKCkpIHsKICAgICAgICAgaWYgKGN1cnItPmlzSW5saW5lRmxvd0JveCgpKSB7CiAg
ICAgICAgICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCo+KGN1cnItPm9iamVjdCgpLT5lbGVtZW50KCkpOwot
ICAgICAgICAgICAgYmFzZWxpbmUgKz0gKGludCkodGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKSA/IHRl
eHQtPmR5KCktPmdldEZpcnN0KCktPnZhbHVlKCkgOiAwKTsKLSAgICAgICAgICAgIGlmICh0ZXh0
LT55KCktPmdldEZpcnN0KCkpIHsKLSAgICAgICAgICAgICAgICBiYXNlbGluZSA9IChpbnQpKHRl
eHQtPnkoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSAtIHlQb3MpOworICAgICAgICAgICAgYmFzZWxp
bmUgKz0gKGludCkodGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpKTsKKyAgICAgICAgICAg
IGlmICh0ZXh0LT55KCktPm51bWJlck9mSXRlbXMoKSA+IDApIHsKKyAgICAgICAgICAgICAgICBi
YXNlbGluZSA9IChpbnQpKHRleHQtPnkoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpIC0geVBvcyk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBwbGFjZUJveGVzVmVydGljYWxseVdpdGhBYnNCYXNl
bGluZShzdGF0aWNfY2FzdDxJbmxpbmVGbG93Qm94Kj4oY3VyciksIGhlaWdodE9mQmxvY2ssIG1p
bl95LCBtYXhfeSwgYmFzZWxpbmUsIHlQb3MpOwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvVzNDLVNWRy0xLjEvY29vcmRzLXVuaXRzLTAxLWItZXhwZWN0ZWQucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1l
LXR5cGUgPSBpbWFnZS9wbmcKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFlQUFBQUZvQ0FZQUFB
Q1BOeWdnQUFBZ0FFbEVRVlI0bk96ZGVWd1U5LzAvOE5mQ0xwZGkKUkZ6eEFBR1BGSXdVRE9LQkVj
VUVxd2FOaGVJWk5WN0ZyeWJtTXRTa1VXTitCaVcxMGRqR2lESFdoS2lBcHRZRHhZQWdTRVFVd1Zi
agpHcEFjSlJwQUZCWGtXbmJmdnovb1RuYVh2WkJqaUx5ZlBuamc3c3g4NXZONXo4em56ZHdTSXFK
eDQ4YUJNY1lZWSswakl5TUQwdURnCllHUm1abUw4K1BGaTE0Y3h4aGg3NUowK2ZScmp4bzJERkFD
Q2dvS1FucDR1ZHAwWVk0eXhSMTV3Y0REVWFqV3N4SzRJWTR3eDFobHgKQW1hTU1jWkV3QW1ZTWNZ
WUV3RW5ZTVlZWTB3RW5JQVpZNHd4RVhBQ1pvd3h4a1RBQ1pneHhoZ1RBU2RneGhoalRBU2NnQmxq
akRFUgpjQUptakRIR1JNQUptREhHR0JNQkoyREdHR05NQkp5QUdXT01NUkZ3QW1hTU1jWkV3QW1Z
TWNZWUV3RW5ZQ05VS2hXdVhic21mTDU5Cit6WUtDd3ZiYkg1VlZWVzRjZU5HbTVYZlVuVjFkVGg3
OXV4RFRkdldzUk5UZTY4bnJhbTZ1bHJzS25RNit1dUxNV1ZsWlVoTFM4T2QKTzNmYXRENnR1YjQr
ZVBDZ1ZjcnBURVJMd0NkUG5rUklTQWdrRWdtR0RoMktlZlBtNFlVWFhzRGl4WXV4YmRzMktKVktz
YXFHQ3hjdQp3TS9QRDMvODR4K0Y3OWF1WFl2cDA2ZTN5ZnhpWTJQaDdPeU1Bd2NPdEVuNUxaV1Rr
NFBodzRjakxDenNvYVp2eTlpSnFiM1hrOVowCjd0dzVKQ1VsaVYyTlRzWFErbUxJenAwN0VSOGZq
NHlNRER6eHhCT29xNnRyc3pxMTV2cjY0NDgvSWlFaG9WWEs2alRHang5UFFVRkIKSkliMDlIUUNR
RnUyYkJHK3UzVHBFdG5iMjlPU0pVdEVxWlBHaXkrK1NCTW1UQkErbDVlWFUwRkJRWnZOejhYRlJT
Y09IYzNtelp2Sgp4Y1hGb25GcmEyc3BMUzFOK056V3NSTlRXNjRuK25Gc0xZbUppUjE2WFRPbXJl
TFJudlRYRjMxVlZWWFVwVXNYVXFsVVJFVDA5ZGRmCnQrcjgyM3JiTENnb29MZmVlcXZWeW50VWFm
S3VxSWVnblp5Y0FBQVNpVVQ0enRmWEZ3RUJBVGg5K3JRb2RWS3IxUUFBcVZRS0s2dGYKd3VQczdJ
ekJnd2MzdXp3aXNtZzhtVXltRTRlT3hzYkd4bUQ5R2hvYWRENHJsVXJNbXpjUFo4NmNFYjU3Mk5o
MVpLMjlubGdTUjB1WQpXOTlLU2txd2FkTW12UExLS3c4MXZWaE14VU0vZHRwYXN6Mm01bU9Pc2ZW
RjMrWExsMUZmWHkrTUV4Z1kyR3AxYW85dGMvRGd3VkNwClZIeDB4VUpTc1N1Zzc4R0RCL2oyMjIr
eGVQRmluZStycXFxd2V2VnEyTnJhb3Fpb0NQMzc5MGRNVEF6czdlMlJrSkNBMTE1N0RhdFgKcjha
TEw3MkUrUGg0ckZ1M0RzSEJ3ZGl4WXdmUzA5TVJHeHNMVjFkWGVIdDdJem82R2pLWkRDZE9uSUNu
cHllQXh2TmhxMWF0UXUvZQp2WEh6NWsxODg4MDNzTE96QXdEOC9QUFBpSXVMdzZGRGg1Q2RuVzF4
ZVZGUlVlalZxeGV5c3JMUW8wY1BEQnMyRElHQmdSZzdkcXpCCnRtdnFFQmNYQjFkWFYzenh4UmZ3
OXZZMjIvNkxGeS9pelRmZnhJMGJOL0RSUngvQjBkRVJpeFl0d211dnZZWUZDeFkwbVU5ZVhoNWkK
WTJNaGw4dGhiMitQclZ1M0lpa3BDZTd1N29pSmljSEZpeGRSVlZXRmp6NzZDS05HalRKWTExT25U
aUUzTnhjU2lRU0hEeDlHYkd3cwpoZzRkaXExYnQrTElrU080ZnYwNmlvcUtzSGJ0V256NTVaZEM3
STRkTzRZbFM1YkF6YzBOKy9mdng2QkJnM0QrL0hsRVJFVGdrMDgrCndjU0pFMUZhV21weFBXcHFh
ckJod3daMDY5WU5lWGw1Q0FnSXdLcFZxOHpHek54d1l6RWFPblJvcTY0bmxzWngrL2J0cUtxcU1o
cVgKaElRRTNMbHpCL2Z2MzhmaHc0ZU5ucTlmczJhTnpxbUUxTlJVZlBycHB4ZzBhQkNVU2lYMjdO
a0RHeHNiN042OUc4ODg4d3dBR0YwZQp4bUxrNCtOamRKa1lLOHRjckF6RjQ5eTVjd1pqWjhuMjE1
eDF6Tmd5YW1tL29tL1hybDA0ZVBBZ0dob2FzR0xGQ3RqYjIyUE9uRGtHClkxeFpXV20wN2NhMkNY
UGJwcmx0d3BMMkFzRHMyYlB4L1BQUFk5S2tTYkMydGpiWVZ2WS9ZaDZDdm5UcEVnR2dGMTU0Z2VM
ajQyblQKcGszazcrOVBjK2JNb2JLeU1wMXhnNEtDNlBQUFB5Y2lvdnI2ZWhveFlnU0Zob1lLdy92
MTYwZnZ2ZmVlOEhuaXhJa1VFUkZCUkVRbApKU1gwK09PUGs1ZVhGeDA5ZXBSKytPRUgrczF2ZmtO
TGx5NFZ4bi8yMldjcFBqNmVpSWhVS2hYMTdkdVhRa0pDaUlpb3JLeU1saTFiClJqMTc5clM0dkwv
OTdXLzArdXV2RXhIUjVjdVhDUURGeE1UUUR6LzhZREFXcnE2dTlNUVRUOUNSSTBjb0xTMk5QRHc4
YU1DQUFhUlUKS2kxcWYycHFLZ0dnRXlkTzBQSGp4K21ERHo0d0d2ZnM3R3h5Y25JaVB6OC9Pbmp3
SUVWR1JwSkNvYURKa3lmVC9mdjNTYVZTVVdSawpKTW5sY3Fxb3FDQWlvbTNidGxIdjNyMkppS2l1
cm83Njllc25ITXA2NTUxM0tEdzhYQ2pmdzhPRG9xT2pEY2FPaUdqSmtpVTBlUEJnCjRiTlNxYVRa
czJjVEVWRkRRNFBKZXVpYk5Ha1NaV2RuRXhGUmJtNHVBYUNMRnk5YUZETlR3dzNGcUtDZ29GWFhr
K2JFMFZSY2xFb2wKRFI4K1hKanUxVmRmRlE1aDZudnNzY2ZvNk5Hand1ZnZ2LytlZXZYcVJaNmVu
blRtekJuS3lNZ2dYMTlmY25Oek16dGZZekV5dGt4TQpsV1hKTnFVZEQzT3hNN1g5TldjZE16V2Zs
dllyaGlRbUpwS1ZsWlh3MlZDTXIxeTVZckx0cHJZSmM5dW1xVzNDa3ZacXBwUEpaSlNUCmsyTzBu
WjFkaHpnRXJhRlVLbEZTVW9KTGx5NmhyS3dNZFhWMXVIMzd0akE4T1RrWldWbFptRFZyRm9ER3c3
V0xGaTNDc1dQSGhML2MKN08zdGRRNlJPamc0Q0o5ZFhGd3djT0JBK1BqNElEUTBGTzd1N3Bnd1lR
SysvZlpiQUkwWHBCdy9maHkvKzkzdkFBQldWbGFZTW1XSwpVSlpjTG9lUGo0OXdPTXRjZVFBUUZ4
Y0haMmRuQU1EUW9VTWhsOHNCQU83dTdrYmpNSC8rZkV5ZE9oWEJ3Y0hZdEdrVHZ2dnVPNlNtCnBs
clUvcWVmZmhvelo4N0VXMis5aGJpNE9LeGN1ZExvZkVhTkdnVXZMeTk0ZTNzalBEd2NPM2JzUUg1
K1BvZ0laODZjUVhKeU12cjAKNllOYnQyNGhNek96eWZReW1ReGhZV0h3OWZVRjBIZ1lTNkZRNkl5
amliMSs3QURneFJkZlJHRmhJUzVjdUFDZ2NTOHNJaUlDQUpDWQptR2h4UGRMUzBwQ2ZuNCtSSTBj
Q0FQejkvYkZqeHc2NHU3dWJqWm01NFlaaWRQdjI3VlpkVDVvVFIxTnh1WHYzTGk1ZHVvVGp4NDhE
CkFKWXVYV3J3MEd0WldSbnUzYnVIWHIxNkNkOTVlSGpBemMwTjA2Wk53MU5QUFlXZ29DREV4OGVq
dUxnWUNvWEM1SHdOeGFpNHVOam8KTWpGVmxpWGJsSFk4ek1YTzFQYlhuSFhNMUh4YTJxOVl3bENN
aHd3WllyUk9wcllKL1JqcXI2L210Z2xMbDVGTUpvT1RreE1LQ2dxYQoxZGJPcUVNazRJQ0FBTHo4
OHN2WXYzOC9DZ29LVUZ4Y2pLZWZmbG80djNIKy9Ibkk1WExJWkRKaG1oRWpSZ0FBOHZQekxacUhS
Q0xSClNkQ09qbzZvcmEwRkFKdytmUnBlWGw3bzNyMjdNTHhyMTY0NjQrdFBiNm84eldkTmNnU0Ez
cjE3Q3h1Rk1ZODk5cGp3ZjgzaHNNTEMKUW92YnYzbnpaaFFVRk1EZjM5L3NvUjk3ZTN1aFV3S0E3
T3hzT0RzN3c4YkdCalkyTmhnelpneFNVbExnNysvZlpGcUpSSUp0MjdiaAo3dDI3aUltSlFVWkdC
aW9ySzV1TW8vMS8vZlA4L3Y3KytPS0xMd0EwWGhILzdMUFBOcnNlbVptWkNBd00xQ2s3TWpJU3pz
N09abU5tClNVejFZOVRhNjBsejRtZ3FMajE3OWtSWVdCaW1UcDJLRlN0V3dNUER3K0R5Lys2Nzd3
QUFQWHIwYURJUDdmRzl2THpnNU9TRTFOUlUKczh0RFAwYW1sb201c3N4dFU5cnhNQmM3VTl0ZmE2
N3JMZTFYTEtFZlkxTjFNaFYvL1JqcTE5K1NiY0tTWmFUNS90ZHlPNTZZT3R3NQpZRHM3Tzh5WU1R
T3JWcTFDVWxJU25udnVPVlJYVjZPOHZCeFZWVlhvMnJVckFNREh4d2RTcWJSVjdqMzc2YWVmVUY1
ZTN1VDdsbHdVCjllcXJyK0tGRjE3QTVjdVhZV3RyQ3djSEI0d2JOODdpNmQzZDNlSG82QWhIUjBm
Y3VISERvdmJMWkRMSTVYSzgvLzc3V0x4NHNjNkcKYjA1NWVUbWtVcWx3M3MrYzJOaFlaR1ZsWWZm
dTNkaTFheGZPbno5djhid0FZTkdpUlZpL2ZqMDJiTmdBT3pzNzJOallOTHNlcGFXbAp1SExsaXNG
aDV0YVpoMW1uMm1JOXNUU081dUt5Yjk4KzlPM2JGeDkrK0NIeTh2Snc4dVJKZE92V1RXY2NUU2R1
eVcwdFZsWldrRXFsCnpWNHZUQzJUNXBabGpxblltZHIrMm10ZGI0djF4VnlkVE1YZm5OYnNaNVZL
SlJ3Y0hCNnFIcDFKaDlnRDFxZFpRVlVxRllER3Y4aFYKS3BWd3lCSm9QSnpXME5BZ1hLUUUvSEts
WVhQMTdkc1h0MjdkYXRWREpsT21UTUhTcFV1Um5KeU0zTnhjcEtlbk4ydjZtemR2b3JLeQpFc09H
RGJPNC9XdldyTUh4NDhjaGtVaXdaczJhWnMzUDA5TVRLU2twT24vTkVwSEJxOUd2WHIySzVjdVhZ
L1BtelRwL0xXc3oxOG5NCm1UTUg5Ky9meDBzdnZZVGYvLzczRDFVUGQzZDNGQllXb3Fpb1NHZmMv
UHg4c3pHek5LYmFXbnM5YVU0Y1RjV2xwS1FFWldWbDJMSmwKQzVLVGszSDU4bVhFeDhjM0tjdlQw
eE4yZG5hNGQrK2V5WG9WRkJUZzl1M2JlUExKSjV1MVBBRFR5NlM1WlJtaWlZZTUySm5hL2xwNwpY
VGVtTGZvVmMzVXlGWDhOWTl2bXcyd1R4cFNXbHNMRHc2TlowM1JHb2laZ3pWTmV0QytscjZtcHdm
NzkreUdYeXpGKy9IZ0FRRVJFCkJGeGRYWkdTa2lLTWw1dWJDeTh2TDB5YU5BbEE0MTlxT1RrNXFL
K3Z4ODJiTjFGVVZLUnpIcm0rdmw0blFWZFhWd3NKZnViTW1aQksKcGRpeFk0Y3cvTnExYXlndkx4
ZkdxYTZ1UmsxTmpYQyt4RlI1QUxCKy9YbzgvdmpqV0xseUplYk1tU05jZVd1Szl2UnBhV21ZUG4w
NgpmSDE5TFdwL2NuSXlCZzhlREc5dmI4VEV4T0Rqano4MmVYaStvYUVCTlRVMXd1ZTVjK2VpdExR
VWtaR1JxS2lvUUZsWkdkNTk5MTNoCkZvWDYrbnJoNFNnS2hRSnF0UnBYcjE2RlNxVkNSa1lHYW10
clFVUWdJblR2M2gwLy9mUVRBS0Npb3FKSjdBQ2dlL2Z1Q0FzTFEwNU8Kam5DWXk1SjZhSnM1Y3li
czdPeXdjT0ZDS0JRS0tCUUtSRVZGd2MzTnpXek1MSW1wZm94YWV6MXBUaHhEUTBPTnh1WDI3ZHZD
QXhBbQpUcHlJNTU1N1R0aUQwV1psWllYZi92YTNCaE9DOXJhU25wNk9zV1BIWXVUSWtXYVhoNkVZ
R1ZzbWxxeGpwcllwN1hoY3VIREJaT3hNCmJYL05XY2ZNTGFPVzlpdjY3dCsvRDdWYXJmT1VNdjBZ
bTZyVGpCa3pqTVpmUDRiNjI2WWwyNFM1WlFRMHJrdEtwUklCQVFFRzI4aTAKaUhVVjlGZGZmVVVo
SVNFRWdOemQzV25Sb2tVVUVoSkMvdjcrTkh2MmJQcnZmLytyTTM1ZVhoNE5HVEtFL3ZLWHY5RHg0
OGRwMXF4WgpwRkFvaE9HblRwMGlaMmRuR2pCZ0FMM3h4aHUwYk5reWV2cnBweWt0TFkweU1qS29l
L2Z1MUxkdlg4ck96cVpMbHk3Um9FR0R5TmJXCmxyNzY2aXNpSXRxN2R5ODVPanFTdDdjM3paZ3hn
NlpPblVxQmdZRzBkKzlleXNuSm9kR2pSd3NQRFVsTlRUVmIzaXV2dkVJQUNBQloKVzF1VGk0c0xM
Visrbk9ycTZnekdZOTI2ZGVUajQwT2JObTJpalJzMzBzc3Z2MHozNzkrM3FQMXBhV25VdTNkdnVu
VHBFaEVSWGIxNgpsYXl0cmNuVDA5UGdsWWg3OSs2bExsMjZVSjgrZlNnaElVSDQvdU9QUHlaYlcx
dVNTQ1FrbDh2cDBLRkRSRVNVazVORC92NytCSUMyCmI5OU9GUlVWNU9mblIxMjdkcVdGQ3hkU1Vs
SVNPVGc0MFBQUFAwOTFkWFgwMWx0dmtVUWlvVVdMRnRHSkV5ZDBZcWZkL2xPblR0SEcKalJ1YjFN
OVlQUXc1ZE9nUXllVnlZVDNLeXNxeWVKMHhOZHhZakZwelBYbnc0SUhGY1N3dExUVWFseXRYcnRE
QWdRTXBOamFXRGg4KwpUTXVYTHhldW50ZVhsSlJFczJiTjB2bHUrUERoNU9mblIydldyS0gxNjlm
VHhJa1RxYVNreE96eU1CWWpVOHZFV0ZtV2JLUGE4ZmorCisrOU54czdjOW1mcE9tWnFHVm5TRDVo
YVgvU2RPM2VPeG80ZFN3Qm8xYXBWVkZSVVpEREc1dFliVS9FM3QyMmEyaVlzV1VaRVJIdjIKN0tI
cDA2Y2JqQ2RycE1tN290NkcxRnhxdFpvS0Nncm8rdlhyQm9mWDFkVlJkWFUxRVRWZUN0OWNEUTBO
ZE92V0xTSWlxcW1wZWZpSwpFbEYwZERRVkZCVFFmLzd6SC9yNjY2OHBLU21KRml4WVFDa3BLU2Fu
Ky9ubm40MTJudWJhM3hycTZ1cm8rdlhyUnV1Z1RSTnJvcWJ4CjFzVFJuTnJhMmhiWFE2MVc2eVFN
L1dHbVl2WXdNVzNOOVlTb2VYRTBGQmZOTFVjVkZSVlVWVlZsZG41VHBreWhIMy84VWZnOGZQaHcK
ZXUyMTE2aXFxcXJKN1grbTVtdUtxV1hTM0xLMDZjZkRXT3dzMmY1YWExMDNwN1hYRjB2cVpDcis1
cmJObHZZejA2Wk5vMisrK2VhaApwdTBzTkhsWE1uNzhlRktyMWNqSXlCQmpCL3lSdEhQblRpUW1K
aUkxTlZYbis1TW5UMkxnd0lFWU5HaVFTRFZqRExoeDR3WTJiTmlBCkxWdTJ3TTdPRGdFQkFRZ0tD
c0pmLy9wWHNhdldLbmo3RTgvYmI3K05rSkNRWmwxdzJoa0ZCd2REclZaM3ZLdWdId1dqUjQvR3lw
VXIKRVJFUkFYOS9mOVRVMUtDMHRCU2hvYUc4OFRQUjlldlhEMisvL1RiMjc5K1BCUXNXQ05kTVBD
cDQreE5IWm1ZbVFrTkRqVDVSakRYRgplOEJ0NU42OWU4ak16RVJKU1FtQ2c0TjV3MmNkMG1lZmZT
WmNsRE5nd0FETW5qMWI1QnExRHQ3K1dFZW0yUVBtQk13WVk0eTFJMDBDCjdwRDNBVFBHR0dPUE9r
N0FqREhHbUFnNEFUUEdHR01pNEFUTUdHT01pWUFUTUdPTU1TWUMwZTREVmt1c1VROGJLQ0V6K1dQ
Sk9HS08KMTBDbVgvdkhHR09NR2NKN3dJd3h4cGdJT0FFenhoaGpJdUFFekJoampJbUFFM0E3T1hy
MEtIeDhmQ0NSU0RCaHdnVDg0UTkvd0pneApZL0Q3My84ZTU4NmRFN3Q2akRIRzJoa240SFl5ZGVw
VUxGbXlCQUFRSFIyTmd3Y1BJak16RXoxNzlzUzRjZU9RbFpVbGNnMTExZFhWCklUMDlYZXhxTU1i
WUk0c1RjRHZxM3IwN0FFQWlrUUFBcksydDhmcnJyNk8rdmg1NzkrNFZzMm82bEVvbDVzMmJoek5u
empRWjF0RFEKWUhRNkltckxhakhHMkNPRlgwY29zbHUzYmdFQWV2ZnVEUUFvTFMxRlRFd01MbDY4
aUtxcUtuejAwVWNZTldvVTh2THlFQnNiQzdsYwpEbnQ3ZTJ6ZHVoVkpTVW53OGZIQmhnMGIwSzFi
TitUbDVTRWdJQUNyVnEweVdWWjZlanBpWTJQaDZ1b0tiMjl2UkVkSFF5YVQ0Y1NKCkUvRDA5TVRX
clZ0eDVNZ1JYTDkrSFVWRlJkaStmVHZPblR1SDNOeGNTQ1FTSEQ1OEdMR3hzUmc2ZENnQW9McTZH
bEZSVWVqVnF4ZXkKc3JMUW8wY1BEQnMyRElHQmdSZzdkcXpSZWpER1dHZkdlOEFpcXF1cncvLzdm
LzhQUFhyMHdOeTVjNkZTcWJCdzRVS3NYNzhlNmVucApDQWdJd0xScDAzRDM3bDNVMTlmandJRURT
RXBLZ3BlWEY4TER3K0hrNUlTd3NEQk1uVG9WZi9yVG54QVZGWVUzM25nRGVYbDVKc3NhCk1tUUk4
dlB6a1pTVUJCY1hGNlNscFFFQU5tN2NDQUI0NDQwMzBLZFBIMFJFUk9Denp6NkRUQ2JEZ2dVTE1H
TEVDRVJGUldIaXhJbDQKNTUxM2hIYnMzcjBiZG5aMldMdDJMVDc0NEFNa0pDUkFJcEdnZi8vK0p1
dkJHR09kR2U4Qml5QXFLZ3BXVmxhNGVmTW0vUDM5Y2ViTQpHUXdhTkFqNzkrOEhFUW1IZnZ2MDZZ
TmJ0MjRoTXpNVDA2Wk5nNWVYRnp3OFBCQWVIbzd3OEhDa3BhVWhQejhmSTBlT0JBRDQrL3RqCng0
NGRjSGQzUjJKaW9zbXlCZzRjaUs1ZHV5STBOQlFBTUdIQ0JIenp6VGM2OWRRY0twZkpaQWdMQzRP
dnJ5OEF3Tm5aR1FxRlFoZ3YKTGk0TzA2ZFBCd0FNSFRvVWNya2NBT0R1N202MlRZd3gxbGx4QWhi
QnhvMGJNV0xFQ0VpbHV1SFB6czZHczdNemJHeHNBQUJqeG94QgpTa29LdkwyOUFRRDI5dlpDY2dP
QXpNeE1CQVlHQ29rU0FDSWpJeTBxU3lLUjZFem42T2lJMnRwYW5mcG9oa3NrRW16YnRnM2ZmZmNk
ClB2bmtFK1RtNXFLeXNsSm4ydXpzYk9Gejc5NjloVDhLek5XRE1jWTZLMDdBSXJDMnRtNlNmQUdn
dkx3Y1Vxa1V6enp6akVYbGxKYVcKNHNxVkt3YUhOYmNzYzJKalk1R1ZsWVhkdTNkajE2NWRPSC8r
dkREczFWZGZ4UXN2dklETGx5L0QxdFlXRGc0T0dEZHVYSnZVZ3pIRwpIaFY4RHJnRDhmVDBSRXBL
aXM2ZUtCSGg5T25UQnNkM2QzZEhZV0VoaW9xS2RNYlB6ODl2ZGxtR2FQYUFyMTY5aXVYTGwyUHo1
czJRCnlXUk54cHN5WlFxV0xsMks1T1JrNU9ibTZ0eSsxQnIxWUl5eFJ4RW40SGFrdWVMNXpwMDdC
b2ZQblRzWHBhV2xpSXlNUkVWRkJjcksKeXZEdXUrOWk4T0RCQUJwdkFhcXBxUkhHbnpsekp1enM3
TEJ3NFVJb0ZBb29GQXBFUlVYQnpjM05iRm4xOWZWUXE5VkNXZFhWMVZDcApWTUxuN3QyNzQ2ZWZm
Z0lBWExod0FXcTFHbGV2WG9WS3BVSkdSZ1pxYTJ0QlJDQWlyRisvSG84Ly9qaFdybHlKT1hQbXdO
N2UzdUkyCk1jWllaOFVKdUowY1BYb1VuMzMyR1FEZ0wzLzVDMDZlUE5sa25DRkRobUQ3OXUxSVNF
aUFzN016aGc0ZENsOWZYL1RyMXcvNzl1M0QKeFlzWGNlellNU1FtSmdKbzNMdmN2MzgvcmwyN2hp
RkRobUR5NU1tWVBuMDZldmJzYWJLc3pNeE01T2JtNHV6WnN6aDM3aHorL2U5LwpJems1R1ZldVhF
RktTZ3FBeHIzYXYvLzk3MWk4ZURIR2pSc0hQejgvVEpzMkRVdVhMc1g4K2ZOUlZWV0YrZlBuUTZs
VTR0NjllMWk0CmNDSHM3T3dnbFVyUnUzZHZyRml4QXZYMTlTYnJ3Umhqblpsay9QanhwRmFya1pH
UjBhNHo1dGNSR2xkZlg0L2k0bUs0dTdzYlBGZXMKajRoUVZsWUdGeGVYRnBlbHJieThIRDE3OWhR
KzE5VFVDSHUzU3FWU09CeTljZU5HL09FUGYwQnRiUzBxS3l0eDkrNWRKQ1ltNHZubgpueGZPL2Jh
a0hvd3g5aWdKRGc2R1dxM21pN0E2SWhzYkd3d2NPTkRpOFNVU2ljSGsrekJsYWROT3ZnQjBEaTFy
a3UvT25UdHg2dFFwCnZQbm1tenJqV2x0Ync4UERvMVhxd1Joamp5Sk93S3hGUm84ZWpaVXJWeUlp
SWdMKy92Nm9xYWxCYVdrcFFrTkRNV2pRSUxHcnh4aGoKSFJZbllOWWlQajQrS0MwdFJXWm1Ka3BL
U2hBY0hNeUpsekhHTENCYUFpNVo5a2VvWUEwVnJLR0dsY0hmQkN0WXdScFNXTU1LVnBEQwpHclph
NCtpUGI2b3NZK01ZSHM4S0toRFVhTkQ2WFc5d1hJQXZKbnJzc2Njd2RlcFVzYXZCR0dPL0txSWxZ
RklUQ0FSQURZTEU2RzlUCjQxQXIvRk1EQm4rYkdxYjltekhHR0hzWW9pWGdQanMvTVh1bE1VR0dC
dGlnUVpTcm9LMmdoTlRzZUR0aXhZb2dZNHl4WHpPK0Q1Z3gKeGhnVEFTZmdUdVQyN2Rzb0xDd1V1
eHFNTWNiQVYwRzNtOFRFUkt4YnR3N1hybDFEY0hBd0JnNGNDQ0pDVFUwTmNuTnpNV0RBQUp3NApj
YUpONjdCMjdWcWNQbjI2eVdzSEdXT010VDlPd08xa3hvd1pLQ29xd2x0dnZZWG82R2lNR2pWS0dG
WlJVWUdGQ3hlMitqenI2dXB3Cjl1eFpCQWNIQXdEZWZmZGRvOCtoWm93eDFyNzRFSFE3NnQ2OU93
RG92SWNYQUxwMDZZTFlXUE5YY3pVME5GZzhMNlZTaVhuejV1SE0KbVRQQ2Q4N096dndTQk1ZWTZ5
QjREMWhrUklUVnExZmpndzgrUUY1ZUhtSmpZeUdYeTJGdmI0K3RXN2NpS1NrSmxaV1Z5TTNOaFVR
aQp3ZUhEaHhFYkc0dWhRNGNDYUh3Kzg0WU5HOUN0V3pmazVlVWhJQ0FBcTFhdHd0YXRXM0hreUJG
Y3YzNGRSVVZGV0x0MkxiNzg4a3NjCk9uUUkyZG5aQUlDcXFpcXNYcjBhdHJhMktDb3FRdi8rL1JF
VEV3TjdlM3VrcDZjak5qWVdycTZ1OFBiMlJuUjBOR1F5R1U2Y09BRlAKVDA4eFE4WVlZNDhFM2dN
V3dmSGp4eEVYRjRkUFB2a0VjK2ZPRlY3N1YxOWZqd01IRGlBcEtRbGVYbDRJRHc5SGx5NWRzR0RC
QW93WQpNUUpSVVZHWU9IRWkzbm5uSGFHc3NMQXdUSjA2RlgvNjA1OFFGUldGTjk1NEEzbDVlWGpq
alRmUXAwOGZSRVJFNExQUFBrTzNidDN3Ci9mZmY0L3IxNjhLMHp6NzdMRWFPSEltLy92V3ZPSERn
QUhKeWNqQmp4Z3dBalc5bXlzL1BSMUpTRWx4Y1hKQ1dsZ2FnOGNVTGpESEcKV283M2dFVWdrOGxn
WTJNRElvS05qWTN3SHQ1Um8wYkJ5OHNMSGg0ZUNBOFBSM2g0T0lnSVlXRmg4UFgxQmRCNEdGbWhV
QUFBMHRMUwprSitmajVFalJ3SUEvUDM5c1dQSERyaTd1d3Z6MGh6dWxzdmw4UEh4d1lFREJ3QUF5
Y25KeU1yS1FtcHFxbENuUllzV1lkbXlaY2pPCnpzYm8wYU14Y09CQWRPM2FGYUdob1FDQUNSTW04
QVZjakRIV1NqZ0JpeUFrSkVSSW12UG16Y09xVmF1RVlmYjI5cERMNWNKbmlVU0MKYmR1MjRidnZ2
c01ubjN5QzNOeGNWRlpXQWdBeU16TVJHQmlvYzA0NU1qSlNaMTdhd3lRU2lmRDUvUG56a012bHds
dU5BR0RFaUJFQQpnUHo4Zkl3ZVBWcG5mQUJ3ZEhSRWJXMXRpOXZQR0dPTUQwR0xUaUtSWU5PbVRT
YkhpWTJOeGJwMTYvRGFhNjlod29RSlFsSXNMUzNGCmxTdFhIbXErMWRYVktDOHZSMVZWbGZDZGo0
OFBwRklwSGp4NDhGQmxNc1lZc3h3bjRBNUFleTlVMzlXclY3RjgrWEpzM3J5NXlYanUKN3U0b0xD
eEVVVkdSOEIwUklUOC9YL2lzZjhXMWhwZVhGMVFxRlM1Y3VDQjhWMVpXaG9hR0JuaDdlejlzVXho
ampGbUlFM0E3cXFtcApBZEI0MzY4eERRME53bmdBb0ZBb29GYXJjZlhxVmFoVUttUmtaS0MydGha
RWhCa3pac0RPemc0TEZ5NkVRcUdBUXFGQVZGUVUzTnpjCkFEVGU5cVM1d0t1aW9nTFYxZFdvcWFr
QkVTRWlJZ0t1cnE1SVNVa1I1cFdibXdzdkx5OU1talFKUU9ORllXcjFMNitjcUs2dUZzNVgKTThZ
WWF4bE93TzBrTVRFUi8vakhQd0FBNzcvL1BrNmZQdDFrbkgzNzl1SGl4WXM0ZHV3WUVoTVRBUUNU
SjArR241OGZwazJiaHFWTApsMkwrL1Btb3FxckMvUG56NGVycWl2Mzc5K1BhdFdzWU1tUUlKaytl
ak9uVHA2Tm56NTRBZ0NsVHB1RHZmLzg3Rmk5ZWpKeWNISHo1CjVaZDQ4T0FCUHZ6d1E4aGtNaHc1
Y2dTSER4L0c1czJiY2VMRUNlemZ2eCtIRGgyQ1ZDcEZabVltY25OemNmYnNXWnc3ZHc3Ly92ZS8K
a1p5Y2pDdFhydWdrYmNZWVl3OUhNbjc4ZUZLcjFjakl5R2pYR2FzbDFoYTltYWoxMzNMVXV1TTFr
SFc3eEt1bXBnYjI5dllBR2greQpvWDA0bW9oUVZsWUdGeGVYSnRPVmw1Y0xDZGtRSXNMMTY5ZGha
V1dGZ1FNSHRuN0ZHV09NNlFnT0RvWmFyZWFyb0g4dE5Na1hhSHJPCldDS1JHRXkrQUV3bVg4MjAv
SFFzeGhocmYzd0ltakhHR0JNQkoyREdHR05NQktJZGdpNVo5a2VvWUEwVnJLR0dsY0hmQkN0WXdS
cFMKV01NS1ZwRENHclphNCtpUGI2b3NZK01ZSHM4S0toRFVhTkQ2WFc5d1hLQ2ZXQ0ZrakRIMkt5
WmFBaVkxZ1VBQTFDQklqUDQyTlE2MQp3ajgxWVBDM3FXSGF2eGxqakxHSElWb0M3clB6RTdOWEdo
TmthSUFOR2tTNUN0b0tTa2pOanJmRC9Gc0VHV09Nc1NiNEhEQmpqREVtCkFrN0FuZGo5Ky9meDQ0
OC9BZ0FxS3l2NVJRdU1NZGFPT0FHM2szLzk2MTk0OHNrbklaRklNR3JVS0J3N2Rrd1lkdTNhTmN5
WU1RTVMKaVFULzkzLy9oNUtTa2phdHk0MGJONFMzTUgzNDRZY0lDQWpBNk5HamNlblNwVGFkTDJP
TXNWL3dnempheWZUcDAxRldWb2JJeUVpcwpYTGxTZU1jdTBQaGloSDM3OXVIcnI3L0d4eDkvM09a
MWVmWFZWMUZmWDQrNHVEZ0FqVS9XQ2dnSUVKNGJ6Umhqck8zeEhuQTdjbkp5CjB2bXRUU3FWd3Mv
UHorQjBSTlNxOWJoMjdScUtpNHVoVkNvQk5ENVo2eC8vK0FmdTNMblQ3UGszTkRTMGF0MFlZNnl6
NEQzZ0RzVEsKU3Zmdm9ZU0VCTnk1Y3dmMzc5L0g0Y09IY2Zic1dRQ043d0dPaVluQnhZc1hVVlZW
aFk4KytnaWpSbzFDWGw0ZVltTmpJWmZMWVc5dgpqNjFidHlJcEtRa2pSb3pRS1hmV3JGbjQ4NS8v
akpDUUVDUWtKTURGeFFYRGhnM0RzR0hEQUFDcHFhbjQ5Tk5QTVdqUUlDaVZTdXpaCnN3YzJOamJZ
dlhzM25ubm1HUURBcVZPbmtKdWJDNGxFZ2k2WHE5TUFBQ0FBU1VSQlZNT0hEeU0yTmhaRGh3NEYw
UGpjNmcwYk5xQmIKdDI3SXk4dERRRUFBVnExYVpiTHVqREhXMlhBQzdxQWFHaHF3ZWZObTRYMjlw
YVdsVUt2VklDSXNYTGdRQ1FrSjZOS2xDNVl2WDQ1cAowNmFob0tBQTlmWDFPSERnQU56ZDNmSDIy
MjhqUER6YzRONzJpeSsraUpTVUZKdytmUnBEaHc3Rjd0MjdNWFhxVkdING9FR0RrSmFXCmhweWNI
SHorK2VlWU1tVUtWcTVjaVVXTEZ1Ry8vLzB2NnV2cnNXREJBc1RGeFNFNE9CZzFOVFY0NTUxM2NQ
RGdRUUJBV0ZnWTFxMWIKaDFHalJ1SGl4WXNZUG53NEpreVlBRjlmWDZOMTc5NjllL3NFbGpIR09n
ZytCTjFCM2IxN0Y1Y3VYY0x4NDhjQkFFdVhMZ1VSSVRFeApFVVNFTTJmT0lEazVHWDM2OU1HdFc3
ZVFtWm1KVWFOR3djdkxDOTdlM2dnUEQ4ZU9IVHNNdm1paFc3ZHUrT3Fyci9EbW0yK2lvcUlDCjA2
ZFB4L2J0MjRYaEhoNGVjSE56dzdScDAvRFVVMDhoS0NnSThmSHhLQzR1aGtLaGdFd21RMWhZR0h4
OWZRRUF6czdPVUNnVUFJQzAKdERUazUrZGo1TWlSQUFCL2YzL3MyTEVEN3U3dUp1dk9HR09kRFNm
Z0RxcG56NTRJQ3d2RDFLbFRzV0xGQ25oNGVNRGEyaHJaMmRsdwpkbmFHalkwTmJHeHNNR2JNR0tT
a3BNRGYzeDlBNDF1VDVISzUyZkpsTWhtaW82Tng2dFFweU9WeXJGaXhBZ2NPSEJDR1N5UVNXRnYv
CjhxcEZMeTh2T0RrNUlUVTFGUktKQk51MmJjUGR1M2NSRXhPRGpJd01WRlpXQWdBeU16TVJHQmdJ
aVVRaVRCc1pHUWxuWjJlemRXZU0Kc2M2RUQwRzNvLzc5K3dOb2ZFZXZJZG9KRHdEMjdkdUh2bjM3
NHNNUFAwUmVYaDVPbmp5Sjh2SnlTS1ZTNFZ4c2MvM3d3dzl3ZG5hRwpvNk1qQUdEY3VISDQ1ei8v
aVRGanh1REFnUU9JaUlnd09xMlZsUldrMHNaVkpqWTJGbGxaV2RpOWV6ZDI3ZHFGOCtmUEEyZzhW
SDdsCnloV0QwN2UwN293eDlpamhQZUIyNU9QakEydHJhMXk3ZHEzSnNCOS8vRkZJMEFCUVVsS0Nz
ckl5Yk5teUJjbkp5Ymg4K1RMaTQrUGgKNmVtSmxKUVVuWWRtRUJGT256NXRVUjFLUzB2eDRZY2Y2
bndYR0JnSUR3OFBGQmNYRzUydW9LQUF0Mi9meHBOUFBvbXJWNjlpK2ZMbAoyTHg1YzVOM0U3dTd1
Nk93c0JCRlJVVTY5Y3ZQejI5eDNSbGo3RkhDQ2JnZE9UZzRJQ2dvQ0FjUEh0VFpDMWFyMVhqdnZm
ZncvUFBQCkM5L2R2bjBiQ1FrSkFJQ0pFeWZpdWVlZVE5ZXVYVEYzN2x5VWxwWWlNaklTRlJVVktD
c3J3N3Z2dml1YzYyMW9hRUJOVFkzUk9nd1kKTUFCYnRteEJRVUdCOEYxSlNRbCsrdWtuVEpreVJX
ZmMyN2R2Qy85UFQwL0gyTEZqTVhMa1NDZ1VDcWpWYWx5OWVoVXFsUW9aR1JtbwpyYTBGRVdIR2pC
bXdzN1BEd29VTG9WQW9vRkFvRUJVVkJUYzNON04xWjR5eHpvUVBRYmV6dzRjUFkrN2N1UWdNRE1U
WXNXTmhiMitQCkd6ZHVZTVdLRlUxdUYvcjczLzhPQndjSDlPN2RHOTI3ZDhlTUdUTWdsVXF4ZmZ0
MnZQTEtLNGlMaTBQUG5qMnhjK2RPOU92WEQvdjIKN2NQRml4ZFJXRmlJeE1SRXpKZ3hvOG44NVhJ
NWV2WHFoV1hMbHNIUHp3OXl1UndKQ1FsWXRHZ1JWcTllclRQdXYvLzliNnhkdXhaUwpxUlJmZi8y
MWNJNTQ4dVRKOFBQenc3UnAweEFSRVlINTgrZmo2TkdqbUQ5L1BqNzk5RlBzMzc4ZmYvempIekZr
eUJDNHU3dGo3OTY5CjZObXpKM3IyN0dtMDdvd3gxdGxJeG84ZlQycTFHaGtaR2UwNlk3WEUycUkz
RTdYK1c0NWFkN3dHc2piZldBT1VTaVVLQ2dyUXAwOGYKOU9qUm8ybDgxR3BZV1ZuaDd0MjdrTWxr
Nk5LbGk4N3crdnA2RkJjWHc5M2RYVGd2YTZrN2QrNmdSNDhlcUs2dXh2ZmZmNC8rL2ZzTAo1NFEx
QWdJQ0VCUVVoSGZmZlJmVjFkVUdMK3lxcWFtQnZiMjkwQjd0dzlGRWhMS3lNcmk0dURTWnJpVjFa
NHl4WDd2ZzRHQ28xV3JlCkF4YUxUQ2JERTA4OFlYUzQ1cUVjeHU2UHRiR3h3Y0NCQXg5cTNwcUU3
K0RnWUxJT0FOQ2xTNWNteVY5RGszd0JORGtYTEpGSURDWmYKb0dWMVo0eXhSd1dmQTJaTnFOVnEz
THg1VStkQ0tzWVlZNjJMRXpCcklpNHVEc3VYTDBkQVFBRDI3OTh2ZG5VWVkreVJ4SWVnV1JNTApG
aXdRdXdxTU1mYklFeTBCVzVFS2RnRHN4S29BWTR3eEppSStCTTBZWTR5SmdCTXdZNHd4SmdKT3dJ
d3h4cGdJT0FFenhoaGpJdUFFCnpCaGpqSW1BRXpCampERW1BazdBakRIR21BZzRBVFBHR0dNaTRB
VE1HR09NaVlBVE1HT01NU1lDVHNDTU1jYVlDRGdCTThZWVl5TGcKQk13WVk0eUpnQk13WTR3eEpn
Sk93SXd4eHBnSU9BRXp4aGhqSXVBRXpCaGpqSW1BRTdBUktwVUsxNjVkRXo3ZnZuMGJoWVdGYlRh
LwpxcW9xM0xoeG84M0tiNm02dWpxY1BYdjJvYVp0eTlpMXBGNHRWVlZWaGVMaTRvZWF0cnE2dXBW
cnc4elIzNmFOS1NzclExcGFHdTdjCnVkT205V25ON2VMQmd3ZXRVZzVyWDZJbDRKTW5UeUlrSkFR
U2lRUkRodzdGdkhuejhNSUxMMkR4NHNYWXRtMGJsRXFsV0ZYRGhRc1gKNE9mbmh6Lys4WS9DZDJ2
WHJzWDA2ZFBiWkg2eHNiRndkbmJHZ1FNSDJxVDhsc3JKeWNIdzRjTVJGaGIyVU5PM1ZleGFXcStX
MkxkdgpIMXhjWEJBWEY5ZnNhYytkTzRla3BLUTJxQlV6eHRBMmJjak9uVHNSSHgrUGpJd01QUEhF
RTZpcnEydXpPclhtZHZIamp6OGlJU0doClZjcGk3V2o4K1BFVUZCUkVZa2hQVHljQXRHWExGdUc3
UzVjdWtiMjlQUzFac2tTVU9tbTgrT0tMTkdIQ0JPRnplWGs1RlJRVXRObjgKWEZ4Y2RPTFEwV3pl
dkpsY1hGd3NHcmUydHBiUzB0S0V6MjBadStiVXE2WDAyK1h0N1UzdnZmZGVzOHBJVEV6czBNdlpH
UDIyL3hycApiOVA2cXFxcXFFdVhMcVJTcVlpSTZPdXZ2MjdWK2JmMWRsRlFVRUJ2dmZWV3E1WEgy
bzRtNzRwNkNOckp5UWtBSUpGSWhPOThmWDBSCkVCQ0EwNmRQaTFJbnRWb05BSkJLcGJDeStpVTh6
czdPR0R4NGNMUExJeUtMeHBQSlpEcHg2R2hzYkd3TTFxK2hvVUhuczFLcHhMeDUKODNEbXpCbmh1
NGVOWFV2cTFSS0dscG1oZGpWM21aV1VsR0RUcGsxNDVaVlhMSjV2UjJDbzdScjZ5MTliYTdiSDFI
ek1NYlpONjd0OAorVExxNit1RmNRSURBMXV0VHUyeFhRd2VQQmdxbFlxUHJ2eUtTTVd1Z0w0SER4
N2cyMisveGVMRmkzVytyNnFxd3VyVnEyRnJhNHVpCm9pTDA3OThmTVRFeHNMZTNSMEpDQWw1NzdU
V3NYcjBhTDczMEV1TGo0N0Z1M1RvRUJ3ZGp4NDRkU0U5UFIyeHNMRnhkWGVIdDdZM28KNkdqSVpE
S2NPSEVDbnA2ZUFCclB5YTFhdFFxOWUvZkd6WnMzOGMwMzM4RE96ZzRBOFBQUFB5TXVMZzZIRGgx
Q2RuYTJ4ZVZGUlVXaApWNjlleU1yS1FvOGVQVEJzMkRBRUJnWmk3Tml4QnR1dXFVTmNYQnhjWFYz
eHhSZGZ3TnZiMjJ6N0wxNjhpRGZmZkJNM2J0ekFSeDk5CkJFZEhSeXhhdEFpdnZmWWFGaXhZMEdR
K2VYbDVpSTJOaFZ3dWg3MjlQYlp1M1lxa3BDUzR1N3NqSmlZR0Z5OWVSRlZWRlQ3NjZDT00KR2pY
S1lGMVBuVHFGM054Y1NDUVNIRDU4R0xHeHNSZzZkQ2kyYnQyS0kwZU80UHIxNnlncUtzTGF0V3Z4
NVpkZkNyRTdkdXdZbGl4WgpBamMzTit6ZnZ4K0RCZzNDK2ZQbkVSRVJnVTgrK1FRVEowNUVhV21w
eGZYUVoyemFsaTZ6YytmTzZiUnIrL2J0QUJvNzk3VnIxMkxQCm5qM28xcTBiamg0OUtwU25iODJh
TlRxSHkxTlRVL0hwcDU5aTBLQkJVQ3FWMkxObkQyeHNiTEI3OTI0ODg4d3pKdHRqYkJuNitQaGcK
dzRZTjZOYXRHL0x5OGhBUUVJQlZxMWExS0RiNnkzVDc5dTA0ZCs2Y3dlVnZMbzVqeDQ1dDF2STF0
cDYxZEp2V3QydlhMaHc4ZUJBTgpEUTFZc1dJRjdPM3RNV2ZPSElNeHJxeXNOTnIybXBvYWcvRTN0
MTBBcHJkeFM5b0xBTE5uejhienp6K1BTWk1td2RyYTJvSXRob2xLCnpFUFFseTVkSWdEMHdnc3ZV
SHg4UEczYXRJbjgvZjFwenB3NVZGWldwak51VUZBUWZmNzU1MFJFVkY5ZlR5TkdqS0RRMEZCaGVM
OSsKL1hRT0IwNmNPSkVpSWlLSWlLaWtwSVFlZi94eDh2THlvcU5IajlJUFAveEF2L25OYjJqcDBx
WEMrTTgrK3l6Rng4Y1RFWkZLcGFLKwpmZnRTU0VnSUVSR1ZsWlhSc21YTHFHZlBuaGFYOTdlLy9Z
MWVmLzExSWlLNmZQa3lBYUNZbUJqNjRZY2ZETWJDMWRXVm5uamlDVHB5CjVBaWxwYVdSaDRjSERS
Z3dnSlJLcFVYdFQwMU5KUUIwNHNRSk9uNzhPSDN3d1FkRzQ1NmRuVTFPVGs3azUrZEhCdzhlcE1q
SVNGSW8KRkRSNThtUzZmLzgrcVZRcWlveU1KTGxjVGhVVkZVUkV0RzNiTnVyZHV6Y1JFZFhWMVZH
L2Z2MkV3Mm52dlBNT2hZZUhDK1Y3ZUhoUQpkSFMwd2RnUkVTMVpzb1FHRHg0c2ZGWXFsVFI3OW13
aUltcG9hREJaRDMzYTlUSTFiV3NzTSsxMkVSSDk5cmUvSlY5ZlgwcE5UYVhpCjRtTHk4dkl5ZWVy
a3NjY2VvNk5IandxZnYvLytlK3JWcXhkNWVuclNtVE5uS0NNamczeDlmY25OemMxc2V3d3R3NEtD
QXBvMGFSSmwKWjJjVEVWRnViaTRCb0lzWEw3WTROdHB0TjdmOFRjV3hPY3ZYMUh4YXVrMGJrcGlZ
U0ZaV1ZzSm5RekcrY3VXS3liWWJpNzkrREExdApGNmEyY1V2YXE1bE9KcE5SVGs2TzBYWXk4WFdJ
UTlBYVNxVVNKU1VsdUhUcEVzckt5bEJYVjRmYnQyOEx3NU9UazVHVmxZVlpzMllCCmFEejB0MmpS
SWh3N2RrejQ2OUhlM2w3bmNLQ0RnNFB3MmNYRkJRTUhEb1NQanc5Q1EwUGg3dTZPQ1JNbTROdHZ2
d1hRZUZITThlUEgKOGJ2Zi9RNEFZR1ZsaFNsVHBnaGx5ZVZ5K1BqNENJZlV6SlVIQUhGeGNYQjJk
Z1lBREIwNkZISzVIQURnN3U1dU5BN3o1OC9IMUtsVApFUndjakUyYk51Rzc3NzVEYW1xcVJlMS8r
dW1uTVhQbVRMejExbHVJaTR2RHlwVXJqYzVuMUtoUjhQTHlncmUzTjhMRHc3Rmp4dzdrCjUrZURp
SERtekJra0p5ZWpUNTgrdUhYckZqSXpNNXRNTDVQSkVCWVdCbDlmWHdDTmg5SVVDb1hPT0pyWTY4
Y09BRjU4OFVVVUZoYmkKd29VTEFCcjNCQ01pSWdBQWlZbUpGdGREbjZscFcydVo2Ujl5RGcwTnhk
TlBQdzFYVjFjRUJ3Y2J2Y3Eyckt3TTkrN2RRNjlldllUdgpQRHc4NE9ibWhtblRwdUdwcDU1Q1VG
QVE0dVBqVVZ4Y0RJVkNZYkk5aHBaaGNYRXg4dlB6TVhMa1NBQ0F2NzgvZHV6WUFYZDM5eGJIClJy
dnQ1cGEvcVRnMlovbWFtazlMdDJsTEdJcnhrQ0ZEak5ZcExTM05hUHoxWTZpL1haamJ4aTFkUmpL
WkRFNU9UaWdvS0doV1c1azQKT2tRQ0RnZ0l3TXN2djR6OSsvZWpvS0FBeGNYRmVQcnBwNFZ6TE9m
UG40ZGNMb2RNSmhPbUdURmlCQUFnUHovZm9ubElKQktkenRQUgowUkcxdGJVQWdOT25UOFBMeXd2
ZHUzY1hobmZ0MmxWbmZQM3BUWlduK2F4SmpnRFF1M2R2WWNNMDVySEhIaFArcnpra1YxaFlhSEg3
Ck4yL2VqSUtDQXZqNys1czkvR1J2Ynk5MGpBQ1FuWjBOWjJkbjJOall3TWJHQm1QR2pFRktTZ3I4
L2YyYlRDdVJTTEJ0MnpiY3ZYc1gKTVRFeHlNaklRR1ZsWlpOeHRQK3ZmNTdmMzk4ZlgzenhCWURH
SytLZmZmYlpadGREbjdscFcyT1o2U2RnN2M5T1RrNm9xcW95V0xmdgp2dnNPQU5DalI0OG0wMnN2
S3k4dkx6ZzVPU0UxTmRWc2UvU1hZV1ptSmdJREEzWHFGQmtaQ1dkbjV4YkhScnV0NXBhL3FUaTI1
bnJXCjBtM2FFdm94TmxVblUvSFhqNkYrL1MzWnhpMVpScHJ2Mi9LV1NkWjZPdHc1WURzN084eVlN
UU9yVnExQ1VsSVNubnZ1T1ZSWFY2TzgKdkJ4VlZWWG8yclVyQU1ESHh3ZFNxYlJWN24vNzZhZWZV
RjVlM3VUN2xsemM4K3FycitLRkYxN0E1Y3VYWVd0ckN3Y0hCNHdiTjg3aQo2ZDNkM2VIbzZBaEhS
MGZjdUhIRG92YkxaRExJNVhLOC8vNzdXTHg0c1U3blkwNTVlVG1rVXFsdzd0R2MyTmhZWkdWbFlm
ZnUzZGkxCmF4Zk9uejl2OGJ3QVlOR2lSVmkvZmowMmJOZ0FPenM3Mk5qWVBGUTlXdElHZlMxZFpx
Wm9PbkZMYm11eHNyS0NWQ3B0ZG50S1MwdHgKNWNvVmc4TmFHaHQ5cHBhL3FUaTIxM3JXRnR1MHVU
cVppcjg1cmRuSEtaVktPRGc0UEZROVdQdnFFSHZBK2pRYmlVcWxBdEM0VjZCUwpxWVJEbGtEakli
MkdoZ2JoSWlYZ2w2c2RtNnR2Mzc2NGRldFdxeDYybVRKbENwWXVYWXJrNUdUazV1WWlQVDI5V2RQ
ZnZIa1RsWldWCkdEWnNtTVh0WDdObURZNGZQdzZKUklJMWE5WTBhMzZlbnA1SVNVblIrWXVhaUF4
ZWpYNzE2bFVzWDc0Y216ZHYxdm1MWFp1NWptN08KbkRtNGYvOCtYbnJwSmZ6Kzk3OS9xSHEwcEEy
R1dMTE1IcllEOS9UMGhKMmRIZTdkdTJkeXZJS0NBdHkrZlJ0UFB2bGtzOXZqN3U2Twp3c0pDRkJV
VjZZeWZuNS9mNHRnQXY3VGQzUEkzRmNmV1hzK01hWXR0Mmx5ZFRNVmZ3OWo2WStrMmJvblMwbEo0
ZUhnMGF4b21EbEVUCnNPWkpNOXFYODlmVTFHRC8vdjJReStVWVAzNDhBQ0FpSWdLdXJxNUlTVWtS
eHN2TnpZV1hseGNtVFpvRW9QR3Z4WnljSE5UWDErUG0Kelpzb0tpclNPWTljWDErdms2Q3JxNnVG
QkQ5ejVreElwVkxzMkxGREdIN3QyaldVbDVjTDQxUlhWNk9tcGtZNFoyT3FQQUJZdjM0OQpIbi84
Y2F4Y3VSSno1c3lCdmIyOTJYaG9UNStXbG9icDA2ZkQxOWZYb3ZZbkp5ZGo4T0RCOFBiMlJreE1E
RDcrK0dPVGgrY2JHaHBRClUxTWpmSjQ3ZHk1S1Mwc1JHUm1KaW9vS2xKV1Y0ZDEzM3hWdWs2aXZy
eGNlanFKUUtLQldxM0gxNmxXb1ZDcGtaR1NndHJZV1JBUWkKUXZmdTNmSFRUejhCQUNvcUtwckVE
Z0M2ZCsrT3NMQXc1T1RrQ0lmYUxLbUhQdTE2V2RLR2xpd3pRKzNTZnFKVlRVMk5Ua3kxV1ZsWgo0
YmUvL2EzQmhLQzlucWFucDJQczJMRVlPWEtrMmZib0w4T1pNMmZDenM0T0N4Y3VoRUtoZ0VLaFFG
UlVGTnpjM0ZvY0crMjJYN2h3CndlVHlOeFhINWl4ZmMrdFpTN2RwZmZmdjM0ZGFyZFpacHZveE5s
V25HVE5tR0kyL2ZnejF0d3RMdG5Genl3aG9YSmVVU2lVQ0FnSU0KdHBGMU1HSmRCZjNWVjE5UlNF
Z0lBU0IzZDNkYXRHZ1JoWVNFa0wrL1A4MmVQWnYrKzkvLzZveWZsNWRIUTRZTW9iLzg1UzkwL1Bo
eAptalZyRmlrVUNtSDRxVk9ueU5uWm1RWU1HRUJ2dlBFR0xWdTJqSjUrK21sS1MwdWpqSXdNNnQ2
OU8vWHQyNWV5czdQcDBxVkxOR2pRCklMSzF0YVd2dnZxS2lJajI3dDFMam82TzVPM3RUVE5tektD
cFU2ZFNZR0FnN2QyN2wzSnljbWowNk5IQ1EwTlNVMVBObHZmS0s2OFEKQUFKQTF0Ylc1T0xpUXN1
WEw2ZTZ1anFEOFZpM2JoMzUrUGpRcGsyYmFPUEdqZlR5eXkvVC9mdjNMV3AvV2xvYTllN2RteTVk
dWtSRQpSRmV2WGlWcmEydnk5UFEwZURYazNyMTdxVXVYTHRTblR4OUtTRWdRdnYvNDQ0L0oxdGFX
SkJJSnllVnlPblRvRUJFUjVlVGtrTCsvClB3R2c3ZHUzVTBWRkJmbjUrVkhYcmwxcDRjS0ZsSlNV
UkE0T0R2VDg4ODlUWFYwZHZmWFdXeVNSU0dqUm9rVjA0c1FKbmRocHQvL1UKcVZPMGNlUEdKdlV6
Vmc5OSt2V3FxNnN6T3EwbDY0QzVaYWJkcms4Ly9aU3NyS3hveUpBaGxKK2ZUM2w1ZWVUdDdVMVNx
WlNPSERsaQpzTDVKU1VrMGE5WXNuZStHRHg5T2ZuNSt0R2JOR2xxL2ZqMU5uRGlSU2twS3pNYkMy
REk4ZE9nUXllVnlZYnZLeXNveVc1WWxzZEZ1CisvZmZmMjl5K1p1TG82WEw5OEdEQjBiblk4azJh
R3FiMW5mdTNEa2FPM1lzQWFCVnExWlJVVkdSd1JpYnFsTmRYWjNKK0p2YkxreHQKNDVZc0l5S2lQ
WHYyMFBUcDB3M0drM1VjbXJ3cjZtMUl6YVZXcTZtZ29JQ3VYNzl1Y0hoZFhSMVZWMWNUVWVQbCtN
M1YwTkJBdDI3ZApJaUtpbXBxYWg2OG9FVVZIUjFOQlFRSDk1ei8vb2ErLy9wcVNrcEpvd1lJRmxK
S1NZbks2bjMvK1diajFTSis1OXJlR3VybzZ1bjc5CnV0RTZhTlBFbXFocHZEVnhOS2UydHJiRjlX
aXRhUzFaWnBhMnk1Z3BVNmJRanovK0tId2VQbnc0dmZiYWExUlZWZFhrMWp1TjVyWkgKclZickpQ
R1dsS1ZOdiszR2xyOGxjV3l0OWN5YzF0eW1MYTJUcWZpYlczOWF1bzFQbXphTnZ2bm1tNGVhbHJV
ZlRkNlZqQjgvbnRScQpOVEl5TWtUWS8zNDA3ZHk1RTRtSmlVaE5UZFg1L3VUSmt4ZzRjQ0FHRFJv
a1VzMllNZTIxekc3Y3VJRU5HelpneTVZdHNMT3pRMEJBCkFJS0NndkRYdi82MVZjb1hHNi83NG5u
NzdiY1JFaExTYWhjT3NyWVRIQndNdFZvTlRzQnQ0UExseXdnSUNNRFVxVlBoNysrUG1wb2EKbEph
V0lqUTBGS0dob1dKWGp4blFuc3ZzeG8wYitPcXJyN0Jnd1FLNHVia2hJQ0FBLy9yWHYxcDFIbUxo
ZFY4Y21abVpzTEd4c2ZpSgpjVXhjbklEYjJMMTc5NUNabVltU2toSUVCd2Z6WC82L0F1Mjl6RDc3
N0RQaG9wd0JBd1pnOXV6WmJUcS85c0xyUG1PbWNRSm1qREhHClJLQkp3QjN5UG1ER0dHUHNVY2NK
bURIR0dCTUJKMkRHR0dOTUJKeUFHV09NTVJGd0FtYU1NY1pFSU5yYmtKcnpUSHNKQ0ZJMHdBcHEK
U05ENFBHR0NCR3BZb1FGU0VGcitocE8yUnNSdE51ZFJhVE5qakZtaXc3Mk9VSnN0Nm1DRGVzaWdO
Tmt4S3lGRFBXeFFCMXVSYTl4eQozT2JPMFdiR0dPdVFDZGdXZGJCSFRaT08yUm9xblk1WkJlc21I
WE1ON0grVkhUUzN1WE8wbVRIR05EcFVBcGFBMEFVUDRJQnEyS0VXCmRxZ1ZPbWRUSGJPbVU2NkZI
V3hRajJvNDRBRzYvQ29PV1hLYk8wZWJHV05NWDRkSndOWlFvUXNlQ0QvMnFCRTZaODNla2FHT1di
TlgKVkFzN29STzNoZ3BXVU9NQnVrQUZhNUZiWmh5M3VYTzBtVEhHRE9rUUNWaXpSK1NJU3FGamRr
QzEwRG5ib2s0NFBLbmRNV3NPUzliQgpWbWNQeWdwcVdLSHh4ZFdWY095UWUwamM1czdSWnNZWU02
WkRKR0R0UFNKRG5iTjJ4NnpwY0xVdnpOR2NFOVRzUFdtUG80WVZxdEJWCnpPWVp4RzN1SEcxbWpE
RmpSRS9BdHFpREE2cU5kczdhZTBlR09tYk5PVUZqbmJMbThHVkh1bUNIMjl3NTJzd1lZNmFJbm9B
MUhhODkKYW5RNmFPM09XWE9PVUFhbFRzZXJoRXc0SjZqZmFXdGZ1TlBSYmwzaE5uZU9OalBHbUNt
aUptQmIxTUVXZFVMSGE2eHoxbHd0cTdudwpCZ0JVc0VZOWJJVERsdnFkc3ZZdEs1cHpoeDJoYytZ
MmQ0NDJNOGFZT2FJbVlKdi83YmZvZDg3MnFHblNPV3ZPRVVyUkFBRENZVW50Cnpsci9mS0gyTFNz
MnFPOFFIVE8zdVhPMG1USEd6Qkh2VVpRZ3lLQ0VERXFkRGxxN2s5YnNKV2s2WjgzaFNRRENZVWxO
UjYxOURsRDcKYWxuTnJTMHlLQ0VCaVhxbExMZTVjN1NaTWNZc0lWb0NscUpCNTBmVGVjcWdiTEtu
cE9tY0hWQU5XOVFCQU9wZ0szVFMrZzlwMEM1TApmejVLeU1ScU1yZTVrN1NaTWNZc0lWb0MxdHpE
YVEyVjhLUGZVV3NmdG5SQU5icmhQdXhSQXdDb2dUMkFYL2FRdEI5bHFQblJMbHY3Cm5sR3hjSnM3
UjVzWlk4d1NvaDZDTnZTajZVQTFuYmFtazlZOE4vZ3gzQlBLME93ZGFUcGg3V21ObFM4bWJuUG5h
RE5qakZtQzN3Zk0KR0dPTWlVQzBQV0REK3kwU3JYMmJYKzd4MUg0S2tvYm1iVGhLeU5BQUtWU3cx
cG5XV1BsaTRqWjNqall6eHBnbFJFdkEycDJ2NWtmNwpNaHJ0K3pzMUY5d0FFRzR4cVlNdHF1R0FX
dGloRHJhb2g0M1FTV3QrdE12V3pFOU0zT2JPMFdiR0dMT0VhQWxZOTVwVnFkYjFyREtoCk05Wis4
RDdRZUNHTy91MHBEOUFGTmJELzM3VzBkc0xla3VaSGZ6NWk0alozampZenhwZ2xSRDBFcmVrOHRS
OGpxTjBwYTU3N0N6UjIKNU5yM2cyb2UwRkFEZXp4QUYyRXZTZE01YS9hV05IdE1Tc2hFUHpUSmJl
NGNiV2FNTVV1SXVxdWczU0ZyT21QTjIyNjBuL21yZVJ5aApvVWNVMXNKT2VERzdaaTlKZjA5Sk01
K09nTnZjT2RyTUdHUG1pSnFBOWZlRXRGL0lydjh3ZnMydEtJWWUwcTg1UktuNXFZWkRrODY1Cm96
eWVrTnZjT2RyTUdHUG1pSDZ5ckFiMndxTUV0ZS96QkpxK2lzN1VhK28waHlnTmRjN2FWOVYyQk56
bXp0Rm14aGd6UmZRRXJMbksKVmY4cFJ2cnZlTFhrUmUzYWh5aTFPK2lPdGxmRWJlNGNiV2FNTVZO
RVQ4QUE4QUJkVEhiS21ndDFwR2dRbm5KRWtPaDB6Sm85SUVPZApjMGZFYmU0Y2JXYU1NV002UkFJ
bVNJUU9WSE1mcC9hRDk3WFBHV3Azek5ydmc5V2NCOVEvUk5sUnI0amxObmVPTmpQR21ERWRJZ0VE
CmpWZTdWc0pSMkN2U3ZtcFcrN3loZnNlcy80WWM3YXRsTzNxbnpHM3VIRzFtakRGRE9rd0NCaG83
MnlwMDFYazZrdmJiYjR4MXpOcmoKYXg1ZCtHdkJiZTRjYldhTU1YMGRLZ0ZyNkw5c1hmdkNITzJP
V2ZzQ0hVM0gvR3ZGYmU0Y2JXYU1NWTBPbVlBMU5CMjBCR1N5WTM2VQpEa0Z5bXp0SG14bGpyRU1u
WUEzTjR3dzdFMjR6WTR3OTJ2aTFNWXd4eHBnSU9BRXp4aGhqSXVBRXpCaGpqSW1BRXpCampERW1B
azdBCmpESEdtQWc0QVRQR0dHTWk0QVRNR0dPTWlZQVRNR09NTVNZQ1RzQ01NY2FZQ0RnQk04WVlZ
eUxnQk13WVk0eUpnQk13WTR3eEpnSk8Kd0l3eHhwZ0lPQUV6eGhoakl1QUV6QmhqakltQUV6Qmpq
REVtQWs3QWpESEdtQWc0QVRQR0dHTWk0QVRNR0dPTWlZQVRNR09NTVNZQwpUc0NNTWNhWUNEZ0JN
OFlZWXlMZ0JNd1lZNHlKZ0JNd1k0d3hKZ0pPd0l3eHhwZ0lPQUV6eGhoakl1QUV6QmhqakltQUUz
Q25jeHRBCm9kaVZFTmw5QUQvKzcvK1ZBR3BGckF0anJMTVNNUUVmQmVBRFFBSmdBb0EvQUJnRDRQ
Y0F6b2xYclRhVkNNQWJ2N1I1S1lBbEFPWUMKK0EyQXllMVFoN1VBcHJmRGZEVCtCZUJKTkxaNUZJ
QmpXc091QVpqeHYySC9CNkNramV0eUE4QThBS3NBZkFnZ0FNQm9BSmZhZUw2TQpNZGFVYUFtWWFD
cTJibDBDQU1qT2pnYlJRVFEwWkdMSmtwNndzUm1ITTJleVFJUU84MU5iVzRlMHRQU0hucjZ4elRN
UUhUMWZxODJmCmdHZ1hpUGJpenAxemVPNDUyemF2ZDNuNXV5Z28rRmU3eEt5eHpkTVJHN3NNQUxC
Mzcwb1FoV3FONHdXbGNoLzY5dTBMb285QjFMdE4KNnhNUjhTcWVlNjRTUkR0QjlBSHE2OC9DMTFl
S0F3ZCthdFUyTThhWUpVUTlCTjI5ZTNjQWdFUWlBUUJZVzF2ajlkZGZSMzE5UGZidQozU3RtMVhR
b2xVck1temNQWjg2Y2FYRlorbTNXNk5LbEMySmpZODFPMzlEUVlQRzhETlhiMmRrWmd3Y1B0cmlN
MXVEazVLVHpXNXRVCktvV2ZuNS9CNmFpVk05cTFhOWRRWEZ3TXBWSUpBSkRKWlBqSFAvNkJPM2Z1
Tkh2K3pWa09qREZtaUZUc0N1aTdkZXNXQUtCMzc5NEEKZ05MU1VzVEV4T0RpeFl1b3FxckNSeDk5
aEZHalJpRXZMdyt4c2JHUXkrV3d0N2ZIMXExYmtaU1VCQjhmSDJ6WXNBSGR1blZEWGw0ZQpBZ0lD
c0dyVktwTmxwYWVuSXpZMkZxNnVydkQyOWtaMGREUmtNaGxPbkRnQlQwOVBiTjI2RlVlT0hNSDE2
OWRSVkZTRTdkdTNvMHVYCkxxM1daaUxDNnRXcjhjRUhIeGh0VjJWbEpYSnpjeUdSU0hENDhHSEV4
c1ppNk5DaEFJQ2FtaHFEYmRhdjk5cTFhL0hsbDEvaTBLRkQKeU03T0JnQlVWVlZoOWVyVnNMVzFS
VkZSRWZyMzc0K1ltQmpZMjl1YmpVdHJzYkxTL1Rzd0lTRUJkKzdjd2YzNzkzSDQ4R0djUFhzVwpR
UFBYaFJFalJ1aVVPMnZXTFB6NXozOUdTRWdJRWhJUzRPTGlnbUhEaG1IWXNHRUFnTlRVVkh6NjZh
Y1lOR2dRbEVvbDl1elpBeHNiCkcremV2UnZQUFBNTUFPRFVxVlBOWGc2bTZzNFk2OFRHang5UFFV
RkJKSVk5ZS9ZUUFEcDM3aHdSRWRYVzFsSklTQWoxNk5HRENnc0wKcWFHaGdTWlBua3ozNzk4bmxV
cEZrWkdSSkpmTHFhS2lnckt6czhuSnlZbjgvUHpvNE1HREZCa1pTUVVGQlRScDBpVEt6czRtSXFM
YwozRndDUUJjdlhqUlpWa2xKQ1QzKytPUGs1ZVZGUjQ4ZXBSOSsrSUYrODV2ZjBOS2xTNFc2ZW5o
NFVIUjBkSXZidkgzN2RnSkFhOWV1CnBjOC8vNXgyN3R4SnMyZlBwb2lJQ0NJaWcrMjZ3d1hNZGdB
QUlBQkpSRUZVY3VVSzlldlhqOUxTMG9pSTZKMTMzcUh3OEhDaFRHTnQKMXE5M1dWa1pMVnUyakhy
MjdDbE1HeFFVUko5Ly9qa1JFZFhYMTlPSUVTTW9ORFNVaU1paXVGZ2lNVEdSQU5EeDQ4Y05EdGZN
ajRoSQpxVlRTOE9IRGhjK3Z2dm9xcVZTcWgxb1g5TjI3ZDQvR2p4OVBBS2huejU1MDVNZ1JuZUhm
Zi84OTllclZpenc5UGVuTW1UT1VrWkZCCnZyNis1T2JtUmtSRWRYVjFEN1VjVE5XZE1kYjVhUEp1
aDlnRGpvcUtncFdWRlc3ZXZBbC9mMytjT1hNR2d3WU53djc5KzBGRXdpSFUKUG4zNjROYXRXOGpN
ek1TMGFkUGc1ZVVGRHc4UGhJZUhJenc4SEdscGFjalB6OGZJa1NNQkFQNysvdGl4WXdmYzNkMlJt
Smhvc3F5QgpBd2VpYTlldUNBME5CUUJNbURBQjMzenpqVTQ5OVE4YnQ0Uk1Kb09OalEySUNEWTJO
bENwVkFDQVVhTkdOV2tYRVNFc0xBeSt2cjRBCkdnOGpLeFFLQUREWlp2MTZ5K1Z5K1BqNDRNQ0JB
d0NBNU9Sa1pHVmxJVFUxVmFqVG9rV0xzR3paTW1SbloyUDA2TkVXeGFVMTNiMTcKRjVjdVhjTHg0
OGN4WmNvVUxGMjZGRVJrZHZucHg4eVFidDI2NGF1dnZzSzZkZXZ3L3Z2dlkvcjA2ZmpiMy82RzVj
dVhBd0E4UER6Zwo1dWFHcDU1NkNrODk5UlFBSUQ0K0h0N2UzbEFvRlBEeThucW81V0N1N295eHpx
bERKT0NOR3pkaXhJZ1JrRXAxcTVPZG5RMW5aMmZZCjJOZ0FBTWFNR1lPVWxCUjRlM3NEQU96dDdT
R1h5NFh4TXpNekVSZ1lxSk1vSXlNakxTcExJcEhvVE9mbzZJamFXdDNiVTFvekFZZUUKaEFpZDli
eDU4NFJEbFliYUpaRklzRzNiTm56MzNYZjQ1Sk5Qa0p1Ymk4cktTck50TmxSdjdYYWVQMzhlY3Jr
Y01wbE1HSzQ1Ykp1ZgpuNC9SbzBkYkZKZlcxTE5uVDRTRmhXSHExS2xZdG13Wk5tL2VER3RyNjJh
dkM4YklaREpFUjBmamQ3LzdIV2JPbklrVksxWkFMcGNqCklpSUNRR044cksydGhmRzl2THpnNU9T
RTFOUlVlSHQ3UDlSeU1GZDN4bGpuMUNFU3NMVzFkWlBrQ3dEbDVlV1FTcVhDK1RkelNrdEwKY2VY
S0ZZUERtbHRXZTVKSUpOaTBhWlBKY1dKalk1R1ZsWVhkdTNkajE2NWRPSC8rUEFEVGJUYW51cm9h
NWVYbHFLcXFRdGV1WFFFQQpQajQra0VxbGVQRGd3VU9WYVVqLy92MEJOQzREUTdRVEhnRHMyOWQ0
WmZTSEgzNkl2THc4bkR4NXNzWEw3NGNmZm9DenN6TWNIUjBCCkFPUEdqY00vLy9sUGpCa3pCZ2NP
SEJBU3NDRldWbGJDK3Zrd3k2RWpyM3VNTWZGMDZBZHhlSHA2SWlVbFJXZVBpNGh3K3ZScGcrTzcK
dTd1anNMQVFSVVZGT3VQbjUrYzN1eXhEV25NUFdKLzJYcWkrcTFldll2bnk1ZGk4ZVhPVDhVeTFX
Y05ZdmIyOHZLQlNxWERod2dYaAp1N0t5TWpRME5MVHEzcG1Qancrc3JhMXg3ZHExSnNOKy9QRkhJ
VUVEUUVsSkNjckt5ckJseXhZa0p5Zmo4dVhMaUkrUGIvSHlLeTB0CnhZY2ZmcWp6WFdCZ0lEdzhQ
RkJjWEd4MHVvS0NBdHkrZlJ0UFB2bmtReStIMWxqM0dHT1BIbEVUc09hS1oyTzNnY3lkT3hlbHBh
V0kKakl4RVJVVUZ5c3JLOE82Nzd3cTMwVFEwTktDbXBrWVlmK2JNbWJDenM4UENoUXVoVUNpZ1VD
Z1FGUlVGTnpjM3MyWFYxOWREclZZTApaVlZYVnd2blpZSEcyNGQrK3VrbkFFQkZSUVhxNnVvUUhS
MHRmR2NwVFgwcktpcU1qcVBmTG9WQ0FiVmFqYXRYcjBLbFVpRWpJd08xCnRiVWdJc3lZTWNOb213
M1Z1N3E2R2pVMU5TQWlSRVJFd05YVkZTa3BLY0s4Y25OejRlWGxoVW1USmxrVUYwczRPRGdnS0Nn
SUJ3OGUKMU5rTFZxdlZlTys5OS9EODg4OEwzOTIrZlJzSkNRa0FnSWtUSitLNTU1NUQxNjVkLzM5
N2R4NFdWZG4rQWZ3N3JJS2lJRTZJaW9pNApnSXFRZ0xzRW1rdSttcFNwWUpwQ0dZWkxtV2FtYVds
bVVwWkxieHBwWlpvcHR1Q0drYUtFb0xqZ2twb283dUlDaUtDSWJBTnovLzd3Ck4rZWRNOHdLQTRO
NGY2N0x5em5uUE9kWnpubWVjek5uem1Kd1gxRFZ0bTFiTEYrK0hCa1pHY0s4ckt3czNMeDVFME9I
RGhXbHZYZnYKbnZBNU1URVIvZnIxUTQ4ZVBhcThIM1RWblRIMmxETFZWZEE3ZHV5Z0xsMjZFQUFL
Q2dxaStQaDR0ZW5XckZsRDF0YldKSkZJU0NxVgpVbXhzTEJFUmJkcTBpUm8yYkVqT3pzNFVFeE1q
cEkrTmpTV3BWRW9BeU5YVmxWSlNVblRtbFpTVVJQYjI5dFNpUlF0S1RVMmxVNmRPClVidDI3Y2ph
MnByMjdObERSRVJ6NTg0bGlVUkM0ZUhobEoyZFRlZk9uU09KUkVJLy9mU1QzbTJPaVlrUnRUa3hN
YkZTR25YdGV2VG8KRWZuNCtGQ2pSbzBvTEN5TTR1TGl5TmJXbHNhTkcwZWxwYVZhMjZ4Yzd6Ly8v
Sk42OWVwRkFHajU4dVZVV2xwS0owNmNvRTZkT3RFWApYM3hCdTNmdnBwQ1FFRXBQVDlkN3UraXJv
S0NBaGc4ZlR1M2J0NmZ3OEhDYU1tVUtCUWNIMDk2OWUwWHB6cDQ5Uys3dTdoUWRIVTNiCnQyK255
TWhJa3Nsa1JHUjRYMURsNGVGQlFVRkJOR1BHREZxeVpBbDVlM3ZUbTIrK1NXVmxaVUlhUHo4Lzh2
SHhvZm56NTlQQ2hRdHAKMEtCQmxKV1ZWZTM5b0tudWpMR25qeUx1U2dJREEwa3VseU1wS2NtVWZ3
ZG9WVlpXaHN6TVRMaTZ1cXI5clZnVkVTRW5Kd2RPVGs3Vgp6a3RaYm00dW1qVnJKa3pmdlh0WHJ3
dC9qS1c0dUJnMk5qWUFIajlrUS9rMHFMWTJxOVpiRlJIaDBxVkxNRE16Zzd1N3UvRXJya1FtCmt5
RWpJd1BPenM1bzJyUnBwZVZ5dVJ4bVptYTRmLzgrTEMwdEs5MXZYWjM5bDVlWGg2Wk5tNktvcUFo
WHIxNUY2OWF0aGQrRUZmejkKL1JFUUVJQkZpeGFocUtoSTdmNnQ2bjZvVHQwWlkvVkhVRkFRNUhJ
NW5vZ0F6Rmh0VVFUZ0w3LzgwdFJWWVl6VlU0b0FYS2N2d21LcwpOc25sY3R5K2ZWdDBJUlZqak5V
VURzQ00vYitOR3pjaU1qSVMvdjcrMkx4NXM2bXJ3eGlyNS9pSEtNYiszNFFKRTB4ZEJjYllVNFMv
CkFUUEdHR01td0FHWU1jWVlNd0VPd0l3eHhwZ0pjQUJtakRIR1RJQURNR09NTVdZQ0hJQVpZNHd4
RStBQXpCaGpqSmtBQjJER0dHUE0KQkRnQU04WVlZeWJBQVpneHhoZ3pBUTdBakRIR21BbHdBR2FN
TWNaTWdBTXdZNHd4WmdJY2dEV29xS2pBK2ZQbmhlbDc5KzdoNHNXTApOVlplWVdFaGJ0MjZWV1A1
VjFkcGFTa09IVHBVcFhWcmV0c1pRbGRkVlBlN3FzTENRbVJtWnVvc0p5c3JDM2w1ZVhxbnIwcGRx
MW8zCmZSUVZGUmtsSDZZL1hYMVBJU2NuQi92MzcwZGVYbDZOMXNlWTQvYlJvMGRHeWFlK01Wa0Ev
dXV2dnpCdzRFQklKQkowNmRJRjQ4ZVAKeDhTSkUvSDY2NjlqMWFwVmtNbGtwcW9hamgwN0JoOGZI
N3o1NXB2Q3ZBVUxGaUE0T0xoR3lvdU9qb2Fqb3lOKy9mWFhHc20vdW80YwpPUUkvUHorOC9QTExW
VnEvSnJlZG9iVFZSZDErVi9iTEw3L0F5Y2tKR3pkdTFGbk83Tm16c1g3OWVyM1RHMXJYNnRSTmw4
T0hEeU11CkxxN2ErVEQ5NmVwN0N0OTk5eDIyYk5tQ3BLUWtkTzdjR2FXbHBUVldKMk9PMit2WHJ5
TW1Kc1lvZWRVcmdZR0JGQkFRUUthUW1KaEkKQUdqNTh1WEN2Rk9uVHBHTmpRMjk4Y1liSnFtVHd0
U3BVNmwvLy83Q2RHNXVMbVZrWk5SWWVVNU9UcUx0VU5jc1c3YU1uSnljOUVwYgpVbEpDKy9mdkY2
WnJldHNaUWxkZFZQZTdhbHM4UFQzcDAwOC8xVnFHVENhalBuMzY2SjIrcW5WVnBhc3MxYmFvczNY
cjFqcmREelhSCnAyMTFuV3JmVTFWWVdFZ05HemFraW9vS0lpSTZlUENnVWN1djZYR2JrWkZCYytm
T05WcCtUekpGM0RYcEtXZ0hCd2NBZ0VRaUVlWjUKZTN2RDM5OGZmLy85dDBucUpKZkxBUUFXRmhZ
d00vdmY1bkYwZEVUNzl1ME56bytJOUVwbmFXa3AyZzUxalpXVmxkcjZsWmVYaTZabApNaG5Hangr
UDVPUmtZVjVWdDExTjBGUVhkZnRkWFZ2MDJVL0p5Y25vMTYrZjN1a05yYXVtUHFXdExIVnRVWldW
bFlXbFM1ZmluWGZlClVidGMzNzVjMjdTMVRiVi9Lak5tZTdTVm80dW1ZNDZxTTJmT29LeXNURWpU
dTNkdm85V3BOc1p0Ky9idFVWRlJ3V2RYbE5TNTM0QWYKUFhxRUN4Y3VZUFRvMGFMNWhZV0ZtRHAx
S21iT25Jbmc0R0JNbno0ZHhjWEZBSUNZbUJpMGJOa1NYMy85TlFCZ3k1WXQ2Tml4SXlaUApuZ3dB
U0V4TVJFaElDR2JObW9YdnYvOGU3dTd1OFBEd3dOV3JWNFg4aTRxS0VCa1ppY1dMRjJQeTVNbElT
MHNUbHQyNWN3ZWZmLzQ1CmV2WHFaVkIrVTZkT3hTZWZmSUpCZ3dZaEpDUUVVVkZSV2crQVJVVkZt
RFZyRnB5Y25PRHI2NHYwOUhTOTJuLzgrSEVNR2pRSW5UdDMKeHQ5Ly80M2p4NC9EMjlzYlAvMzBr
OXB5VHB3NGdZaUlDSHo0NFlmNDlOTlBJWlZLY2ZUb1VXUm5aK1BkZDkvRmM4ODlCMTlmWHh3Kwpm
RmhqWGZmdDI0ZW9xQ2g4OWRWWDZOT25EODZlUFFzQVdMRmlCWGJzMklGdDI3Wmh3b1FKdUh6NXNt
amI3ZHExQzgyYk40ZS92ejh1Clhib0VBRGg2OUNoY1hWMnhaODhlQU5DN0huLzg4UWVrVWlsZWV1
a2wzTDkvSCt2WHI0ZFVLc1hBZ1FPRnZMLzY2aXYwNjljUEpTVWwKbGZhallwdHIydStxYlZIOGpp
V1h5N0Znd1FLMGJ0MGFYYnAwRWUxM0FOaStmVHRHakJnaFRHdExyNm10bXVxcXEwOXBLa3RUVzVU
TgpuejlmOURORFFrSUNRa05ETVgvK2ZNeVpNd2ZPenM1bzNibzFFaElTZE5aZlV4OHJMaTdHdkhu
ekVCVVZoVEZqeG1EWnNtVTY4OUkxCjN0UzFUVlAvMUdjN0dtTWNWUGVZbzJyZHVuWDQrT09QVVY1
ZWppbFRwbURXckZrYXQ3RzJ0bXZhL3JyR0xhRDlHS1JQZXdFZ05EUVUKYytiTVFVVkZoY2EyUGxW
TWVRcjYxS2xUQklBbVRweElXN1pzb2FWTGw1S3ZyeStOSFR1V2NuSnlSR2tEQWdKb3c0WU5SRVJV
VmxaRwozYnQzcDJIRGhnbkxXN1pzS1RyOU5talFJQm8xYWhRUkVXVmxaVkdIRGgzSXc4T0RkdTdj
U2RldVhhT09IVHZTcEVtVGhQVC8rYzkvCmFNdVdMVVJFVkZGUlFTMWF0S0NCQXdjU0VWRk9UZzVO
bmp5Wm1qVnJwbmQrWDMvOU5jMmNPWk9JaU02Y09VTUFLQ29xaXE1ZHU2WjIKVzdScTFZbzZkKzVN
TzNic29QMzc5MU9iTm0yb2JkdTJKSlBKOUdwL1FrSUNBYUEvLy95VGR1L2VUVjk5OVpYRzdaNmFt
a29PRGc3awo0K05Edi8zMkcwVkVSRkI2ZWpxOThNSUxWRkJRUUJVVkZSUVJFVUZTcVpUeTgvT0pp
R2pWcWxYVXZIbHpJaUlxTFMybGxpMWJDcWVyClB2NzRZeG81Y3FTUWY1czJiV2pKa2lWcXR4MFIw
UnR2dkVIdDI3Y1hwbVV5R1lXR2hoSVJVWGw1dWRaNnFPcldyUnVGaDRjTDA0R0IKZ1JRV0ZpWk14
OFhGMFk4Ly9xaXhMdHIydTJwYmlJaTZkdTFLM3Q3ZWxKQ1FRSm1abWVUaDRWSHA1NUtlUFh1U1hD
N1htVjViVzlYVgpWVmVmMGxVMzFiYW9hdEtrQ2UzY3VWT1l2bnIxS2ozenpEUGs1dVpHeWNuSmxK
U1VSTjdlM3VUaTRxS3ovdXI2V0VaR0JnMFpNb1JTClUxT0ppQ2d0TFkwQTBQSGp4N1htcGM5NFUy
NmJydjZwYlRzYTB2KzBsVlBkWTQ0Nlc3ZHVKVE16TTJGYTNUWStlL2FzMXJacjJ2NnEKMjFCZC85
TjJETktudllyMUxDMHQ2Y2lSSXhyYitUU29FNmVnRldReUdiS3lzbkRxMUNuazVPU2d0TFFVOSs3
ZEU1Ykh4OGNqSlNVRgpJU0VoQUI2ZmFnc1BEOGV1WGJ1UW1wb0tBTEN4c1JHZGZyTzF0Uldtblp5
YzRPN3VEaTh2THd3Yk5neXVycTdvMzc4L0xseTRBT0R4ClJTZTdkKy9HNE1HREFRQm1abVlZT25T
b2tKZFVLb1dYbDVkd3lrcFhmZ0N3Y2VOR09EbzZBZ0M2ZE9rQ3FWUUtBSEIxZGRXNEhWNTcKN1RV
TUh6NGNRVUZCV0xwMEthNWN1WUtFaEFTOTJqOWd3QUNNR1RNR2MrZk94Y2FOR3pGOStuU041ZlRz
MlJNZUhoN3c5UFRFeUpFago4ZTIzMytMa3laTWdJaVFuSnlNK1BoN096czY0ZS9jdURodzRVR2w5
UzB0THZQenl5L0QyOWdidytGU1Y4cmQxNEg4L0s2aHVPd0NZCk9uVXFMbDY4aUdQSGpnRjQvRTFy
MUtoUkFJQ3RXN2ZxWFE4QUNBc0x3MTkvL1NXY3hudisrZWV4YytkTzRmU2JjdDZxZGRHMTMxWGIK
b2pCczJEQU1HREFBclZxMVFsQlFrT2pLMVgvKytRZGVYbDZpZFRTbDE5WldkZHRObno2bHJXN3Ey
cUtRazVPREJ3OGU0SmxubmhIbQp0V25UQmk0dUxuanh4UmZSdDI5ZkJBUUVZTXVXTGNqTXpFUjZl
cnJXK3F2clk1bVptVGg1OGlSNjlPZ0JBUEQxOWNXMzMzNExWMWRYCnJYbnBNOTZVMjZhcmYycmJq
b2IwUDIzbFZQZVlvdzkxMjdoVHAwNGE2N1IvLzM2TjIxOTFHNnIyUDEzSElIMzNrYVdsSlJ3Y0hK
Q1IKa1dGUVcrdXJPaEdBL2YzOThmYmJiMlB6NXMzSXlNaEFabVltQmd3WUlCeEVqeDQ5Q3FsVUNr
dExTMkdkN3QyN0F3Qk9uanlwVnhrUwppVVIwOExHenMwTkpTUWtBNE8rLy80YUhod2ZzN2UyRjVZ
MGFOUktsVjExZlczNkthVVZ3QklEbXpac0xIVitUSmsyYUNKOTc5dXdKCkFMaDQ4YUxlN1YrMmJC
a3lNakxnNitzTGMzTnpyV1haMk5nSUJ4NEFTRTFOaGFPakk2eXNyR0JsWllVK2ZmcGc3OTY5OFBY
MXJiU3UKUkNMQnFsV3JjUC8rZlVSRlJTRXBLUWtQSHo2c2xFYjVzK3J2L0w2K3Z2ajU1NThCUEw0
aS9qLy8rWS9COVFBZW45SzZlL2V1Y1Bydwo3Tm16d2luSWtwSVN5T1Z5Tkd6WVVHMWQ5Tm52cW0x
Um5YWndjRUJoWWFFd3ZYMzdkcno0NG90NnBkZlZWblY5VEZlZjBsWTNkVzFSCnVITGxDZ0NnYWRP
bWxkSXI5eVVQRHc4NE9EZ2dJU0ZCWi8xVis5aUJBd2ZRdTNkdlVSMGlJaUxnNk9oWXBXMmhQTjZV
MjZhcmYycmIKanNZY0I5VTk1dWhEZFJ0cnE1TzI3YSs2RFZYcnI4OHhTSjk5cEpoZlYyNUxORFVM
VTFkQVZZTUdEVEI2OUdqTW1qVUxjWEZ4R0RGaQpCSXFLaXBDYm00dkN3a0kwYXRRSUFPRGw1UVVM
Q3d1ajNGOTI4K1pONU9ibVZwcGZuWXVpWnN5WWdZa1RKK0xNbVRPd3RyYUdyYTB0Cm5udnVPYjNY
ZDNWMWhaMmRIZXpzN0hEcjFpMjkybTlwYVFtcFZJclBQLzhjcjcvK3VtaHc2NUtibXdzTEN3czgv
L3p6ZXFXUGpvNUcKU2tvS2Z2amhCNnhidHc1SGp4N1Z1eXdBQ0E4UHg4S0ZDN0Y0OFdJMGFOQUFW
bFpXVmFxSG82TWpoZzBiaGsyYk5zSGUzaDUrZm40dwpNelBEbGkxYjhPREJBNjIzVWRURWZrOUlT
TURzMmJQMVNtdG9XNnZicDdSUkhNVDF1YTNGek13TUZoWVdCdGMvT3p0YjlIdWtNa1B6CjBrVmIv
OVMySFd0ckhOUkUzOU5WSjIzYlh4ZGpIb05sTWhsc2JXMnJWSS82cGs1OEExYWw2SVNLSCtvOVBE
eFFVVkVobkxJRUhwOHkKS3k4dmg2ZW5wekJQY1JyU1VDMWF0TURkdTNlTmVscGs2TkNobURScEV1
TGo0NUdXbG9iRXhFU0Qxcjk5K3pZZVBueUlaNTk5VnUvMgp6NTgvSDd0Mzc0WkVJc0g4K2ZNTktz
L056UTE3OSs0Vi9jVktSR3F2Umo5Mzdod2lJeU94Yk5reTBWL0V5blFkU01hT0hZdUNnZ0pNCm16
WU5MNzMwVXBYcW9UQng0a1Q4K3V1dldMdDJMZDU0NHcyRWhZVWhOallXQ1FrSldnT1V2dnRkMzRO
aVptWW1wRklwR2pSb29GZDYKUTl0YTNUNEZhRzZMbTVzYkdqUm9nQWNQSG1oZFB5TWpBL2Z1M1VP
M2J0ME1ycitycXlzdVhyeUl5NWN2aTlLZlBIbXlTdnRkVTl0MAo5VTl0MjlIWTQwQ1RtamptNktx
VHR1MnZvS2wvNkhzTTBrZDJkamJhdEdsajBEcjFsVWtEc09KSkxzcVh5eGNYRjJQejVzMlFTcVVJ
CkRBd0VBSXdhTlFxdFdyWEMzcjE3aFhScGFXbnc4UERBa0NGREFEeithK3pJa1NNb0t5dkQ3ZHUz
Y2ZueVpkSHZ5R1ZsWmFJQVhWUlUKSkFUNE1XUEd3TUxDQXQ5Kys2MncvUHo1ODhqTnpSWFNGQlVW
b2JpNFdQaE5SRnQrQUxCdzRVSjA2TkFCMDZkUHg5aXhZMkZqWTZOegpleWl2djMvL2ZnUUhCOFBi
MjF1djlzZkh4Nk45Ky9idzlQUkVWRlFVMXF4Wm8vWDBmSGw1dVhBRkl3QzgrdXFyeU03T1JrUkVC
UEx6Cjg1R1RrNE5GaXhZSnR5R1VsWlVKRDBkSlQwK0hYQzdIdVhQblVGRlJnYVNrSkpTVWxJQ0lR
RVN3dDdmSHpaczNBUUQ1K2ZtVnRoMEEKMk52YjQrV1hYOGFSSTBlRVUxbjYxRU9kRjE1NEFkYlcx
akEzTjBlVEprM1F2MzkvTkc3Y0dNN096cFVPS01wMTBXZS9xMnVMOGxPaQppb3VMaGUybzd2U3p0
dlM2MnFxNjNYVDFLVzFscVd1TE1qTXpNM1R0MmxWdFFGQWVSNG1KaWVqWHJ4OTY5T2locy82cWZX
ek1tREZvCjBLQUJ3c0xDa0o2ZWp2VDBkTXllUFJzdUxpNTY5VDl0NDAyNWJjZU9IZFBhUDdWdFIw
UDZuNjV4VU4xampxcUNnZ0xJNVhMUlBsYmQKeHRycU5IcjBhSTNiWDNVYnFvNWJmWTVCdXZZUjhM
Z3Z5V1F5K1B2N3EyM2pVOGRVVjBIdjJiT0hCZzRjU0FESTFkV1Z3c1BEYWVEQQpnZVRyNjB1aG9h
RjA0OFlOVWZvVEowNVFwMDZkNklzdnZxRGR1M2RUU0VnSXBhZW5DOHYzN2R0SGpvNk8xTFp0VzNy
dnZmZG84dVRKCk5HREFBTnEvZno4bEpTV1J2YjA5dFdqUmdsSlRVK25VcVZQVXJsMDdzcmEycGox
NzloQVIwYVpObThqT3pvNDhQVDFwOU9qUk5IejQKY09yZHV6ZHQyclNKamh3NVFyMTY5UkllR3BL
UWtLQXp2M2ZlZVljQUVBQXlOemNuSnljbmlveU1wTkxTVXJYYjQ2T1BQaUl2THk5YQp1blFwZmZi
WlovVDIyMjlUUVVHQlh1M2Z2MzgvTlcvZW5FNmRPa1ZFUk9mT25TTnpjM055YzNOVGU3WGhwazJi
cUdIRGh1VHM3RXd4Ck1USEMvRFZyMXBDMXRUVkpKQktTU3FVVUd4dExSRVJIamh3aFgxOWZBa0Ny
VjYrbS9QeDg4dkh4b1VhTkdsRllXQmpGeGNXUnJhMHQKalJzM2prcExTMm51M0xra2tVZ29QRHlj
L3Z6elQ5RzJVMjcvdm4zNzZMUFBQcXRVUDAzMTBHYldyRmwwNmRJbFlYcisvUG1pYVVVNwpWT3Vp
YmI4VGthZ3QzMy8vUFptWm1WR25UcDNvNU1tVGRPTEVDZkwwOUNRTEN3dmFzV01IRFJreWhISnpj
NFh5ZnZ2dE42M3BkVzF6CjFicHE2MVA2bEtYY2x1enM3RXJiTUM0dWprSkNRa1R6L1B6OHlNZkho
K2JQbjA4TEZ5NmtRWU1HVVZaV2xzNTlwYW1QeGNiR2tsUXEKRmNaOVNrcUt6cnowR2IvS2JidDY5
YXJXL3FscmJPcmIveDQ5ZXFTeEhIMk9FYnI2bnJMRGh3OVR2Mzc5Q0FETm1qV0xMbCsrckhZYgph
NnRUYVdtcDF1MnZhOXhxT3dicHM0K0lpTmF2WDAvQndjRnF0K2ZUUkJGM1RYb2JrcUhrY2psbFpH
UlVPckFxbEphV1VsRlJFUkU5CnZ0emRVT1hsNVhUMzdsMGlJaW91THE1NlJZbG95WklsbEpHUlFh
ZFBuNmFEQnc5U1hGd2NUWmd3Z2ZidTNhdDF2VHQzN2dpM0hxblMKMVg1aktDMHRwVXVYTG1tc2d6
TEZ0aWFxdkwwVjIxR1hrcEtTYXRkRFhUNmE4bFZIMTM3WHR5MVZ2YlZDMzdaV3RVOHAwOVdXb1VP
SAowdlhyMTRWcFB6OC9ldmZkZDZtd3NMRFNyWUdHMWw5QkxwZUxnbmgxOGxLbTJqWk4vVk9mN1dp
c2NhQ0xNWTg1K3RaSjIvYlgxVCtxCmV3eDY4Y1VYNmQ5Ly82M1N1dldKSXU1S0FnTURTUzZYSXlr
cHFmYS9mdGRUMzMzM0hiWnUzU3A2WUFIdytHcGZkM2QzdEd2WHprUTEKWTArcTJ1cFR0Mjdkd3VM
Rmk3RjgrWEkwYU5BQS92NytDQWdJd0pkZmZtbVUvRTJOeDZicGZQamhoeGc0Y0tEUkxoeDhrZ1VG
QlVFdQpsNE1EY0EwNGMrWU0vUDM5TVh6NGNQajYrcUs0dUJqWjJka1lObXdZaGcwYlp1cnFzU2RR
YmZhcFc3ZHVZYytlUFpnd1lRSmNYRnpnCjcrK1BiZHUyR2JVTVUrR3hhUm9IRGh5QWxaV1ZjSHZs
MDQ0RGNBMTc4T0FCRGh3NGdLeXNMQVFGQmZGZjFxemFhcnRQL2ZUVFQ4SkYKT1czYnRrVm9hR2lO
bGxkYmVHd3lVK01BekJoampKbUFJZ0RYeWZ1QUdXT01zZnFPQXpCampERm1BaHlBR1dPTU1SUGdB
TXdZWTR5WgpnTWxleHZEUlJ4K1pxbWlqV3Jod29hbXJ3SlJ3djJJMWdmc1Zxd2ttQ2NBTEZ5N0Vv
a1dMOFBISEg1dWllS05SZEdidTFIVUQ5eXRXCkV6VDJxN2c0UU9ubEJKVVlveDhhc1F6dVYzV1B5
YjRCTDFpd29GNzhWVm5WTnpDeG1zSDlpdFdFU3YwcUprWjM4S3R1UDZ5Qk1yaGYKMVMzOEd6Qmpq
Qm1pdEJTWU9mUEpMNE9aSEFkZ3hoZ3p4RysvQWJkdVBmbGxNSk16MlNsb3hoaDdJc1hHVnBvbEFW
V2FWM2xPSFN1RAptUngvQTJhTU1VTm91eWpxU1NxRG1Sd0hZTVlZTThTZE8vV2pER1p5ZkFxYU1j
WU1VVlpXYVpiUlR3WFhSaG5NNVBnYk1HT3NXdTdkCnU0ZUxGeSthdWhxc25pc29LTUQxNjljQkFB
OGZQa1JKU1ltSmExUjlISUJyeWM2ZE8rSGw1UVdKUklMKy9mdmpsVmRlUVo4K2ZmRFMKU3kvaDhP
SERwcTRlZTBKdDNib1ZucDZlUXIrYU5Ha1MzbmpqRGJ6NjZxdm8yTEVqWG5qaGhScXZ3NElGQ3hB
Y0hGemo1YkRhczIzYgpOblRyMWcwU2lRUTllL2JFcmwyN2hHWG56NS9INk5HaklaRkk4TlpiYnlF
cks2dEc2M0xyMWkyTUh6OGVzMmJOd3NxVksrSHY3NDllCnZYcmgxS2xUTlZwdWJlQlQwTFZrK1BE
aHVITGxDdDU1NXgwc1diSUVQWHYyUkVWRkJTWlBub3pubm5zTysvYnRROSsrZlUxZFRVRnAKYVNr
T0hUcUVvS0FnVTFlRmFURjY5R2hjdm53WmMrZk9GZnFWUW41K1BzTEN3b3hlcG1yZldMUm9FZkx5
OG94ZURqT2Q0T0JnNU9UawpJQ0lpQXRPblQ4ZXdZY09FWlI0ZUh2amxsMTl3OE9CQnJGbXpwc2Jy
TW1QR0RKU1ZsV0hqeG8wQUFKbE1CbjkvZjl5OGViUEd5NjVwCi9BMjRGdG5iMndNQUpCSUpBTURj
M0J3elo4NUVXVmtaTm0zYVpNcXFpY2hrTW93ZlB4N0p5Y21WbHBXWGwydGNqNGgvcFRJRjFYNmwK
MExCaFEwUkhSK3RjWDlzK1ZhV3Viemc2T3FKOSsvWjY1OEdlREE0T0RxTC9sVmxZV01ESHgwZnRl
c1krRHB3L2Z4NlptWm1ReVdRQQpBRXRMUy96NDQ0OGEvK2pUVnI0aGZiMDI4RGRnRTd0Nzl5NEFv
SG56NWdDQTdPeHNSRVZGNGZqeDR5Z3NMTVEzMzN5RG5qMTc0c1NKCkU0aU9qb1pVS29XTmpRMVdy
RmlCdUxnNGVIbDVZZkhpeFdqY3VERk9uRGdCZjM5L3pKbzFTMnRlaVltSmlJNk9ScXRXcmVEcDZZ
a2wKUzViQTB0SVNmLzc1Sjl6YzNMQml4UXJzMkxFRGx5NWR3dVhMbDdGNjlXb2NQbndZYVdscGtF
Z2syTDU5TzZLam85R2xTeGNBUUZGUgpFV2JQbm8xbm5ua0dLU2twYU5xMEtaNTk5bG4wN3QwYi9m
cjEwMWdQVm5PSUNIUG16TUZYWDMybHNlODhmUGhRNHo0dExpNVcyNjlVCis4YUNCUXZ3KysrL0l6
WTJGcW1wcVFDQXdzSkN6Smt6QjliVzFyaDgrVEphdDI2TnFLZ28yTmpZNk94N1Q2elMwc2NQejRp
TmZYd0wKMFowN2FpK2txdk5sR01ETVRQejlMU1ltQm5sNWVTZ29LTUQyN2R0eDZOQWhBSVlmMDdw
Mzd5N0tOeVFrQlBQbXpjUEFnUU1SRXhNRApKeWNuUFB2c3MzajIyV2NCQUFrSkNmaisrKy9Scmww
N3lHUXlyRisvSGxaV1Z2amhoeC93L1BQUEF3RDI3ZHRuY0YvWFZuZWpDUXdNCnBJQ0FBS3BOSDMv
OE1TMVlzS0JXeTZ3SmhyWmovZnIxQklBT0h6NU1SRVFsSlNVMGNPQkFhdHEwS1YyOGVKSEt5OHZw
aFJkZW9JS0MKQXFxb3FLQ0lpQWlTU3FXVW41OVBxYW1wNU9EZ1FENCtQdlRiYjc5UlJFUUVaV1Jr
MEpBaFF5ZzFOWldJaU5MUzBnZ0FIVDkrWEd0ZQpXVmxaMUtGREIvTHc4S0NkTzNmU3RXdlhxR1BI
ampScDBpU2hybTNhdEtFbFM1WVFFVkZwYVNtMWJObVM5dS9mTDdSNzVNaVJRdHF2CnYvNmFaczZj
U1VSRVo4NmNJUUFVRlJWRjE2NWQwMW9QWTN0YSs5WHExYXNKQUMxWXNJQTJiTmhBMzMzM0hZV0do
dEtvVWFPSWlOVDIKbmJObnoycmRwNXI2RlpHNGIrVGs1TkRreVpPcFdiTm13cm9CQVFHMFljTUdJ
aUlxS3l1ajd0MjcwN0JodzRpSTlPcDdkWTNPL2JGbApDMUhMbGtTQStKOHhHYUVNUS92VjFxMWJD
UUR0M3IxYjdYTEZQaVVpa3NsazVPZm5KMHpQbURHREtpb3FxblJNVS9YZ3dRTUtEQXdrCkFOU3NX
VFBhc1dPSGFQblZxMWZwbVdmQTM3M21BQUFlSzBsRVFWU2VJVGMzTjBwT1RxYWtwQ1R5OXZZbUZ4
Y1hJdEo5L0tyS01iUzYKRkhHWFQwR2J3T3pac3hFVUZJU3VYYnVpV2JObVNFNU9ScnQyN2JCMTYx
WVFFWktUa3hFZkh3OW5aMmZjdlhzWEJ3NGNRTStlUGVIaAo0UUZQVDArTUhEa1MzMzc3TFRJek0z
SHk1RW4wNk5FREFPRHI2NHR2di8wV3JxNnVXdk55Y25LQ3U3czd2THk4TUd6WU1MaTZ1cUovCi8v
NjRjT0dDcUo2S1U1cVdscFo0K2VXWDRlM3REZUR4S2NmMDlIUWgzY2FORytIbzZBZ0E2TktsQzZS
U0tRRG9yQWN6TGt0TFMxaFoKV2NIYTJocFdWbGJDL2xQWGR6cDE2cVJ4bis3ZnYxOWp2MUpRNUMy
VlN1SGw1U1djOW91UGowZEtTZ3BDUWtLRU9vV0hoMlBYcmwxSQpUVTNWdSs4OUVlUnlZTW9VSUNT
azVoNGJXUnRsR01IOSsvZHg2dFFwN042OUd3QXdhZElrRUpIQnh6UjFQMlUwYnR3WWUvYnN3UWNm
CmZJRDgvSHdFQndkajllclZ3dkkyYmRyQXhjVUZMNzc0SXZyMjdZdUFnQUJzMmJJRm1abVpTRTlQ
MTNyODB0YlhhK1BZeGFlZ1RlQ3oKeno1RDkrN2RZV0VoM3Z5cHFhbHdkSFNFbFpVVkFLQlBuejdZ
dTNjdlBEMDlBUUEyTmpaQ2NBT0FBd2NPb0hmdjNxTGYvaUlpSXZUSwpTeUtSaU5henM3T3JkRm0v
WXJsRUlzR3FWYXR3NWNvVnJGMjdGbWxwYVhqNDhLRm9YY1hwUitEeDZYUkZoOVpWRDJZOEF3Y09G
TGE3CjRxcFJCZFcrbzIyZmF1dFh5dXNyZjFaTUh6MTZGRktwRkphV2xzSnl4U25Ga3lkUG9sZXZY
bnIxdlNmQ3RHbUFVaUI0WXNzd2dtYk4KbXVIbGwxL0c4T0hETVhueVpDeGJ0Z3ptNXVZR0g5TTBz
YlMweEpJbFN6QjQ4R0NNR1RNR1U2Wk1nVlFxeGFoUm93QTg3b1BtNXVaQwplZzhQRHpnNE9DQWhJ
UUdlbnA1VjZ1dTFjZXppQUd3QzV1Ym1sWUl2QU9UbTVzTEN3a0w0M1VLWDdPeHNuRDE3VnUweVEv
UFNKVG82Ckdpa3BLZmpoaHgrd2J0MDZIRDE2VkZnMlk4WU1USnc0RVdmT25JRzF0VFZzYlczeDNI
UFAxVWc5bUg0a0VnbVdMbDJxTlkybWZhcXQKWCtsU1ZGU0UzTnhjRkJZV29sR2pSZ0FBTHk4dldG
aFk0TkdqUjFYS3MwNktpYW41d0ZnYlpXalJ1blZyQUkvSHNEcktBUThBZnZubApGN1JvMFFJclY2
N0VpUk1uOE5kZmYxVjcvRis3ZGcyT2pvNndzN01EQUR6MzNIUDQ0NDgvMEtkUEgvejY2NjlDQUZi
SHpNeE1PTTVXCnBhL1h4ckdMVDBIWElXNXVidGk3ZDYvbzJ3QVI0ZSsvLzFhYjN0WFZGUmN2WHNU
bHk1ZEY2VStlUEdsd1h1b28vaW84ZCs0Y0lpTWoKc1d6Wk10RTNHNFdoUTRkaTBxUkppSStQUjFw
YUdoSVRFNnZjSm1ZODZ2YVZnclo5cXExZkthaGVjYTNnNGVHQmlvb0tIRk42bG5GTwpUZzdLeTh2
cnoxbVBwK1IxaEY1ZVhqQTNOOGY1OCtjckxidCsvYm9Rb0FFZ0t5c0xPVGs1V0w1OE9lTGo0M0ht
ekJsczJiS2wydU0vCk96c2JLMWV1Rk0zcjNiczMyclJwZzh6TVRJM3JaV1JrNE42OWUraldyVnVW
KzNwdEhMczRBTmNpeFJYUG1pNmZmL1hWVjVHZG5ZMkkKaUFqazUrY2pKeWNIaXhZdEVuNFhLUzh2
UjNGeHNaQit6Smd4YU5DZ0FjTEN3cENlbm83MDlIVE1uajBiTGk0dU92TXFLeXNUdlp5NwpxS2dJ
RlJVVndyUzl2YjF3bjkyeFk4Y2dsOHR4N3R3NVZGUlVJQ2twQ1NVbEpTQWlFQkVXTGx5SURoMDZZ
UHIwNlJnN2RpeHNiR3owCmJoT3JQa1dmeU0vUDE1aEd0ZStrcDZkcjNLZWpSNC9XMks4QWNkL0l6
ODlIVVZFUmlvdUxRVVFZTldvVVdyVnFoYjE3OXdwbHBhV2wKd2NQREEwT0dEQUdndSsvVmVVL0o2
d2h0YlcwUkVCQ0EzMzc3VGZRdFdDNlg0OU5QUDhXNGNlT0VlZmZ1M1VOTVRBd0FZTkNnUVJneApZ
Z1FhTldwazhERk5WZHUyYmJGOCtYSmtaR1FJODdLeXNuRHo1azBNSFRwVWxQYmV2WHZDNThURVJQ
VHIxdzg5ZXZTb2NsK3ZsV01YClh3VmRkWWEwWThlT0hkU2xTeGNDUUVGQlFSUWZINjgyM1pvMWE4
amEycG9rRWdsSnBWS0tqWTBsSXFKTm16WlJ3NFlOeWRuWm1XSmkKWW9UMHNiR3hKSlZLQ1FDNXVy
cFNTa3FLenJ5U2twTEkzdDZlV3JSb1FhbXBxWFRxMUNscTE2NGRXVnRiMDU0OWU0aUlhTzdjdVNT
UgpTQ2c4UEp5dVhyMUtQajQrMUtoUkl3b0xDNk80dURpeXRiV2xjZVBHVVdscEtiM3p6anVFeDQr
cUpYTnpjM0p5Y3FMSXlFZ3FMUzNWCldnOWpleHI3VlV4TWpLaGZKU1ltVmtxanJ1ODhldlJJNno3
VjFxK1UrOGFmZi81SnZYcjFJZ0MwZlBseUtpMHRwUk1uVGxDblRwM28KaXkrK29OMjdkMU5JU0Fp
bHA2Y1RrWDU5cjY2cHREOUdqcXgwTmJMcXhjblZ2Z2k2QnNxb3l2Z29LQ2lnNGNPSFUvdjI3U2s4
UEp5bQpUSmxDd2NIQnRIZnZYbEc2czJmUGtydTdPMFZIUjlQMjdkc3BNaktTWkRJWkVSbCtURlBs
NGVGQlFVRkJOR1BHREZxeVpBbDVlM3ZUCm0yKytTV1ZsWlVJYVB6OC84dkh4b2ZuejU5UENoUXRw
MEtCQmxKV1ZSVVRWNitzMWRleFN4RjFKWUdBZ3llVnlKQ1VsR1MrcTY3QncKNFVMSTVYSXNYTGl3
MXNxc0NUWFZqckt5TW1SbVpzTFYxVlh0YjhXcWlBZzVPVGx3Y25LcWRsN0tjbk56MGF4Wk0yRzZ1
TGhZK0hZcgprOG1FMHptZmZmWVpYbm5sRlpTVWxPRGh3NGU0Zi84K3RtN2RpbkhqeGdtL24xU25I
dnJpZm1VNFRmc1UwTjZ2VlB1R0tpTENwVXVYCllHWm1CbmQzZCtOWHZCWlYyaCt1cnNDTkc2STBh
dC9WVzUzblVkUkFHZFhwVnpLWkRCa1pHWEIyZGtiVHBrMHJMWmZMNVRBek04UDkKKy9kaGFXbUpo
ZzBiaXBaWFovem41ZVdoYWRPbUtDb3F3dFdyVjlHNmRXdmhOMkVGZjM5L0JBUUVZTkdpUlNncUts
SjdZVmRWKzNwTgpITHVDZ29JZ2w4djVJcXk2eU1yS3lxQ0Rsa1FpVWR0eHFwS1hNdFVEclBLcFpV
WG4vZTY3NzdCdjN6NTg4TUVIb3JUbTV1Wm8wNmFOClVlckJhbzY2ZmFxZ3JWOXBDNzZLZGV2dHp3
eFA0ZXNJTFMwdDBibHpaNDNMRlEvbFVEeVZUVlYxeHI4aTROdmEybXF0QS9ENDZXK3EKd1YraHFu
MjlKbzlkSElCWnRmVHExUXZUcDAvSHFGR2o0T3ZyaStMaVltUm5aMlBZc0dGbzE2NmRxYXZIbVBI
eDZ3anJGTGxjanR1MwpiNHN1cEhwU2NBQm0xZUxsNVlYczdHd2NPSEFBV1ZsWkNBb0s0c0RMR0tz
MUd6ZHVSR1JrSkFCZzgrYk5DQTBOTlhHTjlNY0JtRlZiCmt5Wk5NSHo0Y0ZOWGd6SDJGSm93WVlL
cHExQmw5Zm8ycEtKRFQvNzdJbG5kdy8yS01XWU05VG9BMi9aVy83b3N4cXFEK3hWanpCanEKZFFC
bWpMRmFVVm9LYk5vRXZQTEs0MXVJL3YvNXdVOWNHYXhXOFcvQWpERldIVEV4ang4YldaTlBycXFO
TWxpdE0xa0FYclJva2FtSwpOcHBGaXhaaHdZSUZwcTRHVThMOWl0VUV0ZjJLQ1BqelR5QXRUZjFL
SDMxVS9ZS05XQWIzcTdySEpFL0NBdkRFUDYxSTRTTmpEREptCk5OeXZXRTNnZnNXTVNmRWtMSk1G
WU1ZWVkreHBwQWpBZkJFV1k0d3haZ0ljZ0JsampERVQ0QURNR0dPTW1RQUhZTVlZWTh3RU9BQXoK
eGhoakpzQUJtREhHR0RNQkRzQ01NY2FZQ1hBQVpvd3h4a3lBQXpCampERm1BaHlBR1dPTU1SUGdB
TXdZWTR5WkFBZGd4aGhqekFRNApBRFBHR0dNbXdBR1lNY1lZTXdFT3dJd3h4cGdKY0FCbWpESEdU
SUFETUdPTU1XWUNISUFaWTR3eEUrQUF6QmhqakprQUIyREdHR1BNCkJEZ0FNOFlZWXliQUFaZ3h4
aGd6QVE3QWpESEdtQWx3QUdhTU1jWk1nQU13WTR3eFpnSWNnQmxqakRFVDRBRE1HR09NbVFBSFlN
WVkKWTh3RWpCcUFDd3NMVVZKU1lzd3NHV01td3VPWnNacGwxQUFjR0JpSStmUG5Hek5MeHBpSjhI
aG1yR2J4S2VnNlJDYVQ0ZUxGaS9XdQpMTVlZWTVWWlZEZURSNDhlNFo5Ly9zR0pFeWR3OCtaTkpD
Y25ZKzNhdGZEeThrTG56cDFoWjJlbmRyM0V4RVFjUFhwVXJ6TE16YzNSCnBFa1RORzNhRk0yYU5j
T3p6ejZMeG8wYlY3ZnFkY3JwMDZjeGVQQmdaR1ZsWWVqUW9ZaUxpNnNYWmRVM2UvYnNRWFIwTkg3
Ly9mZDYKV1c1Vnh6TmpyQW9DQXdNcElDQ0FERlZTVWtMejU4OG5LeXNyYXRDZ0FRMGNPSkFjSEJ5
b2E5ZXVGQmdZU0haMmRpU1JTR2pBZ0FGMAo1TWlSU3V1ZlBuMmFsaTFiUm9NSER5WUFCdjB6Tnpl
bjd0MjdVMVJVRkQxNjlNamd1dGRGa1pHUm9qWWVQWHEwWHBSVlgremZ2NS82Cjl1MUxBTWplM3I3
ZWxWdmQ4Y3dZMDU4aTdsWXBBRis5ZXBYYXQyOVBBQ2c0T0ppeXM3T0ppTWpUMDVObXpacEZSRVFQ
SHo2a21UTm4Ka29XRkJRR2dWMTU1UldOKzA2Wk5xeFJrMTY1ZFM3ZHYzNmJjM0Z5NmRPa1NIVHg0
a0pZdVhVcmUzdDZpZE0yYk42ZWRPM2RXZlV2VQpFYXRXclJMYVpHMXRUWGZ2M3EwWFpUM3BrcE9U
S1RBd1VOVG5haU1BMTJhNXhoN1BqREh0cWh5QVMwdEx5ZC9mbndCUW56NTlxS0tpClFsaW1QR0FW
WW1KaUNBQlpXVmxwelBQQWdRT2lBMDJEQmcyb3ZMeGNZL212dmZhYUtMMmxwZVVUSDRRZlBYcEVp
eGN2cHVIRGgxTmMKWEZ5OUtldEpkZXJVS1JvN2RpeUZob2JTeElrVHljcktxbFlDY0cyWFd4UGpt
VEdtblNMdUd2d2I4TXFWSzNIczJERUF3UHo1ODJGbQpwdjA2cnRHalJ5TTFOUldyVjYvV21LWjU4
K2FpYVFzTEM1aWJtNnROYTJWbGhaOSsrZ24yOXZaWXRXb1ZnTWNYRkUyZVBCbFhybHlCCmxaV1ZJ
YzJwTTJ4dGJURnYzcng2VjlhVHFtSERodmp4eHgrRi9pU1h5N0Zod3dZQWdFUWlxVGZsMXNSNFpv
enB4K0Nyb0JNU0VvVFAKblRwMTBtdWRkOTk5Vit2QXRyR3hFVTNyYzZCNS9mWFhSZE8zYnQycTlR
dGpXUDNWcmwwNzBSOXpiZHUyRlQ0VFViMHB0eWJHTTJOTQpQd2FQb3JObnp3cWZNekl5OUZySHhj
VUYzYnQzTjdRb3JieTh2TkMwYVZPTmRXUE1tQ3dzL25leXFDYS9BZGQydVhWbFBEUDJOREk0CkFI
ZnMyRkg0L09PUFArcTlYbUppb3FGRmFTV1JTTkM1YzJmUnZEdDM3aGkxRE1icXU3b3luaGw3R2hu
OEc3Q2ZuNTh3K0RadDJvVCsKL2ZzalBEeGM1M3JHUG1WVlhsNk9mLzc1UnpUUDNkM2Q0SHdxS2ly
dzc3Ly9JaTh2RDE1ZVhuQjBkTlNZdHFpb0NMZHUzZEs0M043ZQpIbEtwVkRRdlB6OGZ1Ym01bGRL
NnU3dHIzQ2JYcjErSGxaVVZuSjJkdGRiOTVzMmJPSDM2Tks1ZHV3WTNOemQwNmRJRkxpNHVJQ0tV
CmxKUlVPclZmbmJLVTVlZm40NTkvL29HZG5SMDZkZXFrVnptcXJsMjdockt5TW5UbzBFR1lWMUJR
Z0xTME5OeTdkdzlCUVVGbzFxeVoKWG5rOWVQQUFSNDhlUldCZ0lDd3RMUTJ1eTlPc3JveG54cDVH
Qm8raUtWT21vRW1USnNMMHBFbVQ4TkZISDZHaW9zS29GZFBsMkxGagpLQ2dvRU0zejl2YldlLzBO
R3pZZ0lDQUFUWm8wZ2JlM3QzREFkM056dzg4Ly82eDJuVHQzN21ENjlPbm8xS2tUT25Ub0lQbzNi
ZG8wCkhEcDBxTkk2cDArZnh0dHZ2MTBwclV3bUU2VzdmLzgrMXE5ZmovNzkrOFBOelUyNE1FYWR2
THc4dlBYV1cralFvUU5pWW1KdysvWnQKckZ5NVVxaFg3OTY5OGMwMzMyaGMzNUN5Rks1ZHU0YVFr
QkM0dWJuQjJka1pJMGVPaEorZkgrenM3T0RwNllucDA2ZFgyaCtxTGw2OAppS1ZMbDhMZjN4OXVi
bTZJalkwRkFCUVhGMlBPbkRsbzFhb1ZCZ3dZZ05HalI2TjU4K1lZTUdDQTJqOWVsQjA4ZUJBdFc3
YkVvRUdECjBLWk5HOXkvZjE5blc5ai8xSlh4ek5oVHFTcjNBZi95eXkrVjd0dnQxNjhmdFdqUm90
SnRDL3JJek13VTVXVm5aNmR6bllpSUNORTYKYmR1MnBZS0NBcDNybFpXVlVXUmtKRFZ1M0pnV0xW
cEV5Y25KZE9USUVWcXhZZ1ZKcFZJaHYwR0RCbW5NYjlPbVRhS3lQVHc4dEpaWgpVVkVoM09xeGRP
bFMwZnlmZnZxSmhnMGJKcnJkQkFCdDM3NWRZLzI3ZCs5T0FDZ3BLVW0wN09yVnErVHE2a29BYVBI
aXhaWHFZR2haCkNqLy8vRE0xYnR5WW5KMmQ2ZGRmZnlXWlRFWnl1WnlPSGoxS2MrZk9KWE56Y3dK
QUxpNHVGQjhmWDJuOTFOUlU2dHk1YzZVK3MzVHAKVXJwMDZSSjE2dFNKQUpDRGcwT2x1ZzBhTkVo
MGE0eXFWMTk5VlpSK3hZb1ZXdHRTVllzWEx4YktjSEJ3cUpFeVRGV3VzY2N6WTB5NwphajJJZzRq
bzY2Ky9Ka3RMeTBvRHQyZlBublRseWhXRDhqSWtBQmNVRk5ESWtTTkY2YTJzck9qWXNXTTZ5eWty
SzZPQWdBQnEyTEFoCkpTY25WMXArNXN3WmF0cTBxWkR2cEVtVE5PYjF3Z3N2Q09ta1VpbkpaREt0
WmZmdjM1K2FObTFLUlVWRndqeVpURVo3OXV5aFc3ZHUKMGV6WnMwVnQyckZqaDlwOFB2bmtFd0pB
dnI2K2FwZGZ2WHFWYkcxdGFjR0NCYUw1VlNtTGlHaldyRmxDdWdNSERxaE44K1dYWDRyeQpXNzE2
dFdoNWNYRXhYYjkrbldiT25DbEtOMnJVS0hybW1XZG93b1FKdEgvL2Zpb3ZMNmZTMGxKYXVuU3BL
RjEwZExURytpMWN1RkNVCmR1L2V2UnJUVmtkOURzQkV4aDNQakRIdHFoMkFpWWdPSGp4SWJtNXVs
UWF0dGJVMXZmLysrM3A5SXlYU0hZREx5OHZwK1BIanRIejUKY3ZMdzhCQ2w5Zkh4VVJ0TTFWbXhZ
Z1VCb0U4KytVUmptbm56NW9ueS8rdXZ2OVNtTzNUb2tON2ZJdlB5OHNqS3lvcG16NTZ0TVUxRwpS
b1plK1NrZVMvajY2Njlyekd2S2xDazBaODZjYXBkMTZOQWhra2drQklER2p4K3ZNVDhpRWowY3BW
R2pSblR0MmpXMTZaVFBNbGhZCldOQzZkZXZVcHV2UW9ZT1FMaXdzVEdPNWQrL2VwVGZmZkpQYXRt
MUxIMzc0SWNubGNxMzFyS3I2SG9DSmpEZWVHV1BhR1NVQUV4RVYKRlJYUisrKy9MenlpVHZtZms1
TVQvZnJycnpyelVBM0FGaFlXTkdEQUFPcmF0U3M1T3p0WCtzdmMzdDZlZ29PRGFmMzY5VnBQVHly
TAp5OHNUdnQxZXVIQkJZenJWcDNLTkd6ZE9ZOXB1M2JvSjZZWU9IYW94M1pvMWEwZ2lrZERseTVj
MXBpa29LTkFyS0RvNk9oSUFhdEtrCmljYm5ZQ2NrSk5DTUdUT3FWWlpNSmlNdkx5OGhUVVpHaHNi
OGlJaHUzTGdoQkdzQU5HVElFTFhwZkgxOVJkK0FOWmt3WVlLUXJrZVAKSGxyTHJnMVBRd0FtTXM1
NFpveHBwNGk3MWI2VTBjYkdCa3VYTHNXSkV5Zmc1T1FrV3BhZG5ZMVJvMFpoenB3NWtNdmxldWNw
bDh0UgpVbEtDNXMyYm82S2lRblRCVXI5Ky9aQ2JtNHZZMkZoTW1EQkI3NnN4UC8vOGMrVGw1YUZs
eTVhNGNlTUdFaElTMVA3THlzb1NyZmZ2CnYvOXF6SFBLbENuQzUvajRlRnkvZmwxdHVuWHIxdUg1
NTU4WFBWUkJsZXJWdTVydStXemR1aldBeDFmK0RoNDhHRGR2M3F5VXBtL2YKdmdnTkRhMVdXWnMz
YjhhWk0yY0FQTDRYVlZ2ZGdjZjNoZ1lGQlFuVDhmSHhPSDc4ZUtWMHlnK1owTGJ2ZXZic0tYeStj
T0dDMXJLWgo4ZFRFZUdhTXFXZTBld204dkx6UXFsVXJCQVlHd3RYVlZiUXNLaW9LNDhhTjB6dXZo
ZzBiSWlVbEJYLzk5UmUyYmRzbUNoakp5Y240CjRvc3ZESzdmZ1FNSEFBQzNiOS9Ha0NGRE5QNExE
UTJGdWJtNThPL1NwVXNhRHphaG9hRndjSEFBOFBpUGhuWHIxbFZLYy9Ma1NSdy8KZmh3UkVSRUcx
MW1kRVNOR0NKOVRVbExnNCtPRFRaczJpWjZTWkcxdERYOS8vMnFWb3h3OFc3ZHVyZkhSb01yR2p4
OHZtbFlFOEtxdwp0N2NYUGhjWEYxYzVIMVkxeGh6UGpESDFqSDR6bjUrZkg4NmVQWXZKa3llTDVt
L2V2Qm03ZHUweU9MOWV2WHJocTYrK0VzMmJOMjhlCmR1L2ViVkErNmVucEFJQUJBd2Fndkx4Yzcz
OEZCUVVhdjZuWjJOaUk3cG44NFljZlVGNWVMa3F6ZHUxYU5HL2VIQysrK0tKQjlkVmsKOXV6WjhQ
RHdFS2J2M2J1SGNlUEdvVnUzYnRpelo0OVJ5Z0RFVDBqUzllMVhvVmV2WHFMcGMrZk9HYTArekRT
TVBaNFpZLzlUSTNmVApOMnJVQ0d2V3JNRzMzMzRybXYvQkJ4OVVLYitwVTZlS1Rxbks1WEtNSFR0
VzcxT1QyZG5aeU0vUEJ3Q2NQMysrU25YUTVLMjMzaEpPCjRkNitmUnM3ZCs0VWxoVVZGZUdYWDM1
QldGaVkwUjRRWVdOamcrVGs1RXFQQWp4MTZoUUdEeDZNTVdQR0lDY25wOXJsS0FkZ2ZVL3oKdTdp
NGlLYTFuYjVuVHc1amoyZkcyR00xK2ppYmlJZ0l2UGJhYThMMHVYUG5VRnBhV3FXODFxNWRLM3Iw
NUlNSER6Qml4QWc4ZVBCQQo1N3JLQWVubXpac29MQ3lzVWgzVWNYZDN4NUFoUTRUcDZPaG80Zk92
di82S2dvSUNUSm8weVdqbEFVQ3paczJRbkp5TXhZc1hvMEdECkJxSmxXN2R1eGJQUFBsdnQzMDJW
LzJDNGNlT0dYdXZZMnRxS25pVEdUMHVxWDR3NW5obGpCZ2Jnd3NKQzNMdDN6NkFDRml4WUlIeVcK
eStWNlAvQmRWY09HRGZINzc3L0R6czVPbUhmaHdnV01IVHRXNXdVaHFxZFFqWDFSai9MRldIdjM3
c1hWcTFjQlBMNzRhdENnUVhCegpjek5xZWNEamk1bm16WnVIZi8vOUY4SEJ3YUpsdDIvZlJsQlFr
UEN0dnlxNmRPa2lmTlkzQUFPUHZ5MnB5NFBWUGFZY3o0d3hBd1B3CnlaTW44Y2tubnhoVWdMdTd1
K2hSZDlYUnNXTkgvUERERDZKNXUzZnZ4dHk1YzdXdTE3QmhRN1JvMFVLWVZzMURHNWxNaHIvKytr
dHIKbWhkZWVFRUlzbks1SEd2WHJzWDU4K2VSa3BKaXRJdXZGRlJmT05HMmJWdkV4c1ppMzc1OW9q
YmV1WE1IbjMzMldaWExVVDdiVUZSVQpKUHhSb1l2eVZlU3FMOHRnZFl1cHh6TmpUenVEenhGdTI3
Yk5vUFRsNWVYQ2FTcExTMHZSMjFlcTRwVlhYc0c3Nzc0cm1oY1ZGWVhOCm16ZHJYYy9UMDFQNHZI
YnRXbHk2ZEVtdjh1YlBuNCswdERTdGFjek16UERXVzI4SjB6LysrQ05XcjE0TloyZG5EQjgrWEs5
eTlLVjgKdWx0Wi8vNzljZVRJRVhUdDJsV1l0M2Z2M2lxWDQrUGpJNXJXOUh4c1pYbDVlYUpUa3I2
K3ZsVXVuOVVPVTQ5bnhwNW1CZ2ZnNjlldgo0N2ZmZnRNNy9kbXpaMUZTVWdJQUNBZ0lFTjBIcWxC
V1ZpYWExblZLT1NvcUN2MzY5UlBOZS8zMTEzSGl4QW1ONjBSR1JncWZaVElaClpzeVlVZW1GQ0tw
aVltTHczWGZmWWVyVXFWclRBVUI0ZUxqd2UyeFdWaGErK2VZYmhJZUhpOTduYWd3M2I5NFVydWhX
MWFwVks2eFoKczBhWXJzN3RPNk5IanhiOTBiSisvWHFkTDRSWC9rTmw3Tml4b3ZWckd0K1hXalUx
TVo0WlkvcXAwbFV5NzcvL1BtN2Z2cTFYV3NXOQpzUktKQkI5Ly9MSGFOSGw1ZWFMcFI0OGVhYjI0
dzhMQ0FqRXhNV2pldkxrd3I3aTRHTUhCd1JxdkFIN3BwWmRFYjB2YXRXc1hBZ0lDCmtKbVpXU2x0
ZVhrNVZxNWNpVmRmZlJXZmYvNjVYcWZjSEIwZEVSSVNJcHBueU1WWGp4NDkwanF0VFBsQ0wxVTll
L1lVWGcvbzUrZFgKNWJLc3JLd1FIUjB0WE9GOTVjb1YwUlhlNnF4ZnZ4N0E0OStCTmQycnJYcWJs
aVpGUlVYQ1oyM0I5YzZkTzNqcHBaZGdiMitQc0xDdwpHcnRuV05jZmE3b1VGeGZqdmZmZVE3dDI3
VEJqeGd5OUx3U3Nicm42TVBaNFpvenBwMG9CK01xVksvRDE5Vlg3K2oxbHExYXRFbDZMCjkrV1hY
Nkp2Mzc1cTA2bTdOZWppeFl0YTgzWjJkc2FXTFZ0RTN6QXpNek14WXNRSXRSY2ZTU1FTTEZteVJI
Umw3dUhEaDlHbFN4ZU0KR0RFQ24zMzJHYUtqby9IZWUrL0IwOU1UNzd6ekRxWk5tNFkzM25oRGF6
MlVLVitNTlhqdzRFb1BNTkRtN3QyN29tbHR0eEt0WGJzVwpxYW1wYXBkbFoyZWp1TGdZRW9sRWRN
VnFWY3JxMTYrZjZJK0lDUk1tYUx6bzV0S2xTOExyQlQvNTVCUFI3OUdheXRMMjZrRGxnQ0NUCnlV
UzNSU243NzMvL2kyM2J0dUhodzRkWXYzNDlObXpZb0RIUDZsQis0dGpEaHc4cm5iWFJaZE9tVFZp
MmJCa3VYNzZNRlN0V0NIK3MKMUhTNStqRDJlR2FNNmNtUVowRlhWRlRRMXExYnFXdlhyc0piaU1h
T0hVdkxseStuNU9Sazh2THlvZ2tUSnRDeVpjdUUxODkxN2RxVgpkdTdjcVRIUDA2ZFBpNTQ1clBn
M2FOQWd1bnIxcXM0NmZmSEZGNVhXN2R5NU14MC9mbHp0Zy9uLytPTVBzckd4cWJTTzhqK0pSRUxU
CnBrMmo4dkp5dmJhTE1zV3JBbU5qWS9WZVJ5NlgwL3Z2dnkrcVE1OCtmYWk0dUxoU1dzWHpyQnMx
YWtUNzkrOFhMU3NxS3FMZzRHQUMKVU9sdFNGVXBpK2p4UHYva2swK0Vad04zNk5DaDByTzBiOXk0
UWE2dXJtUnJhMHNiTm16UTJNNmtwQ1JSdVUyYk5xWHM3T3hLNmZMego4eXU5ZE9Qamp6OVdtMmRZ
V0pnb25hWjJWOGVGQ3hmSTN0NWVWTTdQUC85c1VCN1RwazBUcmEvdFRWdkdMRmVibWhqUGpESGRx
djB5CmhwU1VGSm96Wnc0RkJRVlJtelp0eU03T2pnQ1FwYVVsK2ZqNDBPdXZ2MDVidDI3VitIYWFy
Ny8rbXB5Y25MUUdRZ0RVc21WTFdybHkKcGRhNnZQenl5MnJYZFhaMnBoczNibFJLZi9Ub1VlclNw
WXZvNVFHS2Y1NmVucFNTa21MdzlsRFl1SEVqdFd6WlV1ZnJDWW1JcmwyNwpScU5IanlaM2QzZTE5
Vy9ldkRtTkhEbVN6cDgvTDZ6ajV1WkdvYUdod3R1Q1hGeGNLRFEwbE1hUEgwOHVMaTdVdVhObmlv
dUxNMHBaCnlsSlRVNmw5Ky9aQ2VnOFBENHFNaktUKy9mdFRnd1lOeU12TGk4NmVQYXQyM2ZUMGRC
bzhlTERhQi94YlcxdFRVRkNRRU5RaklpS28KV2JObWF1dm83dTVlNlhXRHg0OGZKd2NIQndKQTdk
dTNwNXMzYityYzd2bzRmZm8walJ3NWtycDE2NmEybnlpQ1VVaElDUDMzdi8vVgptZCtwVTZmSTJ0
cGFDSFJIamh5cGxYTDFWZDN4ekJqVG55THVTZ0lEQTBrdWx5TXBLVW43VjJVOStQbjVJU2dvcUVy
UGFqYUZCdzhlCklDMHREZWZQbjBlN2R1M2c1ZVdsOGRTcHZpb3FLbkR1M0RsNGVYa1pxWlppT1Rr
NWVPYVpad0E4UGlWNThlSkZYTGx5QmMyYU5VUDcKOXUzUnNtWExHaWxYSVRNekU4ZVBIOGZ4NDhk
aGFXa0pYMTlmK1BuNVZYcHdmMjBxS2lyQ21UTm4wTDE3ZDQwdnNhZ0w3dDI3aDkyNwpkMlB3NE1I
Q1BxekxuclR4ek5pVElpZ29DSEs1SE1hOVJQY0owNlJKRXd3WU1BQURCZ3d3V3A3bTV1WTFGbndC
aUE3Y2RuWjI2TmF0Ckc3cDE2MVpqNWFseWNYR0JpNHRMcFlkL21KS3RyUzE2OU9oaDZtcm81T2pv
V09tRkZZeXhweGMvSzVBeHhoZ3pBYU4rQTU0d1lRTGMKM2QyTm1TVmp6RVI0UEROV3M0ejZHekJq
akRIR3RGUDhCc3lub0JsampERVQ0QURNR0dPTW1RQUhZTVlZWTh3RU9BQXp4aGhqSnNBQgptREhH
R0RNQkRzQ01NY2FZQ1hBQVpvd3h4a3lBQXpCampERm1BaHlBR1dPTU1SUGdBTXdZWTR5WkFBZGd4
aGhqekFRNEFEUEdHR01tCndBR1lNY1lZTXdFTEFEaHc0QUNlZSs0NVU5ZUZNY1lZcS9jT0hEaUFn
SUFBU0lpSWdvS0NURjBmeGhoajdLbVJtSmlJL3dOWCtEdWcKZTFTMFl3QUFBQUJKUlU1RXJrSmdn
Zz09Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11893</attachid>
            <date>2006-12-17 04:11:49 -0800</date>
            <delta_ts>2006-12-17 04:26:33 -0800</delta_ts>
            <desc>Final patch</desc>
            <filename>UpdatedSVGLengthPatch.diff</filename>
            <type>text/plain</type>
            <size>216263</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MjY1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDYtMTItMTcgIE5pa29sYXMgWmltbWVybWFu
biAgPHppbW1lcm1hbm5Aa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBSb2IuCisKKyAg
ICAgICAgRml4ZXM6IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODEz
CisKKyAgICAgICAgVXBkYXRlIGJhc2VsaW5lIGFmdGVyIHRoZSBTVkdMZW5ndGggcGF0Y2guCisg
ICAgICAgICogc3ZnL1czQy1TVkctMS4xL2Nvb3Jkcy11bml0cy0wMS1iLWV4cGVjdGVkLnBuZzoK
KwogMjAwNi0xMi0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY3IEBACisyMDA2LTEyLTE3ICBOaWtvbGFzIFpp
bW1lcm1hbm4gIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUm9i
LgorCisgICAgICAgIEZpeGVzOiBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTgxMworCisgICAgICAgIFBhc3MgU1ZHTGVuZ3RoIGFyb3VuZCBieSB2YWx1ZSwgcmVtb3Zl
IGFueSBTVkdMZW5ndGgqIHVzYWdlLgorICAgICAgICBCaW5kaW5ncyB3b3JrIGZpbmUsIGFzIHRo
ZSBTVkcgUE9EIEpTIFdyYXBwZXIgc3R1ZmYgaXMgYWxyZWFkeSBpbiBzdm4uCisKKyAgICAgICAg
Tm8gbmV3IHJlZ3Jlc3Npb25zLCBub25lIGZpeGVkLiBCdXQgdGhlIGNvZGUgaXRzZWxmIGlzIG11
Y2ggY2xlYW5lci4KKyAgICAgICAgQW5kIHNvbWUgcHJvYmxlbXMgd2l0aCB3aWR0aC1mdWxsLXBl
cmNlbnRhZ2Uuc3ZnIGhhdmUgYmVlbiBmaXhlZCwgdmlld3BvcnQKKyAgICAgICAgY2xpcHBpbmcg
d29ya3MgaW4gYW55IGNhc2Ugbm93LCBhbHNvIGZvciBwZXJjZW50dWFsIHdpZHRoL2hlaWdodCB2
YWx1ZXMgc2V0IG9uIDxzdmc+LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAqIGtzdmcyL21pc2MvS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OktTVkdQYWludGVyRmFjdG9yeTo6Y3NzUHJpbWl0aXZlVG9MZW5ndGgpOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmg6CisgICAgICAgICoga3N2
ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xl
RWxlbWVudDo6U1ZHQ2lyY2xlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJj
bGVFbGVtZW50Ojp0b1BhdGhEYXRhKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6U1ZHRWxsaXBzZUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50Ojp0b1BhdGhEYXRh
KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBr
c3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0
ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRl
ckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zp
bHRlckVsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHRmls
dGVyRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldFN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAg
ICAgICAqIGtzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRml0VG9WaWV3Qm94OjpwYXJzZVZpZXdCb3gpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcik6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmg6
CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdIZWxwZXI6OnBhcnNlU2VwYXJhdGVkTGlzdCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0hl
bHBlci5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpTVkdJbWFnZUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdM
ZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RvcmVVbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6Omxlbmd0aFR5cGVUb1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpzdHJp
bmdUb0xlbmd0aFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpTVkdMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjp1bml0VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMZW5ndGg6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6c2V0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpzZXRWYWx1ZUluU3BlY2lmaWVk
VW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpzZXRWYWx1ZUFzU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6dmFsdWVBc1N0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGg6Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMZW5ndGg6OmlzRnJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3Ro
OjpkcGkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpQZXJjZW50YWdlT2ZWaWV3cG9y
dCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR0xlbmd0aC5oOgorICAgICAgICAoV2ViQ29yZTo6
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6KToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHTGVuZ3RoLmlkbDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhMaXN0OjpTVkdMZW5ndGhMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xlbmd0aExpc3Q6OnBhcnNlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
TGVuZ3RoTGlzdC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50Ojp0b1BhdGhEYXRhKToKKyAgICAgICAgKiBrc3Zn
Mi9zdmcvU1ZHTGluZUVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xp
bmVhckdyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpidWlsZEdyYWRpZW50KToKKyAgICAgICAg
KiBrc3ZnMi9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIv
c3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxl
bWVudDo6U1ZHTWFya2VyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJF
bGVtZW50OjpjYW52YXNSZXNvdXJjZSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OlNWR01hc2tFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR01hc2tFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR01hc2tFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXNrRWxlbWVudDo6ZHJhd01hc2tlckNvbnRlbnQpOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVy
bkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpkcmF3
UGF0dGVybkNvbnRlbnRJbnRvVGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxl
bWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRl
cm5FbGVtZW50OjpnZXRDVE0pOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OmJ1aWxkR3JhZGllbnQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OlNWR1JlY3RFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YSk6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojp2aWV3cG9ydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OmdldFNjcmVlbkNUTSk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NWR1NWR0VsZW1l
bnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAg
ICoga3N2ZzIvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50
RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRDb250ZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcy
L3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVGV4
dEVsZW1lbnQuY3BwOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpTVkdVc2VFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmNsb3NlUmVuZGVyZXIpOgorICAgICAgICAq
IGtzdmcyL3N2Zy9TVkdVc2VFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0Q3Vyc29yKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGb3Jl
aWduT2JqZWN0Ojp0cmFuc2xhdGlvbkZvckF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUGF0aC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHQ29udGFpbmVyOjpjYWxjVmlld3BvcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
VkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cmVsYXRpdmVC
Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpnZXRBYnNvbHV0ZVJlcGFp
bnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjp0cmFuc2xhdGlvbkZv
ckF0dHJpYnV0ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVy
aW5nL1NWR0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNsYXRlQm94
KToKKyAgICAgICAgKFdlYkNvcmU6OnBsYWNlUG9zaXRpb25lZEJveGVzSG9yaXpvbnRhbGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OnBsYWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFic0Jhc2VsaW5lKToK
KwogMjAwNi0xMi0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yLnBtCShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG15ICVwcmlt
aXRpdmVUeXBlSGFzaCA9ICgiaW50IiA9PiAxLCAic2gKICAgICAgICAgICAgICAgICAgICAgICAg
ICAidW5zaWduZWQgbG9uZyIgPT4gMSwgImZsb2F0IiA9PiAxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICJkb3VibGUiID0+IDEsICJib29sZWFuIiA9PiAxLCAidm9pZCIgPT4gMSk7CiAKLW15
ICVwb2RUeXBlSGFzaCA9ICgiUkdCQ29sb3IiID0+IDEsICJTVkdQb2ludCIgPT4gMSwgIlNWR1Jl
Y3QiID0+IDEsICJTVkdOdW1iZXIiID0+IDEsICJTVkdNYXRyaXgiID0+IDEpOworbXkgJXBvZFR5
cGVIYXNoID0gKCJSR0JDb2xvciIgPT4gMSwgIlNWR0xlbmd0aCIgPT4gMSwgIlNWR1BvaW50IiA9
PiAxLCAiU1ZHUmVjdCIgPT4gMSwgIlNWR051bWJlciIgPT4gMSwgIlNWR01hdHJpeCIgPT4gMSk7
CiAgCiBteSAlc3RyaW5nVHlwZUhhc2ggPSAoIkRPTVN0cmluZyIgPT4gMSwgIkF0b21pY1N0cmlu
ZyIgPT4gMSk7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkocmV2aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk4LDYgKzEwOTgsNyBAQCBzdWIg
R2V0TmF0aXZlVHlwZQogICAgIHJldHVybiAiRmxvYXRSZWN0IiBpZiAkdHlwZSBlcSAiU1ZHUmVj
dCI7CiAgICAgcmV0dXJuICJGbG9hdFBvaW50IiBpZiAkdHlwZSBlcSAiU1ZHUG9pbnQiOwogICAg
IHJldHVybiAiQWZmaW5lVHJhbnNmb3JtIiBpZiAkdHlwZSBlcSAiU1ZHTWF0cml4IjsKKyAgICBy
ZXR1cm4gIlNWR0xlbmd0aCIgaWYgJHR5cGUgZXEgIlNWR0xlbmd0aCI7CiAgICAgcmV0dXJuICJk
b3VibGUiIGlmICR0eXBlIGVxICJTVkdOdW1iZXIiOwogICAgIHJldHVybiAiU1ZHUGFpbnQ6OlNW
R1BhaW50VHlwZSIgaWYgJHR5cGUgZXEgIlNWR1BhaW50VHlwZSI7CiAKSW5kZXg6IFdlYkNvcmUv
a3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUva3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCShyZXZpc2lvbiAxODI2NSkK
KysrIFdlYkNvcmUva3N2ZzIvbWlzYy9LQ2FudmFzUmVuZGVyaW5nU3R5bGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXJTb2xpZC5o
IgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclBhdGguaCIKKyNp
bmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJT
VkdSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKQEAgLTEwOCwx
MSArMTA5LDExIEBAIGRvdWJsZSBLU1ZHUGFpbnRlckZhY3Rvcnk6OmNzc1ByaW1pdGl2ZVQKICAg
ICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKIAogICAgIGlmIChjc3NUeXBlID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgewotICAgICAgICBTVkdFbGVtZW50KiBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGl0ZW0tPmVsZW1lbnQoKSk7CisgICAgICAgIFNW
R1N0eWxlZEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4o
aXRlbS0+ZWxlbWVudCgpKTsKICAgICAgICAgU1ZHRWxlbWVudCogdmlld3BvcnRFbGVtZW50ID0g
KGVsZW1lbnQgPyBlbGVtZW50LT52aWV3cG9ydEVsZW1lbnQoKSA6IDApOwogICAgICAgICBpZiAo
dmlld3BvcnRFbGVtZW50KSB7CiAgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gcHJpbWl0aXZl
LT5nZXRGbG9hdFZhbHVlKCkgLyAxMDAuMDsKLSAgICAgICAgICAgIHJldHVybiBTVkdIZWxwZXI6
OlBlcmNlbnRhZ2VPZlZpZXdwb3J0KHJlc3VsdCwgdmlld3BvcnRFbGVtZW50LCBMTV9PVEhFUik7
CisgICAgICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoOjpQZXJjZW50YWdlT2ZWaWV3cG9ydChyZXN1
bHQsIGVsZW1lbnQsIExlbmd0aE1vZGVPdGhlcik7CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgJKHJldmlzaW9uIDE4MjY1KQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0eXBlZGVmIFNWR0Fu
aW1hdGVkVGVtcGxhdGU8Ym9vbD4gU1ZHQW5pbWF0ZWRCb29sZWFuOwogICAgIHR5cGVkZWYgU1ZH
QW5pbWF0ZWRUZW1wbGF0ZTxpbnQ+IFNWR0FuaW1hdGVkRW51bWVyYXRpb247CiAgICAgdHlwZWRl
ZiBTVkdBbmltYXRlZFRlbXBsYXRlPGxvbmc+IFNWR0FuaW1hdGVkSW50ZWdlcjsKLSAgICB0eXBl
ZGVmIFNWR0FuaW1hdGVkVGVtcGxhdGU8U1ZHTGVuZ3RoKj4gU1ZHQW5pbWF0ZWRMZW5ndGg7Cisg
ICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR0xlbmd0aD4gU1ZHQW5pbWF0ZWRMZW5n
dGg7CiAgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNWR0xlbmd0aExpc3QqPiBTVkdB
bmltYXRlZExlbmd0aExpc3Q7CiAgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPGRvdWJs
ZT4gU1ZHQW5pbWF0ZWROdW1iZXI7CiAgICAgdHlwZWRlZiBTVkdBbmltYXRlZFRlbXBsYXRlPFNW
R051bWJlckxpc3QqPiBTVkdBbmltYXRlZE51bWJlckxpc3Q7IApJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDEyICsyMSwxMiBAQAogKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdDaXJjbGVF
bGVtZW50LmgiCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiU1ZHSGVscGVy
LmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsOSArMzYsOSBAQCBTVkdDaXJjbGVFbGVtZW50OjpTVkdD
aXJjbGVFbGVtZW50KGNvbnN0CiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2Uo
KQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX2N4KG5ldyBT
VkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fY3ko
bmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAs
IG1fcihuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX09USEVSLCB2aWV3cG9ydEVsZW1lbnQoKSkpCisg
ICAgLCBtX2N4KFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpKQorICAgICwgbV9jeShT
VkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkpCisgICAgLCBtX3IoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVPdGhlcikpCiB7CiB9CiAKQEAgLTQ2LDE5ICs0NiwxOSBAQCBTVkdDaXJj
bGVFbGVtZW50Ojp+U1ZHQ2lyY2xlRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3Ro
LCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3guZ2V0KCkpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgqLCBM
ZW5ndGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5
LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFIsIHIsIFNWR05hbWVzOjpyQXR0ci5sb2NhbE5h
bWUoKSwgbV9yLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xl
RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hB
dHRyLmxvY2FsTmFtZSgpLCBtX2N4KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
Q2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1l
czo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUiwgciwgU1ZH
TmFtZXM6OnJBdHRyLmxvY2FsTmFtZSgpLCBtX3IpCiAKIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAgY3hCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEN4QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7ICAgICAgIAogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6Y3lBdHRyKQotICAgICAgICBjeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFz
U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0Q3lCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjpyQXR0cikKLSAgICAgICAgckJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlKTsKKyAgICAgICAgc2V0UkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZU90
aGVyLCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzIsMzcgKzcyLDIx
IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKIAogUGF0aCBTVkdD
aXJjbGVFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QKIHsKLSAgICBmbG9hdCBfY3ggPSBjeCgp
LT52YWx1ZSgpLCBfY3kgPSBjeSgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF9yID0gcigpLT52YWx1
ZSgpOwotCi0gICAgcmV0dXJuIFBhdGg6OmNyZWF0ZUNpcmNsZShGbG9hdFBvaW50KF9jeCwgX2N5
KSwgX3IpOwotfQotCi1jb25zdCBTVkdTdHlsZWRFbGVtZW50KiBTVkdDaXJjbGVFbGVtZW50Ojpw
dXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KQotewot
ICAgIC8vIEFsbCBhdHRyaWJ1dGUncyBjb250ZXh0cyBhcmUgZXF1YWwgKHNvIGp1c3QgdGFrZSB0
aGUgb25lIGZyb20gJ2N4JykuCi0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcmVzdG9yZSA9
IGN4KCktPmNvbnRleHQoKTsKLQotICAgIGN4KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAg
Y3koKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICByKCktPnNldENvbnRleHQoY29udGV4dCk7
Ci0gICAgCi0gICAgU1ZHU3R5bGVkRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29udGV4
dCk7Ci0gICAgcmV0dXJuIHJlc3RvcmU7CisgICAgcmV0dXJuIFBhdGg6OmNyZWF0ZUNpcmNsZShG
bG9hdFBvaW50KGN4KCkudmFsdWUoKSwgY3koKS52YWx1ZSgpKSwgcigpLnZhbHVlKCkpOwogfQog
CiBib29sIFNWR0NpcmNsZUVsZW1lbnQ6Omhhc1BlcmNlbnRhZ2VWYWx1ZXMoKSBjb25zdAogewot
ICAgIGlmIChjeCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVS
Q0VOVEFHRSB8fAotICAgICAgICBjeSgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xF
TkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICByKCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVu
Z3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKQorICAgIGlmIChjeCgpLnVuaXRUeXBlKCkg
PT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgfHwKKyAgICAgICAgY3koKS51bml0VHlwZSgpID09IExl
bmd0aFR5cGVQZXJjZW50YWdlIHx8CisgICAgICAgIHIoKS51bml0VHlwZSgpID09IExlbmd0aFR5
cGVQZXJjZW50YWdlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsK
IH0KLQorICAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAK
Ky8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJ
KHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBA
IC0yMCw4ICsyMCw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0j
aWZuZGVmIEtTVkdfU1ZHQ2lyY2xlRWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0NpcmNs
ZUVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHQ2lyY2xlRWxlbWVudF9ICisjZGVmaW5lIFNWR0Np
cmNsZUVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTMxLDcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUKIHsKLSAgICBjbGFzcyBTVkdMZW5ndGg7CiAgICAgY2xhc3MgU1ZHQ2lyY2xlRWxlbWVu
dCA6IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLApAQCAtNDksMjQgKzQ5LDIxIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
KiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7
IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAotICAgICAgICB2
aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0
IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dGhpczsgfQotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29u
c3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RF
Q0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgQ3gsIGN4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIEN5LCBjeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0Np
cmNsZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBSLCByKQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVu
Z3RoLCBTVkdMZW5ndGgsIEN4LCBjeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBDeSwgY3kpCisg
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBT
VkdMZW5ndGgsIFNWR0xlbmd0aCwgUiwgcikKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAotI2VuZGlmCisjZW5kaWYgLy8gU1ZHQ2lyY2xl
RWxlbWVudF9ICiAKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0N1
cnNvckVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0N1cnNvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtk
ZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CiAKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxlbWVudC5oIgogCkBA
IC00MCw4ICs0MSw4IEBAIFNWR0N1cnNvckVsZW1lbnQ6OlNWR0N1cnNvckVsZW1lbnQoY29uc3QK
ICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZHVVJJUmVmZXJl
bmNlKCkKICAgICAsIENhY2hlZFJlc291cmNlQ2xpZW50KCkKLSAgICAsIG1feChuZXcgU1ZHTGVu
Z3RoKDAsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kobmV3IFNWR0xl
bmd0aCgwLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCgwLCBMZW5n
dGhNb2RlV2lkdGgpCisgICAgLCBtX3koMCwgTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICBtX2Nh
Y2hlZEltYWdlID0gMDsKIH0KQEAgLTUyLDE2ICs1MywxNiBAQCBTVkdDdXJzb3JFbGVtZW50Ojp+
U1ZHQ3Vyc29yRWxlbWVudCgpCiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmRlcmVmKHRoaXMpOwog
fQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdM
ZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgp
LCBtX3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDdXJzb3JFbGVt
ZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxv
Y2FsTmFtZSgpLCBtX3kuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdD
dXJzb3JFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6
eEF0dHIubG9jYWxOYW1lKCksIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVz
Ojp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQogCiB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKLSAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CisgICAgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6eEF0dHIpCi0gICAgICAgIHhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7
CisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKDAsIExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAg
ICAgICB5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZ
QmFzZVZhbHVlKFNWR0xlbmd0aCgwLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVs
c2UgewogICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtODIsNiArODMsNiBAQCB2b2lkIFNWR0N1cnNvckVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8v
IFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR0N1cnNvckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdD
dXJzb3JFbGVtZW50LmgJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Q3Vyc29yRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5v
cmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0CiAKQEAgLTIwLDEyICsyMCwxNCBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg
VVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0N1cnNvckVsZW1lbnRJbXBsX0gKLSNkZWZpbmUg
S1NWR19TVkdDdXJzb3JFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0N1cnNvckVsZW1lbnRfSAor
I2RlZmluZSBTVkdDdXJzb3JFbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAKICNpbmNs
dWRlICJJbWFnZS5oIgogCisjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNl
LmgiCkBAIC0zNCw4ICszNiw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlCiB7Ci0gICAgY2xhc3Mg
U1ZHTGVuZ3RoOwotCiAgICAgY2xhc3MgU1ZHQ3Vyc29yRWxlbWVudCA6IHB1YmxpYyBTVkdFbGVt
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsCkBAIC02MCw4ICs2MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR1VSSVJlZmVyZW5jZSwgU3RyaW5nLCBIcmVmLCBocmVmKQogCi0gICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+
LCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHQ3Vyc29y
RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0
aCwgWSwgeSkKIAogICAgICAgICBDYWNoZWRJbWFnZSAqbV9jYWNoZWRJbWFnZTsKICAgICB9OwpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5o
IgogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxODI2NSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiAr
MjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQK
ICNpbmNsdWRlICJTVkdFbGxpcHNlRWxlbWVudC5oIgogCkBAIC0zNiwxMCArMzcsMTAgQEAgU1ZH
RWxsaXBzZUVsZW1lbnQ6OlNWR0VsbGlwc2VFbGVtZW50KGNvbgogICAgICwgU1ZHVGVzdHMoKQog
ICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KQotICAgICwgbV9jeChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1l
bnQoKSkpCi0gICAgLCBtX2N5KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9y
dEVsZW1lbnQoKSkpCi0gICAgLCBtX3J4KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZp
ZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcnkobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlH
SFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1fY3godGhpcywgTGVuZ3RoTW9kZVdpZHRo
KQorICAgICwgbV9jeSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV9yeCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3J5KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9
ICAgIAogCkBAIC00NywyMiArNDgsMjIgQEAgU1ZHRWxsaXBzZUVsZW1lbnQ6On5TVkdFbGxpcHNl
RWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlw
c2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6
Y3hBdHRyLmxvY2FsTmFtZSgpLCBtX2N4LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBDeSwg
Y3ksIFNWR05hbWVzOjpjeUF0dHIubG9jYWxOYW1lKCksIG1fY3kuZ2V0KCkpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ci5sb2NhbE5hbWUoKSwgbV9yeC5nZXQo
KSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdM
ZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgUnksIHJ5LCBTVkdOYW1lczo6cnlBdHRyLmxvY2FsTmFt
ZSgpLCBtX3J5LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBz
ZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4
QXR0ci5sb2NhbE5hbWUoKSwgbV9jeCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeSwgY3ksIFNWR05h
bWVzOjpjeUF0dHIubG9jYWxOYW1lKCksIG1fY3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUngsIHJ4
LCBTVkdOYW1lczo6cnhBdHRyLmxvY2FsTmFtZSgpLCBtX3J4KQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFJ5LCByeSwgU1ZHTmFtZXM6OnJ5QXR0ci5sb2NhbE5hbWUoKSwgbV9yeSkKIAogdm9pZCBTVkdF
bGxpcHNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAg
IGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAgY3hCYXNlVmFs
dWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6Y3lBdHRyKQotICAgICAgICBjeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5n
KHZhbHVlKTsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyeEF0dHIpCi0gICAg
ICAgIHJ4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwotICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ5QXR0cikKLSAgICAgICAgcnlCYXNlVmFsdWUoKS0+c2V0
VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEN4QmFzZVZhbHVlKFNWR0xlbmd0aCh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjpjeUF0dHIpCisgICAgICAgIHNldEN5QmFzZVZhbHVlKFNWR0xlbmd0aCh0
aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6cnhBdHRyKQorICAgICAgICBzZXRSeEJhc2VWYWx1ZShTVkdMZW5ndGgo
dGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6cnlBdHRyKQorICAgICAgICBzZXRSeUJhc2VWYWx1ZShTVkdMZW5ndGgo
dGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYg
KFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTc2LDM5ICs3NywyMyBAQCB2b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpCiAKIFBhdGggU1ZHRWxsaXBzZUVsZW1lbnQ6OnRvUGF0aERhdGEoKSBjb25zdAogewot
ICAgIGZsb2F0IF9jeCA9IGN4KCktPnZhbHVlKCksIF9jeSA9IGN5KCktPnZhbHVlKCk7Ci0gICAg
ZmxvYXQgX3J4ID0gcngoKS0+dmFsdWUoKSwgX3J5ID0gcnkoKS0+dmFsdWUoKTsKLQotICAgIHJl
dHVybiBQYXRoOjpjcmVhdGVFbGxpcHNlKEZsb2F0UG9pbnQoX2N4LCBfY3kpLCBfcngsIF9yeSk7
Ci19Ci0KLWNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIFNWR0VsbGlwc2VFbGVtZW50OjpwdXNoQXR0
cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KQotewotICAgIC8v
IEFsbCBhdHRyaWJ1dGUncyBjb250ZXh0cyBhcmUgZXF1YWwgKHNvIGp1c3QgdGFrZSB0aGUgb25l
IGZyb20gJ2N4JykuCi0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogcmVzdG9yZSA9IGN4KCkt
PmNvbnRleHQoKTsKLQotICAgIGN4KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgY3koKS0+
c2V0Q29udGV4dChjb250ZXh0KTsKLSAgICByeCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAg
IHJ5KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50OjpwdXNo
QXR0cmlidXRlQ29udGV4dChjb250ZXh0KTsKLSAgICByZXR1cm4gcmVzdG9yZTsKKyAgICByZXR1
cm4gUGF0aDo6Y3JlYXRlRWxsaXBzZShGbG9hdFBvaW50KGN4KCkudmFsdWUoKSwgY3koKS52YWx1
ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeCgpLnZhbHVlKCksIHJ5KCku
dmFsdWUoKSk7CiB9CiAKIGJvb2wgU1ZHRWxsaXBzZUVsZW1lbnQ6Omhhc1BlcmNlbnRhZ2VWYWx1
ZXMoKSBjb25zdAogewotICAgIGlmIChjeCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZH
X0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICBjeSgpLT51bml0VHlwZSgpID09IFNW
R0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICByeCgpLT51bml0
VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAg
ICByeSgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFH
RSkKKyAgICBpZiAoY3goKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8Cisg
ICAgICAgIGN5KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSB8fAorICAgICAg
ICByeCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgfHwKKyAgICAgICAgcnko
KS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KLQorIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAj
ZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBCb3N0b24sIE1BIDAy
MTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdFbGxpcHNlRWxlbWVudEltcGxf
SAotI2RlZmluZSBLU1ZHX1NWR0VsbGlwc2VFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0VsbGlw
c2VFbGVtZW50X0gKKyNkZWZpbmUgU1ZHRWxsaXBzZUVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NV
UFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTMx
LDcgKzMyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAgICBjbGFzcyBTVkdMZW5ndGg7
CiAgICAgY2xhc3MgU1ZHRWxsaXBzZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVz
dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLApA
QCAtNDksMjAgKzQ5LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRv
UGF0aERhdGEoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1l
bnQqIHB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQp
OwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKQogIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBDeCwg
Y3gpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEN5LCBjeSkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgUngsIHJ4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5n
dGg+LCBSeSwgcnkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdF
bGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN4LCBjeCkKKyAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgs
IFNWR0xlbmd0aCwgQ3ksIGN5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSeCwgcngpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIFJ5LCByeSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24g
MTgyNjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
ICAgICBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5j
b20+CiAKQEAgLTQzLDIxICs0MywyMCBAQCBTVkdGaWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVt
ZW50KGNvbnN0CiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIG1f
ZmlsdGVyVW5pdHMoU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9Y
KQogICAgICwgbV9wcmltaXRpdmVVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNF
UlNQQUNFT05VU0UpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmll
d3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hU
LCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywg
TE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5n
dGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywg
TGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAg
LCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQpCiAgICAgLCBtX2ZpbHRlclJlc1goMCkKICAgICAsIG1fZmlsdGVyUmVz
WSgwKQotCiB7CiAgICAgLy8gU3BlYzogSWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3BlY2lmaWVk
LCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIi0xMCUiIHdlcmUgc3BlY2lmaWVkLgot
ICAgIG1feC0+c2V0VmFsdWVBc1N0cmluZygiLTEwJSIpOwotICAgIG1feS0+c2V0VmFsdWVBc1N0
cmluZygiLTEwJSIpOwotCisgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoLCAiLTEwJSIpKTsKKyAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIpKTsKKyAKICAgICAvLyBTcGVjOiBJZiB0aGUgYXR0cmli
dXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTIw
JSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgbV93aWR0aC0+c2V0VmFsdWVBc1N0cmluZygiMTIwJSIp
OwotICAgIG1faGVpZ2h0LT5zZXRWYWx1ZUFzU3RyaW5nKCIxMjAlIik7CisgICAgc2V0V2lkdGhC
YXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKSk7CisgICAg
c2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTIw
JSIpKTsKIH0KIAogU1ZHRmlsdGVyRWxlbWVudDo6flNWR0ZpbHRlckVsZW1lbnQoKQpAQCAtNjYs
MTAgKzY1LDEwIEBAIFNWR0ZpbHRlckVsZW1lbnQ6On5TVkdGaWx0ZXJFbGVtZW50KCkKIAogQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgaW50LCBFbnVtZXJh
dGlvbiwgZW51bWVyYXRpb24sIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cywgU1ZHTmFtZXM6OmZp
bHRlclVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9maWx0ZXJVbml0cykKIEFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1l
cmF0aW9uLCBQcmltaXRpdmVVbml0cywgcHJpbWl0aXZlVW5pdHMsIFNWR05hbWVzOjpwcmltaXRp
dmVVbml0c0F0dHIubG9jYWxOYW1lKCksIG1fcHJpbWl0aXZlVW5pdHMpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBM
ZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kuZ2V0
KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdM
ZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRy
LmxvY2FsTmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwg
aGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1f
eCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwg
bV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRy
LmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQs
IFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodCkKIEFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcsIEludGVnZXIsIGludGVn
ZXIsIEZpbHRlclJlc1gsIGZpbHRlclJlc1gsICJmaWx0ZXJSZXNYIiwgbV9maWx0ZXJSZXNYKQog
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgbG9uZywgSW50
ZWdlciwgaW50ZWdlciwgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSwgImZpbHRlclJlc1kiLCBtX2Zp
bHRlclJlc1kpCiAKQEAgLTkxLDEzICs5MCwxMyBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmliCiAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09ICJvYmplY3RCb3VuZGlu
Z0JveCIpCiAgICAgICAgICAgICBzZXRQcmltaXRpdmVVbml0c0Jhc2VWYWx1ZShTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmlu
Zyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
Ojp3aWR0aEF0dHIpCi0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJp
bmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChTVkdVUklS
ZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAgICAgICAgIGlm
IChTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47CkBAIC0x
MTcsMTMgKzExNiwzMSBAQCBTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVz
CiAKICAgICBib29sIGZpbHRlckJCb3hNb2RlID0gZmlsdGVyVW5pdHMoKSA9PSBTVkdVbml0VHlw
ZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7CiAgICAgbV9maWx0ZXItPnNldEZp
bHRlckJvdW5kaW5nQm94TW9kZShmaWx0ZXJCQm94TW9kZSk7Ci0gICAgCi0gICAgeCgpLT5zZXRC
Ym94UmVsYXRpdmUoZmlsdGVyQkJveE1vZGUpOwotICAgIHkoKS0+c2V0QmJveFJlbGF0aXZlKGZp
bHRlckJCb3hNb2RlKTsKLSAgICB3aWR0aCgpLT5zZXRCYm94UmVsYXRpdmUoZmlsdGVyQkJveE1v
ZGUpOwotICAgIGhlaWdodCgpLT5zZXRCYm94UmVsYXRpdmUoZmlsdGVyQkJveE1vZGUpOwotICAg
IG1fZmlsdGVyLT5zZXRGaWx0ZXJSZWN0KEZsb2F0UmVjdCh4KCktPnZhbHVlKCksIHkoKS0+dmFs
dWUoKSwgd2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkpKTsKLSAgICAKKworICAg
IGZsb2F0IF94LCBfeSwgdywgaDsKKworICAgIGlmIChmaWx0ZXJCQm94TW9kZSAmJiB4KCkudW5p
dFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAgX3ggPSB4KCkudmFsdWVJ
blNwZWNpZmllZFVuaXRzKCkgLyAxMDAuMDsKKyAgICBlbHNlCisgICAgICAgIF94ID0geCgpLnZh
bHVlKCk7CisKKyAgICBpZiAoZmlsdGVyQkJveE1vZGUgJiYgeSgpLnVuaXRUeXBlKCkgPT0gTGVu
Z3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgIF95ID0geSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0
cygpIC8gMTAwLjA7CisgICAgZWxzZQorICAgICAgICBfeSA9IHkoKS52YWx1ZSgpOworCisgICAg
aWYgKGZpbHRlckJCb3hNb2RlICYmIHdpZHRoKCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVy
Y2VudGFnZSkKKyAgICAgICAgdyA9IHdpZHRoKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgLyAx
MDAuMDsKKyAgICBlbHNlCisgICAgICAgIHcgPSB3aWR0aCgpLnZhbHVlKCk7CisKKyAgICBpZiAo
ZmlsdGVyQkJveE1vZGUgJiYgaGVpZ2h0KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2Vu
dGFnZSkKKyAgICAgICAgaCA9IGhlaWdodCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpIC8gMTAw
LjA7CisgICAgZWxzZQorICAgICAgICBoID0gaGVpZ2h0KCkudmFsdWUoKTsKKworICAgIG1fZmls
dGVyLT5zZXRGaWx0ZXJSZWN0KEZsb2F0UmVjdChfeCwgX3ksIHcsIGgpKTsKKwogICAgIGJvb2wg
cHJpbWl0aXZlQkJveE1vZGUgPSBwcmltaXRpdmVVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZH
X1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKICAgICBtX2ZpbHRlci0+c2V0RWZmZWN0Qm91
bmRpbmdCb3hNb2RlKHByaW1pdGl2ZUJCb3hNb2RlKTsKICAgICAvLyBGSVhNRTogV2hlbiBkb2Vz
IHRoaXMgaW5mbyBnZXQgcGFzc2VkIHRvIHRoZSBmaWx0ZXJzIGVsZW1lbnRzPwpAQCAtMTQzLDYg
KzE2MCw2IEBAIFNWR1Jlc291cmNlKiBTVkdGaWx0ZXJFbGVtZW50OjpjYW52YXNSZXMKIAogfQog
Ci0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24gMTgy
NjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAg
Q29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgog
CkBAIC0yMSw4ICsyMSw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwog
Ci0jaWZuZGVmIEtTVkdfU1ZHRmlsdGVyRWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0Zp
bHRlckVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHRmlsdGVyRWxlbWVudF9ICisjZGVmaW5lIFNW
R0ZpbHRlckVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1Jl
c291cmNlRmlsdGVyLmgiCkBAIC01OSwxMCArNjAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
IAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVu
dCwgaW50LCBpbnQsIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cykKICAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGludCwgaW50LCBQcmltaXRp
dmVVbml0cywgcHJpbWl0aXZlVW5pdHMpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwg
WCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVs
ZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoKiwg
UmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZH
TGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lkdGgsIHdp
ZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxl
bWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgbG9uZywgbG9uZywg
RmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcsIGxvbmcsIEZpbHRlclJlc1ksIGZpbHRlclJl
c1kpCiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gMTgyNjUpCisrKyBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2
ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9S
VAogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkBA
IC0zNSwzNyArMzYsMzcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyhjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZH
U3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlz
LCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgo
dGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBT
VkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVp
Z2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisg
ICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1f
aGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7Ci0gICAgLy8gU3BlYyA6IElmIHRoZSBh
dHRyaWJ1dGUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9m
ICIxMDAlIiB3ZXJlIHNwZWNpZmllZC4KLSAgICBtX3dpZHRoLT5zZXRWYWx1ZUFzU3RyaW5nKCIx
MDAlIik7Ci0gICAgbV9oZWlnaHQtPnNldFZhbHVlQXNTdHJpbmcoIjEwMCUiKTsKKyAgICAvLyBT
cGVjOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCisgICAgc2V0V2lkdGhCYXNlVmFs
dWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSk7CisgICAgc2V0SGVp
Z2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSIpKTsK
IH0KIAogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjp+U1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgq
LCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gu
Z2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdO
YW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3Ro
KiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2Nh
bE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBs
ZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwg
bV9oZWlnaHQuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgs
IHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1f
eSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBT
VkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0
dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTdHJpbmcsIFN0cmluZywgc3Ry
aW5nLCBSZXN1bHQsIHJlc3VsdCwgU1ZHTmFtZXM6OnJlc3VsdEF0dHIubG9jYWxOYW1lKCksIG1f
cmVzdWx0KQogCiB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJp
bmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
Ojp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsK
KyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0
cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7Cisg
ICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgs
IHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRB
dHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7
CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJl
c3VsdEF0dHIpCiAgICAgICAgIHNldFJlc3VsdEJhc2VWYWx1ZSh2YWx1ZSk7CiAgICAgZWxzZQpA
QCAtNzcsMjYgKzc4LDMxIEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGUKICAgICBBU1NFUlQoZmlsdGVyRWZmZWN0KTsKICAgICBpZiAoIWZpbHRlckVmZmVjdCkKICAg
ICAgICAgcmV0dXJuOworCiAgICAgYm9vbCBiYm94ID0gZmFsc2U7CiAgICAgaWYgKHBhcmVudE5v
ZGUoKSAmJiBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZpbHRlclRhZykpCiAg
ICAgICAgIGJib3ggPSBzdGF0aWNfY2FzdDxTVkdGaWx0ZXJFbGVtZW50Kj4ocGFyZW50Tm9kZSgp
KS0+cHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1g7CiAKLSAgICB4KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICB5KCkt
PnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICB3aWR0aCgpLT5zZXRCYm94UmVsYXRpdmUoYmJv
eCk7Ci0gICAgaGVpZ2h0KCktPnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICBmbG9hdCBfeCA9
IHgoKS0+dmFsdWUoKSwgX3kgPSB5KCktPnZhbHVlKCk7Ci0gICAgZmxvYXQgX3dpZHRoID0gd2lk
dGgoKS0+dmFsdWUoKSwgX2hlaWdodCA9IGhlaWdodCgpLT52YWx1ZSgpOwotICAgIGlmIChiYm94
KQotICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldFN1YlJlZ2lvbihGbG9hdFJlY3QoX3ggKiAxMDAu
ZiwgX3kgKiAxMDAuZiwgX3dpZHRoICogMTAwLmYsIF9oZWlnaHQgKiAxMDAuZikpOwotICAgIGVs
c2UKLSAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRTdWJSZWdpb24oRmxvYXRSZWN0KF94LCBfeSwg
X3dpZHRoLCBfaGVpZ2h0KSk7Ci0KKyAgICBmbG9hdCBfeCwgX3ksIF93aWR0aCwgX2hlaWdodDsK
KyAgCisgICAgaWYgKGJib3gpIHsKKyAgICAgICAgX3ggPSB4KCkudmFsdWVJblNwZWNpZmllZFVu
aXRzKCk7CisgICAgICAgIF95ID0geSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAg
ICBfd2lkdGggPSB3aWR0aCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBfaGVp
Z2h0ID0gaGVpZ2h0KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgX3ggPSB4KCkudmFsdWUoKTsKKyAgICAgICAgX3kgPSB5KCkudmFsdWUoKTsKKyAgICAg
ICAgX3dpZHRoID0gd2lkdGgoKS52YWx1ZSgpOworICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0KCku
dmFsdWUoKTsKKyAgICB9IAorICAgIAorICAgIGZpbHRlckVmZmVjdC0+c2V0U3ViUmVnaW9uKEZs
b2F0UmVjdChfeCwgX3ksIF93aWR0aCwgX2hlaWdodCkpOwogICAgIGZpbHRlckVmZmVjdC0+c2V0
UmVzdWx0KHJlc3VsdCgpKTsKIH0KIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8g
U1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHJl
dmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKQEAgLTIwLDE1ICsyMCwxNSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlc0ltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlc0ltcGxfSAorI2lmbmRlZiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXNfSAorI2RlZmluZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNfSAorCiAj
aWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNWR0ZpbHRlckVmZmVjdDsKLSAgICBjbGFzcyBT
VkdMZW5ndGg7CiAKICAgICBjbGFzcyBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudAogICAgIHsKQEAgLTUwLDEwICs1MCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWCwgeCkKLSAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwg
d2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+
LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBTVkdMZW5n
dGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lkdGgsIHdpZHRo
KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWln
aHQpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFN0cmluZywgU3RyaW5nLCBSZXN1bHQsIHJlc3VsdCkK
ICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJKHJldmlz
aW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VW
aWV3Qm94KGNvbnN0CiAgICAgCiAgICAgaWYgKHAgPCBlbmQpIC8vIG5vdGhpbmcgc2hvdWxkIGNv
bWUgYWZ0ZXIgdGhlIGxhc3QsIGZvdXJ0aCBudW1iZXIKICAgICAgICAgZ290byBiYWlsX291dDsK
LQorICAgIAogICAgIHNldFZpZXdCb3hCYXNlVmFsdWUoRmxvYXRSZWN0KHgsIHksIHcsIGgpKTsK
ICAgICByZXR1cm47CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBA
CiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5j
bHVkZSAiU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCIKQEAgLTQwLDEwICs0MSwxMCBAQCBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjCiAgICAgLCBTVkdUZXN0cygpCiAg
ICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
Ci0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50
KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVs
ZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZp
ZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1f
SEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdp
ZHRoKQorICAgICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWln
aHQpCiB7CiB9CiAKQEAgLTUxLDIzICs1MiwyMyBAQCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6
flNWR0ZvcmVpZ25PYmplCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwg
U1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNW
R0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0
dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgs
IEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWln
aHQuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0
RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRy
LmxvY2FsTmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFt
ZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lk
dGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0
ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCiAKIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICBpZiAoYXR0ci0+bmFt
ZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFz
U3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1
ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0
aEF0dHIpIHsKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1
ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlKSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU19QUk9QX1dJ
RFRILCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Omhl
aWdodEF0dHIpIHsKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU19Q
Uk9QX0hFSUdIVCwgdmFsdWUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChTVkdUZXN0czo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCkBAIC04MCwxMiArODEsMTIgQEAgdm9pZCBTVkdG
b3JlaWduT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZQogICAgIH0KIH0KIAotUmVuZGVyT2JqZWN0
ICpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEgKmFy
ZW5hLCBSZW5kZXJTdHlsZSAqc3R5bGUpCitSZW5kZXJPYmplY3QqIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBz
dHlsZSkKIHsKICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyRm9yZWlnbk9iamVjdCh0aGlz
KTsKIH0KIAotYm9vbCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihOb2RlICpjaGlsZCkgY29uc3QKK2Jvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSogY2hpbGQpIGNvbnN0CiB7CiAgICAgLy8g
U2tpcCBvdmVyIFNWRyBydWxlcyB3aGljaCBkaXNhbGxvdyBub24tU1ZHIGtpZHMKICAgICByZXR1
cm4gU3R5bGVkRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZCk7CkBAIC05
Myw2ICs5NCw2IEBAIGJvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmNoaWxkU2hvdWwKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZH
X1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDgg
KzE5LDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICovCiAKLSNpZm5kZWYg
S1NWR19TVkdGb3JlaWduT2JqZWN0RWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50X0gK
KyNkZWZpbmUgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQK
IAogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCkBAIC00NSwxMSArNDYsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgdmlydHVhbCB+U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQoKTsKICAgICAg
ICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVz
dHM6OmlzVmFsaWQoKTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlICpzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVu
dDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KLSAgICAgICAgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKE5vZGUgKmNoaWxkKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QgKmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwgUmVuZGVyU3R5bGUgKnN0
eWxlKTsKKyAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
IHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsg
fQorICAgICAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0Owor
ICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
IGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dGhpczsgfQpAQCAtNTgsMTAgKzU5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpIAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFU
SU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJlZikKIAotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xl
bmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0
cjxTVkdMZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+
LCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEhl
aWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQs
IFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3Ro
LCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVp
Z2h0KQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0hlbHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
SGVscGVyLmNwcAkocmV2aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdIZWxw
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0y
MSw2ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQ
UE9SVAogI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogCkBAIC0zNiw0NyArMzcsNyBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWZsb2F0IFNWR0hlbHBlcjo6
UGVyY2VudGFnZU9mVmlld3BvcnQoZmxvYXQgdmFsdWUsIGNvbnN0IFNWR0VsZW1lbnQqIHZpZXdw
b3J0RWxlbWVudCwgTGVuZ3RoTW9kZSBtb2RlKQotewotICAgIGZsb2F0IHdpZHRoID0gMCwgaGVp
Z2h0ID0gMDsKLSAgICBpZiAoIXZpZXdwb3J0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIDAuMDsK
LSAKLSAgICBpZiAodmlld3BvcnRFbGVtZW50LT5pc1NWRygpKSB7Ci0gICAgICAgIGNvbnN0IFNW
R1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PGNvbnN0IFNWR1NWR0VsZW1lbnQqPih2aWV3
cG9ydEVsZW1lbnQpOwotICAgICAgICBpZiAoc3ZnLT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnZp
ZXdCb3hBdHRyKSkgewotICAgICAgICAgICAgd2lkdGggPSBzdmctPnZpZXdCb3goKS53aWR0aCgp
OwotICAgICAgICAgICAgaGVpZ2h0ID0gc3ZnLT52aWV3Qm94KCkuaGVpZ2h0KCk7Ci0gICAgICAg
IH0gZWxzZSBpZiAoc3ZnLT53aWR0aCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xF
TkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICAgICAgICAgIHN2Zy0+aGVpZ2h0KCktPnVu
aXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFKSB7Ci0gICAg
ICAgICAgICAvLyBUT0RPOiBTaG91bGRuJ3Qgdy9oIGJlIG11bHRpcGxpZWQgd2l0aCB0aGUgcGVy
Y2VudGFnZSB2YWx1ZXM/IQotICAgICAgICAgICAgLy8gQUZBSUssIHRoaXMgYXNzdW1lcyB3aWR0
aCAmIGhlaWdodCA9PSAxMDAlLCBSb2I/PwotICAgICAgICAgICAgRG9jdW1lbnQgKmRvYyA9IHN2
Zy0+ZG9jdW1lbnQoKTsKLSAgICAgICAgICAgIGlmIChkb2MtPmRvY3VtZW50RWxlbWVudCgpID09
IHN2ZykgewotICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gYXNrIHRoZSBjYW52YXMgZm9y
IHRoZSBmdWxsICJjYW52YXMgc2l6ZSIuLi4KLSAgICAgICAgICAgICAgICBSZW5kZXJWaWV3KiB2
aWV3ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVmlldyAqPihkb2MtPnJlbmRlcmVyKCkpOwotICAgICAg
ICAgICAgICAgIGlmICh2aWV3KSB7Ci0gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gdmlldy0+
ZnJhbWVWaWV3KCktPnZpc2libGVXaWR0aCgpOyAvLyBUT0RPOiByZWNoZWNrIQotICAgICAgICAg
ICAgICAgICAgICBoZWlnaHQgPSB2aWV3LT5mcmFtZVZpZXcoKS0+dmlzaWJsZUhlaWdodCgpOyAv
LyBUT0RPOiByZWNoZWNrIQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHdpZHRoID0gc3ZnLT53aWR0aCgpLT52YWx1ZSgpOwot
ICAgICAgICAgICAgaGVpZ2h0ID0gc3ZnLT5oZWlnaHQoKS0+dmFsdWUoKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGlmIChtb2RlID09IExNX1dJRFRIKQotICAgICAgICByZXR1cm4gdmFsdWUg
KiB3aWR0aDsKLSAgICBlbHNlIGlmIChtb2RlID09IExNX0hFSUdIVCkKLSAgICAgICAgcmV0dXJu
IHZhbHVlICogaGVpZ2h0OwotICAgIGVsc2UgaWYgKG1vZGUgPT0gTE1fT1RIRVIpCi0gICAgICAg
IHJldHVybiB2YWx1ZSAqIHNxcnQocG93KGRvdWJsZSh3aWR0aCksIDIpICsgcG93KGRvdWJsZSho
ZWlnaHQpLCAyKSkgLyBzcXJ0KDIuMCk7Ci0gICAgCi0gICAgcmV0dXJuIDAuMDsKLX0KLQotdm9p
ZCBTVkdIZWxwZXI6OnBhcnNlU2VwYXJhdGVkTGlzdChTVkdTdHJpbmdMaXN0ICpsaXN0LCBjb25z
dCBTdHJpbmcmIGRhdGEsIFVDaGFyIGRlbGltaXRlcikKK3ZvaWQgU1ZHSGVscGVyOjpwYXJzZVNl
cGFyYXRlZExpc3QoU1ZHU3RyaW5nTGlzdCogbGlzdCwgY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hh
ciBkZWxpbWl0ZXIpCiB7CiAgICAgLy8gVE9ETyA6IG1vcmUgZXJyb3IgY2hlY2tpbmcvcmVwb3J0
aW5nCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC05MSw2ICs1Miw2IEBAIHZvaWQgU1ZH
SGVscGVyOjpwYXJzZVNlcGFyYXRlZExpc3QoU1ZHU3QKIAogfQogCi0vLyB2aW06dHM9NDpub2V0
CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHSGVscGVyLmgJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHSGVs
cGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgS1NWR19TVkdI
ZWxwZXJfSAogI2lmZGVmIFNWR19TVVBQT1JUCiAKKyNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMiwx
OCArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU1ZHU3RyaW5nTGlzdDsK
IAogICAgIC8vIEtTVkcgZXh0ZW5zaW9uCi0gICAgZW51bSBMZW5ndGhNb2RlIHsKLSAgICAgICAg
TE1fVU5LTk9XTiA9IDAsCi0gICAgICAgIExNX1dJRFRILAotICAgICAgICBMTV9IRUlHSFQsCi0g
ICAgICAgIExNX09USEVSCi0gICAgfTsKLQogICAgIGNsYXNzIFNWR0hlbHBlciB7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgZmxvYXQgUGVyY2VudGFnZU9mVmlld3BvcnQoZmxvYXQgdmFs
dWUsIGNvbnN0IFNWR0VsZW1lbnQgKnZpZXdwb3J0RWxlbWVudCwgTGVuZ3RoTW9kZSBtb2RlKTsK
LQotICAgICAgICBzdGF0aWMgdm9pZCBwYXJzZVNlcGFyYXRlZExpc3QoU1ZHU3RyaW5nTGlzdCAq
bGlzdCwgY29uc3QgU3RyaW5nICZkYXRhLCBVQ2hhciBkZWxpbWl0ZXIgPSAnLCcpOworICAgICAg
ICBzdGF0aWMgdm9pZCBwYXJzZVNlcGFyYXRlZExpc3QoU1ZHU3RyaW5nTGlzdCogbGlzdCwgY29u
c3QgU3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxpbWl0ZXIgPSAnLCcpOwogICAgIH07CiAKICAgICAv
LyBMYXp5IGNyZWF0aW9uLCB0ZW1wbGF0ZS1iYXNlZApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdJ
bWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0ltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgotICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA2ICAgICAgIEFs
ZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA2
IEFsZXhhbmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtMjIsNiArMjIsNyBAQAogKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdJbWFnZUVs
ZW1lbnQuaCIKIApAQCAtNDUsMTAgKzQ2LDEwIEBAIFNWR0ltYWdlRWxlbWVudDo6U1ZHSW1hZ2VF
bGVtZW50KGNvbnN0IFEKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkKCkKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBtX3gobmV3
IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95
KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAg
LCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgp
KSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9y
dEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiAgICAgLCBtX3By
ZXNlcnZlQXNwZWN0UmF0aW8obmV3IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8odGhpcykpCiAgICAg
LCBtX2ltYWdlTG9hZGVyKHRoaXMpCiB7CkBAIC01OCwyNiArNTksMjYgQEAgU1ZHSW1hZ2VFbGVt
ZW50Ojp+U1ZHSW1hZ2VFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwg
U1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3Ro
LCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwg
bV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1l
czo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVu
Z3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxl
bmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dp
ZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0
dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHSW1hZ2VFbGVtZW50LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKiwgUHJlc2VydmVBc3BlY3RS
YXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVB
c3BlY3RSYXRpbywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLmxvY2FsTmFtZSgp
LCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8uZ2V0KCkpCiAKIHZvaWQgU1ZHSW1hZ2VFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiB7CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUp
OworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6cHJlc2Vy
dmVBc3BlY3RSYXRpb0F0dHIpCiAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW9CYXNlVmFsdWUo
KS0+cGFyc2VQcmVzZXJ2ZUFzcGVjdFJhdGlvKHZhbHVlLmltcGwoKSk7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgd2lkdGhCYXNl
VmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZh
bHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgICAgIGFk
ZENTU1Byb3BlcnR5KGF0dHIsIENTU19QUk9QX1dJRFRILCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgaGVpZ2h0
QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRC
YXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAg
ICAgIGFkZENTU1Byb3BlcnR5KGF0dHIsIENTU19QUk9QX0hFSUdIVCwgdmFsdWUpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGlmIChTVkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikp
CkBAIC0xMTQsNiArMTE1LDYgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmF0dGFjaCgpCiAKIH0K
IAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAxODI2
NSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5IEBACiAg
ICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHSW1h
Z2VFbGVtZW50SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHSW1hZ2VFbGVtZW50SW1wbF9ICisjaWZu
ZGVmIFNWR0ltYWdlRWxlbWVudF9ICisjZGVmaW5lIFNWR0ltYWdlRWxlbWVudF9ICisKICNpZmRl
ZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5o
IgpAQCAtNjYsMTAgKzY3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpIAogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhT
VkdVUklSZWZlcmVuY2UsIFN0cmluZywgSHJlZiwgaHJlZikKIAotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8
U1ZHTGVuZ3RoPiwgWCwgeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNW
R0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJl
ZlB0cjxTVkdMZW5ndGg+LCBIZWlnaHQsIGhlaWdodCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgs
IHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1l
bnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgV2lk
dGgsIHdpZHRoKQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHSW1h
Z2VFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCiAgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8qLCBSZWZQdHI8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4sIFByZXNlcnZl
QXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAKICAgICAgICAgU1ZHSW1hZ2VMb2Fk
ZXIgbV9pbWFnZUxvYWRlcjsKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoLmNwcAkocmV2aXNpb24g
MTgyNjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAg
ICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAg
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw4MCArMjEsMjA3
IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2lu
Y2x1ZGUgIlNWR0xlbmd0aC5oIgogCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlJl
bmRlclBhdGguaCIKLSNpbmNsdWRlICJTVkdFbGVtZW50LmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3Ro
LmgiCisjaW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNp
bmNsdWRlICJTVkdIZWxwZXIuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgInN2Z3BhdGhwYXJzZXIuaCIKLSNpbmNs
dWRlIDxtYXRoLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLS8vIGtlZXAgdHJhY2sgb2Yg
dGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgdW5pdCB0eXBlCi1zdGF0aWMgY29uc3QgY2hhciog
VW5pdFRleHRbXSA9Ci17Ci0gICAgIiIsICIiLAotICAgICIlIiwgImVtIiwKLSAgICAiZXgiLCAi
cHgiLAotICAgICJjbSIsICJtbSIsCi0gICAgImluIiwgInB0IiwKLSAgICAicGMiCi19OworI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHTGVu
Z3RoOjpTVkdMZW5ndGgoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCwgTGVuZ3RoTW9k
ZSBtb2RlLCBjb25zdCBTVkdFbGVtZW50KiB2aWV3cG9ydCkKLSAgICA6IFNoYXJlZDxTVkdMZW5n
dGg+KCkKLSAgICAsIG1fdmFsdWUoMCkKLSAgICAsIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKDAp
Ci0gICAgLCBtX21vZGUobW9kZSkKLSAgICAsIG1fYmJveFJlbGF0aXZlKGZhbHNlKQotICAgICwg
bV91bml0VHlwZShTVkdfTEVOR1RIVFlQRV9VTktOT1dOKQotICAgICwgbV9yZXF1aXJlc0xheW91
dChmYWxzZSkKLSAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV92aWV3cG9ydEVsZW1l
bnQodmlld3BvcnQpCisvLyBIZWxwZXIgZnVuY3Rpb25zCitpbmxpbmUgdW5zaWduZWQgaW50IHN0
b3JlVW5pdChTVkdMZW5ndGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgdHlwZSkKIHsKKyAgICBy
ZXR1cm4gKG1vZGUgPDwgNCkgfCB0eXBlOwogfQogCi1TVkdMZW5ndGg6On5TVkdMZW5ndGgoKQor
aW5saW5lIFNWR0xlbmd0aE1vZGUgZXh0cmFjdE1vZGUodW5zaWduZWQgaW50IHVuaXQpCiB7Cisg
ICAgdW5zaWduZWQgaW50IG1vZGUgPSB1bml0ID4+IDQ7ICAgIAorICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxTVkdMZW5ndGhNb2RlPihtb2RlKTsKK30KKworaW5saW5lIFNWR0xlbmd0aFR5cGUgZXh0
cmFjdFR5cGUodW5zaWduZWQgaW50IHVuaXQpCit7CisgICAgdW5zaWduZWQgaW50IG1vZGUgPSB1
bml0ID4+IDQ7CisgICAgdW5zaWduZWQgaW50IHR5cGUgPSB1bml0IF4gKG1vZGUgPDwgNCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHR5cGUpOworfQorCitpbmxpbmUg
U3RyaW5nIGxlbmd0aFR5cGVUb1N0cmluZyhTVkdMZW5ndGhUeXBlIHR5cGUpCit7CisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBMZW5ndGhUeXBlVW5rbm93bjoKKyAgICBjYXNlIExlbmd0
aFR5cGVOdW1iZXI6CisgICAgICAgIHJldHVybiAiIjsgICAgCisgICAgY2FzZSBMZW5ndGhUeXBl
UGVyY2VudGFnZToKKyAgICAgICAgcmV0dXJuICIlIjsKKyAgICBjYXNlIExlbmd0aFR5cGVFTVM6
CisgICAgICAgIHJldHVybiAiZW0iOworICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICAgICAg
cmV0dXJuICJleCI7CisgICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgICAgIHJldHVybiAicHgi
OworICAgIGNhc2UgTGVuZ3RoVHlwZUNNOgorICAgICAgICByZXR1cm4gImNtIjsKKyAgICBjYXNl
IExlbmd0aFR5cGVNTToKKyAgICAgICAgcmV0dXJuICJtbSI7CisgICAgY2FzZSBMZW5ndGhUeXBl
SU46CisgICAgICAgIHJldHVybiAiaW4iOworICAgIGNhc2UgTGVuZ3RoVHlwZVBUOgorICAgICAg
ICByZXR1cm4gInB0IjsKKyAgICBjYXNlIExlbmd0aFR5cGVQQzoKKyAgICAgICAgcmV0dXJuICJw
YyI7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TVkdMZW5ndGg6OlNWR0xl
bmd0aFR5cGUgU1ZHTGVuZ3RoOjp1bml0VHlwZSgpIGNvbnN0CitpbmxpbmUgU1ZHTGVuZ3RoVHlw
ZSBzdHJpbmdUb0xlbmd0aFR5cGUoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJu
IG1fdW5pdFR5cGU7CisgICAgaWYgKHN0cmluZy5lbmRzV2l0aCgiJSIpKQorICAgICAgICByZXR1
cm4gTGVuZ3RoVHlwZVBlcmNlbnRhZ2U7CisgICAgZWxzZSBpZiAoc3RyaW5nLmVuZHNXaXRoKCJl
bSIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZUVNUzsKKyAgICBlbHNlIGlmIChzdHJpbmcu
ZW5kc1dpdGgoImV4IikpCisgICAgICAgIHJldHVybiBMZW5ndGhUeXBlRVhTOworICAgIGVsc2Ug
aWYgKHN0cmluZy5lbmRzV2l0aCgicHgiKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVQWDsK
KyAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dpdGgoImNtIikpCisgICAgICAgIHJldHVybiBMZW5n
dGhUeXBlQ007CisgICAgZWxzZSBpZiAoc3RyaW5nLmVuZHNXaXRoKCJtbSIpKQorICAgICAgICBy
ZXR1cm4gTGVuZ3RoVHlwZU1NOworICAgIGVsc2UgaWYgKHN0cmluZy5lbmRzV2l0aCgiaW4iKSkK
KyAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVJTjsKKyAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dp
dGgoInB0IikpCisgICAgICAgIHJldHVybiBMZW5ndGhUeXBlUFQ7CisgICAgZWxzZSBpZiAoc3Ry
aW5nLmVuZHNXaXRoKCJwYyIpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZVBDOworICAgIGVs
c2UgaWYgKCFzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZU51bWJl
cjsKKworICAgIHJldHVybiBMZW5ndGhUeXBlVW5rbm93bjsKK30KKworU1ZHTGVuZ3RoOjpTVkdM
ZW5ndGgoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCwgU1ZHTGVuZ3RoTW9kZSBtb2Rl
LCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcpCisgICAgOiBtX3ZhbHVlSW5TcGVjaWZpZWRV
bml0cygwLjApCisgICAgLCBtX3VuaXQoc3RvcmVVbml0KG1vZGUsIExlbmd0aFR5cGVOdW1iZXIp
KQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCit7CisgICAgc2V0VmFsdWVBc1N0cmluZyh2YWx1
ZUFzU3RyaW5nKTsKIH0KIAotdm9pZCBTVkdMZW5ndGg6OnNldFZhbHVlKGZsb2F0IHZhbHVlKQor
U1ZHTGVuZ3RoVHlwZSBTVkdMZW5ndGg6OnVuaXRUeXBlKCkgY29uc3QKIHsKLSAgICBtX3ZhbHVl
ID0gdmFsdWU7Ci0gICAgdXBkYXRlVmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgcmV0dXJu
IGV4dHJhY3RUeXBlKG1fdW5pdCk7CiB9CiAKIGZsb2F0IFNWR0xlbmd0aDo6dmFsdWUoKSBjb25z
dAogewotICAgIGlmIChtX3JlcXVpcmVzTGF5b3V0KQotICAgICAgICBjb25zdF9jYXN0PFNWR0xl
bmd0aCo+KHRoaXMpLT51cGRhdGVWYWx1ZShmYWxzZSk7CisgICAgU1ZHTGVuZ3RoVHlwZSB0eXBl
ID0gZXh0cmFjdFR5cGUobV91bml0KTsKKyAgICBpZiAodHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93
bikKKyAgICAgICAgcmV0dXJuIDAuMDsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
TGVuZ3RoVHlwZU51bWJlcjoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRz
OworICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6CisgICAgICAgIHJldHVybiBTVkdMZW5n
dGg6OlBlcmNlbnRhZ2VPZlZpZXdwb3J0KG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gMTAwLjAs
IG1fY29udGV4dCwgZXh0cmFjdE1vZGUobV91bml0KSk7CisgICAgY2FzZSBMZW5ndGhUeXBlRU1T
OgorICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICB7CisgICAgICAgIFJlbmRlclN0eWxlKiBz
dHlsZSA9IDA7CisgICAgICAgIGlmIChtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5yZW5kZXJlcigp
KQorICAgICAgICAgICAgc3R5bGUgPSBtX2NvbnRleHQtPnJlbmRlcmVyKCktPnN0eWxlKCk7Cisg
ICAgICAgIGlmIChzdHlsZSkgeworICAgICAgICAgICAgZmxvYXQgdXNlU2l6ZSA9IHN0eWxlLT5m
b250U2l6ZSgpOworICAgICAgICAgICAgQVNTRVJUKHVzZVNpemUgPiAwKTsKKyAgICAgICAgICAg
IGlmICh0eXBlID09IExlbmd0aFR5cGVFTVMpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzICogdXNlU2l6ZTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIGZsb2F0IHhIZWlnaHQgPSBzdHlsZS0+Zm9udCgpLnhIZWlnaHQoKTsKKyAgICAg
ICAgICAgICAgICAvLyBVc2Ugb2YgY2VpbCBhbGxvd3MgYSBwaXhlbCBtYXRjaCB0byB0aGUgVzND
cyBleHBlY3RlZCBvdXRwdXQgb2YgY29vcmRzLXVuaXRzLTAzLWIuc3ZnCisgICAgICAgICAgICAg
ICAgLy8gaWYgdGhpcyBjYXVzZXMgcHJvYmxlbXMgaW4gcmVhbCB3b3JsZCBjYXNlcyBtYXliZSBp
dCB3b3VsZCBiZSBiZXN0IHRvIHJlbW92ZSB0aGlzCisgICAgICAgICAgICAgICAgcmV0dXJuIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzICogY2VpbCh4SGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gMC4wOworICAgIH0KKyAgICBjYXNlIExlbmd0aFR5cGVQ
WDoKKyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzOworICAgIGNhc2UgTGVu
Z3RoVHlwZUNNOgorICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyAyLjU0
ICogZHBpKCk7CisgICAgY2FzZSBMZW5ndGhUeXBlTU06CisgICAgICAgIHJldHVybiBtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0cyAvIDI1LjQgKiBkcGkoKTsKKyAgICBjYXNlIExlbmd0aFR5cGVJTjoK
KyAgICAgICAgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzICogZHBpKCk7CisgICAgY2Fz
ZSBMZW5ndGhUeXBlUFQ6CisgICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAv
IDcyLjAgKiBkcGkoKTsKKyAgICBjYXNlIExlbmd0aFR5cGVQQzoKKyAgICAgICAgcmV0dXJuIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzIC8gNi4wICogZHBpKCk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogCi0gICAgaWYgKG1fdW5pdFR5cGUgIT0gU1ZHX0xFTkdUSFRZUEVf
UEVSQ0VOVEFHRSkKLSAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIDAuMDsKK30KIAotICAgIGZsb2F0IHZhbHVlID0gbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgLyAxMDAuMDsKLSAgICBpZiAobV9iYm94UmVsYXRpdmUpCi0gICAgICAg
IHJldHVybiB2YWx1ZTsKK3ZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkKK3sK
KyAgICBTVkdMZW5ndGhUeXBlIHR5cGUgPSBleHRyYWN0VHlwZShtX3VuaXQpOworICAgIEFTU0VS
VCh0eXBlICE9IExlbmd0aFR5cGVVbmtub3duKTsKIAotICAgIC8vIFVzZSB0aGUgbWFudWFsIG92
ZXJyaWRlICJtX3ZpZXdwb3J0RWxlbWVudCIgd2hlbiB0aGVyZSBpcyBubyBjb250ZXh0IGVsZW1l
bnQgb2ZmIG9mIHdoaWNoIHRvIGVzdGFibGlzaCB0aGUgdmlld3BvcnQuCi0gICAgcmV0dXJuIFNW
R0hlbHBlcjo6UGVyY2VudGFnZU9mVmlld3BvcnQodmFsdWUsIG1fY29udGV4dCA/IG1fY29udGV4
dC0+dmlld3BvcnRFbGVtZW50KCkgOiBtX3ZpZXdwb3J0RWxlbWVudCwgc3RhdGljX2Nhc3Q8TGVu
Z3RoTW9kZT4obV9tb2RlKSk7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBMZW5ndGhU
eXBlTnVtYmVyOgorICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdlOgorICAgIGNhc2UgTGVu
Z3RoVHlwZUVNUzoKKyAgICBjYXNlIExlbmd0aFR5cGVFWFM6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVQWDoKKyAgICAg
ICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBMZW5ndGhUeXBlQ006CisgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFs
dWUgKiAyLjU0IC8gZHBpKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVuZ3RoVHlwZU1N
OgorICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlICogMjUuNCAvIGRwaSgp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICAgICAgbV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZSAvIGRwaSgpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIExlbmd0aFR5cGVQVDoKKyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1
ZSAqIDcyLjAgLyBkcGkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMZW5ndGhUeXBlUEM6
CisgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWUgLyA2LjAgKiBkcGkoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPm93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRF
bGVtZW50KCkgIT0gbV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0
ZUNoYW5nZSgpOwogfQogCi12b2lkIFNWR0xlbmd0aDo6c2V0VmFsdWVJblNwZWNpZmllZFVuaXRz
KGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cykKK3ZvaWQgU1ZHTGVuZ3RoOjpzZXRWYWx1ZUlu
U3BlY2lmaWVkVW5pdHMoZmxvYXQgdmFsdWUpCiB7Ci0gICAgbV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMgPSB2YWx1ZUluU3BlY2lmaWVkVW5pdHM7Ci0gICAgdXBkYXRlVmFsdWUoKTsKKyAgICBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlOworCisgICAgaWYgKG1fY29udGV4dCAmJiBtX2Nv
bnRleHQtPm93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgIT0gbV9jb250ZXh0KSAg
ICAKKyAgICAgICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKIH0KIAogZmxv
YXQgU1ZHTGVuZ3RoOjp2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBjb25zdApAQCAtMTA3LDcxICsy
MzQsNTEgQEAgdm9pZCBTVkdMZW5ndGg6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgUwogICAgIGlm
IChzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRGVwcmVjYXRlZFN0cmluZyB2
YWx1ZUFzUVN0cmluZyA9IHMuZGVwcmVjYXRlZFN0cmluZygpOwotCiAgICAgZG91YmxlIGNvbnZl
cnRlZE51bWJlciA9IDA7Ci0gICAgY29uc3QgY2hhciogc3RhcnQgPSB2YWx1ZUFzUVN0cmluZy5s
YXRpbjEoKTsKLSAgICBjb25zdCBjaGFyKiBlbmQgPSBwYXJzZUNvb3JkKHN0YXJ0LCBjb252ZXJ0
ZWROdW1iZXIpOworICAgIERlcHJlY2F0ZWRTdHJpbmcgZGVwU3RyaW5nID0gcy5kZXByZWNhdGVk
U3RyaW5nKCk7CisgICAgY29uc3QgY2hhciogc3RhcnQgPSBkZXBTdHJpbmcubGF0aW4xKCk7Cisg
ICAgcGFyc2VDb29yZChzdGFydCwgY29udmVydGVkTnVtYmVyKTsKKyAgICAKKyAgICBtX3VuaXQg
PSBzdG9yZVVuaXQoZXh0cmFjdE1vZGUobV91bml0KSwgc3RyaW5nVG9MZW5ndGhUeXBlKHMpKTsK
ICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGNvbnZlcnRlZE51bWJlcjsKLQotICAgIHVu
c2lnbmVkIGludCBkaWZmID0gZW5kIC0gc3RhcnQ7Ci0gICAgaWYgKGRpZmYgPCB2YWx1ZUFzUVN0
cmluZy5sZW5ndGgoKSkgewotICAgICAgICBpZiAocy5lbmRzV2l0aChVbml0VGV4dFtTVkdfTEVO
R1RIVFlQRV9QWF0pKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX1BY
OwotICAgICAgICBlbHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX0NN
XSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfQ007Ci0gICAgICAg
IGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdUSFRZUEVfUENdKSkKLSAgICAg
ICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RIVFlQRV9QQzsKLSAgICAgICAgZWxzZSBpZiAo
cy5lbmRzV2l0aChVbml0VGV4dFtTVkdfTEVOR1RIVFlQRV9NTV0pKQotICAgICAgICAgICAgbV91
bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX01NOwotICAgICAgICBlbHNlIGlmIChzLmVuZHNXaXRo
KFVuaXRUZXh0W1NWR19MRU5HVEhUWVBFX0lOXSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0g
U1ZHX0xFTkdUSFRZUEVfSU47Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRb
U1ZHX0xFTkdUSFRZUEVfUFRdKSkKLSAgICAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfTEVOR1RI
VFlQRV9QVDsKLSAgICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZHX0xFTkdU
SFRZUEVfUEVSQ0VOVEFHRV0pKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhU
WVBFX1BFUkNFTlRBR0U7Ci0gICAgICAgIGVsc2UgaWYgKHMuZW5kc1dpdGgoVW5pdFRleHRbU1ZH
X0xFTkdUSFRZUEVfRU1TXSkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZ
UEVfRU1TOwotICAgICAgICBlbHNlIGlmIChzLmVuZHNXaXRoKFVuaXRUZXh0W1NWR19MRU5HVEhU
WVBFX0VYU10pKQotICAgICAgICAgICAgbV91bml0VHlwZSA9IFNWR19MRU5HVEhUWVBFX0VYUzsK
LSAgICAgICAgZWxzZSBpZiAocy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3VuaXRUeXBlID0g
U1ZHX0xFTkdUSFRZUEVfTlVNQkVSOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3VuaXRU
eXBlID0gU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBt
X3VuaXRUeXBlID0gU1ZHX0xFTkdUSFRZUEVfUFg7Ci0KLSAgICB1cGRhdGVWYWx1ZSgpOwogfQog
CiBTdHJpbmcgU1ZHTGVuZ3RoOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
U3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgVW5pdFRleHRbbV91bml0
VHlwZV07CisgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRz
KSArIGxlbmd0aFR5cGVUb1N0cmluZyhleHRyYWN0VHlwZShtX3VuaXQpKTsKIH0KIAotdm9pZCBT
VkdMZW5ndGg6Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUs
IGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cykKK3ZvaWQgU1ZHTGVuZ3RoOjpuZXdWYWx1ZVNw
ZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHR5cGUsIGZsb2F0IHZhbHVlKQogewotICAgIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWVJblNwZWNpZmllZFVuaXRzOwotICAgIG1fdW5p
dFR5cGUgPSAoU1ZHTGVuZ3RoVHlwZSl1bml0VHlwZTsKLSAgICB1cGRhdGVWYWx1ZSgpOworICAg
IEFTU0VSVCh0eXBlIDw9IExlbmd0aFR5cGVQQyk7CisKKyAgICBtX3VuaXQgPSBzdG9yZVVuaXQo
ZXh0cmFjdE1vZGUobV91bml0KSwgKFNWR0xlbmd0aFR5cGUpIHR5cGUpOworICAgIG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzID0gdmFsdWU7CiB9CiAKLXZvaWQgU1ZHTGVuZ3RoOjpjb252ZXJ0VG9T
cGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkKK3ZvaWQgU1ZHTGVuZ3RoOjpj
b252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB0eXBlKQogewotICAgIG1fdW5p
dFR5cGUgPSAoU1ZHTGVuZ3RoVHlwZSl1bml0VHlwZTsKLSAgICB1cGRhdGVWYWx1ZUluU3BlY2lm
aWVkVW5pdHMoKTsKKyAgICBBU1NFUlQodHlwZSA8PSBMZW5ndGhUeXBlUEMpOworCisgICAgZmxv
YXQgdmFsdWVJblVzZXJVbml0cyA9IHZhbHVlKCk7CisgICAgbV91bml0ID0gc3RvcmVVbml0KGV4
dHJhY3RNb2RlKG1fdW5pdCksIChTVkdMZW5ndGhUeXBlKSB0eXBlKTsKKyAgICBzZXRWYWx1ZSh2
YWx1ZUluVXNlclVuaXRzKTsKK30KKworYm9vbCBTVkdMZW5ndGg6OmlzRnJhY3Rpb24oY29uc3Qg
U1ZHTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgcmV0dXJuIChsZW5ndGgudW5pdFR5cGUoKSA9PSBM
ZW5ndGhUeXBlTnVtYmVyICYmIGxlbmd0aC52YWx1ZSgpID49IDAgJiYgbGVuZ3RoLnZhbHVlKCkg
PD0gMSk7CiB9CiAKIGRvdWJsZSBTVkdMZW5ndGg6OmRwaSgpIGNvbnN0CiB7CiAgICAgLyogRklY
TUU6IERQSSBkZXRlY3Rpb24KICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5vd25lckRvYygp
KSB7Ci0gICAgICAgIGlmIChtb2RlID09IExNX1dJRFRIKQorICAgICAgICBpZiAobW9kZSA9PSBM
ZW5ndGhNb2RlV2lkdGgpCiAgICAgICAgICAgICByZXR1cm4gMjUuNCAqIGNvbnRleHQtPm93bmVy
RG9jKCktPnNjcmVlblBpeGVsc1Blck1pbGxpbWV0ZXJYKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1v
ZGUgPT0gTE1fSEVJR0hUKQorICAgICAgICBlbHNlIGlmIChtb2RlID09IExlbmd0aE1vZGVIZWln
aHQpCiAgICAgICAgICAgICByZXR1cm4gMjUuNCAqIGNvbnRleHQtPm93bmVyRG9jKCktPnNjcmVl
blBpeGVsc1Blck1pbGxpbWV0ZXJZKCk7Ci0gICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTE1fT1RI
RVIpCisgICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gTGVuZ3RoTW9kZU90aGVyKQogICAgICAgICAg
ICAgcmV0dXJuIDI1LjQgKiBjb250ZXh0LT5vd25lckRvYygpLT5zY3JlZW5QaXhlbHNQZXJNaWxs
aW1ldGVyWCgpOwogICAgIH0KICAgICAqLwpAQCAtMTc5LDEyNiArMjg2LDQ0IEBAIGRvdWJsZSBT
VkdMZW5ndGg6OmRwaSgpIGNvbnN0CiAgICAgcmV0dXJuIDkwLjA7CiB9CiAKLXZvaWQgU1ZHTGVu
Z3RoOjp1cGRhdGVWYWx1ZShib29sIG5vdGlmeSkKLXsKLSAgICBzd2l0Y2ggKG1fdW5pdFR5cGUp
IHsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9QWDoKLSAgICAgICAgICAgIG1fdmFsdWUg
PSBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFNWR19MRU5HVEhUWVBFX0NNOgotICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cyAvIDIuNTQpICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9NTToKLSAgICAgICAgICAgIG1fdmFsdWUgPSAobV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMgLyAyNS40KSAqIGRwaSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfSU46Ci0gICAgICAgICAgICBtX3ZhbHVlID0gbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgKiBkcGkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFNWR19MRU5HVEhUWVBFX1BUOgotICAgICAgICAgICAgbV92YWx1ZSA9IChtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0cyAvIDcyLjApICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9QQzoKLSAgICAgICAgICAgIG1fdmFsdWUgPSAobV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgLyA2LjApICogZHBpKCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9FTVM6Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdU
SFRZUEVfRVhTOiB7Ci0gICAgICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSAwOwotICAgICAg
ICAgICAgaWYgKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICAgICAgc3R5bGUgPSBtX2NvbnRleHQtPnJlbmRlcmVyKCktPnN0eWxlKCk7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChtX3ZpZXdwb3J0RWxlbWVudCAmJiBtX3ZpZXdwb3J0RWxlbWVudC0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgICAgICBzdHlsZSA9IG1fdmlld3BvcnRFbGVtZW50LT5yZW5kZXJl
cigpLT5zdHlsZSgpOwotICAgICAgICAgICAgaWYgKHN0eWxlKSB7Ci0gICAgICAgICAgICAgICAg
ZmxvYXQgdXNlU2l6ZSA9IHN0eWxlLT5mb250U2l6ZSgpOwotICAgICAgICAgICAgICAgIEFTU0VS
VCh1c2VTaXplID4gMCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fdW5pdFR5cGUgPT0gU1ZHX0xF
TkdUSFRZUEVfRU1TKQotICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlID0gbV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMgKiB1c2VTaXplOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICBmbG9hdCB4SGVpZ2h0ID0gc3R5bGUtPmZvbnQoKS54SGVpZ2h0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIFVzZSBvZiBjZWlsIGFsbG93cyBhIHBpeGVsIG1hdGNoIHRvIHRo
ZSBXM0NzIGV4cGVjdGVkIG91dHB1dCBvZiBjb29yZHMtdW5pdHMtMDMtYi5zdmcKLSAgICAgICAg
ICAgICAgICAgICAgLy8gaWYgdGhpcyBjYXVzZXMgcHJvYmxlbXMgaW4gcmVhbCB3b3JsZCBjYXNl
cyBtYXliZSBpdCB3b3VsZCBiZSBiZXN0IHRvIHJlbW92ZSB0aGlzCi0gICAgICAgICAgICAgICAg
ICAgIG1fdmFsdWUgPSBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAqIGNlaWwoeEhlaWdodCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1fcmVxdWlyZXNMYXlvdXQgPSBmYWxz
ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9yZXF1aXJlc0xheW91
dCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1VOS05PV046Ci0gICAgICAgIGNhc2UgU1ZHX0xF
TkdUSFRZUEVfTlVNQkVSOgotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0U6
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKG5vdGlmeSAmJiBtX2NvbnRleHQp
Ci0gICAgICAgIG1fY29udGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7Ci19Ci0KLWJvb2wg
U1ZHTGVuZ3RoOjp1cGRhdGVWYWx1ZUluU3BlY2lmaWVkVW5pdHMoYm9vbCBub3RpZnkpCitmbG9h
dCBTVkdMZW5ndGg6OlBlcmNlbnRhZ2VPZlZpZXdwb3J0KGZsb2F0IHZhbHVlLCBjb25zdCBTVkdT
dHlsZWRFbGVtZW50KiBjb250ZXh0LCBTVkdMZW5ndGhNb2RlIG1vZGUpCiB7Ci0gICAgaWYgKG1f
dW5pdFR5cGUgPT0gU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIEFTU0VSVChjb250ZXh0KTsKIAotICAgIHN3aXRjaCAobV91bml0VHlwZSkgewotICAg
ICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0U6Ci0gICAgICAgICAgICAvL2tkRXJy
b3IoKSA8PCAidXBkYXRlVmFsdWVJblNwZWNpZmllZFVuaXRzKCkgU1ZHX0xFTkdUSFRZUEVfUEVS
Q0VOVEFHRSAtIFVOU1VQUE9SVEVEISBQbGVhc2UgcmVwb3J0ISIgPDwgZW5kbDsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9FTVM6Ci0gICAg
ICAgICAgICAvL2tkRXJyb3IoKSA8PCAidXBkYXRlVmFsdWVJblNwZWNpZmllZFVuaXRzKCkgU1ZH
X0xFTkdUSFRZUEVfRU1TIC0gVU5TVVBQT1JURUQhIFBsZWFzZSByZXBvcnQhIiA8PCBlbmRsOwot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX0VY
UzoKLSAgICAgICAgICAgIC8va2RFcnJvcigpIDw8ICJ1cGRhdGVWYWx1ZUluU3BlY2lmaWVkVW5p
dHMoKSBTVkdfTEVOR1RIVFlQRV9FWFMgLSBVTlNVUFBPUlRFRCEgUGxlYXNlIHJlcG9ydCEiIDw8
IGVuZGw7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdU
SFRZUEVfUFg6Ci0gICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IG1fdmFsdWU7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfTEVOR1RIVFlQRV9DTToKLSAg
ICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gbV92YWx1ZSAvIGRwaSgpICogMi41
NDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX01NOgot
ICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBtX3ZhbHVlIC8gZHBpKCkgKiAy
NS40OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfSU46
Ci0gICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IG1fdmFsdWUgLyBkcGkoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1BUOgotICAg
ICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBtX3ZhbHVlIC8gZHBpKCkgKiA3Mi4w
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfUEM6Ci0g
ICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IG1fdmFsdWUgLyBkcGkoKSAqIDYu
MDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19MRU5HVEhUWVBFX1VOS05P
V046Ci0gICAgICAgIGNhc2UgU1ZHX0xFTkdUSFRZUEVfTlVNQkVSOgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgfTsKLSAgICAKLSAgICBpZiAobm90aWZ5ICYmIG1fY29udGV4dCkKLSAgICAgICAg
bV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKKyAgICBmbG9hdCB3aWR0aCA9IDAs
IGhlaWdodCA9IDA7CisgICAgU1ZHRWxlbWVudCogdmlld3BvcnRFbGVtZW50ID0gY29udGV4dC0+
dmlld3BvcnRFbGVtZW50KCk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBTVkdMZW5n
dGg6OmJib3hSZWxhdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYmJveFJlbGF0aXZlOwot
fQotCi12b2lkIFNWR0xlbmd0aDo6c2V0QmJveFJlbGF0aXZlKGJvb2wgcmVsYXRpdmUpCi17Ci0g
ICAgbV9iYm94UmVsYXRpdmUgPSByZWxhdGl2ZTsKLX0KKyAgICBEb2N1bWVudCogZG9jID0gY29u
dGV4dC0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoZG9jLT5kb2N1bWVudEVsZW1lbnQoKSA9PSBjb250
ZXh0KSB7CisgICAgICAgIC8vIFdlIGhhdmUgdG8gYXNrIHRoZSBjYW52YXMgZm9yIHRoZSBmdWxs
ICJjYW52YXMgc2l6ZSIuLi4KKyAgICAgICAgUmVuZGVyVmlldyogdmlldyA9IHN0YXRpY19jYXN0
PFJlbmRlclZpZXcqPihkb2MtPnJlbmRlcmVyKCkpOworICAgICAgICBpZiAodmlldykgeworICAg
ICAgICAgICAgd2lkdGggPSB2aWV3LT5mcmFtZVZpZXcoKS0+dmlzaWJsZVdpZHRoKCk7IC8vIFRP
RE86IHJlY2hlY2shCisgICAgICAgICAgICBoZWlnaHQgPSB2aWV3LT5mcmFtZVZpZXcoKS0+dmlz
aWJsZUhlaWdodCgpOyAvLyBUT0RPOiByZWNoZWNrIQorICAgICAgICAgfQorICAgIH0gZWxzZSBp
ZiAodmlld3BvcnRFbGVtZW50ICYmIHZpZXdwb3J0RWxlbWVudC0+aXNTVkcoKSkgeworICAgICAg
ICBjb25zdCBTVkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxjb25zdCBTVkdTVkdFbGVt
ZW50Kj4odmlld3BvcnRFbGVtZW50KTsKKyAgICAgICAgaWYgKHN2Zy0+aGFzQXR0cmlidXRlKFNW
R05hbWVzOjp2aWV3Qm94QXR0cikpIHsKKyAgICAgICAgICAgIHdpZHRoID0gc3ZnLT52aWV3Qm94
KCkud2lkdGgoKTsKKyAgICAgICAgICAgIGhlaWdodCA9IHN2Zy0+dmlld0JveCgpLmhlaWdodCgp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd2lkdGggPSBzdmctPndpZHRoKCkudmFs
dWUoKTsKKyAgICAgICAgICAgIGhlaWdodCA9IHN2Zy0+aGVpZ2h0KCkudmFsdWUoKTsKKyAgICAg
ICAgfQorICAgIH0KIAotY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogU1ZHTGVuZ3RoOjpjb250ZXh0
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZXh0OwotfQorICAgIGlmIChtb2RlID09IExl
bmd0aE1vZGVXaWR0aCkKKyAgICAgICAgcmV0dXJuIHZhbHVlICogd2lkdGg7CisgICAgZWxzZSBp
ZiAobW9kZSA9PSBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICAgICByZXR1cm4gdmFsdWUgKiBoZWln
aHQ7CisgICAgZWxzZSBpZiAobW9kZSA9PSBMZW5ndGhNb2RlT3RoZXIpCisgICAgICAgIHJldHVy
biB2YWx1ZSAqIHNxcnQocG93KGRvdWJsZSh3aWR0aCksIDIpICsgcG93KGRvdWJsZShoZWlnaHQp
LCAyKSkgLyBzcXJ0KDIuMCk7CiAKLXZvaWQgU1ZHTGVuZ3RoOjpzZXRDb250ZXh0KGNvbnN0IFNW
R1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpCi17Ci0gICAgbV9jb250ZXh0ID0gY29udGV4dDsKKyAg
ICByZXR1cm4gMC4wOwogfQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdf
U1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdM
ZW5ndGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaAkocmV2
aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5p
a29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAg
ICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
IAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsODEgKzIw
LDg3IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtT
VkdfU1ZHTGVuZ3RoSW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHTGVuZ3RoSW1wbF9ICisjaWZuZGVm
IFNWR0xlbmd0aF9ICisjZGVmaW5lIFNWR0xlbmd0aF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAog
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTVkdIZWxwZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgUmVuZGVyUGF0aDsKLSAgICBjbGFzcyBT
VkdFbGVtZW50OwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQ7CiAKLSAgICBjbGFzcyBTVkdM
ZW5ndGggOiBwdWJsaWMgU2hhcmVkPFNWR0xlbmd0aD4geworICAgIGVudW0gU1ZHTGVuZ3RoVHlw
ZSB7CisgICAgICAgIExlbmd0aFR5cGVVbmtub3duID0gMCwKKyAgICAgICAgTGVuZ3RoVHlwZU51
bWJlciA9IDEsCisgICAgICAgIExlbmd0aFR5cGVQZXJjZW50YWdlID0gMiwKKyAgICAgICAgTGVu
Z3RoVHlwZUVNUyA9IDMsCisgICAgICAgIExlbmd0aFR5cGVFWFMgPSA0LAorICAgICAgICBMZW5n
dGhUeXBlUFggPSA1LAorICAgICAgICBMZW5ndGhUeXBlQ00gPSA2LAorICAgICAgICBMZW5ndGhU
eXBlTU0gPSA3LAorICAgICAgICBMZW5ndGhUeXBlSU4gPSA4LAorICAgICAgICBMZW5ndGhUeXBl
UFQgPSA5LAorICAgICAgICBMZW5ndGhUeXBlUEMgPSAxMAorICAgIH07CisKKyAgICBlbnVtIFNW
R0xlbmd0aE1vZGUgeworICAgICAgICBMZW5ndGhNb2RlV2lkdGggPSAwLAorICAgICAgICBMZW5n
dGhNb2RlSGVpZ2h0LAorICAgICAgICBMZW5ndGhNb2RlT3RoZXIKKyAgICB9OworCisgICAgY2xh
c3MgU1ZHTGVuZ3RoIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNWR0xlbmd0aChjb25zdCBTVkdT
dHlsZWRFbGVtZW50KiBjb250ZXh0LCBMZW5ndGhNb2RlIG1vZGUgPSBMTV9VTktOT1dOLCBjb25z
dCBTVkdFbGVtZW50KiB2aWV3cG9ydCA9IDApOwotICAgICAgICB2aXJ0dWFsIH5TVkdMZW5ndGgo
KTsKLSAgICAgICAgCi0gICAgICAgIGVudW0gU1ZHTGVuZ3RoVHlwZSB7Ci0gICAgICAgICAgICBT
VkdfTEVOR1RIVFlQRV9VTktOT1dOICAgICAgICAgID0gMCwKLSAgICAgICAgICAgIFNWR19MRU5H
VEhUWVBFX05VTUJFUiAgICAgICAgICAgPSAxLAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVf
UEVSQ0VOVEFHRSAgICAgICA9IDIsCi0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9FTVMgICAg
ICAgICAgICAgID0gMywKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX0VYUyAgICAgICAgICAg
ICAgPSA0LAotICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUFggICAgICAgICAgICAgICA9IDUs
Ci0gICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9DTSAgICAgICAgICAgICAgID0gNiwKLSAgICAg
ICAgICAgIFNWR19MRU5HVEhUWVBFX01NICAgICAgICAgICAgICAgPSA3LAotICAgICAgICAgICAg
U1ZHX0xFTkdUSFRZUEVfSU4gICAgICAgICAgICAgICA9IDgsCi0gICAgICAgICAgICBTVkdfTEVO
R1RIVFlQRV9QVCAgICAgICAgICAgICAgID0gOSwKLSAgICAgICAgICAgIFNWR19MRU5HVEhUWVBF
X1BDICAgICAgICAgICAgICAgPSAxMAorICAgICAgICAvLyBGb3J3YXJkIGRlY2xhcmUgdGhlc2Ug
ZW51bXMgaW4gdGhlIHczYyBuYW1pbmcgc2NoZW1lLCBmb3IgSURMIGdlbmVyYXRpb24KKyAgICAg
ICAgZW51bSB7CisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9VTktOT1dOID0gTGVuZ3RoVHlw
ZVVua25vd24sCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9OVU1CRVIgPSBMZW5ndGhUeXBl
TnVtYmVyLAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSA9IExlbmd0aFR5
cGVQZXJjZW50YWdlLAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfRU1TID0gTGVuZ3RoVHlw
ZUVNUywKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX0VYUyA9IExlbmd0aFR5cGVFWFMsCisg
ICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9QWCA9IExlbmd0aFR5cGVQWCwKKyAgICAgICAgICAg
IFNWR19MRU5HVEhUWVBFX0NNID0gTGVuZ3RoVHlwZUNNLAorICAgICAgICAgICAgU1ZHX0xFTkdU
SFRZUEVfTU0gPSBMZW5ndGhUeXBlTU0sCisgICAgICAgICAgICBTVkdfTEVOR1RIVFlQRV9JTiA9
IExlbmd0aFR5cGVJTiwKKyAgICAgICAgICAgIFNWR19MRU5HVEhUWVBFX1BUID0gTGVuZ3RoVHlw
ZVBULAorICAgICAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUEMgPSBMZW5ndGhUeXBlUEMKICAgICAg
ICAgfTsKIAorICAgICAgICBTVkdMZW5ndGgoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4
dCA9IDAsIFNWR0xlbmd0aE1vZGUgbW9kZSA9IExlbmd0aE1vZGVPdGhlciwgY29uc3QgU3RyaW5n
JiB2YWx1ZUFzU3RyaW5nID0gU3RyaW5nKCkpOworCiAgICAgICAgIC8vICdTVkdMZW5ndGgnIGZ1
bmN0aW9ucwogICAgICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlKCkgY29uc3Q7CiAKICAgICAg
ICAgZmxvYXQgdmFsdWUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRWYWx1ZShmbG9hdCB2YWx1
ZSk7CisgICAgICAgIHZvaWQgc2V0VmFsdWUoZmxvYXQpOwogCiAgICAgICAgIGZsb2F0IHZhbHVl
SW5TcGVjaWZpZWRVbml0cygpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFZhbHVlSW5TcGVjaWZp
ZWRVbml0cyhmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAgICAgICB2b2lkIHNldFZh
bHVlSW5TcGVjaWZpZWRVbml0cyhmbG9hdCk7CiAKICAgICAgICAgU3RyaW5nIHZhbHVlQXNTdHJp
bmcoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYp
OwogCi0gICAgICAgIHZvaWQgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1
bml0VHlwZSwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKLSAgICAgICAgdm9pZCBjb252
ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7Ci0KLSAgICAgICAg
Ly8gSGVscGVycwotICAgICAgICBib29sIGJib3hSZWxhdGl2ZSgpIGNvbnN0OwotICAgICAgICB2
b2lkIHNldEJib3hSZWxhdGl2ZShib29sKTsKKyAgICAgICAgdm9pZCBuZXdWYWx1ZVNwZWNpZmll
ZFVuaXRzKHVuc2lnbmVkIHNob3J0LCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAg
ICAgICB2b2lkIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0KTsKIAotICAg
ICAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KCkgY29uc3Q7Ci0gICAgICAgIHZv
aWQgc2V0Q29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KTsKKyAgICAgICAg
Ly8gSGVscGVyIGZ1bmN0aW9ucworICAgICAgICBzdGF0aWMgYm9vbCBpc0ZyYWN0aW9uKGNvbnN0
IFNWR0xlbmd0aCYpOworICAgICAgICBzdGF0aWMgZmxvYXQgUGVyY2VudGFnZU9mVmlld3BvcnQo
ZmxvYXQgdmFsdWUsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqLCBTVkdMZW5ndGhNb2RlKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgdXBkYXRlVmFsdWVJblNwZWNpZmllZFVuaXRzKGJv
b2wgbm90aWZ5ID0gdHJ1ZSk7Ci0gICAgICAgIHZvaWQgdXBkYXRlVmFsdWUoYm9vbCBub3RpZnkg
PSB0cnVlKTsKLQogICAgICAgICBkb3VibGUgZHBpKCkgY29uc3Q7CiAKLSAgICAgICAgZmxvYXQg
bV92YWx1ZTsKICAgICAgICAgZmxvYXQgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7Ci0KLSAgICAg
ICAgTGVuZ3RoTW9kZSBtX21vZGUgOiAyOwotICAgICAgICBib29sIG1fYmJveFJlbGF0aXZlIDog
MTsKLSAgICAgICAgU1ZHTGVuZ3RoVHlwZSBtX3VuaXRUeXBlIDogNDsKLSAgICAgICAgYm9vbCBt
X3JlcXVpcmVzTGF5b3V0IDogMTsKKyAgICAgICAgdW5zaWduZWQgaW50IG1fdW5pdDsKIAogICAg
ICAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBtX2NvbnRleHQ7Ci0gICAgICAgIGNvbnN0IFNW
R0VsZW1lbnQqIG1fdmlld3BvcnRFbGVtZW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCi0jZW5kaWYgLy8gS1NWR19TVkdMZW5ndGhJ
bXBsX0gKKyNlbmRpZiAvLyBTVkdMZW5ndGhfSAogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGguaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0xlbmd0aC5pZGwJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHTGVuZ3RoLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiBtb2R1
bGUgc3ZnIHsKIAotICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHLCBHZW5lcmF0ZUNvbnN0
cnVjdG9yXSBTVkdMZW5ndGggeyAKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRywgR2Vu
ZXJhdGVDb25zdHJ1Y3RvciwgUE9EVHlwZT1TVkdMZW5ndGhdIFNWR0xlbmd0aCB7IAogICAgICAg
ICAvLyBMZW5ndGggVW5pdCBUeXBlcwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdf
TEVOR1RIVFlQRV9VTktOT1dOICAgID0gMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
U1ZHX0xFTkdUSFRZUEVfTlVNQkVSICAgICA9IDE7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdMZW5ndGhMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5n
dGhMaXN0LmNwcAkocmV2aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5n
dGhMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTVkdMZW5ndGhMaXN0OjpTVkdMZW5ndGhMaXN0KCkKLSAgICA6IFNWR0xpc3Q8
UmVmUHRyPFNWR0xlbmd0aD4gPigpCisgICAgOiBTVkdMaXN0PFNWR0xlbmd0aD4oKQogewogfQog
CkBAIC0zNywxNyArMzcsMTQgQEAgU1ZHTGVuZ3RoTGlzdDo6flNWR0xlbmd0aExpc3QoKQogewog
fQogCi12b2lkIFNWR0xlbmd0aExpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0
IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQsIExlbmd0aE1vZGUgbW9kZSkKK3ZvaWQgU1ZHTGVu
Z3RoTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU1ZHU3R5bGVkRWxlbWVu
dCogY29udGV4dCwgU1ZHTGVuZ3RoTW9kZSBtb2RlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogCiAgICAgVmVjdG9yPFN0cmluZz4gbGVuZ3RocyA9IHZhbHVlLnNwbGl0KCcgJyk7CiAg
ICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxlbmd0aHMuZW5kKCk7Ci0g
ICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsZW5ndGhzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBTVkdMZW5ndGgqIGxlbmd0aCA9IG5ldyBT
VkdMZW5ndGgoY29udGV4dCwgbW9kZSk7Ci0gICAgICAgIGxlbmd0aC0+c2V0VmFsdWVBc1N0cmlu
ZygqaXQpOwotICAgICAgICBhcHBlbmRJdGVtKGxlbmd0aCwgZWMpOwotICAgIH0KKyAgICBmb3Ig
KFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxlbmd0aHMuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQorICAgICAgICBhcHBlbmRJdGVtKFNWR0xlbmd0aChjb250ZXh0LCBtb2Rl
LCAqaXQpLCBlYyk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xlbmd0aExp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMZW5ndGhMaXN0LmgJKHJl
dmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGVuZ3RoTGlzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwxMyArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKLSAg
ICBjbGFzcyBTVkdMZW5ndGhMaXN0IDogcHVibGljIFNWR0xpc3Q8UmVmUHRyPFNWR0xlbmd0aD4g
PgorICAgIGNsYXNzIFNWR0xlbmd0aExpc3QgOiBwdWJsaWMgU1ZHTGlzdDxTVkdMZW5ndGg+CiAg
ICAgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHTGVuZ3RoTGlzdCgpOwogICAgICAgICB2aXJ0
dWFsIH5TVkdMZW5ndGhMaXN0KCk7CiAKLSAgICAgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcm
IHZhbHVlLCBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0LCBMZW5ndGhNb2RlIG1vZGUp
OworICAgICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFNWR1N0eWxl
ZEVsZW1lbnQqIGNvbnRleHQsIFNWR0xlbmd0aE1vZGUgbW9kZSk7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAko
cmV2aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5v
cmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIx
LDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lmZGVmIFNWR19TVVBQ
T1JUCiAjaW5jbHVkZSAiU1ZHTGluZUVsZW1lbnQuaCIKIApAQCAtMzYsMTAgKzM3LDEwIEBAIFNW
R0xpbmVFbGVtZW50OjpTVkdMaW5lRWxlbWVudChjb25zdCBRdWEKICAgICAsIFNWR1Rlc3RzKCkK
ICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KCkKLSAgICAsIG1feDEobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVt
ZW50KCkpKQotICAgICwgbV95MShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3Bv
cnRFbGVtZW50KCkpKQotICAgICwgbV94MihuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2
aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3kyKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJ
R0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3gxKHRoaXMsIExlbmd0aE1vZGVXaWR0
aCkKKyAgICAsIG1feTEodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1feDIodGhpcywg
TGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV95Mih0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewog
fQogCkBAIC00Nyw1OSArNDgsNDYgQEAgU1ZHTGluZUVsZW1lbnQ6On5TVkdMaW5lRWxlbWVudCgp
CiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBT
VkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgWDEsIHgxLCBTVkdOYW1lczo6eDFBdHRyLmxvY2Fs
TmFtZSgpLCBtX3gxLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGlu
ZUVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5
MUF0dHIubG9jYWxOYW1lKCksIG1feTEuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgyLCB4Miwg
U1ZHTmFtZXM6OngyQXR0ci5sb2NhbE5hbWUoKSwgbV94Mi5nZXQoKSkKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0
aCwgWTIsIHkyLCBTVkdOYW1lczo6eTJBdHRyLmxvY2FsTmFtZSgpLCBtX3kyLmdldCgpKQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIFgxLCB4MSwgU1ZHTmFtZXM6OngxQXR0ci5sb2NhbE5hbWUoKSwgbV94MSkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5MUF0dHIubG9jYWxOYW1lKCksIG1f
eTEpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVu
Z3RoLCBMZW5ndGgsIGxlbmd0aCwgWDIsIHgyLCBTVkdOYW1lczo6eDJBdHRyLmxvY2FsTmFtZSgp
LCBtX3gyKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNW
R0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFkyLCB5MiwgU1ZHTmFtZXM6OnkyQXR0ci5sb2NhbE5h
bWUoKSwgbV95MikKIAogdm9pZCBTVkdMaW5lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUg
PSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngxQXR0
cikKLSAgICAgICAgeDFCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAg
ICAgIHNldFgxQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVl
KSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MUF0dHIpCi0gICAg
ICAgIHkxQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZ
MUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngyQXR0cikKLSAgICAgICAgeDJC
YXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFgyQmFzZVZh
bHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5MkF0dHIpCi0gICAgICAgIHkyQmFzZVZhbHVl
KCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRZMkJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlCiAgICAgewot
ICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSByZXR1cm47
Ci0gICAgICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSBy
ZXR1cm47Ci0gICAgICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOworICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAo
U1ZHTGFuZ1NwYWNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAgICAg
fQogfQogCiBQYXRoIFNWR0xpbmVFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QKIHsKLSAgICBm
bG9hdCBfeDEgPSB4MSgpLT52YWx1ZSgpLCBfeTEgPSB5MSgpLT52YWx1ZSgpOwotICAgIGZsb2F0
IF94MiA9IHgyKCktPnZhbHVlKCksIF95MiA9IHkyKCktPnZhbHVlKCk7Ci0KLSAgICByZXR1cm4g
UGF0aDo6Y3JlYXRlTGluZShGbG9hdFBvaW50KF94MSwgX3kxKSwgRmxvYXRQb2ludChfeDIsIF95
MikpOwotfQotCi1jb25zdCBTVkdTdHlsZWRFbGVtZW50KiBTVkdMaW5lRWxlbWVudDo6cHVzaEF0
dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCkKLXsKLSAgICAv
LyBBbGwgYXR0cmlidXRlJ3MgY29udGV4dHMgYXJlIGVxdWFsIChzbyBqdXN0IHRha2UgdGhlIG9u
ZSBmcm9tICd4MScpLgotICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHJlc3RvcmUgPSB4MSgp
LT5jb250ZXh0KCk7Ci0KLSAgICB4MSgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHkxKCkt
PnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgeDIoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAg
ICB5MigpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIAotICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnRleHQpOwotICAgIHJldHVybiByZXN0b3JlOworICAg
IHJldHVybiBQYXRoOjpjcmVhdGVMaW5lKEZsb2F0UG9pbnQoeDEoKS52YWx1ZSgpLCB5MSgpLnZh
bHVlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQoeDIoKS52YWx1
ZSgpLCB5MigpLnZhbHVlKCkpKTsKIH0KIAogYm9vbCBTVkdMaW5lRWxlbWVudDo6aGFzUGVyY2Vu
dGFnZVZhbHVlcygpIGNvbnN0CiB7Ci0gICAgaWYgKHgxKCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVu
Z3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHkxKCktPnVuaXRUeXBl
KCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIHgy
KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8
Ci0gICAgICAgIHkyKCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9Q
RVJDRU5UQUdFKQorICAgIGlmICh4MSgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRh
Z2UgfHwKKyAgICAgICAgeTEoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8
CisgICAgICAgIHgyKCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSB8fAorICAg
ICAgICB5MigpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDYgKzk1LDYgQEAgYm9vbCBT
VkdMaW5lRWxlbWVudDo6aGFzUGVyY2VudGFnZVZhbHVlcwogCiB9CiAKLS8vIHZpbTp0cz00Om5v
ZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHTGluZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUs
IDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTEt
MTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NWR0xpbmVFbGVtZW50SW1wbF9ICi0jZGVm
aW5lIEtTVkdfU1ZHTGluZUVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHTGluZUVsZW1lbnRfSAor
I2RlZmluZSBTVkdMaW5lRWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVk
ZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpAQCAtNDksMjAgKzUwLDE3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJl
bmRlclN0eWxlKiBzdHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZChzdHlsZSk7IH0KICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAot
ICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hBdHRyaWJ1dGVDb250
ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOwotCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gdGhpczsgfQotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFs
dWVzKCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9G
T1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogIAot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNW
R0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYMSwgeDEpCi0gICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNW
R0xlbmd0aD4sIFkxLCB5MSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWDIsIHgyKQot
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNW
R0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZMiwgeTIpCisgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgs
IFgxLCB4MSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0xpbmVF
bGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgWTEsIHkxKQorICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3Ro
LCBYMiwgeDIpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5l
RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFkyLCB5MikKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMzcsMzUgKzM3LDM1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNW
R0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX3gxKG5ldyBTVkdMZW5ndGgo
dGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feTEobmV3IFNWR0xl
bmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1feDIobmV3
IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV95
MihuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAg
ICwgbV94MSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kxKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpCisgICAgLCBtX3gyKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1feTIo
dGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKLSAgICAvLyBTcGVjIDogSWYgdGhlIGF0dHJpYnV0
ZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgZWZmZWN0IGlzIGFzIGlmIGEgdmFsdWUgb2YgIjEwMCUi
IHdlcmUgc3BlY2lmaWVkLgotICAgIG1feDItPnNldFZhbHVlQXNTdHJpbmcoIjEwMCUiKTsKKyAg
ICAvLyBTcGVjOiBJZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3Qg
aXMgYXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCisgICAgc2V0WDJCYXNl
VmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSk7CiB9CiAKIFNW
R0xpbmVhckdyYWRpZW50RWxlbWVudDo6flNWR0xpbmVhckdyYWRpZW50RWxlbWVudCgpCiB7CiB9
CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgxLCB4MSwgU1ZHTmFtZXM6OngxQXR0ci5s
b2NhbE5hbWUoKSwgbV94MS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFkxLCB5
MSwgU1ZHTmFtZXM6OnkxQXR0ci5sb2NhbE5hbWUoKSwgbV95MS5nZXQoKSkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwg
TGVuZ3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2NhbE5hbWUoKSwgbV94
Mi5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50
RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFkyLCB5MiwgU1ZHTmFtZXM6Onky
QXR0ci5sb2NhbE5hbWUoKSwgbV95Mi5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
WDEsIHgxLCBTVkdOYW1lczo6eDFBdHRyLmxvY2FsTmFtZSgpLCBtX3gxKQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5MUF0dHIubG9jYWxOYW1lKCksIG1feTEp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2Nh
bE5hbWUoKSwgbV94MikKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWTIsIHkyLCBTVkdOYW1l
czo6eTJBdHRyLmxvY2FsTmFtZSgpLCBtX3kyKQogCiB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gU1ZHTmFtZXM6OngxQXR0cikKLSAgICAgICAgeDFCYXNlVmFsdWUoKS0+c2V0
VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFgxQmFzZVZhbHVlKFNWR0xlbmd0aCh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IFNWR05hbWVzOjp5MUF0dHIpCi0gICAgICAgIHkxQmFzZVZhbHVlKCktPnNldFZhbHVlQXNT
dHJpbmcodmFsdWUpOworICAgICAgICBzZXRZMUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OngyQXR0cikKLSAgICAgICAgeDJCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2
YWx1ZSk7CisgICAgICAgIHNldFgyQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5
MkF0dHIpCi0gICAgICAgIHkyQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOwor
ICAgICAgICBzZXRZMkJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUpKTsKICAgICBlbHNlCiAgICAgICAgIFNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkBAIC03NSwxNSArNzUsMzIgQEAgdm9pZCBTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgIHJlYnVpbGRTdG9wcygpOyAvLyByZWJ1aWxk
IHN0b3BzIGJlZm9yZSBwb3NzaWJseSBpbXBvcnRpbmcgdGhlbSBmcm9tIGFueSByZWZlcmVuY2Vk
IGdyYWRpZW50LgogCiAgICAgYm9vbCBiYm94ID0gKGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0
VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpOwotICAgIAotICAgIHgxKCkt
PnNldEJib3hSZWxhdGl2ZShiYm94KTsKLSAgICB5MSgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7
Ci0gICAgeDIoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIHkyKCktPnNldEJib3hSZWxh
dGl2ZShiYm94KTsKLSAgICAKLSAgICBmbG9hdCBfeDEgPSB4MSgpLT52YWx1ZSgpLCBfeTEgPSB5
MSgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF94MiA9IHgyKCktPnZhbHVlKCksIF95MiA9IHkyKCkt
PnZhbHVlKCk7CiAKKyAgICBmbG9hdCBfeDEsIF95MSwgX3gyLCBfeTI7CisKKyAgICBpZiAoYmJv
eCkgeworICAgICAgICBfeDEgPSB4MSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAg
ICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHgxKCkpKQorICAgICAgICAgICAgX3gxICo9IDEw
MC4wOworCisgICAgICAgIF95MSA9IHkxKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAg
ICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeTEoKSkpCisgICAgICAgICAgICBfeTEgKj0g
MTAwLjA7CisKKyAgICAgICAgX3gyID0geDIoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAg
ICAgICAgaWYgKFNWR0xlbmd0aDo6aXNGcmFjdGlvbih4MigpKSkKKyAgICAgICAgICAgIF94MiAq
PSAxMDAuMDsKKworICAgICAgICBfeTIgPSB5MigpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOwor
ICAgICAgICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHkyKCkpKQorICAgICAgICAgICAgX3ky
ICo9IDEwMC4wOworICAgIH0gZWxzZSB7CisgICAgICAgIF94MSA9IHgxKCkudmFsdWUoKTsKKyAg
ICAgICAgX3kxID0geTEoKS52YWx1ZSgpOworICAgICAgICBfeDIgPSB4MigpLnZhbHVlKCk7Cisg
ICAgICAgIF95MiA9IHkyKCkudmFsdWUoKTsKKyAgICB9IAorIAogICAgIFJlZlB0cjxTVkdQYWlu
dFNlcnZlckxpbmVhckdyYWRpZW50PiBncmFkID0gV1RGOjpzdGF0aWNfcG9pbnRlcl9jYXN0PFNW
R1BhaW50U2VydmVyTGluZWFyR3JhZGllbnQ+KF9ncmFkKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0g
bWF0OwogICAgIGlmIChncmFkaWVudFRyYW5zZm9ybSgpLT5udW1iZXJPZkl0ZW1zKCkgPiAwKQpA
QCAtOTEsNDAgKzEwOCwyNyBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6YnVpbGRH
cmFkCiAKICAgICBEZXByZWNhdGVkU3RyaW5nIHJlZiA9IGhyZWYoKS5kZXByZWNhdGVkU3RyaW5n
KCk7CiAgICAgUmVmUHRyPFNWR1BhaW50U2VydmVyPiBwc2VydmVyID0gZ2V0UGFpbnRTZXJ2ZXJC
eUlkKGRvY3VtZW50KCksIHJlZi5taWQoMSkpOwotICAgIAorCiAgICAgaWYgKHBzZXJ2ZXIgJiYg
KHBzZXJ2ZXItPnR5cGUoKSA9PSBSYWRpYWxHcmFkaWVudFBhaW50U2VydmVyIHx8IHBzZXJ2ZXIt
PnR5cGUoKSA9PSBMaW5lYXJHcmFkaWVudFBhaW50U2VydmVyKSkgewogICAgICAgICBib29sIGlz
TGluZWFyID0gcHNlcnZlci0+dHlwZSgpID09IExpbmVhckdyYWRpZW50UGFpbnRTZXJ2ZXI7CiAg
ICAgICAgIFNWR1BhaW50U2VydmVyR3JhZGllbnQqIGdyYWRpZW50ID0gc3RhdGljX2Nhc3Q8U1ZH
UGFpbnRTZXJ2ZXJHcmFkaWVudCo+KHBzZXJ2ZXIuZ2V0KCkpOwogCiAgICAgICAgIGlmICghaGFz
QXR0cmlidXRlKFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0cikpCiAgICAgICAgICAgICBiYm94
ID0gZ3JhZGllbnQtPmJvdW5kaW5nQm94TW9kZSgpOwotICAgICAgICAgICAgCisKICAgICAgICAg
aWYgKGlzTGluZWFyKSB7CiAgICAgICAgICAgICBTVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50
KiBsaW5lYXIgPSBzdGF0aWNfY2FzdDxTVkdQYWludFNlcnZlckxpbmVhckdyYWRpZW50Kj4ocHNl
cnZlci5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6eDFB
dHRyKSkKICAgICAgICAgICAgICAgICBfeDEgPSBsaW5lYXItPmdyYWRpZW50U3RhcnQoKS54KCk7
Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF94MSAqPSAxMDAu
OwogCiAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6eTFBdHRyKSkKICAg
ICAgICAgICAgICAgICBfeTEgPSBsaW5lYXItPmdyYWRpZW50U3RhcnQoKS55KCk7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF95MSAqPSAxMDAuOwogCiAgICAg
ICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6eDJBdHRyKSkKICAgICAgICAgICAg
ICAgICBfeDIgPSBsaW5lYXItPmdyYWRpZW50RW5kKCkueCgpOwotICAgICAgICAgICAgZWxzZSBp
ZiAoYmJveCkKLSAgICAgICAgICAgICAgICBfeDIgKj0gMTAwLjsKIAogICAgICAgICAgICAgaWYg
KCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnkyQXR0cikpCiAgICAgICAgICAgICAgICAgX3kyID0g
bGluZWFyLT5ncmFkaWVudEVuZCgpLnkoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCi0g
ICAgICAgICAgICAgICAgX3kyICo9IDEwMC47Ci0gICAgICAgIH0gZWxzZSBpZiAoYmJveCkgewot
ICAgICAgICAgICAgX3gxICo9IDEwMC4wOwotICAgICAgICAgICAgX3kxICo9IDEwMC4wOwotICAg
ICAgICAgICAgX3gyICo9IDEwMC4wOwotICAgICAgICAgICAgX3kyICo9IDEwMC4wOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCFoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmdyYWRpZW50VHJhbnNm
b3JtQXR0cikpCkBAIC0xNDMsMTMgKzE0Nyw2IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50OjpidWlsZEdyYWQKICAgICAgICAgICAgIGdyYWQtPnNldEdyYWRpZW50U3ByZWFkTWV0aG9k
KFNQUkVBRE1FVEhPRF9SRVBFQVQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBncmFkLT5z
ZXRHcmFkaWVudFNwcmVhZE1ldGhvZChTUFJFQURNRVRIT0RfUEFEKTsKLQotICAgICAgICBpZiAo
YmJveCkgewotICAgICAgICAgICAgX3gxICo9IDEwMC4wOwotICAgICAgICAgICAgX3kxICo9IDEw
MC4wOwotICAgICAgICAgICAgX3gyICo9IDEwMC4wOwotICAgICAgICAgICAgX3kyICo9IDEwMC4w
OwotICAgICAgICB9CiAgICAgfQogCiAgICAgZ3JhZC0+c2V0R3JhZGllbnRUcmFuc2Zvcm0obWF0
KTsKQEAgLTE2MCw2ICsxNTcsNiBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6YnVp
bGRHcmFkCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAK
Ky8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdyYWRp
ZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxk
Zm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjEx
MS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
SW1wbF9ICi0jZGVmaW5lIEtTVkdfU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50SW1wbF9ICisjaWZu
ZGVmIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudF9ICisjZGVmaW5lIFNWR0xpbmVhckdSYWRpZW50
RWxlbWVudF9ICisKICNpZmRlZiBTVkdfU1VQUE9SVAogCiAjaW5jbHVkZSA8U1ZHR3JhZGllbnRF
bGVtZW50Lmg+CkBAIC00NiwxMCArNDcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAg
dmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHRoaXM7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBYMSwgeDEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZ
MSwgeTEpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBYMiwgeDIpCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZMiwgeTIpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNW
R0xlbmd0aCwgU1ZHTGVuZ3RoLCBYMSwgeDEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3Ro
LCBZMSwgeTEpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYMiwgeDIpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQs
IFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZMiwgeTIpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+
CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTQyLDEw
ICs0MiwxMCBAQCBTVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KGNvbnN0CiAgICAg
LCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAg
ICAgLCBTVkdGaXRUb1ZpZXdCb3goKQotICAgICwgbV9yZWZYKG5ldyBTVkdMZW5ndGgodGhpcywg
TE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcmVmWShuZXcgU1ZHTGVuZ3Ro
KHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9tYXJrZXJXaWR0
aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAg
LCBtX21hcmtlckhlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRF
bGVtZW50KCkpKQorICAgICwgbV9yZWZYKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkKKyAgICAsIG1f
cmVmWSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV9tYXJrZXJXaWR0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX21hcmtlckhlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0KSAKICAgICAsIG1fbWFya2VyVW5pdHMoU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIKQog
ICAgICwgbV9vcmllbnRUeXBlKDApCiAgICAgLCBtX29yaWVudEFuZ2xlKG5ldyBTVkdBbmdsZSh0
aGlzKSkKQEAgLTU2LDYgKzU2LDE0IEBAIFNWR01hcmtlckVsZW1lbnQ6On5TVkdNYXJrZXJFbGVt
ZW50KCkKIHsKIH0KIAorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxl
bWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUmVmWCwgcmVmWCwgU1ZHTmFtZXM6OnJl
ZlhBdHRyLmxvY2FsTmFtZSgpLCBtX3JlZlgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSZWZZLCByZWZZ
LCBTVkdOYW1lczo6cmVmWUF0dHIubG9jYWxOYW1lKCksIG1fcmVmWSkKK0FOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1l
cmF0aW9uLCBNYXJrZXJVbml0cywgbWFya2VyVW5pdHMsIFNWR05hbWVzOjptYXJrZXJVbml0c0F0
dHIubG9jYWxOYW1lKCksIG1fbWFya2VyVW5pdHMpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBNYXJrZXJX
aWR0aCwgbWFya2VyV2lkdGgsIFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIubG9jYWxOYW1lKCks
IG1fbWFya2VyV2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJF
bGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBNYXJrZXJIZWlnaHQsIG1hcmtlckhl
aWdodCwgU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1fbWFya2VySGVp
Z2h0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgaW50
LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE9yaWVudFR5cGUsIG9yaWVudFR5cGUsICJvcmll
bnRUeXBlIiwgbV9vcmllbnRUeXBlKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
TWFya2VyRWxlbWVudCwgU1ZHQW5nbGUqLCBBbmdsZSwgYW5nbGUsIE9yaWVudEFuZ2xlLCBvcmll
bnRBbmdsZSwgIm9yaWVudEFuZ2xlIiwgbV9vcmllbnRBbmdsZS5nZXQoKSkKKwogdm9pZCBTVkdN
YXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIp
CiB7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CkBAIC02
MywxMyArNzEsMTMgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgog
ICAgICAgICBpZiAodmFsdWUgPT0gInVzZXJTcGFjZU9uVXNlIikKICAgICAgICAgICAgIHNldE1h
cmtlclVuaXRzQmFzZVZhbHVlKFNWR19NQVJLRVJVTklUU19VU0VSU1BBQ0VPTlVTRSk7CiAgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJlZlhBdHRyKQotICAgICAgICBy
ZWZYQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRSZWZY
QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpyZWZZQXR0cikKLSAgICAgICAgcmVm
WUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0UmVmWUJh
c2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0cikKLSAgICAg
ICAgbWFya2VyV2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAg
ICAgIHNldE1hcmtlcldpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjptYXJr
ZXJIZWlnaHRBdHRyKQotICAgICAgICBtYXJrZXJIZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldE1hcmtlckhlaWdodEJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6Om9yaWVudEF0dHIpIHsKICAgICAgICAgaWYgKHZhbHVlID09ICJh
dXRvIikKICAgICAgICAgICAgIHNldE9yaWVudFRvQXV0bygpOwpAQCAtOTAsMTQgKzk4LDYgQEAg
dm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgogICAgIH0KIH0KIAotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwg
TGVuZ3RoLCBsZW5ndGgsIFJlZlgsIHJlZlgsIFNWR05hbWVzOjpyZWZYQXR0ci5sb2NhbE5hbWUo
KSwgbV9yZWZYLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2Vy
RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFJlZlksIHJlZlksIFNWR05hbWVz
OjpyZWZZQXR0ci5sb2NhbE5hbWUoKSwgbV9yZWZZLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRp
b24sIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ci5s
b2NhbE5hbWUoKSwgbV9tYXJrZXJVbml0cykKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBNYXJrZXJXaWR0
aCwgbWFya2VyV2lkdGgsIFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIubG9jYWxOYW1lKCksIG1f
bWFya2VyV2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJr
ZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwgTWFya2VySGVpZ2h0LCBtYXJr
ZXJIZWlnaHQsIFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX21hcmtl
ckhlaWdodC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVs
ZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBPcmllbnRUeXBlLCBvcmllbnRU
eXBlLCAib3JpZW50VHlwZSIsIG1fb3JpZW50VHlwZSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0FuZ2xlKiwgQW5nbGUsIGFuZ2xlLCBPcmllbnRB
bmdsZSwgb3JpZW50QW5nbGUsICJvcmllbnRBbmdsZSIsIG1fb3JpZW50QW5nbGUuZ2V0KCkpCi0K
IHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50VG9BdXRvKCkKIHsKICAgICBzZXRPcmll
bnRUeXBlQmFzZVZhbHVlKFNWR19NQVJLRVJfT1JJRU5UX0FVVE8pOwpAQCAtMTI2LDcgKzEyNiw3
IEBAIFNWR1Jlc291cmNlKiBTVkdNYXJrZXJFbGVtZW50OjpjYW52YXNSZXMKICAgICBlbHNlCiAg
ICAgICAgIG1fbWFya2VyLT5zZXRBdXRvQW5nbGUoKTsKIAotICAgIG1fbWFya2VyLT5zZXRSZWYo
cmVmWCgpLT52YWx1ZSgpLCByZWZZKCktPnZhbHVlKCkpOworICAgIG1fbWFya2VyLT5zZXRSZWYo
cmVmWCgpLnZhbHVlKCksIHJlZlkoKS52YWx1ZSgpKTsKICAgICBtX21hcmtlci0+c2V0VXNlU3Ry
b2tlV2lkdGgobWFya2VyVW5pdHMoKSA9PSBTVkdfTUFSS0VSVU5JVFNfU1RST0tFV0lEVEgpOwog
ICAgIAogICAgIHJldHVybiBtX21hcmtlci5nZXQoKTsKQEAgLTE0NCw2ICsxNDQsNiBAQCBSZW5k
ZXJPYmplY3QqIFNWR01hcmtlckVsZW1lbnQ6OmNyZWF0ZVJlCiAKIH0KIAotLy8gdmltOnRzPTQ6
bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUva3N2ZzIvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5p
a29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMiw2ICsyMiw3IEBACiAKICNpZm5kZWYgU1ZH
TWFya2VyRWxlbWVudF9ICiAjZGVmaW5lIFNWR01hcmtlckVsZW1lbnRfSAorCiAjaWZkZWYgU1ZH
X1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR1Jlc291cmNlTWFya2VyLmgiCkBAIC0zNCw4ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiB7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3Mg
U1ZHQW5nbGU7Ci0gICAgY2xhc3MgU1ZHQW5nbGU7Ci0gICAgY2xhc3MgU1ZHTGVuZ3RoOworICAg
IAogICAgIGNsYXNzIFNWR01hcmtlckVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQsCkBAIC03NSwxMCArNzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBGbG9hdFJl
Y3QsIFZpZXdCb3gsIHZpZXdCb3gpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRf
REVDTEFSQVRJT05TKFNWR0ZpdFRvVmlld0JveCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAKLSAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCosIFJl
ZlB0cjxTVkdMZW5ndGg+LCBSZWZYLCByZWZYKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0
aD4sIFJlZlksIHJlZlkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgTWFya2VyV2lk
dGgsIG1hcmtlcldpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIE1hcmtlckhl
aWdodCwgbWFya2VySGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFJlZlgsIHJlZlgpCisg
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBT
VkdMZW5ndGgsIFNWR0xlbmd0aCwgUmVmWSwgcmVmWSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBN
YXJrZXJXaWR0aCwgbWFya2VyV2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xB
UkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgTWFya2VySGVp
Z2h0LCBtYXJrZXJIZWlnaHQpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdNYXJrZXJFbGVtZW50LCBpbnQsIGludCwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRzKQog
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHTWFya2VyRWxlbWVudCwg
aW50LCBpbnQsIE9yaWVudFR5cGUsIG9yaWVudFR5cGUpCiAgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdBbmdsZSosIFJlZlB0cjxTVkdB
bmdsZT4sIE9yaWVudEFuZ2xlLCBvcmllbnRBbmdsZSkKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdN
YXNrRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5v
cmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNSBBbGV4YW5kZXIg
S2VsbGV0dCA8bHlwYW5vdkBrZGUub3JnPgogCkBAIC00NSwxMCArNDUsMTAgQEAgU1ZHTWFza0Vs
ZW1lbnQ6OlNWR01hc2tFbGVtZW50KGNvbnN0IFF1YQogICAgICwgU1ZHVGVzdHMoKQogICAgICwg
U1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQotICAg
ICwgbV94KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkK
LSAgICAsIG1feShuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdIVCwgdmlld3BvcnRFbGVtZW50
KCkpKQotICAgICwgbV93aWR0aChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9y
dEVsZW1lbnQoKSkpCi0gICAgLCBtX2hlaWdodChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX0hFSUdI
VCwgdmlld3BvcnRFbGVtZW50KCkpKQorICAgICwgbV94KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkK
KyAgICAsIG1feSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQorICAgICwgbV93aWR0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX2hlaWdodCh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQog
ICAgICwgbV9kaXJ0eSh0cnVlKQogewogfQpAQCAtNTcsMTQgKzU3LDE0IEBAIFNWR01hc2tFbGVt
ZW50Ojp+U1ZHTWFza0VsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNW
R05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZ
LCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxl
bmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dp
ZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQs
IFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6Omhl
aWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgs
IHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFks
IHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdp
ZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxO
YW1lKCksIG1faGVpZ2h0KQogCiB2b2lkIFNWR01hc2tFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KEF0dHJpYnV0ZSogYXR0ciwgYm9vbCBwcmVzZXJ2ZURlY2xzKQogewotICAgIEludFNpemUgbmV3
U2l6ZSA9IEludFNpemUobHJvdW5kZih3aWR0aCgpLT52YWx1ZSgpKSwgbHJvdW5kZihoZWlnaHQo
KS0+dmFsdWUoKSkpOworICAgIEludFNpemUgbmV3U2l6ZSA9IEludFNpemUobHJvdW5kZih3aWR0
aCgpLnZhbHVlKCkpLCBscm91bmRmKGhlaWdodCgpLnZhbHVlKCkpKTsKICAgICBpZiAoIW1fbWFz
a2VyIHx8ICFtX21hc2tlci0+bWFzaygpIHx8IChtX21hc2tlci0+bWFzaygpLT5zaXplKCkgIT0g
bmV3U2l6ZSkpCiAgICAgICAgIG1fZGlydHkgPSB0cnVlOwogICAgIFNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoYXR0ciwgcHJlc2VydmVEZWNscyk7CkBAIC04MCwx
MyArODAsMTMgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dAogewog
ICAgIGNvbnN0IFN0cmluZyYgdmFsdWUgPSBhdHRyLT52YWx1ZSgpOwogICAgIGlmIChhdHRyLT5u
YW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICB4QmFzZVZhbHVlKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp5QXR0cikKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlKTsKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Ondp
ZHRoQXR0cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1
ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpo
ZWlnaHRBdHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2
YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKFNWR1VSSVJlZmVy
ZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMDcsNyArMTA3LDcgQEAgU1ZHUmVzb3VyY2VJbWFnZSogU1ZHTWFza0VsZW1lbnQ6OmRyYXdN
YQogICAgIHJldHVybiAwOwogICAgIFNWR1Jlc291cmNlSW1hZ2UqIG1hc2tJbWFnZSA9IG5ldyBT
VkdSZXNvdXJjZUltYWdlKCk7CiAKLSAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKGxyb3VuZGYo
d2lkdGgoKS0+dmFsdWUoKSksIGxyb3VuZGYoaGVpZ2h0KCktPnZhbHVlKCkpKTsKKyAgICBJbnRT
aXplIHNpemUgPSBJbnRTaXplKGxyb3VuZGYod2lkdGgoKS52YWx1ZSgpKSwgbHJvdW5kZihoZWln
aHQoKS52YWx1ZSgpKSk7CiAgICAgbWFza0ltYWdlLT5pbml0KHNpemUpOwogCiAgICAgT3duUHRy
PEdyYXBoaWNzQ29udGV4dD4gY29udGV4dChjb250ZXh0Rm9ySW1hZ2UobWFza0ltYWdlKSk7CkBA
IC0xNDQsNiArMTQ0LDYgQEAgU1ZHUmVzb3VyY2UqIFNWR01hc2tFbGVtZW50OjpjYW52YXNSZXNv
dQogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHJldmlzaW9u
IDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjEsNiArMjEsNyBAQAogCiAjaWZuZGVmIFNWR01hc2tFbGVtZW50X0gKICNkZWZp
bmUgU1ZHTWFza0VsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNW
R1Jlc291cmNlTWFza2VyLmgiCkBAIC02MCwxMCArNjEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHVVJJUmVm
ZXJlbmNlLCBTdHJpbmcsIEhyZWYsIGhyZWYpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZP
UldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGJvb2wsIEV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAgCi0g
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZH
TGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xl
bmd0aD4sIFksIHkpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdN
YXNrRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkK
LSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR01hc2tFbGVtZW50LCBT
VkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCisgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBT
VkdMZW5ndGgsIFgsIHgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFksIHkpCisgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdM
ZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQp
CiAKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRoaXM7IH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdQYXR0
ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RF
IHByb2plY3QKQEAgLTUyLDEwICs1MiwxMCBAQCBTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVy
bkVsZW1lbnQoY29uCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAs
IFNWR0ZpdFRvVmlld0JveCgpCiAgICAgLCBTVkdSZXNvdXJjZUxpc3RlbmVyKCkKLSAgICAsIG1f
eChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAg
LCBtX3kobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkK
LSAgICAsIG1fd2lkdGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVt
ZW50KCkpKQotICAgICwgbV9oZWlnaHQobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9IRUlHSFQsIHZp
ZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpCisgICAg
LCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1fd2lkdGgodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKICAgICAs
IG1fcGF0dGVyblVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElO
R0JPWCkKICAgICAsIG1fcGF0dGVybkNvbnRlbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfVVNFUlNQQUNFT05VU0UpCiAgICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm0obmV3IFNWR1Ry
YW5zZm9ybUxpc3QpCkBAIC02OSwxMCArNjksMTAgQEAgU1ZHUGF0dGVybkVsZW1lbnQ6On5TVkdQ
YXR0ZXJuRWxlbWVudCgpCiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRl
cm5FbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgUGF0dGVyblVuaXRzLCBw
YXR0ZXJuVW5pdHMsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX3Bh
dHRlcm5Vbml0cykKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVt
ZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgUGF0dGVybkNvbnRlbnRVbml0cywg
cGF0dGVybkNvbnRlbnRVbml0cywgU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLmxv
Y2FsTmFtZSgpLCBtX3BhdHRlcm5Db250ZW50VW5pdHMpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgs
IHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwg
bGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feS5nZXQoKSkKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgq
LCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2Fs
TmFtZSgpLCBtX3dpZHRoLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
UGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdo
dCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0LmdldCgpKQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwg
TGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5s
b2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1Bh
dHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwg
U1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBU
cmFuc2Zvcm1MaXN0LCB0cmFuc2Zvcm1MaXN0LCBQYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJh
bnNmb3JtLCBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIubG9jYWxOYW1lKCksIG1fcGF0
dGVyblRyYW5zZm9ybS5nZXQoKSkKIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQpAQCAtOTUsMTMgKzk1LDEzIEBAIHZv
aWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAgICAgICAgIHBhdHRl
cm5UcmFuc2Zvcm1zLT5jbGVhcihlYyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhCYXNlVmFsdWUoKS0+c2V0VmFs
dWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMs
IExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
U1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICB5QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
d2lkdGhBdHRyKQotICAgICAgICB3aWR0aEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZh
bHVlKTsKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OmhlaWdodEF0dHIpCi0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5n
KHZhbHVlKTsKKyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0LCB2YWx1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBpZiAoU1ZHVVJJUmVm
ZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTExOCwxOSArMTE4LDYgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaQogICAgIH0KIH0KIAotY29uc3QgU1ZHU3R5bGVkRWxlbWVudCogU1ZHUGF0dGVybkVsZW1l
bnQ6OnB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQp
Ci17Ci0gICAgLy8gQWxsIGF0dHJpYnV0ZSdzIGNvbnRleHRzIGFyZSBlcXVhbCAoc28ganVzdCB0
YWtlIHRoZSBvbmUgZnJvbSAneCcpLgotICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHJlc3Rv
cmUgPSB4KCktPmNvbnRleHQoKTsKLQotICAgIHgoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAg
ICB5KCktPnNldENvbnRleHQoY29udGV4dCk7Ci0gICAgd2lkdGgoKS0+c2V0Q29udGV4dChjb250
ZXh0KTsKLSAgICBoZWlnaHQoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLQotICAgIHJldHVybiBy
ZXN0b3JlOwotfQotCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpyZXNvdXJjZU5vdGlmaWNhdGlv
bigpIGNvbnN0CiB7CiAgICAgLy8gV2UncmUgcmVmZXJlbmNlZCBieSBhICJjbGllbnQiLCBjYWxj
dWxhdGUgdGhlIHRpbGUgbm93Li4uCkBAIC0xNjksMjYgKzE1NiwzOCBAQCB2b2lkIFNWR1BhdHRl
cm5FbGVtZW50OjpmaWxsQXR0cmlidXRlc0ZyCiAKIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmRy
YXdQYXR0ZXJuQ29udGVudEludG9UaWxlKGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50KiB0YXJnZXQs
IGNvbnN0IEludFNpemUmIG5ld1NpemUsIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3Jt
TWF0cml4KQogewotICAgIFNWR1N0eWxlZEVsZW1lbnQqIGFjdGl2ZUVsZW1lbnQgPSBzdGF0aWNf
Y2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4obV9wYWludFNlcnZlci0+YWN0aXZlQ2xpZW50KCktPmVs
ZW1lbnQoKSk7Ci0KICAgICBib29sIGJib3ggPSAocGF0dGVyblVuaXRzKCkgPT0gU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKTsKIAotICAgIGNvbnN0IFNWR1N0
eWxlZEVsZW1lbnQqIHNhdmVkQ29udGV4dCA9IDA7CisgICAgZmxvYXQgX3gsIF95LCB3LCBoOwog
ICAgIGlmIChiYm94KSB7Ci0gICAgICAgIGlmICh3aWR0aCgpLT51bml0VHlwZSgpICE9IFNWR0xl
bmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSkKLSAgICAgICAgICAgIHdpZHRoKCktPm5l
d1ZhbHVlU3BlY2lmaWVkVW5pdHMoU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdF
LCB3aWR0aCgpLT52YWx1ZSgpICogMTAwLik7Ci0gICAgICAgIGlmIChoZWlnaHQoKS0+dW5pdFR5
cGUoKSAhPSBTVkdMZW5ndGg6OlNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UpCi0gICAgICAgICAg
ICBoZWlnaHQoKS0+bmV3VmFsdWVTcGVjaWZpZWRVbml0cyhTVkdMZW5ndGg6OlNWR19MRU5HVEhU
WVBFX1BFUkNFTlRBR0UsIGhlaWdodCgpLT52YWx1ZSgpICogMTAwLik7Ci0gICAgICAgIGlmIChh
Y3RpdmVFbGVtZW50KQotICAgICAgICAgICAgc2F2ZWRDb250ZXh0ID0gY29uc3RfY2FzdDxTVkdQ
YXR0ZXJuRWxlbWVudCo+KHRoaXMpLT5wdXNoQXR0cmlidXRlQ29udGV4dChhY3RpdmVFbGVtZW50
KTsKKyAgICAgICAgX3ggPSB4KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGlm
IChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oeCgpKSkKKyAgICAgICAgICAgIF94ICo9IDEwMC4wOwor
CisgICAgICAgIF95ID0geSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBpZiAo
U1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKHkoKSkpCisgICAgICAgICAgICBfeSAqPSAxMDAuMDsKKwor
ICAgICAgICB3ID0gd2lkdGgoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgaWYg
KFNWR0xlbmd0aDo6aXNGcmFjdGlvbih3aWR0aCgpKSkKKyAgICAgICAgICAgIHcgKj0gMTAwLjA7
CisKKyAgICAgICAgaCA9IGhlaWdodCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAg
ICBpZiAoU1ZHTGVuZ3RoOjppc0ZyYWN0aW9uKGhlaWdodCgpKSkKKyAgICAgICAgICAgIGggKj0g
MTAwLjA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgX3ggPSB4KCkudmFsdWUoKTsKKyAgICAgICAg
X3kgPSB5KCkudmFsdWUoKTsKKyAgICAgICAgdyA9IHdpZHRoKCkudmFsdWUoKTsKKyAgICAgICAg
aCA9IGhlaWdodCgpLnZhbHVlKCk7CiAgICAgfQotICAgIAorCiAgICAgbV90aWxlID0gbmV3IFNW
R1Jlc291cmNlSW1hZ2UoKTsKICAgICBtX3RpbGUtPmluaXQobmV3U2l6ZSk7CiAKICAgICBPd25Q
dHI8R3JhcGhpY3NDb250ZXh0PiBwYXR0ZXJuQ29udGV4dChjb250ZXh0Rm9ySW1hZ2UobV90aWxl
LmdldCgpKSk7CiAKLSAgICBGbG9hdFJlY3QgcmVjdCh4KCktPnZhbHVlKCksIHkoKS0+dmFsdWUo
KSwgd2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCktPnZhbHVlKCkpOworICAgIEZsb2F0UmVjdCBy
ZWN0KF94LCBfeSwgdywgaCk7CiAgICAgbV9wYWludFNlcnZlci0+c2V0QmJveChyZWN0KTsKICAg
ICBtX3BhaW50U2VydmVyLT5zZXRQYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm1NYXRy
aXgpOwogICAgIG1fcGFpbnRTZXJ2ZXItPnNldFRpbGUobV90aWxlLmdldCgpKTsKQEAgLTI0Myw5
ICsyNDIsNiBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpkcmF3UGF0dGVybkNvbnRlCiAgICAg
ICAgIGl0ZW0tPnNldExvY2FsVHJhbnNmb3JtKHNhdmVkTWF0cml4Lm1hdHJpeCgpKTsKICNlbmRp
ZgogICAgIH0KLQotICAgIGlmIChzYXZlZENvbnRleHQpCi0gICAgICAgIGNvbnN0X2Nhc3Q8U1ZH
UGF0dGVybkVsZW1lbnQqPih0aGlzKS0+cHVzaEF0dHJpYnV0ZUNvbnRleHQoc2F2ZWRDb250ZXh0
KTsKIH0KIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6bm90aWZ5Q2xpZW50c1RvUmVwYWludCgp
IGNvbnN0CkBAIC0yNzEsNyArMjY3LDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6bm90aWZ5
QXR0cmlidXRlQwogICAgIGlmICghbV9wYWludFNlcnZlciB8fCAhbV9wYWludFNlcnZlci0+YWN0
aXZlQ2xpZW50KCkgfHwgbV9pZ25vcmVBdHRyaWJ1dGVDaGFuZ2VzKQogICAgICAgICByZXR1cm47
CiAKLSAgICBJbnRTaXplIG5ld1NpemUgPSBJbnRTaXplKGxyb3VuZGYod2lkdGgoKS0+dmFsdWUo
KSksIGxyb3VuZGYoaGVpZ2h0KCktPnZhbHVlKCkpKTsKKyAgICBJbnRTaXplIG5ld1NpemUgPSBJ
bnRTaXplKGxyb3VuZGYod2lkdGgoKS52YWx1ZSgpKSwgbHJvdW5kZihoZWlnaHQoKS52YWx1ZSgp
KSk7CiAgICAgaWYgKG1fdGlsZSAmJiAobV90aWxlLT5zaXplKCkgPT0gbmV3U2l6ZSkgfHwgbmV3
U2l6ZS53aWR0aCgpIDwgMSB8fCBuZXdTaXplLmhlaWdodCgpIDwgMSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zMzEsMTIgKzMyNywxMyBAQCBTVkdSZXNvdXJjZSogU1ZHUGF0dGVybkVsZW1lbnQ6
OmNhbnZhc1JlCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHUGF0dGVybkVsZW1lbnQ6OmdldENUTSgpIGNv
bnN0CiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdmll
d0JveCA9IHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0od2lkdGgoKS0+dmFsdWUoKSwgaGVpZ2h0KCkt
PnZhbHVlKCkpOworICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0gdmlld0JveFRvVmlld1Ry
YW5zZm9ybSh3aWR0aCgpLnZhbHVlKCksIGhlaWdodCgpLnZhbHVlKCkpOwogICAgIG1hdCAqPSB2
aWV3Qm94OwogICAgIHJldHVybiBtYXQ7CiB9CiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2Vu
ZGlmIC8vIFNWR19TVVBQT1JUCisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxk
Zm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5IEBACiAgICAgQm9zdG9uLCBNQSAwMjEx
MS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHUGF0dGVybkVsZW1lbnRJbXBsX0gK
LSNkZWZpbmUgS1NWR19TVkdQYXR0ZXJuRWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdQYXR0ZXJu
RWxlbWVudF9ICisjZGVmaW5lIFNWR1BhdHRlcm5FbGVtZW50X0gKKwogI2lmZGVmIFNWR19TVVBQ
T1JUCiAKICNpbmNsdWRlICJTVkdQYWludFNlcnZlclBhdHRlcm4uaCIKQEAgLTc0LDEwICs3NSwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJE
X0RFQ0xBUkFUSU9OUyhTVkdGaXRUb1ZpZXdCb3gsIEZsb2F0UmVjdCwgVmlld0JveCwgdmlld0Jv
eCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRml0
VG9WaWV3Qm94LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKiwgUHJlc2VydmVBc3BlY3RSYXRpbywg
cHJlc2VydmVBc3BlY3RSYXRpbykKIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBY
LCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVs
ZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBZLCB5KQotICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCos
IFJlZlB0cjxTVkdMZW5ndGg+LCBXaWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNW
R0xlbmd0aD4sIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQor
ICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQs
IFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBXaWR0
aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdQYXR0
ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIGludCwg
aW50LCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cykKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQsIGludCwgUGF0dGVybkNvbnRl
bnRVbml0cywgcGF0dGVybkNvbnRlbnRVbml0cykKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0KiwgUmVmUHRy
PFNWR1RyYW5zZm9ybUxpc3Q+LCBQYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3JtKQpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3
aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKwogI2lm
ZGVmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAiU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgiCiAK
QEAgLTM3LDQxICszOCw0MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudDo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdHcmFkaWVudEVsZW1lbnQodGFnTmFt
ZSwgZG9jKQotICAgICwgbV9jeChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExNX1dJRFRILCB2aWV3cG9y
dEVsZW1lbnQoKSkpCi0gICAgLCBtX2N5KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2
aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3IobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9PVEhF
Uiwgdmlld3BvcnRFbGVtZW50KCkpKQotICAgICwgbV9meChuZXcgU1ZHTGVuZ3RoKHRoaXMsIExN
X1dJRFRILCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX2Z5KG5ldyBTVkdMZW5ndGgodGhp
cywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX2N4KHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkKKyAgICAsIG1fY3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1f
cih0aGlzLCBMZW5ndGhNb2RlT3RoZXIpCisgICAgLCBtX2Z4KHRoaXMsIExlbmd0aE1vZGVXaWR0
aCkKKyAgICAsIG1fZnkodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKIHsKICAgICAvLyBTcGVjOiBJ
ZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYgYSB2
YWx1ZSBvZiAiNTAlIiB3ZXJlIHNwZWNpZmllZC4KLSAgICBtX2N4LT5zZXRWYWx1ZUFzU3RyaW5n
KCI1MCUiKTsKLSAgICBtX2N5LT5zZXRWYWx1ZUFzU3RyaW5nKCI1MCUiKTsKLSAgICBtX3ItPnNl
dFZhbHVlQXNTdHJpbmcoIjUwJSIpOworICAgIHNldEN4QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlz
LCBMZW5ndGhNb2RlV2lkdGgsICI1MCUiKSk7CisgICAgc2V0Q3lCYXNlVmFsdWUoU1ZHTGVuZ3Ro
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICI1MCUiKSk7CisgICAgc2V0UkJhc2VWYWx1ZShTVkdM
ZW5ndGgodGhpcywgTGVuZ3RoTW9kZU90aGVyLCAiNTAlIikpOwogfQogCiBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6On5TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoKQogewogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0
aCosIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIubG9jYWxOYW1lKCks
IG1fY3guZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBDeSwgY3ksIFNWR05hbWVz
OjpjeUF0dHIubG9jYWxOYW1lKCksIG1fY3kuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVu
Z3RoLCBGeCwgZngsIFNWR05hbWVzOjpmeEF0dHIubG9jYWxOYW1lKCksIG1fZnguZ2V0KCkpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNW
R0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBGeSwgZnksIFNWR05hbWVzOjpmeUF0dHIubG9jYWxO
YW1lKCksIG1fZnkuZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBSLCByLCBTVkdO
YW1lczo6ckF0dHIubG9jYWxOYW1lKCksIG1fci5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxl
bmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLmxvY2FsTmFtZSgpLCBtX2N4KQorQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBDeSwgY3ksIFNWR05hbWVzOjpjeUF0dHIubG9jYWxOYW1lKCks
IG1fY3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEZ4LCBmeCwgU1ZHTmFtZXM6OmZ4QXR0
ci5sb2NhbE5hbWUoKSwgbV9meCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgRnksIGZ5LCBT
VkdOYW1lczo6ZnlBdHRyLmxvY2FsTmFtZSgpLCBtX2Z5KQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVu
Z3RoLCBSLCByLCBTVkdOYW1lczo6ckF0dHIubG9jYWxOYW1lKCksIG1fcikKIAogdm9pZCBTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUo
KTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAgIGN4
QmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRDeEJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6Y3lBdHRyKQotICAgICAgICBjeUJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0Q3lCYXNlVmFsdWUoU1ZH
TGVuZ3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IFNWR05hbWVzOjpyQXR0cikKLSAgICAgICAgckJhc2VWYWx1ZSgpLT5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0UkJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6ZnhBdHRyKQotICAgICAgICBmeEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3Ry
aW5nKHZhbHVlKTsKKyAgICAgICAgc2V0RnhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OmZ5QXR0cikKLSAgICAgICAgZnlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1
ZSk7CisgICAgICAgIHNldEZ5QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0LCB2YWx1ZSkpOwogICAgIGVsc2UKICAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KQEAgLTgzLDE1ICs4NCw0MiBAQCB2b2lkIFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudDo6YnVpbGRHcmFkCiAgICAgYm9vbCBiYm94ID0gKGdyYWRpZW50
VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gp
OwogICAgIGJvb2wgZnhTZXQgPSBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZ4QXR0cik7CiAgICAg
Ym9vbCBmeVNldCA9IGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6ZnlBdHRyKTsKLSAgICBjeCgpLT5z
ZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgY3koKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwot
ICAgIHIoKS0+c2V0QmJveFJlbGF0aXZlKGJib3gpOwotICAgIGZ4KCktPnNldEJib3hSZWxhdGl2
ZShiYm94KTsKLSAgICBmeSgpLT5zZXRCYm94UmVsYXRpdmUoYmJveCk7Ci0gICAgZmxvYXQgX2N4
ID0gY3goKS0+dmFsdWUoKSwgX2N5ID0gY3koKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfciA9IHIo
KS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfZnggPSBmeFNldCA/IGZ4KCktPnZhbHVlKCkgOiBfY3g7
Ci0gICAgZmxvYXQgX2Z5ID0gZnlTZXQgPyBmeSgpLT52YWx1ZSgpIDogX2N5OworIAorICAgIGZs
b2F0IF9jeCwgX2N5LCBfciwgX2Z4LCBfZnk7CisKKyAgICBpZiAoYmJveCkgeworICAgICAgICBf
Y3ggPSBjeCgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBpZiAoU1ZHTGVuZ3Ro
Ojppc0ZyYWN0aW9uKGN4KCkpKQorICAgICAgICAgICAgX2N4ICo9IDEwMC4wOworCisgICAgICAg
IF9jeSA9IGN5KCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGlmIChTVkdMZW5n
dGg6OmlzRnJhY3Rpb24oY3koKSkpCisgICAgICAgICAgICBfY3kgKj0gMTAwLjA7CisKKyAgICAg
ICAgX3IgPSByKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGlmIChTVkdMZW5n
dGg6OmlzRnJhY3Rpb24ocigpKSkKKyAgICAgICAgICAgIF9yICo9IDEwMC4wOworCisgICAgICAg
IGlmIChmeFNldCkgeworICAgICAgICAgICAgX2Z4ID0gZngoKS52YWx1ZUluU3BlY2lmaWVkVW5p
dHMoKTsKKyAgICAgICAgICAgIGlmIChTVkdMZW5ndGg6OmlzRnJhY3Rpb24oZngoKSkpCisgICAg
ICAgICAgICAgICAgX2Z4ICo9IDEwMC4wOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIF9m
eCA9IF9jeDsKKyAgICAgICAgCisgICAgICAgIGlmIChmeVNldCkgeworICAgICAgICAgICAgX2Z5
ID0gZnkoKS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgICAgIGlmIChTVkdMZW5n
dGg6OmlzRnJhY3Rpb24oZnkoKSkpCisgICAgICAgICAgICAgICAgX2Z5ICo9IDEwMC4wOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIF9meSA9IF9jeTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBfY3ggPSBjeCgpLnZhbHVlKCk7CisgICAgICAgIF9jeSA9IGN5KCkudmFsdWUoKTsKKyAgICAg
ICAgX3IgPSByKCkudmFsdWUoKTsKKyAgICAgICAgX2Z4ID0gZnhTZXQgPyBmeCgpLnZhbHVlKCkg
OiBfY3g7CisgICAgICAgIF9meSA9IGZ5U2V0ID8gZnkoKS52YWx1ZSgpIDogX2N5OworICAgIH0K
IAogICAgIFJlZlB0cjxTVkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50PiBncmFkID0gV1RGOjpz
dGF0aWNfcG9pbnRlcl9jYXN0PFNWR1BhaW50U2VydmVyUmFkaWFsR3JhZGllbnQ+KF9ncmFkKTsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OwpAQCAtMTEyLDMyICsxNDAsMTggQEAgdm9pZCBTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogICAgICAgICAgICAgUmVmUHRyPFNWR1Bh
aW50U2VydmVyUmFkaWFsR3JhZGllbnQ+IHJhZGlhbCA9IFdURjo6c3RhdGljX3BvaW50ZXJfY2Fz
dDxTVkdQYWludFNlcnZlclJhZGlhbEdyYWRpZW50Pihwc2VydmVyKTsKICAgICAgICAgICAgIGlm
ICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpjeEF0dHIpKQogICAgICAgICAgICAgICAgIF9jeCA9
IHJhZGlhbC0+Z3JhZGllbnRDZW50ZXIoKS54KCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChiYm94
KQotICAgICAgICAgICAgICAgIF9jeCAqPSAxMDAuOworCiAgICAgICAgICAgICBpZiAoIWhhc0F0
dHJpYnV0ZShTVkdOYW1lczo6Y3lBdHRyKSkKICAgICAgICAgICAgICAgICBfY3kgPSByYWRpYWwt
PmdyYWRpZW50Q2VudGVyKCkueSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoYmJveCkKLSAgICAg
ICAgICAgICAgICBfY3kgKj0gMTAwLjsKIAogICAgICAgICAgICAgaWYgKCFmeFNldCkKICAgICAg
ICAgICAgICAgICBfZnggPSByYWRpYWwtPmdyYWRpZW50Rm9jYWwoKS54KCk7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF9meCAqPSAxMDAuOworCiAgICAgICAg
ICAgICBpZiAoIWZ5U2V0KQogICAgICAgICAgICAgICAgIF9meSA9IHJhZGlhbC0+Z3JhZGllbnRG
b2NhbCgpLnkoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJib3gpCi0gICAgICAgICAgICAgICAg
X2Z5ICo9IDEwMC47CiAKICAgICAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKFNWR05hbWVzOjpy
QXR0cikpCiAgICAgICAgICAgICAgICAgX3IgPSByYWRpYWwtPmdyYWRpZW50UmFkaXVzKCk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChiYm94KQotICAgICAgICAgICAgICAgIF9yICo9IDEwMC47Ci0g
ICAgICAgIH0gZWxzZSBpZiAoYmJveCkgewotICAgICAgICAgICAgX2N4ICo9IDEwMC4wOwotICAg
ICAgICAgICAgX2N5ICo9IDEwMC4wOwotICAgICAgICAgICAgX2Z4ICo9IDEwMC4wOwotICAgICAg
ICAgICAgX2Z5ICo9IDEwMC4wOwotICAgICAgICAgICAgX3IgKj0gMTAwLjA7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1B
dHRyKSkKQEAgLTE1NiwxNCArMTcwLDYgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6
OmJ1aWxkR3JhZAogICAgICAgICAgICAgZ3JhZC0+c2V0R3JhZGllbnRTcHJlYWRNZXRob2QoU1BS
RUFETUVUSE9EX1JFUEVBVCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGdyYWQtPnNldEdy
YWRpZW50U3ByZWFkTWV0aG9kKFNQUkVBRE1FVEhPRF9QQUQpOwotCi0gICAgICAgIGlmIChiYm94
KSB7Ci0gICAgICAgICAgICBfY3ggKj0gMTAwLjA7Ci0gICAgICAgICAgICBfY3kgKj0gMTAwLjA7
Ci0gICAgICAgICAgICBfZnggKj0gMTAwLjA7Ci0gICAgICAgICAgICBfZnkgKj0gMTAwLjA7Ci0g
ICAgICAgICAgICBfciAqPSAxMDAuMDsKLSAgICAgICAgfQogICAgIH0KIAogICAgIGdyYWQtPnNl
dEdyYWRpZW50VHJhbnNmb3JtKG1hdCk7CkBAIC0xNzUsNiArMTgxLDYgQEAgdm9pZCBTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZAogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNl
bmRpZiAvLyBTVkdfU1VQUE9SVAogCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gMTgyNjUpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5p
a29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjAsOCArMjAsOSBA
QAogICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgogKi8KIAotI2lmbmRlZiBLU1ZHX1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZHX1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudEltcGxfSAorI2lmbmRlZiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnRfSAorI2Rl
ZmluZSBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAog
I2luY2x1ZGUgPFNWR0dyYWRpZW50RWxlbWVudC5oPgpAQCAtNDYsMTEgKzQ3LDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBT
VkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgQ3gsIGN4KQotICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgQ3ksIGN5KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8
U1ZHTGVuZ3RoPiwgUiwgcikKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4s
IEZ4LCBmeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlh
bEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIEZ5LCBmeSkK
KyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEN4LCBjeCkKKyAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3Ro
LCBTVkdMZW5ndGgsIEN5LCBjeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFIsIHIp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBGeCwgZngpCisgICAgICAgIEFOSU1BVEVE
X1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0
aCwgU1ZHTGVuZ3RoLCBGeSwgZnkpCiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjUpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTM1LDEyICszNSwxMiBAQCBTVkdS
ZWN0RWxlbWVudDo6U1ZHUmVjdEVsZW1lbnQoY29uc3QgUXVhCiAgICAgLCBTVkdUZXN0cygpCiAg
ICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgp
Ci0gICAgLCBtX3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50
KCkpKQotICAgICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVs
ZW1lbnQoKSkpCi0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZp
ZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1f
SEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkpCi0gICAgLCBtX3J4KG5ldyBTVkdMZW5ndGgodGhp
cywgTE1fV0lEVEgsIHZpZXdwb3J0RWxlbWVudCgpKSkKLSAgICAsIG1fcnkobmV3IFNWR0xlbmd0
aCh0aGlzLCBMTV9IRUlHSFQsIHZpZXdwb3J0RWxlbWVudCgpKSkKKyAgICAsIG1feCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAs
IG1fd2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCkKKyAgICAsIG1fcngodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwg
bV9yeSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KQogewogfQogCkBAIC00OCwyOCArNDgsMjggQEAg
U1ZHUmVjdEVsZW1lbnQ6On5TVkdSZWN0RWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0
aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3guZ2V0KCkpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCos
IExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxO
YW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdS
ZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBT
VkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQuZ2V0KCkpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3Ro
LCBsZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ci5sb2NhbE5hbWUoKSwgbV9yeC5nZXQo
KSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5n
dGgqLCBMZW5ndGgsIGxlbmd0aCwgUnksIHJ5LCBTVkdOYW1lczo6cnlBdHRyLmxvY2FsTmFtZSgp
LCBtX3J5LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1l
bnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2Nh
bE5hbWUoKSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1l
bnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2Nh
bE5hbWUoKSwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1l
bnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6Ondp
ZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhl
aWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQorQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3Ro
LCBsZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ci5sb2NhbE5hbWUoKSwgbV9yeCkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIubG9jYWxOYW1lKCksIG1fcnkp
CiAKIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSogYXR0cikKIHsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFs
dWUoKTsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAg
eEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VW
YWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUo
KS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVu
Z3RoKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IFNWR05hbWVzOjpyeEF0dHIpCi0gICAgICAgIHJ4QmFzZVZhbHVlKCktPnNldFZh
bHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICAgc2V0UnhCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnJ5QXR0cikKLSAgICAgICAgcnlCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSk7CisgICAgICAgICBzZXRSeUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgd2lkdGhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0
cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBoZWlnaHRCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKFNW
R1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTgzLDQxICs4MywyNSBAQCB2b2lkIFNWR1JlY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0CiAKIFBhdGggU1ZHUmVjdEVsZW1lbnQ6OnRvUGF0aERhdGEoKSBjb25zdAogewotICAgIEZs
b2F0UmVjdCByZWN0KHgoKS0+dmFsdWUoKSwgeSgpLT52YWx1ZSgpLCB3aWR0aCgpLT52YWx1ZSgp
LCBoZWlnaHQoKS0+dmFsdWUoKSk7CisgICAgRmxvYXRSZWN0IHJlY3QoeCgpLnZhbHVlKCksIHko
KS52YWx1ZSgpLCB3aWR0aCgpLnZhbHVlKCksIGhlaWdodCgpLnZhbHVlKCkpOwogCi0gICAgYm9v
bCBoYXNSeCA9IGhhc0F0dHJpYnV0ZSgicngiKTsKLSAgICBib29sIGhhc1J5ID0gaGFzQXR0cmli
dXRlKCJyeSIpOworICAgIGJvb2wgaGFzUnggPSBoYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnJ4QXR0
cik7CisgICAgYm9vbCBoYXNSeSA9IGhhc0F0dHJpYnV0ZShTVkdOYW1lczo6cnlBdHRyKTsKICAg
ICBpZiAoaGFzUnggfHwgaGFzUnkpIHsKLSAgICAgICAgZmxvYXQgX3J4ID0gaGFzUnggPyByeCgp
LT52YWx1ZSgpIDogcnkoKS0+dmFsdWUoKTsKLSAgICAgICAgZmxvYXQgX3J5ID0gaGFzUnkgPyBy
eSgpLT52YWx1ZSgpIDogcngoKS0+dmFsdWUoKTsKKyAgICAgICAgZmxvYXQgX3J4ID0gaGFzUngg
PyByeCgpLnZhbHVlKCkgOiByeSgpLnZhbHVlKCk7CisgICAgICAgIGZsb2F0IF9yeSA9IGhhc1J5
ID8gcnkoKS52YWx1ZSgpIDogcngoKS52YWx1ZSgpOwogICAgICAgICByZXR1cm4gUGF0aDo6Y3Jl
YXRlUm91bmRlZFJlY3RhbmdsZShyZWN0LCBGbG9hdFNpemUoX3J4LCBfcnkpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gUGF0aDo6Y3JlYXRlUmVjdGFuZ2xlKHJlY3QpOwogfQogCi1jb25zdCBTVkdT
dHlsZWRFbGVtZW50KiBTVkdSZWN0RWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3Qg
U1ZHU3R5bGVkRWxlbWVudCogY29udGV4dCkKLXsKLSAgICAvLyBBbGwgYXR0cmlidXRlJ3MgY29u
dGV4dHMgYXJlIGVxdWFsIChzbyBqdXN0IHRha2UgdGhlIG9uZSBmcm9tICd4JykuCi0gICAgY29u
c3QgU1ZHU3R5bGVkRWxlbWVudCogcmVzdG9yZSA9IHgoKS0+Y29udGV4dCgpOwotCi0gICAgeCgp
LT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIHkoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKLSAg
ICB3aWR0aCgpLT5zZXRDb250ZXh0KGNvbnRleHQpOwotICAgIGhlaWdodCgpLT5zZXRDb250ZXh0
KGNvbnRleHQpOwotICAgIAotICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnB1c2hBdHRyaWJ1dGVDb250
ZXh0KGNvbnRleHQpOwotICAgIHJldHVybiByZXN0b3JlOwotfQotCiBib29sIFNWR1JlY3RFbGVt
ZW50OjpoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3QKIHsKLSAgICBpZiAoeCgpLT51bml0VHlw
ZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICB5
KCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdFIHx8
Ci0gICAgICAgIHdpZHRoKCktPnVuaXRUeXBlKCkgPT0gU1ZHTGVuZ3RoOjpTVkdfTEVOR1RIVFlQ
RV9QRVJDRU5UQUdFIHx8Ci0gICAgICAgIGhlaWdodCgpLT51bml0VHlwZSgpID09IFNWR0xlbmd0
aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICByeCgpLT51bml0VHlwZSgp
ID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSB8fAotICAgICAgICByeSgp
LT51bml0VHlwZSgpID09IFNWR0xlbmd0aDo6U1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSkKKyAg
ICBpZiAoeCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgfHwKKyAgICAgICAg
eSgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgfHwKKyAgICAgICAgd2lkdGgo
KS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8CisgICAgICAgIGhlaWdodCgp
LnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI1LDYgKzEwOSw2IEBAIGJvb2wgU1ZHUmVjdEVs
ZW1lbnQ6Omhhc1BlcmNlbnRhZ2VWYWx1ZXMKIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5k
aWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHUmVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdSZWN0RWxlbWVudC5oCShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1JlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RF
IHByb2plY3QKQEAgLTIwLDggKzIwLDkgQEAKICAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVT
QS4KICovCiAKLSNpZm5kZWYgS1NWR19TVkdSZWN0RWxlbWVudEltcGxfSAotI2RlZmluZSBLU1ZH
X1NWR1JlY3RFbGVtZW50SW1wbF9ICisjaWZuZGVmIFNWR1JlY3RFbGVtZW50X0gKKyNkZWZpbmUg
U1ZHUmVjdEVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1ZGUgIlNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTMxLDcgKzMyLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUKIHsKLSAgICBjbGFzcyBTVkdMZW5ndGg7CiAgICAgY2xhc3MgU1ZHUmVjdEVsZW1l
bnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLApAQCAtNDksMjIgKzQ5LDE5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBz
dHlsZSkgeyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0K
ICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIAotICAgICAgICB2aXJ0
dWFsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIHB1c2hBdHRyaWJ1dGVDb250ZXh0KGNvbnN0IFNW
R1N0eWxlZEVsZW1lbnQqIGNvbnRleHQpOwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0
dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhp
czsgfQotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3Q7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xB
UkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCi0gICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVm
UHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkp
Ci0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwg
U1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBS
ZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQpCi0gICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xl
bmd0aD4sIFJ4LCByeCkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R1JlY3RFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgUnksIHJ5KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xl
bmd0aCwgU1ZHTGVuZ3RoLCBYLCB4KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0
aCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIEhlaWdodCwg
aGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHUmVjdEVs
ZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBSeCwgcngpCisgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgs
IFJ5LCByeSkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL2tzdmcy
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50Lmgi
CiAKQEAgLTUzLDE5ICs1NCwxNSBAQCBTVkdTVkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KGNvbnN0
IFF1YWxpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIFNWR0Zp
dFRvVmlld0JveCgpCiAgICAgLCBTVkdab29tQW5kUGFuKCkKKyAgICAsIG1feCh0aGlzLCBMZW5n
dGhNb2RlV2lkdGgpCisgICAgLCBtX3kodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKKyAgICAsIG1f
d2lkdGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCkKICAgICAsIG1fdXNlQ3VycmVudFZpZXcoZmFsc2UpCiAgICAgLCBtX3RpbWVT
Y2hlZHVsZXIobmV3IFRpbWVTY2hlZHVsZXIoZG9jKSkKIHsKLSAgICBjb25zdCBTVkdFbGVtZW50
KiB2aWV3cG9ydCA9IG93bmVyRG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgPT0gdGhpcyA/
IHRoaXMgOiB2aWV3cG9ydEVsZW1lbnQoKTsKLSAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBj
b250ZXh0ID0gb3duZXJEb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA9PSB0aGlzID8gMCA6
IHRoaXM7Ci0KLSAgICBtX3ggPSBuZXcgU1ZHTGVuZ3RoKGNvbnRleHQsIExNX1dJRFRILCB2aWV3
cG9ydCk7Ci0gICAgbV95ID0gbmV3IFNWR0xlbmd0aChjb250ZXh0LCBMTV9IRUlHSFQsIHZpZXdw
b3J0KTsKLSAgICBtX3dpZHRoID0gbmV3IFNWR0xlbmd0aChjb250ZXh0LCBMTV9XSURUSCwgdmll
d3BvcnQpOwotICAgIG1faGVpZ2h0ID0gbmV3IFNWR0xlbmd0aChjb250ZXh0LCBMTV9IRUlHSFQs
IHZpZXdwb3J0KTsKLQotICAgIG1fd2lkdGgtPnNldFZhbHVlQXNTdHJpbmcoIjEwMCUiKTsKLSAg
ICBtX2hlaWdodC0+c2V0VmFsdWVBc1N0cmluZygiMTAwJSIpOworICAgIHNldFdpZHRoQmFzZVZh
bHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikpOworICAgIHNldEhl
aWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjEwMCUiKSk7
CiB9CiAKIFNWR1NWR0VsZW1lbnQ6On5TVkdTVkdFbGVtZW50KCkKQEAgLTczLDEwICs3MCwxMCBA
QCBTVkdTVkdFbGVtZW50Ojp+U1ZHU1ZHRWxlbWVudCgpCiAgICAgZGVsZXRlIG1fdGltZVNjaGVk
dWxlcjsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwg
U1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5h
bWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxl
bWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5s
b2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
U1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZH
TmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aC5nZXQoKSkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVu
Z3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1f
aGVpZ2h0LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2Fs
TmFtZSgpLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTVkdFbGVtZW50
LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxO
YW1lKCksIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRo
QXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVudFNjcmlwdFR5cGUoKSBjb25zdAogewpA
QCAtMTA0LDEwICsxMDEsMTAgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDb250ZW50U3R5bGVU
eXBlKAogCiBGbG9hdFJlY3QgU1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQoKSBjb25zdAogewotICAg
IGRvdWJsZSBfeCA9IHgoKS0+dmFsdWUoKTsKLSAgICBkb3VibGUgX3kgPSB5KCktPnZhbHVlKCk7
Ci0gICAgZG91YmxlIHcgPSB3aWR0aCgpLT52YWx1ZSgpOwotICAgIGRvdWJsZSBoID0gaGVpZ2h0
KCktPnZhbHVlKCk7CisgICAgZG91YmxlIF94ID0geCgpLnZhbHVlKCk7CisgICAgZG91YmxlIF95
ID0geSgpLnZhbHVlKCk7CisgICAgZG91YmxlIHcgPSB3aWR0aCgpLnZhbHVlKCk7CisgICAgZG91
YmxlIGggPSBoZWlnaHQoKS52YWx1ZSgpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94ID0g
dmlld0JveFRvVmlld1RyYW5zZm9ybSh3LCBoKTsKICAgICB2aWV3Qm94Lm1hcChfeCwgX3ksICZf
eCwgJl95KTsKICAgICB2aWV3Qm94Lm1hcCh3LCBoLCAmdywgJmgpOwpAQCAtMTkwLDE1ICsxODcs
MTUgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZQogICAgICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9uem9vbUF0dHIpCiAgICAgICAgICAg
ICBhZGRTVkdXaW5kb3dFdmVudExpc3RuZXIoem9vbUV2ZW50LCBhdHRyKTsKICAgICB9Ci0gICAg
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKLSAgICAgICAgeEJhc2VWYWx1
ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgeUJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFz
U3RyaW5nKHZhbHVlKTsKLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
d2lkdGhBdHRyKSB7Ci0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNTdHJpbmco
dmFsdWUpOworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQorICAgICAg
ICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsIHZhbHVlKSk7
CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKKyAgICAgICAg
c2V0WUJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUpKTsK
KyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgeworICAg
ICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2
YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NfUFJPUF9XSURUSCwgdmFs
dWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRy
KSB7Ci0gICAgICAgIGhlaWdodEJhc2VWYWx1ZSgpLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsK
KyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0LCB2YWx1ZSkpOwogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NfUFJPUF9IRUlH
SFQsIHZhbHVlKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpKQpAQCAtMjc2LDkgKzI3Myw5IEBAIGRvdWJsZSBTVkdTVkdFbGVt
ZW50OjpjcmVhdGVTVkdOdW1iZXIoKQogICAgIHJldHVybiAwLjA7CiB9CiAKLVNWR0xlbmd0aCog
U1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTGVuZ3RoKCkKK1NWR0xlbmd0aCBTVkdTVkdFbGVtZW50
OjpjcmVhdGVTVkdMZW5ndGgoKQogewotICAgIHJldHVybiBuZXcgU1ZHTGVuZ3RoKDApOworICAg
IHJldHVybiBTVkdMZW5ndGgoKTsKIH0KIAogU1ZHQW5nbGUqIFNWR1NWR0VsZW1lbnQ6OmNyZWF0
ZVNWR0FuZ2xlKCkKQEAgLTMxNiwxMCArMzEzLDEwIEBAIFNWR1RyYW5zZm9ybSogU1ZHU1ZHRWxl
bWVudDo6Y3JlYXRlU1ZHVHIKIEFmZmluZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50OjpnZXRDVE0o
KSBjb25zdAogewogICAgIEFmZmluZVRyYW5zZm9ybSBtYXQ7Ci0gICAgbWF0LnRyYW5zbGF0ZSh4
KCktPnZhbHVlKCksIHkoKS0+dmFsdWUoKSk7CisgICAgbWF0LnRyYW5zbGF0ZSh4KCkudmFsdWUo
KSwgeSgpLnZhbHVlKCkpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMoKS0+Z2V0TmFtZWRJdGVtKFNW
R05hbWVzOjp2aWV3Qm94QXR0cikpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3gg
PSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgpLT52YWx1
ZSgpKTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJh
bnNmb3JtKHdpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KCkudmFsdWUoKSk7CiAgICAgICAgIG1hdCA9
IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCkBAIC0zMjksMTAgKzMyNiwxMCBAQCBBZmZpbmVUcmFu
c2Zvcm0gU1ZHU1ZHRWxlbWVudDo6Z2V0Q1RNKCkgCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxl
bWVudDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKIHsKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0ID0g
U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKCk7Ci0gICAgbWF0LnRyYW5z
bGF0ZSh4KCktPnZhbHVlKCksIHkoKS0+dmFsdWUoKSk7CisgICAgbWF0LnRyYW5zbGF0ZSh4KCku
dmFsdWUoKSwgeSgpLnZhbHVlKCkpOwogCiAgICAgaWYgKGF0dHJpYnV0ZXMoKS0+Z2V0TmFtZWRJ
dGVtKFNWR05hbWVzOjp2aWV3Qm94QXR0cikpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZp
ZXdCb3ggPSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCktPnZhbHVlKCksIGhlaWdodCgp
LT52YWx1ZSgpKTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3ggPSB2aWV3Qm94VG9W
aWV3VHJhbnNmb3JtKHdpZHRoKCkudmFsdWUoKSwgaGVpZ2h0KCkudmFsdWUoKSk7CiAgICAgICAg
IG1hdCA9IHZpZXdCb3ggKiBtYXQ7CiAgICAgfQogCkBAIC0zOTYsNiArMzkzLDE3IEBAIHZvaWQg
U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRpbWUoZmxvYXQKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IG1lCiB9CiAKK2Jvb2wgU1ZHU1ZHRWxlbWVudDo6aGFzUGVyY2VudGFnZVZhbHVlcygpIGNv
bnN0Cit7CisgICAgaWYgKHgoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8
CisgICAgICAgIHkoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8CisgICAg
ICAgIHdpZHRoKCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSB8fAorICAgICAg
ICBoZWlnaHQoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKSAKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgU1ZHU1ZHRWxlbWVu
dDo6YXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJlc2VydmVEZWNscykK
IHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0ciB8fApAQCAtNDEwLDYg
KzQxOCw2IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChBdHQKIAogfQog
Ci0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gU1ZHX1NVUFBPUlQKIAorLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMTgyNjUpCisr
KyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1l
cm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2lm
bmRlZiBTVkdTVkdFbGVtZW50X0gKICNkZWZpbmUgU1ZHU1ZHRWxlbWVudF9ICisKICNpZmRlZiBT
VkdfU1VQUE9SVAogCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgpA
QCAtMTA0LDcgKzEwNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZvaWQgZGVzZWxl
Y3RBbGwoKTsKIAogICAgICAgICBzdGF0aWMgZG91YmxlIGNyZWF0ZVNWR051bWJlcigpOwotICAg
ICAgICBzdGF0aWMgU1ZHTGVuZ3RoKiBjcmVhdGVTVkdMZW5ndGgoKTsKKyAgICAgICAgc3RhdGlj
IFNWR0xlbmd0aCBjcmVhdGVTVkdMZW5ndGgoKTsKICAgICAgICAgc3RhdGljIFNWR0FuZ2xlKiBj
cmVhdGVTVkdBbmdsZSgpOwogICAgICAgICBzdGF0aWMgRmxvYXRQb2ludCBjcmVhdGVTVkdQb2lu
dCgpOwogICAgICAgICBzdGF0aWMgQWZmaW5lVHJhbnNmb3JtIGNyZWF0ZVNWR01hdHJpeCgpOwpA
QCAtMTMyLDYgKzEzMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdGhpczsgfQogCisgICAgICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJTVkdDb250YWluZXI7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3Q7CisKICAg
ICBwcml2YXRlOgogICAgICAgICB2b2lkIGFkZFNWR1dpbmRvd0V2ZW50TGlzdG5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgQXR0cmlidXRlKiBhdHRyKTsgICAKIApAQCAt
MTM5LDEwICsxNDMsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfRk9SV0FSRF9ERUNMQVJBVElPTlMoU1ZHRml0VG9WaWV3Qm94LCBGbG9hdFJlY3QsIFZp
ZXdCb3gsIHZpZXdCb3gpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFS
QVRJT05TKFNWR0ZpdFRvVmlld0JveCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZl
QXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAKLSAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdM
ZW5ndGg+LCBYLCB4KQotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
U1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFksIHkpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgV2lkdGgsIHdpZHRoKQotICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xl
bmd0aD4sIEhlaWdodCwgaGVpZ2h0KQorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBTVkdMZW5ndGgsIFgsIHgpCisgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgs
IFNWR0xlbmd0aCwgWSwgeSkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCisgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5n
dGgsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCiAKICAgICAgICAgYm9vbCBtX3VzZUN1cnJl
bnRWaWV3OwogICAgICAgICBUaW1lU2NoZWR1bGVyKiBtX3RpbWVTY2hlZHVsZXI7CkluZGV4OiBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMTgyNjUpCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMzLDE0ICsxMzMsNiBAQCB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnVwZGF0ZUNhbnZhc0l0ZW0o
CiAgICAgbV91cGRhdGVWZWN0b3JpYWwgPSBmYWxzZTsKIH0KIAotY29uc3QgU1ZHU3R5bGVkRWxl
bWVudCogU1ZHU3R5bGVkRWxlbWVudDo6cHVzaEF0dHJpYnV0ZUNvbnRleHQoY29uc3QgU1ZHU3R5
bGVkRWxlbWVudCopCi17Ci0gICAgaWYgKHZpZXcoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVu
ZGVyUGF0aCo+KHJlbmRlcmVyKCkpLT5zZXRQYXRoKHRvUGF0aERhdGEoKSk7Ci0KLSAgICByZXR1
cm4gMDsKLX0KLQogfQogCiAvLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZH
U3R5bGVkRWxlbWVudC5oCShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgorI2luY2x1
ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR1N0eWxhYmxlLmgiCiAjaW5jbHVkZSAiU1ZH
UmVzb3VyY2UuaCIKICNpbmNsdWRlICJQYXRoLmgiCkBAIC01NiwxNyArNTcsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdl
KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0
ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKIAotICAgICAgICAvLyBJbWFnaW5lIHdl
J3JlIGEgPHJlY3Q+IGluc2lkZSBvZiBhIDxwYXR0ZXJuPiBzZWN0aW9uIHdpdGggcGF0dGVybkNv
bnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giCi0gICAgICAgIC8vIGFuZCBvdXIgJ3dpZHRo
JyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDUwJS4gV2hlbiB0aGUgcGF0dGVybiBnZXRzIHJlZmVyZW5j
ZWQgaXQga25vd3MgdGhlICJiYm94IgotICAgICAgICAvLyBvZiBpdCdzIHVzZXIgYW5kIGhhcyB0
byBwdXNoIHRoZSAiYWN0aXZlIGNsaWVudCdzIGJib3giIGFzIG5ldyBhdHRyaWJ1dGUgY29udGV4
dCB0byBhbGwgYXR0cmlidXRlcwotICAgICAgICAvLyBvZiB0aGUgJ3JlY3QnLiBUaGlzIGZ1bmN0
aW9uIGFsc28gcmV0dXJucyB0aGUgb2xkIGF0dHJpYnV0ZSBjb250ZXh0LCB0byBiZSBhYmxlIHRv
IHJlc3RvcmUgaXQuLi4KLSAgICAgICAgdmlydHVhbCBjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBw
dXNoQXR0cmlidXRlQ29udGV4dChjb25zdCBTVkdTdHlsZWRFbGVtZW50KiBjb250ZXh0KTsKLQot
ICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVyY2VudGFnZVZhbHVlcygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0KICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgdXBkYXRlQ2FudmFzSXRl
bSgpOyAvLyBIYW5kbGVzICJwYXRoIGRhdGEiIG9iamVjdCBjaGFuZ2VzLi4uIChub3QgZm9yIHN0
eWxlL3RyYW5zZm9ybSEpCiAKKyAgICAgICAgZnJpZW5kIGNsYXNzIFJlbmRlclBhdGg7CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBoYXNQZXJjZW50YWdlVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIG11dGFibGUgUmVmUHRyPENTU1N0eWxlRGVj
bGFyYXRpb24+IG1fcGE7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdTdHlsZWRFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgQ2xhc3NOYW1lLCBjbGFzc05hbWUpCklu
ZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHJldmlz
aW9uIDE4MjY1KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OlNWR1RleHRDb250ZW50RWxlCiAgICAgLCBTVkdUZXN0cygpCiAgICAgLCBTVkdMYW5nU3BhY2Uo
KQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCi0gICAgLCBtX3RleHRMZW5n
dGgobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCkpCisgICAgLCBtX3RleHRMZW5ndGgodGhp
cywgTGVuZ3RoTW9kZVdpZHRoKQogICAgICwgbV9sZW5ndGhBZGp1c3QoMCkKIHsKIH0KQEAgLTQ2
LDcgKzQ2LDcgQEAgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp+U1ZHVGV4dENvbnRlbnRFbAogewog
fQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQs
IFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBUZXh0TGVuZ3RoLCB0ZXh0TGVuZ3RoLCBTVkdO
YW1lczo6dGV4dExlbmd0aEF0dHIubG9jYWxOYW1lKCksIG1fdGV4dExlbmd0aC5nZXQoKSkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTGVu
Z3RoLCBMZW5ndGgsIGxlbmd0aCwgVGV4dExlbmd0aCwgdGV4dExlbmd0aCwgU1ZHTmFtZXM6OnRl
eHRMZW5ndGhBdHRyLmxvY2FsTmFtZSgpLCBtX3RleHRMZW5ndGgpCiBBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVu
dW1lcmF0aW9uLCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFkanVzdCwgU1ZHTmFtZXM6Omxlbmd0aEFk
anVzdEF0dHIubG9jYWxOYW1lKCksIG1fbGVuZ3RoQWRqdXN0KQogCiBsb25nIFNWR1RleHRDb250
ZW50RWxlbWVudDo6Z2V0TnVtYmVyT2ZDaGFycygpIGNvbnN0CkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzZWxlY3RTdWJTdHIKIHZvaWQgU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7
CiAgICAgLy9pZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpsZW5ndGhBZGp1c3RBdHRyKQot
ICAgIC8vICAgIHhCYXNlVmFsdWUoKS0+c2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgLy8g
ICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkp
OwogICAgIC8vZWxzZQogICAgIHsKICAgICAgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKSkKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250ZW50RWxl
bWVudC5oCShyZXZpc2lvbiAxODI2NSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJE
X0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNW
R0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBUZXh0TGVuZ3RoLCB0ZXh0TGVuZ3RoKQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50
LCBTVkdMZW5ndGgsIFNWR0xlbmd0aCwgVGV4dExlbmd0aCwgdGV4dExlbmd0aCkKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgaW50
LCBpbnQsIExlbmd0aEFkanVzdCwgbGVuZ3RoQWRqdXN0KQogICAgIH07CiAKSW5kZXg6IFdlYkNv
cmUva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tz
dmcyL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dC5oIgorI2luY2x1ZGUgIlNWR0hlbHBlci5oIgogI2lu
Y2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5oIgogI2lu
Y2x1ZGUgIlNWR1RTcGFuRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDEzICs1NiwxMyBAQCB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNl
TWFwCiAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CiAgICAgCiAgICAg
aWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHhCYXNlVmFsdWUo
KS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMTV9XSURUSCk7CisgICAg
ICAgIHhCYXNlVmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6
eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+cGFyc2UodmFsdWUuZGVwcmVjYXRlZFN0cmlu
ZygpLCB0aGlzLCBMTV9IRUlHSFQpOworICAgICAgICB5QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVl
LmRlcHJlY2F0ZWRTdHJpbmcoKSwgdGhpcywgTGVuZ3RoTW9kZUhlaWdodCk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpkeEF0dHIpCi0gICAgICAgIGR4QmFzZVZhbHVl
KCktPnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdGhpcywgTE1fV0lEVEgpOworICAg
ICAgICBkeEJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCksIHRoaXMs
IExlbmd0aE1vZGVXaWR0aCk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVz
OjpkeUF0dHIpCi0gICAgICAgIGR5QmFzZVZhbHVlKCktPnBhcnNlKHZhbHVlLmRlcHJlY2F0ZWRT
dHJpbmcoKSwgdGhpcywgTE1fSEVJR0hUKTsKKyAgICAgICAgZHlCYXNlVmFsdWUoKS0+cGFyc2Uo
dmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLCB0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpCiAgICAgICAgIHJv
dGF0ZUJhc2VWYWx1ZSgpLT5wYXJzZSh2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpOwogICAgIGVs
c2UKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxODI2NSkK
KysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2ICsyMSw3IEBACiAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZmRlZiBTVkdfU1VQUE9SVAogI2luY2x1ZGUgIlNW
R1VzZUVsZW1lbnQuaCIKIApAQCAtNDIsMTAgKzQzLDEwIEBAIFNWR1VzZUVsZW1lbnQ6OlNWR1Vz
ZUVsZW1lbnQoY29uc3QgUXVhbGkKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIFNWR1VSSVJlZmVyZW5jZSgpCi0gICAgLCBt
X3gobmV3IFNWR0xlbmd0aCh0aGlzLCBMTV9XSURUSCwgdmlld3BvcnRFbGVtZW50KCkpKQotICAg
ICwgbV95KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2aWV3cG9ydEVsZW1lbnQoKSkp
Ci0gICAgLCBtX3dpZHRoKG5ldyBTVkdMZW5ndGgodGhpcywgTE1fV0lEVEgsIHZpZXdwb3J0RWxl
bWVudCgpKSkKLSAgICAsIG1faGVpZ2h0KG5ldyBTVkdMZW5ndGgodGhpcywgTE1fSEVJR0hULCB2
aWV3cG9ydEVsZW1lbnQoKSkpCisgICAgLCBtX3godGhpcywgTGVuZ3RoTW9kZVdpZHRoKQorICAg
ICwgbV95KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCisgICAgLCBtX3dpZHRoKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkKKyAgICAsIG1faGVpZ2h0KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpCiB7CiB9
CiAKQEAgLTUzLDIzICs1NCwyMyBAQCBTVkdVc2VFbGVtZW50Ojp+U1ZHVXNlRWxlbWVudCgpCiB7
CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xl
bmd0aCosIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCks
IG1feC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQs
IFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxO
YW1lKCksIG1feS5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVs
ZW1lbnQsIFNWR0xlbmd0aCosIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVz
Ojp3aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGguZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgqLCBMZW5ndGgsIGxlbmd0aCwg
SGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdo
dC5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNW
R0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUo
KSwgbV94KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgp
LCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIu
bG9jYWxOYW1lKCksIG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdV
c2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZH
TmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQogCiB2b2lkIFNWR1VzZUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0ci0+dmFsdWUoKTsKICAgICAKICAgICBp
ZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgeEJhc2VWYWx1ZSgp
LT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5n
dGgodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIHlCYXNlVmFsdWUoKS0+c2V0VmFsdWVB
c1N0cmluZyh2YWx1ZSk7CisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHdpZHRoQmFzZVZhbHVlKCktPnNldFZhbHVlQXNT
dHJpbmcodmFsdWUpOworICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywg
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgaGVpZ2h0QmFzZVZhbHVlKCktPnNldFZhbHVl
QXNTdHJpbmcodmFsdWUpOworICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChT
VkdUZXN0czo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC05Myw4ICs5NCw4IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6Y2xvc2VSZW5kZXJlcigpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmbG9hdCBfeCA9IHgoKS0+dmFsdWUoKSwgX3kg
PSB5KCktPnZhbHVlKCk7Ci0gICAgZmxvYXQgX3cgPSB3aWR0aCgpLT52YWx1ZSgpLCBfaCA9IGhl
aWdodCgpLT52YWx1ZSgpOworICAgIGZsb2F0IF94ID0geCgpLnZhbHVlKCksIF95ID0geSgpLnZh
bHVlKCk7CisgICAgZmxvYXQgX3cgPSB3aWR0aCgpLnZhbHVlKCksIF9oID0gaGVpZ2h0KCkudmFs
dWUoKTsKICAgICAKICAgICBTdHJpbmcgd1N0cmluZyA9IFN0cmluZzo6bnVtYmVyKF93KTsKICAg
ICBTdHJpbmcgaFN0cmluZyA9IFN0cmluZzo6bnVtYmVyKF9oKTsKQEAgLTE1OCw2ICsxNTksNiBA
QCBSZW5kZXJPYmplY3QqIFNWR1VzZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlCiAKIH0KIAotLy8gdmlt
OnRzPTQ6bm9ldAogI2VuZGlmIC8vIFNWR19TVVBQT1JUCiAKKy8vIHZpbTp0cz00Om5vZXQKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHJldmlzaW9uIDE4MjY1KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3
aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29s
YXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMCw4ICsyMCw5IEBACiAgICAgQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCiAqLwogCi0jaWZuZGVmIEtTVkdfU1ZHVXNlRWxlbWVudEltcGxfSAot
I2RlZmluZSBLU1ZHX1NWR1VzZUVsZW1lbnRJbXBsX0gKKyNpZm5kZWYgU1ZHVXNlRWxlbWVudF9I
CisjZGVmaW5lIFNWR1VzZUVsZW1lbnRfSAorCiAjaWZkZWYgU1ZHX1NVUFBPUlQKIAogI2luY2x1
ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKQEAgLTYzLDEwICs2NCwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xB
UkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdVUklSZWZlcmVuY2UsIFN0cmluZywg
SHJlZiwgaHJlZikKIAotICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZH
VXNlRWxlbWVudCwgU1ZHTGVuZ3RoKiwgUmVmUHRyPFNWR0xlbmd0aD4sIFgsIHgpCi0gICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgq
LCBSZWZQdHI8U1ZHTGVuZ3RoPiwgWSwgeSkKLSAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCosIFJlZlB0cjxTVkdMZW5ndGg+LCBX
aWR0aCwgd2lkdGgpCi0gICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdV
c2VFbGVtZW50LCBTVkdMZW5ndGgqLCBSZWZQdHI8U1ZHTGVuZ3RoPiwgSGVpZ2h0LCBoZWlnaHQp
CisgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdVc2VFbGVtZW50LCBT
VkdMZW5ndGgsIFNWR0xlbmd0aCwgWCwgeCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBZLCB5KQorICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVu
Z3RoLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKKyAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgU1ZHTGVuZ3RoLCBIZWlnaHQs
IGhlaWdodCkKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAkocmV2aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY0LDggKzU2NCw4IEBAIHN0YXRpYyBDdXJzb3Igc2Vs
ZWN0Q3Vyc29yKGNvbnN0IE1vdXNlRXYKICAgICAgICAgICAgIGlmICghY2ltYWdlKSB7CiAgICAg
ICAgICAgICAgICAgRWxlbWVudCogZSA9IG5vZGUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlk
KCgqY3Vyc29ycylbaV0uY3Vyc29yRnJhZ21lbnRJZCk7CiAgICAgICAgICAgICAgICAgaWYgKGUg
JiYgZS0+aGFzVGFnTmFtZShjdXJzb3JUYWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhvdFNw
b3Quc2V0WChpbnQoc3RhdGljX2Nhc3Q8U1ZHQ3Vyc29yRWxlbWVudCo+KGUpLT54KCktPnZhbHVl
KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgaG90U3BvdC5zZXRZKGludChzdGF0aWNfY2FzdDxT
VkdDdXJzb3JFbGVtZW50Kj4oZSktPnkoKS0+dmFsdWUoKSkpOworICAgICAgICAgICAgICAgICAg
ICBob3RTcG90LnNldFgoaW50KHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+eCgp
LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaG90U3BvdC5zZXRZKGludChzdGF0aWNf
Y2FzdDxTVkdDdXJzb3JFbGVtZW50Kj4oZSktPnkoKS52YWx1ZSgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGNpbWFnZSA9IHN0YXRpY19jYXN0PFNWR0N1cnNvckVsZW1lbnQqPihlKS0+Y2FjaGVk
SW1hZ2UoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkocmV2aXNpb24gMTgyNjUpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCBSZW5kZXJGb3JlaWduT2JqZWN0OjpSZW5kZXJGb3JlaWduT2JqZWN0
CiBBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyRm9yZWlnbk9iamVjdDo6dHJhbnNsYXRpb25Gb3JBdHRy
aWJ1dGVzKCkKIHsKICAgICBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCogZm9yZWlnbiA9IHN0YXRp
Y19jYXN0PFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Kj4oZWxlbWVudCgpKTsKLSAgICByZXR1cm4g
QWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRlKGZvcmVpZ24tPngoKS0+dmFsdWUoKSwgZm9yZWln
bi0+eSgpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRl
KGZvcmVpZ24tPngoKS52YWx1ZSgpLCBmb3JlaWduLT55KCkudmFsdWUoKSk7CiB9CiAKIHZvaWQg
UmVuZGVyRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCBwYXJl
bnRYLCBpbnQgcGFyZW50WSkKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRh
aW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAkocmV2aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdD
b250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOCArMTAxLDcgQEAgdm9pZCBSZW5k
ZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogICAg
IEFTU0VSVChtaW5NYXhLbm93bigpKTsKIAotICAgIGlmIChzZWxmTmVlZHNMYXlvdXQoKSkKLSAg
ICAgICAgY2FsY1ZpZXdwb3J0KCk7CisgICAgY2FsY1ZpZXdwb3J0KCk7CiAKICAgICBJbnRSZWN0
IG9sZEJvdW5kczsKICAgICBib29sIGNoZWNrRm9yUmVwYWludCA9IGNoZWNrRm9yUmVwYWludER1
cmluZ0xheW91dCgpOwpAQCAtMTE1LDcgKzExNCw5IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVy
OjpsYXlvdXQoKQogICAgICAgICAgICAgY2hpbGQtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogICAg
ICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwogICAgIH0KKwogICAgIFJlbmRlckNv
bnRhaW5lcjo6bGF5b3V0KCk7CisKICAgICBjYWxjV2lkdGgoKTsKICAgICBjYWxjSGVpZ2h0KCk7
CiAKQEAgLTE1NCw3ICsxNTUsNyBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFp
bnRJbmZvCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oQWZmaW5lVHJhbnNm
b3JtKCkudHJhbnNsYXRlKHBhcmVudFgsIHBhcmVudFkpKTsKICAgICAgICAgcGFyZW50WCA9IHBh
cmVudFkgPSAwOwogICAgIH0KLSAgICAKKwogICAgIGlmICghdmlld3BvcnQoKS5pc0VtcHR5KCkp
IHsKICAgICAgICAgaWYgKHN0eWxlKCktPm92ZXJmbG93WCgpICE9IE9WSVNJQkxFKQogICAgICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoZW5jbG9zaW5nSW50UmVjdCh2aWV3cG9ydCgp
KSk7IC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlJ2xsIHdhbnQgZmxvYXQtcHJlY2lzaW9uIGNsaXBw
aW5nCkBAIC0yMDYsMTUgKzIwNywyMiBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6Y2FsY1Zp
ZXdwb3J0KCkKICAgICBTVkdFbGVtZW50KiBzdmdlbGVtID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVu
dCo+KGVsZW1lbnQoKSk7CiAgICAgaWYgKHN2Z2VsZW0tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2
Z1RhZykpIHsKICAgICAgICAgU1ZHU1ZHRWxlbWVudCogc3ZnID0gc3RhdGljX2Nhc3Q8U1ZHU1ZH
RWxlbWVudCo+KGVsZW1lbnQoKSk7Ci0gICAgICAgIGRvdWJsZSB4ID0gc3ZnLT54KCktPnZhbHVl
KCk7Ci0gICAgICAgIGRvdWJsZSB5ID0gc3ZnLT55KCktPnZhbHVlKCk7Ci0gICAgICAgIGRvdWJs
ZSB3ID0gc3ZnLT53aWR0aCgpLT52YWx1ZSgpOwotICAgICAgICBkb3VibGUgaCA9IHN2Zy0+aGVp
Z2h0KCktPnZhbHVlKCk7CisKKyAgICAgICAgaWYgKCFzZWxmTmVlZHNMYXlvdXQoKSAmJiAhc3Zn
LT5oYXNQZXJjZW50YWdlVmFsdWVzKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ZG91YmxlIHggPSBzdmctPngoKS52YWx1ZSgpOworICAgICAgICBkb3VibGUgeSA9IHN2Zy0+eSgp
LnZhbHVlKCk7CisgICAgICAgIGRvdWJsZSB3ID0gc3ZnLT53aWR0aCgpLnZhbHVlKCk7CisgICAg
ICAgIGRvdWJsZSBoID0gc3ZnLT5oZWlnaHQoKS52YWx1ZSgpOwogICAgICAgICBtX3ZpZXdwb3J0
ID0gRmxvYXRSZWN0KHgsIHksIHcsIGgpOwogICAgIH0gZWxzZSBpZiAoc3ZnZWxlbS0+aGFzVGFn
TmFtZShTVkdOYW1lczo6bWFya2VyVGFnKSkgeworICAgICAgICBpZiAoIXNlbGZOZWVkc0xheW91
dCgpKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIFNWR01hcmtlckVsZW1lbnQqIHN2
ZyA9IHN0YXRpY19jYXN0PFNWR01hcmtlckVsZW1lbnQqPihlbGVtZW50KCkpOwotICAgICAgICAg
ICAgZG91YmxlIHcgPSBzdmctPm1hcmtlcldpZHRoKCktPnZhbHVlKCk7Ci0gICAgICAgIGRvdWJs
ZSBoID0gc3ZnLT5tYXJrZXJIZWlnaHQoKS0+dmFsdWUoKTsKKyAgICAgICAgZG91YmxlIHcgPSBz
dmctPm1hcmtlcldpZHRoKCkudmFsdWUoKTsKKyAgICAgICAgZG91YmxlIGggPSBzdmctPm1hcmtl
ckhlaWdodCgpLnZhbHVlKCk7CiAgICAgICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3QoMCwgMCwg
dywgaCk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAko
cmV2aXNpb24gMTgyNjUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjps
YXlvdXQoKQogRmxvYXRSZWN0IFJlbmRlclNWR0ltYWdlOjpyZWxhdGl2ZUJCb3goYm9vbCBpbmNs
dWRlU3Ryb2tlKSBjb25zdAogewogICAgIFNWR0ltYWdlRWxlbWVudCAqaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxTVkdJbWFnZUVsZW1lbnQqPihub2RlKCkpOwotICAgIHJldHVybiBGbG9hdFJlY3QoaW1h
Z2UtPngoKS0+dmFsdWUoKSwgaW1hZ2UtPnkoKS0+dmFsdWUoKSwgd2lkdGgoKSwgaGVpZ2h0KCkp
OworICAgIHJldHVybiBGbG9hdFJlY3QoaW1hZ2UtPngoKS52YWx1ZSgpLCBpbWFnZS0+eSgpLnZh
bHVlKCksIHdpZHRoKCksIGhlaWdodCgpKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1h
Z2VDaGFuZ2VkKENhY2hlZEltYWdlKiBpbWFnZSkKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIFJl
bmRlclNWR0ltYWdlOjppbWFnZUNoYW5nZWQoQ2FjaGVkCiBJbnRSZWN0IFJlbmRlclNWR0ltYWdl
OjpnZXRBYnNvbHV0ZVJlcGFpbnRSZWN0KCkKIHsKICAgICBTVkdJbWFnZUVsZW1lbnQgKmltYWdl
ID0gc3RhdGljX2Nhc3Q8U1ZHSW1hZ2VFbGVtZW50Kj4obm9kZSgpKTsKLSAgICBGbG9hdFJlY3Qg
cmVwYWludFJlY3QgPSBhYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoRmxvYXRSZWN0KGltYWdl
LT54KCktPnZhbHVlKCksIGltYWdlLT55KCktPnZhbHVlKCksIHdpZHRoKCksIGhlaWdodCgpKSk7
CisgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0
KEZsb2F0UmVjdChpbWFnZS0+eCgpLnZhbHVlKCksIGltYWdlLT55KCkudmFsdWUoKSwgd2lkdGgo
KSwgaGVpZ2h0KCkpKTsKIAogICAgIC8vIEZpbHRlcnMgY2FuIGV4cGFuZCB0aGUgYm91bmRpbmcg
Ym94CiAgICAgU1ZHUmVzb3VyY2VGaWx0ZXIgKmZpbHRlciA9IGdldEZpbHRlckJ5SWQoZG9jdW1l
bnQoKSwgc3R5bGUoKS0+c3ZnU3R5bGUoKS0+ZmlsdGVyKCkuc3Vic3RyaW5nKDEpKTsKQEAgLTI1
Niw3ICsyNTYsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjphYnNvbHV0ZVJlY3RzKFZlY3RvCiBB
ZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHSW1hZ2U6OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygp
CiB7CiAgICAgU1ZHSW1hZ2VFbGVtZW50ICppbWFnZSA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxl
bWVudCo+KG5vZGUoKSk7Ci0gICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShp
bWFnZS0+eCgpLT52YWx1ZSgpLCBpbWFnZS0+eSgpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gQWZm
aW5lVHJhbnNmb3JtKCkudHJhbnNsYXRlKGltYWdlLT54KCkudmFsdWUoKSwgaW1hZ2UtPnkoKS52
YWx1ZSgpKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHJl
dmlzaW9uIDE4MjY1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVGV4dC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDggQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpsYXlvdXQo
KQogICAgICAgICBvbGRCb3VuZHMgPSBtX2Fic29sdXRlQm91bmRzOwogICAgIFNWR1RleHRFbGVt
ZW50KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8U1ZHVGV4dEVsZW1lbnQqPihlbGVtZW50KCkpOwogICAg
IC8vRklYTUU6ICBuZWVkIHRvIGFsbG93IGZsb2F0aW5nIHBvaW50IHBvc2l0aW9ucwotICAgIGlu
dCB4T2Zmc2V0ID0gKGludCkodGV4dC0+eCgpLT5nZXRGaXJzdCgpID8gdGV4dC0+eCgpLT5nZXRG
aXJzdCgpLT52YWx1ZSgpIDogMCk7Ci0gICAgaW50IHlPZmZzZXQgPSAoaW50KSh0ZXh0LT55KCkt
PmdldEZpcnN0KCkgPyB0ZXh0LT55KCktPmdldEZpcnN0KCktPnZhbHVlKCkgOiAwKTsKKyAgICBp
bnQgeE9mZnNldCA9IChpbnQpKHRleHQtPngoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpKTsKKyAgICBp
bnQgeU9mZnNldCA9IChpbnQpKHRleHQtPnkoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpKTsKICAgICBz
ZXRQb3MoeE9mZnNldCwgeU9mZnNldCk7CiAgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOwogICAg
IApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDE4
MjY1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNiwxMCArMTI2LDkgQEAgc3RhdGljIGJvb2wgdHJhbnNsYXRlQm94KElubGlu
ZUJveCogYm94LAogICAgIH0gZWxzZSB7CiAgICAgICAgIElubGluZUZsb3dCb3gqIGZsb3cgPSBz
dGF0aWNfY2FzdDxJbmxpbmVGbG93Qm94Kj4oYm94KTsKICAgICAgICAgU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudCogdGV4dCA9IHN0YXRpY19jYXN0PFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQq
Pihib3gtPm9iamVjdCgpLT5lbGVtZW50KCkpOwotCi0gICAgICAgIGlmICh0b3BMZXZlbCB8fCAh
KHRleHQtPngoKS0+Z2V0Rmlyc3QoKSB8fCB0ZXh0LT55KCktPmdldEZpcnN0KCkgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHRleHQtPmR4KCktPmdldEZpcnN0KCkgJiYgdGV4dC0+ZHgo
KS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHRl
eHQtPmR5KCktPmdldEZpcnN0KCkgJiYgdGV4dC0+ZHkoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSkp
KSB7CisgICAgICAgIAorICAgICAgICBpZiAodG9wTGV2ZWwgfHwgISh0ZXh0LT54KCktPmdldEZp
cnN0KCkudmFsdWUoKSB8fCB0ZXh0LT55KCktPmdldEZpcnN0KCkudmFsdWUoKSB8fAorICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXh0LT5keCgpLT5nZXRGaXJzdCgpLnZhbHVlKCkgfHwgdGV4
dC0+ZHkoKS0+Z2V0Rmlyc3QoKS52YWx1ZSgpKSkgewogICAgICAgICAgICAgYm94LT5zZXRYUG9z
KGJveC0+eFBvcygpICsgeCk7CiAgICAgICAgICAgICBib3gtPnNldFlQb3MoYm94LT55UG9zKCkg
KyB5KTsKICAgICAgICAgICAgIGZvciAoSW5saW5lQm94KiBjdXJyID0gZmxvdy0+Zmlyc3RDaGls
ZCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dE9uTGluZSgpKSB7CkBAIC0xNjksMTIgKzE2OCwx
MyBAQCBzdGF0aWMgaW50IHBsYWNlUG9zaXRpb25lZEJveGVzSG9yaXpvbnRhCiAgICAgICAgICAg
ICBhc3NlcnQoY3Vyci0+b2JqZWN0KCktPmlzSW5saW5lRmxvdygpKTsKICAgICAgICAgICAgIElu
bGluZUZsb3dCb3gqIGZsb3cgPSBzdGF0aWNfY2FzdDxJbmxpbmVGbG93Qm94Kj4oY3Vycik7CiAg
ICAgICAgICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCo+KGZsb3ctPm9iamVjdCgpLT5lbGVtZW50KCkpOwot
ICAgICAgICAgICAgeCArPSB0ZXh0LT5keCgpLT5nZXRGaXJzdCgpID8gc3RhdGljX2Nhc3Q8aW50
Pih0ZXh0LT5keCgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpKSA6IDA7Ci0gICAgICAgICAgICBpZiAo
dGV4dC0+eCgpLT5nZXRGaXJzdCgpKQotICAgICAgICAgICAgICAgIHggPSBzdGF0aWNfY2FzdDxp
bnQ+KHRleHQtPngoKS0+Z2V0Rmlyc3QoKS0+dmFsdWUoKSAtIHhQb3MpOwotICAgICAgICAgICAg
aWYgKHRleHQtPngoKS0+Z2V0Rmlyc3QoKSB8fCB0ZXh0LT55KCktPmdldEZpcnN0KCkgfHwKLSAg
ICAgICAgICAgICAgICAodGV4dC0+ZHgoKS0+Z2V0Rmlyc3QoKSAmJiB0ZXh0LT5keCgpLT5nZXRG
aXJzdCgpLT52YWx1ZSgpKSB8fAotICAgICAgICAgICAgICAgICh0ZXh0LT5keSgpLT5nZXRGaXJz
dCgpICYmIHRleHQtPmR5KCktPmdldEZpcnN0KCktPnZhbHVlKCkpKSB7CisgICAgICAgICAgICB4
ICs9IChpbnQpKHRleHQtPmR4KCktPmdldEZpcnN0KCkudmFsdWUoKSk7CisgICAgICAgICAgICBp
ZiAodGV4dC0+eCgpLT5udW1iZXJPZkl0ZW1zKCkgPiAwKQorICAgICAgICAgICAgICAgIHggPSAo
aW50KSh0ZXh0LT54KCktPmdldEZpcnN0KCkudmFsdWUoKSAtIHhQb3MpOworICAgICAgICAgICAg
aWYgKHRleHQtPngoKS0+bnVtYmVyT2ZJdGVtcygpID4gMCB8fAorICAgICAgICAgICAgICAgIHRl
eHQtPnkoKS0+bnVtYmVyT2ZJdGVtcygpID4gMCB8fAorICAgICAgICAgICAgICAgIHRleHQtPmR4
KCktPm51bWJlck9mSXRlbXMoKSA+IDAgfHwKKyAgICAgICAgICAgICAgICB0ZXh0LT5keSgpLT5u
dW1iZXJPZkl0ZW1zKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgc2VlblBvc2l0aW9uZWRFbGVt
ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBuZWVkc1dvcmRTcGFjaW5nID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgaW50IGlnbm9yZVgsIGlnbm9yZVk7CkBAIC0yMzksOSArMjM5LDExIEBA
IHN0YXRpYyB2b2lkIHBsYWNlQm94ZXNWZXJ0aWNhbGx5V2l0aEFic0IKICAgICBmb3IgKElubGlu
ZUJveCogY3VyciA9IGZsb3ctPmZpcnN0Q2hpbGQoKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRP
bkxpbmUoKSkgewogICAgICAgICBpZiAoY3Vyci0+aXNJbmxpbmVGbG93Qm94KCkpIHsKICAgICAg
ICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqIHRleHQgPSBzdGF0aWNfY2FzdDxTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50Kj4oY3Vyci0+b2JqZWN0KCktPmVsZW1lbnQoKSk7Ci0gICAg
ICAgICAgICBiYXNlbGluZSArPSB0ZXh0LT5keSgpLT5nZXRGaXJzdCgpID8gc3RhdGljX2Nhc3Q8
aW50Pih0ZXh0LT5keSgpLT5nZXRGaXJzdCgpLT52YWx1ZSgpKSA6IDA7Ci0gICAgICAgICAgICBp
ZiAodGV4dC0+eSgpLT5nZXRGaXJzdCgpKQotICAgICAgICAgICAgICAgIGJhc2VsaW5lID0gc3Rh
dGljX2Nhc3Q8aW50Pih0ZXh0LT55KCktPmdldEZpcnN0KCktPnZhbHVlKCkgLSB5UG9zKTsKKyAg
ICAgICAgICAgIGJhc2VsaW5lICs9IChpbnQpKHRleHQtPmR5KCktPmdldEZpcnN0KCkudmFsdWUo
KSk7CisKKyAgICAgICAgICAgIGlmICh0ZXh0LT55KCktPm51bWJlck9mSXRlbXMoKSA+IDApCisg
ICAgICAgICAgICAgICAgYmFzZWxpbmUgPSAoaW50KSh0ZXh0LT55KCktPmdldEZpcnN0KCkudmFs
dWUoKSAtIHlQb3MpOworCiAgICAgICAgICAgICBwbGFjZUJveGVzVmVydGljYWxseVdpdGhBYnNC
YXNlbGluZShzdGF0aWNfY2FzdDxJbmxpbmVGbG93Qm94Kj4oY3VyciksIGhlaWdodE9mQmxvY2ss
IG1pblksIG1heFksIGJhc2VsaW5lLCB5UG9zKTsKICAgICAgICAgfQogICAgICAgICBjb25zdCBG
b250JiBmb250ID0gY3Vyci0+b2JqZWN0KCktPmZvbnQodHJ1ZSk7CkluZGV4OiBMYXlvdXRUZXN0
cy9zdmcvVzNDLVNWRy0xLjEvY29vcmRzLXVuaXRzLTAxLWItZXhwZWN0ZWQucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1l
LXR5cGUgPSBpbWFnZS9wbmcKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFlQUFBQUZvQ0FZQUFB
Q1BOeWdnQUFBZ0FFbEVRVlI0bk96ZGVWd1U5LzAvOE5mQ0xwZGkKUkZ6eEFBR1BGSXdVRE9LQkVj
VUVxd2FOaGVJWk5WN0ZyeWJtTXRTa1VXTitCaVcxMGRqR2lESFdoS2lBcHRZRHhZQWdTRVFVd1Zi
agpHcEFjSlJwQUZCWGtXbmJmdnovb1RuYVh2WkJqaUx5ZlBuamc3c3g4NXZONXo4em56ZHdTSXFK
eDQ4YUJNY1lZWSswakl5TUQwdURnCllHUm1abUw4K1BGaTE0Y3h4aGg3NUowK2ZScmp4bzJERkFD
Q2dvS1FucDR1ZHAwWVk0eXhSMTV3Y0REVWFqV3N4SzRJWTR3eDFobHgKQW1hTU1jWkV3QW1ZTWNZ
WUV3RW5ZTVlZWTB3RW5JQVpZNHd4RVhBQ1pvd3h4a1RBQ1pneHhoZ1RBU2RneGhoalRBU2NnQmxq
akRFUgpjQUptakRIR1JNQUptREhHR0JNQkoyREdHR05NQkp5QUdXT01NUkZ3QW1hTU1jWkV3QW1Z
TWNZWUV3RW5ZQ05VS2hXdVhic21mTDU5Cit6WUtDd3ZiYkg1VlZWVzRjZU5HbTVYZlVuVjFkVGg3
OXV4RFRkdldzUk5UZTY4bnJhbTZ1bHJzS25RNit1dUxNV1ZsWlVoTFM4T2QKTzNmYXRENnR1YjQr
ZVBDZ1ZjcnBURVJMd0NkUG5rUklTQWdrRWdtR0RoMktlZlBtNFlVWFhzRGl4WXV4YmRzMktKVktz
YXFHQ3hjdQp3TS9QRDMvODR4K0Y3OWF1WFl2cDA2ZTN5ZnhpWTJQaDdPeU1Bd2NPdEVuNUxaV1Rr
NFBodzRjakxDenNvYVp2eTlpSnFiM1hrOVowCjd0dzVKQ1VsaVYyTlRzWFErbUxJenAwN0VSOGZq
NHlNRER6eHhCT29xNnRyc3pxMTV2cjY0NDgvSWlFaG9WWEs2alRHang5UFFVRkIKSkliMDlIUUNR
RnUyYkJHK3UzVHBFdG5iMjlPU0pVdEVxWlBHaXkrK1NCTW1UQkErbDVlWFUwRkJRWnZOejhYRlJT
Y09IYzNtelp2Sgp4Y1hGb25GcmEyc3BMUzFOK056V3NSTlRXNjRuK25Gc0xZbUppUjE2WFRPbXJl
TFJudlRYRjMxVlZWWFVwVXNYVXFsVVJFVDA5ZGRmCnQrcjgyM3JiTENnb29MZmVlcXZWeW50VWFm
S3VxSWVnblp5Y0FBQVNpVVQ0enRmWEZ3RUJBVGg5K3JRb2RWS3IxUUFBcVZRS0s2dGYKd3VQczdJ
ekJnd2MzdXp3aXNtZzhtVXltRTRlT3hzYkd4bUQ5R2hvYWRENHJsVXJNbXpjUFo4NmNFYjU3Mk5o
MVpLMjlubGdTUjB1WQpXOTlLU2txd2FkTW12UExLS3c4MXZWaE14VU0vZHRwYXN6Mm01bU9Pc2ZW
RjMrWExsMUZmWHkrTUV4Z1kyR3AxYW85dGMvRGd3VkNwClZIeDB4VUpTc1N1Zzc4R0RCL2oyMjIr
eGVQRmluZStycXFxd2V2VnEyTnJhb3Fpb0NQMzc5MGRNVEF6czdlMlJrSkNBMTE1N0RhdFgKcjha
TEw3MkUrUGg0ckZ1M0RzSEJ3ZGl4WXdmUzA5TVJHeHNMVjFkWGVIdDdJem82R2pLWkRDZE9uSUNu
cHllQXh2TmhxMWF0UXUvZQp2WEh6NWsxODg4MDNzTE96QXdEOC9QUFBpSXVMdzZGRGg1Q2RuVzF4
ZVZGUlVlalZxeGV5c3JMUW8wY1BEQnMyRElHQmdSZzdkcXpCCnRtdnFFQmNYQjFkWFYzenh4UmZ3
OXZZMjIvNkxGeS9pelRmZnhJMGJOL0RSUngvQjBkRVJpeFl0d211dnZZWUZDeFkwbVU5ZVhoNWkK
WTJNaGw4dGhiMitQclZ1M0lpa3BDZTd1N29pSmljSEZpeGRSVlZXRmp6NzZDS05HalRKWTExT25U
aUUzTnhjU2lRU0hEeDlHYkd3cwpoZzRkaXExYnQrTElrU080ZnYwNmlvcUtzSGJ0V256NTVaZEM3
STRkTzRZbFM1YkF6YzBOKy9mdng2QkJnM0QrL0hsRVJFVGdrMDgrCndjU0pFMUZhV21weFBXcHFh
ckJod3daMDY5WU5lWGw1Q0FnSXdLcFZxOHpHek54d1l6RWFPblJvcTY0bmxzWngrL2J0cUtxcU1o
cVgKaElRRTNMbHpCL2Z2MzhmaHc0ZU5ucTlmczJhTnpxbUUxTlJVZlBycHB4ZzBhQkNVU2lYMjdO
a0RHeHNiN042OUc4ODg4d3dBR0YwZQp4bUxrNCtOamRKa1lLOHRjckF6RjQ5eTVjd1pqWjhuMjE1
eDF6Tmd5YW1tL29tL1hybDA0ZVBBZ0dob2FzR0xGQ3RqYjIyUE9uRGtHClkxeFpXV20wN2NhMkNY
UGJwcmx0d3BMMkFzRHMyYlB4L1BQUFk5S2tTYkMydGpiWVZ2WS9ZaDZDdm5UcEVnR2dGMTU0Z2VM
ajQyblQKcGszazcrOVBjK2JNb2JLeU1wMXhnNEtDNlBQUFB5Y2lvdnI2ZWhveFlnU0Zob1lLdy92
MTYwZnZ2ZmVlOEhuaXhJa1VFUkZCUkVRbApKU1gwK09PUGs1ZVhGeDA5ZXBSKytPRUgrczF2ZmtO
TGx5NFZ4bi8yMldjcFBqNmVpSWhVS2hYMTdkdVhRa0pDaUlpb3JLeU1saTFiClJqMTc5clM0dkwv
OTdXLzArdXV2RXhIUjVjdVhDUURGeE1UUUR6LzhZREFXcnE2dTlNUVRUOUNSSTBjb0xTMk5QRHc4
YU1DQUFhUlUKS2kxcWYycHFLZ0dnRXlkTzBQSGp4K21ERHo0d0d2ZnM3R3h5Y25JaVB6OC9Pbmp3
SUVWR1JwSkNvYURKa3lmVC9mdjNTYVZTVVdSawpKTW5sY3Fxb3FDQWlvbTNidGxIdjNyMkppS2l1
cm83Njllc25ITXA2NTUxM0tEdzhYQ2pmdzhPRG9xT2pEY2FPaUdqSmtpVTBlUEJnCjRiTlNxYVRa
czJjVEVWRkRRNFBKZXVpYk5Ha1NaV2RuRXhGUmJtNHVBYUNMRnk5YUZETlR3dzNGcUtDZ29GWFhr
K2JFMFZSY2xFb2wKRFI4K1hKanUxVmRmRlE1aDZudnNzY2ZvNk5Hand1ZnZ2LytlZXZYcVJaNmVu
blRtekJuS3lNZ2dYMTlmY25Oek16dGZZekV5dGt4TQpsV1hKTnFVZEQzT3hNN1g5TldjZE16V2Zs
dllyaGlRbUpwS1ZsWlh3MlZDTXIxeTVZckx0cHJZSmM5dW1xVzNDa3ZacXBwUEpaSlNUCmsyTzBu
WjFkaHpnRXJhRlVLbEZTVW9KTGx5NmhyS3dNZFhWMXVIMzd0akE4T1RrWldWbFptRFZyRm9ER3c3
V0xGaTNDc1dQSGhML2MKN08zdGRRNlJPamc0Q0o5ZFhGd3djT0JBK1BqNElEUTBGTzd1N3Bnd1lR
SysvZlpiQUkwWHBCdy9maHkvKzkzdkFBQldWbGFZTW1XSwpVSlpjTG9lUGo0OXdPTXRjZVFBUUZ4
Y0haMmRuQU1EUW9VTWhsOHNCQU83dTdrYmpNSC8rZkV5ZE9oWEJ3Y0hZdEdrVHZ2dnVPNlNtCnBs
clUvcWVmZmhvelo4N0VXMis5aGJpNE9LeGN1ZExvZkVhTkdnVXZMeTk0ZTNzalBEd2NPM2JzUUg1
K1BvZ0laODZjUVhKeU12cjAKNllOYnQyNGhNek96eWZReW1ReGhZV0h3OWZVRjBIZ1lTNkZRNkl5
amliMSs3QURneFJkZlJHRmhJUzVjdUFDZ2NTOHNJaUlDQUpDWQptR2h4UGRMUzBwQ2ZuNCtSSTBj
Q0FQejkvYkZqeHc2NHU3dWJqWm01NFlaaWRQdjI3VlpkVDVvVFIxTnh1WHYzTGk1ZHVvVGp4NDhE
CkFKWXVYV3J3MEd0WldSbnUzYnVIWHIxNkNkOTVlSGpBemMwTjA2Wk53MU5QUFlXZ29DREV4OGVq
dUxnWUNvWEM1SHdOeGFpNHVOam8KTWpGVmxpWGJsSFk4ek1YTzFQYlhuSFhNMUh4YTJxOVl3bENN
aHd3WllyUk9wcllKL1JqcXI2L210Z2xMbDVGTUpvT1RreE1LQ2dxYQoxZGJPcUVNazRJQ0FBTHo4
OHN2WXYzOC9DZ29LVUZ4Y2pLZWZmbG80djNIKy9Ibkk1WExJWkRKaG1oRWpSZ0FBOHZQekxacUhS
Q0xSClNkQ09qbzZvcmEwRkFKdytmUnBlWGw3bzNyMjdNTHhyMTY0NjQrdFBiNm84eldkTmNnU0Ez
cjE3Q3h1Rk1ZODk5cGp3ZjgzaHNNTEMKUW92YnYzbnpaaFFVRk1EZjM5L3NvUjk3ZTN1aFV3S0E3
T3hzT0RzN3c4YkdCalkyTmhnelpneFNVbExnNysvZlpGcUpSSUp0MjdiaAo3dDI3aUltSlFVWkdC
aW9ySzV1TW8vMS8vZlA4L3Y3KytPS0xMd0EwWGhILzdMUFBOcnNlbVptWkNBd00xQ2s3TWpJU3pz
N09abU5tClNVejFZOVRhNjBsejRtZ3FMajE3OWtSWVdCaW1UcDJLRlN0V3dNUER3K0R5Lys2Nzd3
QUFQWHIwYURJUDdmRzl2THpnNU9TRTFOUlUKczh0RFAwYW1sb201c3N4dFU5cnhNQmM3VTl0ZmE2
N3JMZTFYTEtFZlkxTjFNaFYvL1JqcTE5K1NiY0tTWmFUNS90ZHlPNTZZT3R3NQpZRHM3Tzh5WU1R
T3JWcTFDVWxJU25udnVPVlJYVjZPOHZCeFZWVlhvMnJVckFNREh4d2RTcWJSVjdqMzc2YWVmVUY1
ZTN1VDdsbHdVCjllcXJyK0tGRjE3QTVjdVhZV3RyQ3djSEI0d2JOODdpNmQzZDNlSG82QWhIUjBm
Y3VISERvdmJMWkRMSTVYSzgvLzc3V0x4NHNjNkcKYjA1NWVUbWtVcWx3M3MrYzJOaFlaR1ZsWWZm
dTNkaTFheGZPbno5djhid0FZTkdpUlZpL2ZqMDJiTmdBT3pzNzJOallOTHNlcGFXbAp1SExsaXNG
aDV0YVpoMW1uMm1JOXNUU081dUt5Yjk4KzlPM2JGeDkrK0NIeTh2Snc4dVJKZE92V1RXY2NUU2R1
eVcwdFZsWldrRXFsCnpWNHZUQzJUNXBabGpxblltZHIrMm10ZGI0djF4VnlkVE1YZm5OYnNaNVZL
SlJ3Y0hCNnFIcDFKaDlnRDFxZFpRVlVxRllER3Y4aFYKS3BWd3lCSm9QSnpXME5BZ1hLUUUvSEts
WVhQMTdkc1h0MjdkYXRWREpsT21UTUhTcFV1Um5KeU0zTnhjcEtlbk4ydjZtemR2b3JLeQpFc09H
RGJPNC9XdldyTUh4NDhjaGtVaXdaczJhWnMzUDA5TVRLU2twT24vTkVwSEJxOUd2WHIySzVjdVhZ
L1BtelRwL0xXc3oxOG5NCm1UTUg5Ky9meDBzdnZZVGYvLzczRDFVUGQzZDNGQllXb3Fpb1NHZmMv
UHg4c3pHek5LYmFXbnM5YVU0Y1RjV2xwS1FFWldWbDJMSmwKQzVLVGszSDU4bVhFeDhjM0tjdlQw
eE4yZG5hNGQrK2V5WG9WRkJUZzl1M2JlUExKSjV1MVBBRFR5NlM1WlJtaWlZZTUySm5hL2xwNwpY
VGVtTGZvVmMzVXlGWDhOWTl2bXcyd1R4cFNXbHNMRHc2TlowM1JHb2laZ3pWTmV0QytscjZtcHdm
NzkreUdYeXpGKy9IZ0FRRVJFCkJGeGRYWkdTa2lLTWw1dWJDeTh2TDB5YU5BbEE0MTlxT1RrNXFL
K3Z4ODJiTjFGVVZLUnpIcm0rdmw0blFWZFhWd3NKZnViTW1aQksKcGRpeFk0Y3cvTnExYXlndkx4
ZkdxYTZ1UmsxTmpYQyt4RlI1QUxCKy9YbzgvdmpqV0xseUplYk1tU05jZVd1Szl2UnBhV21ZUG4w
NgpmSDE5TFdwL2NuSXlCZzhlREc5dmI4VEV4T0Rqano4MmVYaStvYUVCTlRVMXd1ZTVjK2VpdExR
VWtaR1JxS2lvUUZsWkdkNTk5MTNoCkZvWDYrbnJoNFNnS2hRSnF0UnBYcjE2RlNxVkNSa1lHYW10
clFVUWdJblR2M2gwLy9mUVRBS0Npb3FKSjdBQ2dlL2Z1Q0FzTFEwNU8Kam5DWXk1SjZhSnM1Y3li
czdPeXdjT0ZDS0JRS0tCUUtSRVZGd2MzTnpXek1MSW1wZm94YWV6MXBUaHhEUTBPTnh1WDI3ZHZD
QXhBbQpUcHlJNTU1N1R0aUQwV1psWllYZi92YTNCaE9DOXJhU25wNk9zV1BIWXVUSWtXYVhoNkVZ
R1ZzbWxxeGpwcllwN1hoY3VIREJaT3hNCmJYL05XY2ZNTGFPVzlpdjY3dCsvRDdWYXJmT1VNdjBZ
bTZyVGpCa3pqTVpmUDRiNjI2WWwyNFM1WlFRMHJrdEtwUklCQVFFRzI4aTAKaUhVVjlGZGZmVVVo
SVNFRWdOemQzV25Sb2tVVUVoSkMvdjcrTkh2MmJQcnZmLytyTTM1ZVhoNE5HVEtFL3ZLWHY5RHg0
OGRwMXF4WgpwRkFvaE9HblRwMGlaMmRuR2pCZ0FMM3h4aHUwYk5reWV2cnBweWt0TFkweU1qS29l
L2Z1MUxkdlg4ck96cVpMbHk3Um9FR0R5TmJXCmxyNzY2aXNpSXRxN2R5ODVPanFTdDdjM3paZ3hn
NlpPblVxQmdZRzBkKzlleXNuSm9kR2pSd3NQRFVsTlRUVmIzaXV2dkVJQUNBQloKVzF1VGk0c0xM
Visrbk9ycTZnekdZOTI2ZGVUajQwT2JObTJpalJzMzBzc3Z2MHozNzkrM3FQMXBhV25VdTNkdnVu
VHBFaEVSWGIxNgpsYXl0cmNuVDA5UGdsWWg3OSs2bExsMjZVSjgrZlNnaElVSDQvdU9QUHlaYlcx
dVNTQ1FrbDh2cDBLRkRSRVNVazVORC92NytCSUMyCmI5OU9GUlVWNU9mblIxMjdkcVdGQ3hkU1Vs
SVNPVGc0MFBQUFAwOTFkWFgwMWx0dmtVUWlvVVdMRnRHSkV5ZDBZcWZkL2xPblR0SEcKalJ1YjFN
OVlQUXc1ZE9nUXllVnlZVDNLeXNxeWVKMHhOZHhZakZwelBYbnc0SUhGY1N3dExUVWFseXRYcnRE
QWdRTXBOamFXRGg4KwpUTXVYTHhldW50ZVhsSlJFczJiTjB2bHUrUERoNU9mblIydldyS0gxNjlm
VHhJa1RxYVNreE96eU1CWWpVOHZFV0ZtV2JLUGE4ZmorCisrOU54czdjOW1mcE9tWnFHVm5TRDVo
YVgvU2RPM2VPeG80ZFN3Qm8xYXBWVkZSVVpEREc1dFliVS9FM3QyMmEyaVlzV1VaRVJIdjIKN0tI
cDA2Y2JqQ2RycE1tN290NkcxRnhxdFpvS0Nncm8rdlhyQm9mWDFkVlJkWFUxRVRWZUN0OWNEUTBO
ZE92V0xTSWlxcW1wZWZpSwpFbEYwZERRVkZCVFFmLzd6SC9yNjY2OHBLU21KRml4WVFDa3BLU2Fu
Ky9ubm40MTJudWJhM3hycTZ1cm8rdlhyUnV1Z1RSTnJvcWJ4CjFzVFJuTnJhMmhiWFE2MVc2eVFN
L1dHbVl2WXdNVzNOOVlTb2VYRTBGQmZOTFVjVkZSVlVWVlZsZG41VHBreWhIMy84VWZnOGZQaHcK
ZXUyMTE2aXFxcXJKN1grbTVtdUtxV1hTM0xLMDZjZkRXT3dzMmY1YWExMDNwN1hYRjB2cVpDcis1
cmJObHZZejA2Wk5vMisrK2VhaApwdTBzTkhsWE1uNzhlRktyMWNqSXlCQmpCL3lSdEhQblRpUW1K
aUkxTlZYbis1TW5UMkxnd0lFWU5HaVFTRFZqRExoeDR3WTJiTmlBCkxWdTJ3TTdPRGdFQkFRZ0tD
c0pmLy9wWHNhdldLbmo3RTgvYmI3K05rSkNRWmwxdzJoa0ZCd2REclZaM3ZLdWdId1dqUjQvR3lw
VXIKRVJFUkFYOS9mOVRVMUtDMHRCU2hvYUc4OFRQUjlldlhEMisvL1RiMjc5K1BCUXNXQ05kTVBD
cDQreE5IWm1ZbVFrTkRqVDVSakRYRgplOEJ0NU42OWU4ak16RVJKU1FtQ2c0TjV3MmNkMG1lZmZT
WmNsRE5nd0FETW5qMWI1QnExRHQ3K1dFZW0yUVBtQk13WVk0eTFJMDBDCjdwRDNBVFBHR0dPUE9r
N0FqREhHbUFnNEFUUEdHR01pNEFUTUdHT01pWUFUTUdPTU1TWUMwZTREVmt1c1VROGJLQ0V6K1dQ
Sk9HS08KMTBDbVgvdkhHR09NR2NKN3dJd3h4cGdJT0FFenhoaGpJdUFFekJoampJbUFFM0E3T1hy
MEtIeDhmQ0NSU0RCaHdnVDg0UTkvd0pneApZL0Q3My84ZTU4NmRFN3Q2akRIRzJoa240SFl5ZGVw
VUxGbXlCQUFRSFIyTmd3Y1BJak16RXoxNzlzUzRjZU9RbFpVbGNnMTExZFhWCklUMDlYZXhxTU1i
WUk0c1RjRHZxM3IwN0FFQWlrUUFBcksydDhmcnJyNk8rdmg1NzkrNFZzMm82bEVvbDVzMmJoek5u
empRWjF0RFEKWUhRNkltckxhakhHMkNPRlgwY29zbHUzYmdFQWV2ZnVEUUFvTFMxRlRFd01MbDY4
aUtxcUtuejAwVWNZTldvVTh2THlFQnNiQzdsYwpEbnQ3ZTJ6ZHVoVkpTVW53OGZIQmhnMGIwSzFi
TitUbDVTRWdJQUNyVnEweVdWWjZlanBpWTJQaDZ1b0tiMjl2UkVkSFF5YVQ0Y1NKCkUvRDA5TVRX
clZ0eDVNZ1JYTDkrSFVWRlJkaStmVHZPblR1SDNOeGNTQ1FTSEQ1OEdMR3hzUmc2ZENnQW9McTZH
bEZSVWVqVnF4ZXkKc3JMUW8wY1BEQnMyRElHQmdSZzdkcXpSZWpER1dHZkdlOEFpcXF1cncvLzdm
LzhQUFhyMHdOeTVjNkZTcWJCdzRVS3NYNzhlNmVucApDQWdJd0xScDAzRDM3bDNVMTlmandJRURT
RXBLZ3BlWEY4TER3K0hrNUlTd3NEQk1uVG9WZi9yVG54QVZGWVUzM25nRGVYbDVKc3NhCk1tUUk4
dlB6a1pTVUJCY1hGNlNscFFFQU5tN2NDQUI0NDQwMzBLZFBIMFJFUk9Denp6NkRUQ2JEZ2dVTE1H
TEVDRVJGUldIaXhJbDQKNTUxM2hIYnMzcjBiZG5aMldMdDJMVDc0NEFNa0pDUkFJcEdnZi8vK0p1
dkJHR09kR2U4Qml5QXFLZ3BXVmxhNGVmTW0vUDM5Y2ViTQpHUXdhTkFqNzkrOEhFUW1IZnZ2MDZZ
TmJ0MjRoTXpNVDA2Wk5nNWVYRnp3OFBCQWVIbzd3OEhDa3BhVWhQejhmSTBlT0JBRDQrL3RqCng0
NGRjSGQzUjJKaW9zbXlCZzRjaUs1ZHV5STBOQlFBTUdIQ0JIenp6VGM2OWRRY0twZkpaQWdMQzRP
dnJ5OEF3Tm5aR1FxRlFoZ3YKTGk0TzA2ZFBCd0FNSFRvVWNya2NBT0R1N202MlRZd3gxbGx4QWhi
QnhvMGJNV0xFQ0VpbHV1SFB6czZHczdNemJHeHNBQUJqeG94QgpTa29LdkwyOUFRRDI5dlpDY2dP
QXpNeE1CQVlHQ29rU0FDSWpJeTBxU3lLUjZFem42T2lJMnRwYW5mcG9oa3NrRW16YnRnM2ZmZmNk
ClB2bmtFK1RtNXFLeXNsSm4ydXpzYk9Gejc5NjloVDhLek5XRE1jWTZLMDdBSXJDMnRtNlNmQUdn
dkx3Y1Vxa1V6enp6akVYbGxKYVcKNHNxVkt3YUhOYmNzYzJKalk1R1ZsWVhkdTNkajE2NWRPSC8r
dkREczFWZGZ4UXN2dklETGx5L0QxdFlXRGc0T0dEZHVYSnZVZ3pIRwpIaFY4RHJnRDhmVDBSRXBL
aXM2ZUtCSGg5T25UQnNkM2QzZEhZV0VoaW9xS2RNYlB6ODl2ZGxtR2FQYUFyMTY5aXVYTGwyUHo1
czJRCnlXUk54cHN5WlFxV0xsMks1T1JrNU9ibTZ0eSsxQnIxWUl5eFJ4RW40SGFrdWVMNXpwMDdC
b2ZQblRzWHBhV2xpSXlNUkVWRkJjcksKeXZEdXUrOWk4T0RCQUJwdkFhcXBxUkhHbnpsekp1enM3
TEJ3NFVJb0ZBb29GQXBFUlVYQnpjM05iRm4xOWZWUXE5VkNXZFhWMVZDcApWTUxuN3QyNzQ2ZWZm
Z0lBWExod0FXcTFHbGV2WG9WS3BVSkdSZ1pxYTJ0QlJDQWlyRisvSG84Ly9qaFdybHlKT1hQbXdO
N2UzdUkyCk1jWllaOFVKdUowY1BYb1VuMzMyR1FEZ0wzLzVDMDZlUE5sa25DRkRobUQ3OXUxSVNF
aUFzN016aGc0ZENsOWZYL1RyMXcvNzl1M0QKeFlzWGNlellNU1FtSmdKbzNMdmN2MzgvcmwyN2hp
RkRobUR5NU1tWVBuMDZldmJzYWJLc3pNeE01T2JtNHV6WnN6aDM3aHorL2U5LwpJems1R1ZldVhF
RktTZ3FBeHIzYXYvLzk3MWk4ZURIR2pSc0hQejgvVEpzMkRVdVhMc1g4K2ZOUlZWV0YrZlBuUTZs
VTR0NjllMWk0CmNDSHM3T3dnbFVyUnUzZHZyRml4QXZYMTlTYnJ3Umhqblpsay9QanhwRmFya1pH
UjBhNHo1dGNSR2xkZlg0L2k0bUs0dTdzYlBGZXMKajRoUVZsWUdGeGVYRnBlbHJieThIRDE3OWhR
KzE5VFVDSHUzU3FWU09CeTljZU5HL09FUGYwQnRiUzBxS3l0eDkrNWRKQ1ltNHZubgpueGZPL2Jh
a0hvd3g5aWdKRGc2R1dxM21pN0E2SWhzYkd3d2NPTkRpOFNVU2ljSGsrekJsYWROT3ZnQjBEaTFy
a3UvT25UdHg2dFFwCnZQbm1tenJqV2x0Ync4UERvMVhxd1Joamp5Sk93S3hGUm84ZWpaVXJWeUlp
SWdMKy92Nm9xYWxCYVdrcFFrTkRNV2pRSUxHcnh4aGoKSFJZbllOWWlQajQrS0MwdFJXWm1Ka3BL
U2hBY0hNeUpsekhHTENCYUFpNVo5a2VvWUEwVnJLR0dsY0hmQkN0WXdScFNXTU1LVnBEQwpHclph
NCtpUGI2b3NZK01ZSHM4S0toRFVhTkQ2WFc5d1hJQXZKbnJzc2Njd2RlcFVzYXZCR0dPL0txSWxZ
RklUQ0FSQURZTEU2RzlUCjQxQXIvRk1EQm4rYkdxYjltekhHR0hzWW9pWGdQanMvTVh1bE1VR0dC
dGlnUVpTcm9LMmdoTlRzZUR0aXhZb2dZNHl4WHpPK0Q1Z3gKeGhnVEFTZmdUdVQyN2Rzb0xDd1V1
eHFNTWNiQVYwRzNtOFRFUkt4YnR3N1hybDFEY0hBd0JnNGNDQ0pDVFUwTmNuTnpNV0RBQUp3NApj
YUpONjdCMjdWcWNQbjI2eVdzSEdXT010VDlPd08xa3hvd1pLQ29xd2x0dnZZWG82R2lNR2pWS0dG
WlJVWUdGQ3hlMitqenI2dXB3Cjl1eFpCQWNIQXdEZWZmZGRvOCtoWm93eDFyNzRFSFE3NnQ2OU93
RG92SWNYQUxwMDZZTFlXUE5YY3pVME5GZzhMNlZTaVhuejV1SE0KbVRQQ2Q4N096dndTQk1ZWTZ5
QjREMWhrUklUVnExZmpndzgrUUY1ZUhtSmpZeUdYeTJGdmI0K3RXN2NpS1NrSmxaV1Z5TTNOaFVR
aQp3ZUhEaHhFYkc0dWhRNGNDYUh3Kzg0WU5HOUN0V3pmazVlVWhJQ0FBcTFhdHd0YXRXM0hreUJG
Y3YzNGRSVVZGV0x0MkxiNzg4a3NjCk9uUUkyZG5aQUlDcXFpcXNYcjBhdHJhMktDb3FRdi8rL1JF
VEV3TjdlM3VrcDZjak5qWVdycTZ1OFBiMlJuUjBOR1F5R1U2Y09BRlAKVDA4eFE4WVlZNDhFM2dN
V3dmSGp4eEVYRjRkUFB2a0VjK2ZPRlY3N1YxOWZqd01IRGlBcEtRbGVYbDRJRHc5SGx5NWRzR0RC
QW93WQpNUUpSVVZHWU9IRWkzbm5uSGFHc3NMQXdUSjA2RlgvNjA1OFFGUldGTjk1NEEzbDVlWGpq
alRmUXAwOGZSRVJFNExQUFBrTzNidDN3Ci9mZmY0L3IxNjhLMHp6NzdMRWFPSEltLy92V3ZPSERn
QUhKeWNqQmp4Z3dBalc5bXlzL1BSMUpTRWx4Y1hKQ1dsZ2FnOGNVTGpESEcKV283M2dFVWdrOGxn
WTJNRElvS05qWTN3SHQ1Um8wYkJ5OHNMSGg0ZUNBOFBSM2g0T0lnSVlXRmg4UFgxQmRCNEdGbWhV
QUFBMHRMUwprSitmajVFalJ3SUEvUDM5c1dQSERyaTd1d3Z6MGh6dWxzdmw4UEh4d1lFREJ3QUF5
Y25KeU1yS1FtcHFxbENuUllzV1lkbXlaY2pPCnpzYm8wYU14Y09CQWRPM2FGYUdob1FDQUNSTW04
QVZjakRIV1NqZ0JpeUFrSkVSSW12UG16Y09xVmF1RVlmYjI5cERMNWNKbmlVU0MKYmR1MjRidnZ2
c01ubjN5QzNOeGNWRlpXQWdBeU16TVJHQmlvYzA0NU1qSlNaMTdhd3lRU2lmRDUvUG56a012bHds
dU5BR0RFaUJFQQpnUHo4Zkl3ZVBWcG5mQUJ3ZEhSRWJXMXRpOXZQR0dPTUQwR0xUaUtSWU5PbVRT
YkhpWTJOeGJwMTYvRGFhNjlod29RSlFsSXNMUzNGCmxTdFhIbXErMWRYVktDOHZSMVZWbGZDZGo0
OFBwRklwSGp4NDhGQmxNc1lZc3h3bjRBNUFleTlVMzlXclY3RjgrWEpzM3J5NXlYanUKN3U0b0xD
eEVVVkdSOEIwUklUOC9YL2lzZjhXMWhwZVhGMVFxRlM1Y3VDQjhWMVpXaG9hR0JuaDdlejlzVXho
ampGbUlFM0E3cXFtcApBZEI0MzY4eERRME53bmdBb0ZBb29GYXJjZlhxVmFoVUttUmtaS0MydGha
RWhCa3pac0RPemc0TEZ5NkVRcUdBUXFGQVZGUVUzTnpjCkFEVGU5cVM1d0t1aW9nTFYxZFdvcWFr
QkVTRWlJZ0t1cnE1SVNVa1I1cFdibXdzdkx5OU1talFKUU9ORllXcjFMNitjcUs2dUZzNVgKTThZ
WWF4bE93TzBrTVRFUi8vakhQd0FBNzcvL1BrNmZQdDFrbkgzNzl1SGl4WXM0ZHV3WUVoTVRBUUNU
SjArR241OGZwazJiaHFWTApsMkwrL1Btb3FxckMvUG56NGVycWl2Mzc5K1BhdFdzWU1tUUlKaytl
ak9uVHA2Tm56NTRBZ0NsVHB1RHZmLzg3Rmk5ZWpKeWNISHo1CjVaZDQ4T0FCUHZ6d1E4aGtNaHc1
Y2dTSER4L0c1czJiY2VMRUNlemZ2eCtIRGgyQ1ZDcEZabVltY25OemNmYnNXWnc3ZHc3Ly92ZS8K
a1p5Y2pDdFhydWdrYmNZWVl3OUhNbjc4ZUZLcjFjakl5R2pYR2FzbDFoYTltYWoxMzNMVXV1TTFr
SFc3eEt1bXBnYjI5dllBR2greQpvWDA0bW9oUVZsWUdGeGVYSnRPVmw1Y0xDZGtRSXNMMTY5ZGha
V1dGZ1FNSHRuN0ZHV09NNlFnT0RvWmFyZWFyb0g4dE5Na1hhSHJPCldDS1JHRXkrQUV3bVg4MjAv
SFFzeGhocmYzd0ltakhHR0JNQkoyREdHR05NQktJZGdpNVo5a2VvWUEwVnJLR0dsY0hmQkN0WXdS
cFMKV01NS1ZwRENHclphNCtpUGI2b3NZK01ZSHM4S0toRFVhTkQ2WFc5d1hLQ2ZXQ0ZrakRIMkt5
WmFBaVkxZ1VBQTFDQklqUDQyTlE2MQp3ajgxWVBDM3FXSGF2eGxqakxHSElWb0M3clB6RTdOWEdo
TmthSUFOR2tTNUN0b0tTa2pOanJmRC9Gc0VHV09Nc1NiNEhEQmpqREVtCkFrN0FuZGo5Ky9meDQ0
OC9BZ0FxS3l2NVJRdU1NZGFPT0FHM2szLzk2MTk0OHNrbklaRklNR3JVS0J3N2Rrd1lkdTNhTmN5
WU1RTVMKaVFULzkzLy9oNUtTa2phdHk0MGJONFMzTUgzNDRZY0lDQWpBNk5HamNlblNwVGFkTDJP
TXNWL3dnempheWZUcDAxRldWb2JJeUVpcwpYTGxTZU1jdTBQaGloSDM3OXVIcnI3L0d4eDkvM09a
MWVmWFZWMUZmWDQrNHVEZ0FqVS9XQ2dnSUVKNGJ6Umhqck8zeEhuQTdjbkp5CjB2bXRUU3FWd3Mv
UHorQjBSTlNxOWJoMjdScUtpNHVoVkNvQk5ENVo2eC8vK0FmdTNMblQ3UGszTkRTMGF0MFlZNnl6
NEQzZ0RzVEsKU3Zmdm9ZU0VCTnk1Y3dmMzc5L0g0Y09IY2Zic1dRQ043d0dPaVluQnhZc1hVVlZW
aFk4KytnaWpSbzFDWGw0ZVltTmpJWmZMWVc5dgpqNjFidHlJcEtRa2pSb3pRS1hmV3JGbjQ4NS8v
akpDUUVDUWtKTURGeFFYRGhnM0RzR0hEQUFDcHFhbjQ5Tk5QTVdqUUlDaVZTdXpaCnN3YzJOamJZ
dlhzM25ubm1HUURBcVZPbmtKdWJDNGxFZ2k2WHE5TUFBQ0FBU1VSQlZNT0hEeU0yTmhaRGh3NEYw
UGpjNmcwYk5xQmIKdDI3SXk4dERRRUFBVnExYVpiTHVqREhXMlhBQzdxQWFHaHF3ZWZObTRYMjlw
YVdsVUt2VklDSXNYTGdRQ1FrSjZOS2xDNVl2WDQ1cAowNmFob0tBQTlmWDFPSERnQU56ZDNmSDIy
MjhqUER6YzRONzJpeSsraUpTVUZKdytmUnBEaHc3Rjd0MjdNWFhxVkdING9FR0RrSmFXCmhweWNI
SHorK2VlWU1tVUtWcTVjaVVXTEZ1Ry8vLzB2NnV2cnNXREJBc1RGeFNFNE9CZzFOVFY0NTUxM2NQ
RGdRUUJBV0ZnWTFxMWIKaDFHalJ1SGl4WXNZUG53NEpreVlBRjlmWDZOMTc5NjllL3NFbGpIR09n
ZytCTjFCM2IxN0Y1Y3VYY0x4NDhjQkFFdVhMZ1VSSVRFeApFVVNFTTJmT0lEazVHWDM2OU1HdFc3
ZVFtWm1KVWFOR3djdkxDOTdlM2dnUEQ4ZU9IVHNNdm1paFc3ZHUrT3Fyci9EbW0yK2lvcUlDCjA2
ZFB4L2J0MjRYaEhoNGVjSE56dzdScDAvRFVVMDhoS0NnSThmSHhLQzR1aGtLaGdFd21RMWhZR0h4
OWZRRUF6czdPVUNnVUFJQzAKdERUazUrZGo1TWlSQUFCL2YzL3MyTEVEN3U3dUp1dk9HR09kRFNm
Z0RxcG56NTRJQ3d2RDFLbFRzV0xGQ25oNGVNRGEyaHJaMmRsdwpkbmFHalkwTmJHeHNNR2JNR0tT
a3BNRGYzeDlBNDF1VDVISzUyZkpsTWhtaW82Tng2dFFweU9WeXJGaXhBZ2NPSEJDR1N5UVNXRnYv
CjhxcEZMeTh2T0RrNUlUVTFGUktKQk51MmJjUGR1M2NSRXhPRGpJd01WRlpXQWdBeU16TVJHQmdJ
aVVRaVRCc1pHUWxuWjJlemRXZU0Kc2M2RUQwRzNvLzc5K3dOb2ZFZXZJZG9KRHdEMjdkdUh2bjM3
NHNNUFAwUmVYaDVPbmp5Sjh2SnlTS1ZTNFZ4c2MvM3d3dzl3ZG5hRwpvNk1qQUdEY3VISDQ1ei8v
aVRGanh1REFnUU9JaUlnd09xMlZsUldrMHNaVkpqWTJGbGxaV2RpOWV6ZDI3ZHFGOCtmUEEyZzhW
SDdsCnloV0QwN2UwN293eDlpamhQZUIyNU9QakEydHJhMXk3ZHEzSnNCOS8vRkZJMEFCUVVsS0Nz
ckl5Yk5teUJjbkp5Ymg4K1RMaTQrUGgKNmVtSmxKUVVuWWRtRUJGT256NXRVUjFLUzB2eDRZY2Y2
bndYR0JnSUR3OFBGQmNYRzUydW9LQUF0Mi9meHBOUFBvbXJWNjlpK2ZMbAoyTHg1YzVOM0U3dTd1
Nk93c0JCRlJVVTY5Y3ZQejI5eDNSbGo3RkhDQ2JnZE9UZzRJQ2dvQ0FjUEh0VFpDMWFyMVhqdnZm
ZncvUFBQCkM5L2R2bjBiQ1FrSkFJQ0pFeWZpdWVlZVE5ZXVYVEYzN2x5VWxwWWlNaklTRlJVVktD
c3J3N3Z2dml1YzYyMW9hRUJOVFkzUk9nd1kKTUFCYnRteEJRVUdCOEYxSlNRbCsrdWtuVEpreVJX
ZmMyN2R2Qy85UFQwL0gyTEZqTVhMa1NDZ1VDcWpWYWx5OWVoVXFsUW9aR1JtbwpyYTBGRVdIR2pC
bXdzN1BEd29VTG9WQW9vRkFvRUJVVkJUYzNON04xWjR5eHpvUVBRYmV6dzRjUFkrN2N1UWdNRE1U
WXNXTmhiMitQCkd6ZHVZTVdLRlUxdUYvcjczLzhPQndjSDlPN2RHOTI3ZDhlTUdUTWdsVXF4ZmZ0
MnZQTEtLNGlMaTBQUG5qMnhjK2RPOU92WEQvdjIKN2NQRml4ZFJXRmlJeE1SRXpKZ3hvOG44NVhJ
NWV2WHFoV1hMbHNIUHp3OXl1UndKQ1FsWXRHZ1JWcTllclRQdXYvLzliNnhkdXhaUwpxUlJmZi8y
MWNJNTQ4dVRKOFBQenc3UnAweEFSRVlINTgrZmo2TkdqbUQ5L1BqNzk5RlBzMzc4ZmYvempIekZr
eUJDNHU3dGo3OTY5CjZObXpKM3IyN0dtMDdvd3gxdGxJeG84ZlQycTFHaGtaR2UwNlk3WEUycUkz
RTdYK1c0NWFkN3dHc2piZldBT1VTaVVLQ2dyUXAwOGYKOU9qUm8ybDgxR3BZV1ZuaDd0MjdrTWxr
Nk5LbGk4N3crdnA2RkJjWHc5M2RYVGd2YTZrN2QrNmdSNDhlcUs2dXh2ZmZmNC8rL2ZzTAo1NFEx
QWdJQ0VCUVVoSGZmZlJmVjFkVUdMK3lxcWFtQnZiMjkwQjd0dzlGRWhMS3lNcmk0dURTWnJpVjFa
NHl4WDd2ZzRHQ28xV3JlCkF4YUxUQ2JERTA4OFlYUzQ1cUVjeHU2UHRiR3h3Y0NCQXg5cTNwcUU3
K0RnWUxJT0FOQ2xTNWNteVY5RGszd0JORGtYTEpGSURDWmYKb0dWMVo0eXhSd1dmQTJaTnFOVnEz
THg1VStkQ0tzWVlZNjJMRXpCcklpNHVEc3VYTDBkQVFBRDI3OTh2ZG5VWVkreVJ4SWVnV1JNTApG
aXdRdXdxTU1mYklFeTBCVzVFS2RnRHN4S29BWTR3eEppSStCTTBZWTR5SmdCTXdZNHd4SmdKT3dJ
d3h4cGdJT0FFenhoaGpJdUFFCnpCaGpqSW1BRXpCampERW1BazdBakRIR21BZzRBVFBHR0dNaTRB
VE1HR09NaVlBVE1HT01NU1lDVHNDTU1jYVlDRGdCTThZWVl5TGcKQk13WVk0eUpnQk13WTR3eEpn
Sk93SXd4eHBnSU9BRXp4aGhqSXVBRXpCaGpqSW1BRTdBUktwVUsxNjVkRXo3ZnZuMGJoWVdGYlRh
LwpxcW9xM0xoeG84M0tiNm02dWpxY1BYdjJvYVp0eTlpMXBGNHRWVlZWaGVMaTRvZWF0cnE2dXBW
cnc4elIzNmFOS1NzclExcGFHdTdjCnVkT205V25ON2VMQmd3ZXRVZzVyWDZJbDRKTW5UeUlrSkFR
U2lRUkRodzdGdkhuejhNSUxMMkR4NHNYWXRtMGJsRXFsV0ZYRGhRc1gKNE9mbmh6Lys4WS9DZDJ2
WHJzWDA2ZFBiWkg2eHNiRndkbmJHZ1FNSDJxVDhsc3JKeWNIdzRjTVJGaGIyVU5PM1ZleGFXcStX
MkxkdgpIMXhjWEJBWEY5ZnNhYytkTzRla3BLUTJxQlV6eHRBMmJjak9uVHNSSHgrUGpJd01QUEhF
RTZpcnEydXpPclhtZHZIamp6OGlJU0doClZjcGk3V2o4K1BFVUZCUkVZa2hQVHljQXRHWExGdUc3
UzVjdWtiMjlQUzFac2tTVU9tbTgrT0tMTkdIQ0JPRnplWGs1RlJRVXRObjgKWEZ4Y2RPTFEwV3pl
dkpsY1hGd3NHcmUydHBiUzB0S0V6MjBadStiVXE2WDAyK1h0N1UzdnZmZGVzOHBJVEV6czBNdlpH
UDIyL3hycApiOVA2cXFxcXFFdVhMcVJTcVlpSTZPdXZ2MjdWK2JmMWRsRlFVRUJ2dmZWV3E1WEgy
bzRtNzRwNkNOckp5UWtBSUpGSWhPOThmWDBSCkVCQ0EwNmRQaTFJbnRWb05BSkJLcGJDeStpVTh6
czdPR0R4NGNMUExJeUtMeHBQSlpEcHg2R2hzYkd3TTFxK2hvVUhuczFLcHhMeDUKODNEbXpCbmh1
NGVOWFV2cTFSS0dscG1oZGpWM21aV1VsR0RUcGsxNDVaVlhMSjV2UjJDbzdScjZ5MTliYTdiSDFI
ek1NYlpONjd0OAorVExxNit1RmNRSURBMXV0VHUyeFhRd2VQQmdxbFlxUHJ2eUtTTVd1Z0w0SER4
N2cyMisveGVMRmkzVytyNnFxd3VyVnEyRnJhNHVpCm9pTDA3OThmTVRFeHNMZTNSMEpDQWw1NzdU
V3NYcjBhTDczMEV1TGo0N0Z1M1RvRUJ3ZGp4NDRkU0U5UFIyeHNMRnhkWGVIdDdZM28KNkdqSVpE
S2NPSEVDbnA2ZUFCclB5YTFhdFFxOWUvZkd6WnMzOGMwMzM4RE96ZzRBOFBQUFB5TXVMZzZIRGgx
Q2RuYTJ4ZVZGUlVXaApWNjlleU1yS1FvOGVQVEJzMkRBRUJnWmk3Tml4QnR1dXFVTmNYQnhjWFYz
eHhSZGZ3TnZiMjJ6N0wxNjhpRGZmZkJNM2J0ekFSeDk5CkJFZEhSeXhhdEFpdnZmWWFGaXhZMEdR
K2VYbDVpSTJOaFZ3dWg3MjlQYlp1M1lxa3BDUzR1N3NqSmlZR0Z5OWVSRlZWRlQ3NjZDT00KR2pY
S1lGMVBuVHFGM054Y1NDUVNIRDU4R0xHeHNSZzZkQ2kyYnQyS0kwZU80UHIxNnlncUtzTGF0V3Z4
NVpkZkNyRTdkdXdZbGl4WgpBamMzTit6ZnZ4K0RCZzNDK2ZQbkVSRVJnVTgrK1FRVEowNUVhV21w
eGZYUVoyemFsaTZ6YytmTzZiUnIrL2J0QUJvNzk3VnIxMkxQCm5qM28xcTBiamg0OUtwU25iODJh
TlRxSHkxTlRVL0hwcDU5aTBLQkJVQ3FWMkxObkQyeHNiTEI3OTI0ODg4d3pKdHRqYkJuNitQaGcK
dzRZTjZOYXRHL0x5OGhBUUVJQlZxMWExS0RiNnkzVDc5dTA0ZCs2Y3dlVnZMbzVqeDQ1dDF2STF0
cDYxZEp2V3QydlhMaHc4ZUJBTgpEUTFZc1dJRjdPM3RNV2ZPSElNeHJxeXNOTnIybXBvYWcvRTN0
MTBBcHJkeFM5b0xBTE5uejhienp6K1BTWk1td2RyYTJvSXRob2xLCnpFUFFseTVkSWdEMHdnc3ZV
SHg4UEczYXRJbjgvZjFwenB3NVZGWldwak51VUZBUWZmNzU1MFJFVkY5ZlR5TkdqS0RRMEZCaGVM
OSsKL1hRT0IwNmNPSkVpSWlLSWlLaWtwSVFlZi94eDh2THlvcU5IajlJUFAveEF2L25OYjJqcDBx
WEMrTTgrK3l6Rng4Y1RFWkZLcGFLKwpmZnRTU0VnSUVSR1ZsWlhSc21YTHFHZlBuaGFYOTdlLy9Z
MWVmLzExSWlLNmZQa3lBYUNZbUJqNjRZY2ZETWJDMWRXVm5uamlDVHB5CjVBaWxwYVdSaDRjSERS
Z3dnSlJLcFVYdFQwMU5KUUIwNHNRSk9uNzhPSDN3d1FkRzQ1NmRuVTFPVGs3azUrZEhCdzhlcE1q
SVNGSW8KRkRSNThtUzZmLzgrcVZRcWlveU1KTGxjVGhVVkZVUkV0RzNiTnVyZHV6Y1JFZFhWMVZH
L2Z2MkV3Mm52dlBNT2hZZUhDK1Y3ZUhoUQpkSFMwd2RnUkVTMVpzb1FHRHg0c2ZGWXFsVFI3OW13
aUltcG9hREJaRDMzYTlUSTFiV3NzTSsxMkVSSDk5cmUvSlY5ZlgwcE5UYVhpCjRtTHk4dkl5ZWVy
a3NjY2VvNk5IandxZnYvLytlK3JWcXhkNWVuclNtVE5uS0NNamczeDlmY25OemMxc2V3d3R3NEtD
QXBvMGFSSmwKWjJjVEVWRnViaTRCb0lzWEw3WTROdHB0TjdmOFRjV3hPY3ZYMUh4YXVrMGJrcGlZ
U0ZaV1ZzSm5RekcrY3VXS3liWWJpNzkrREExdApGNmEyY1V2YXE1bE9KcE5SVGs2TzBYWXk4WFdJ
UTlBYVNxVVNKU1VsdUhUcEVzckt5bEJYVjRmYnQyOEx3NU9UazVHVmxZVlpzMllCCmFEejB0MmpS
SWh3N2RrejQ2OUhlM2w3bmNLQ0RnNFB3MmNYRkJRTUhEb1NQanc5Q1EwUGg3dTZPQ1JNbTROdHZ2
d1hRZUZITThlUEgKOGJ2Zi9RNEFZR1ZsaFNsVHBnaGx5ZVZ5K1BqNENJZlV6SlVIQUhGeGNYQjJk
Z1lBREIwNkZISzVIQURnN3U1dU5BN3o1OC9IMUtsVApFUndjakUyYk51Rzc3NzVEYW1xcVJlMS8r
dW1uTVhQbVRMejExbHVJaTR2RHlwVXJqYzVuMUtoUjhQTHlncmUzTjhMRHc3Rmp4dzdrCjUrZURp
SERtekJra0p5ZWpUNTgrdUhYckZqSXpNNXRNTDVQSkVCWVdCbDlmWHdDTmg5SVVDb1hPT0pyWTY4
Y09BRjU4OFVVVUZoYmkKd29VTEFCcjNCQ01pSWdBQWlZbUpGdGREbjZscFcydVo2Ujl5RGcwTnhk
TlBQdzFYVjFjRUJ3Y2J2Y3Eyckt3TTkrN2RRNjlldllUdgpQRHc4NE9ibWhtblRwdUdwcDU1Q1VG
QVE0dVBqVVZ4Y0RJVkNZYkk5aHBaaGNYRXg4dlB6TVhMa1NBQ0F2NzgvZHV6WUFYZDM5eGJIClJy
dnQ1cGEvcVRnMlovbWFtazlMdDJsTEdJcnhrQ0ZEak5ZcExTM05hUHoxWTZpL1haamJ4aTFkUmpL
WkRFNU9UaWdvS0doV1c1azQKT2tRQ0RnZ0l3TXN2djR6OSsvZWpvS0FBeGNYRmVQcnBwNFZ6TE9m
UG40ZGNMb2RNSmhPbUdURmlCQUFnUHovZm9ubElKQktkenRQUgowUkcxdGJVQWdOT25UOFBMeXd2
ZHUzY1hobmZ0MmxWbmZQM3BUWlduK2F4SmpnRFF1M2R2WWNNMDVySEhIaFArcnpra1YxaFlhSEg3
Ck4yL2VqSUtDQXZqNys1czkvR1J2Ynk5MGpBQ1FuWjBOWjJkbjJOall3TWJHQm1QR2pFRktTZ3I4
L2YyYlRDdVJTTEJ0MnpiY3ZYc1gKTVRFeHlNaklRR1ZsWlpOeHRQK3ZmNTdmMzk4ZlgzenhCWURH
SytLZmZmYlpadGREbjdscFcyT1o2U2RnN2M5T1RrNm9xcW95V0xmdgp2dnNPQU5DalI0OG0wMnN2
S3k4dkx6ZzVPU0UxTmRWc2UvU1hZV1ptSmdJREEzWHFGQmtaQ1dkbjV4YkhScnV0NXBhL3FUaTI1
bnJXCjBtM2FFdm94TmxVblUvSFhqNkYrL1MzWnhpMVpScHJ2Mi9LV1NkWjZPdHc1WURzN084eVlN
UU9yVnExQ1VsSVNubnZ1T1ZSWFY2TzgKdkJ4VlZWWG8yclVyQU1ESHh3ZFNxYlJWN24vNzZhZWZV
RjVlM3VUN2xsemM4K3FycitLRkYxN0E1Y3VYWVd0ckN3Y0hCNHdiTjg3aQo2ZDNkM2VIbzZBaEhS
MGZjdUhIRG92YkxaRExJNVhLOC8vNzdXTHg0c1U3blkwNTVlVG1rVXFsdzd0R2MyTmhZWkdWbFlm
ZnUzZGkxCmF4Zk9uejl2OGJ3QVlOR2lSVmkvZmowMmJOZ0FPenM3Mk5qWVBGUTlXdElHZlMxZFpx
Wm9PbkZMYm11eHNyS0NWQ3B0ZG50S1MwdHgKNWNvVmc4TmFHaHQ5cHBhL3FUaTIxM3JXRnR1MHVU
cVppcjg1cmRuSEtaVktPRGc0UEZROVdQdnFFSHZBK2pRYmlVcWxBdEM0VjZCUwpxWVJEbGtEakli
MkdoZ2JoSWlYZ2w2c2RtNnR2Mzc2NGRldFdxeDYybVRKbENwWXVYWXJrNUdUazV1WWlQVDI5V2RQ
ZnZIa1RsWldWCkdEWnNtTVh0WDdObURZNGZQdzZKUklJMWE5WTBhMzZlbnA1SVNVblIrWXVhaUF4
ZWpYNzE2bFVzWDc0Y216ZHYxdm1MWFp1NWptN08KbkRtNGYvOCtYbnJwSmZ6Kzk3OS9xSHEwcEEy
R1dMTE1IcllEOS9UMGhKMmRIZTdkdTJkeXZJS0NBdHkrZlJ0UFB2bGtzOXZqN3U2Twp3c0pDRkJV
VjZZeWZuNS9mNHRnQXY3VGQzUEkzRmNmV1hzK01hWXR0Mmx5ZFRNVmZ3OWo2WStrMmJvblMwbEo0
ZUhnMGF4b21EbEVUCnNPWkpNOXFYODlmVTFHRC8vdjJReStVWVAzNDhBQ0FpSWdLdXJxNUlTVWtS
eHN2TnpZV1hseGNtVFpvRW9QR3Z4WnljSE5UWDErUG0Kelpzb0tpclNPWTljWDErdms2Q3JxNnVG
QkQ5ejVreElwVkxzMkxGREdIN3QyaldVbDVjTDQxUlhWNk9tcGtZNFoyT3FQQUJZdjM0OQpIbi84
Y2F4Y3VSSno1c3lCdmIyOTJYaG9UNStXbG9icDA2ZkQxOWZYb3ZZbkp5ZGo4T0RCOFBiMlJreE1E
RDcrK0dPVGgrY2JHaHBRClUxTWpmSjQ3ZHk1S1Mwc1JHUm1KaW9vS2xKV1Y0ZDEzM3hWdWs2aXZy
eGNlanFKUUtLQldxM0gxNmxXb1ZDcGtaR1NndHJZV1JBUWkKUXZmdTNmSFRUejhCQUNvcUtwckVE
Z0M2ZCsrT3NMQXc1T1RrQ0lmYUxLbUhQdTE2V2RLR2xpd3pRKzNTZnFKVlRVMk5Ua3kxV1ZsWgo0
YmUvL2EzQmhLQzlucWFucDJQczJMRVlPWEtrMmZib0w4T1pNMmZDenM0T0N4Y3VoRUtoZ0VLaFFG
UlVGTnpjM0ZvY0crMjJYN2h3CndlVHlOeFhINWl4ZmMrdFpTN2RwZmZmdjM0ZGFyZFpacHZveE5s
V25HVE5tR0kyL2ZnejF0d3RMdG5Genl3aG9YSmVVU2lVQ0FnSU0KdHBGMU1HSmRCZjNWVjE5UlNF
Z0lBU0IzZDNkYXRHZ1JoWVNFa0wrL1A4MmVQWnYrKzkvLzZveWZsNWRIUTRZTW9iLzg1UzkwL1Bo
eAptalZyRmlrVUNtSDRxVk9ueU5uWm1RWU1HRUJ2dlBFR0xWdTJqSjUrK21sS1MwdWpqSXdNNnQ2
OU8vWHQyNWV5czdQcDBxVkxOR2pRCklMSzF0YVd2dnZxS2lJajI3dDFMam82TzVPM3RUVE5tektD
cFU2ZFNZR0FnN2QyN2wzSnljbWowNk5IQ1EwTlNVMVBObHZmS0s2OFEKQUFKQTF0Ylc1T0xpUXN1
WEw2ZTZ1anFEOFZpM2JoMzUrUGpRcGsyYmFPUEdqZlR5eXkvVC9mdjNMV3AvV2xvYTllN2RteTVk
dWtSRQpSRmV2WGlWcmEydnk5UFEwZURYazNyMTdxVXVYTHRTblR4OUtTRWdRdnYvNDQ0L0oxdGFX
SkJJSnllVnlPblRvRUJFUjVlVGtrTCsvClB3R2c3ZHUzVTBWRkJmbjUrVkhYcmwxcDRjS0ZsSlNV
UkE0T0R2VDg4ODlUWFYwZHZmWFdXeVNSU0dqUm9rVjA0c1FKbmRocHQvL1UKcVZPMGNlUEdKdlV6
Vmc5OSt2V3FxNnN6T3EwbDY0QzVaYWJkcms4Ly9aU3NyS3hveUpBaGxKK2ZUM2w1ZWVUdDdVMVNx
WlNPSERsaQpzTDVKU1VrMGE5WXNuZStHRHg5T2ZuNSt0R2JOR2xxL2ZqMU5uRGlSU2twS3pNYkMy
REk4ZE9nUXllVnlZYnZLeXNveVc1WWxzZEZ1CisvZmZmMjl5K1p1TG82WEw5OEdEQjBiblk4azJh
R3FiMW5mdTNEa2FPM1lzQWFCVnExWlJVVkdSd1JpYnFsTmRYWjNKK0p2YkxreHQKNDVZc0l5S2lQ
WHYyMFBUcDB3M0drM1VjbXJ3cjZtMUl6YVZXcTZtZ29JQ3VYNzl1Y0hoZFhSMVZWMWNUVWVQbCtN
M1YwTkJBdDI3ZApJaUtpbXBxYWg2OG9FVVZIUjFOQlFRSDk1ei8vb2ErLy9wcVNrcEpvd1lJRmxK
S1NZbks2bjMvK1diajFTSis1OXJlR3VybzZ1bjc5CnV0RTZhTlBFbXFocHZEVnhOS2UydHJiRjlX
aXRhUzFaWnBhMnk1Z3BVNmJRanovK0tId2VQbnc0dmZiYWExUlZWZFhrMWp1TjVyWkgKclZickpQ
R1dsS1ZOdiszR2xyOGxjV3l0OWN5YzF0eW1MYTJUcWZpYlczOWF1bzFQbXphTnZ2bm1tNGVhbHJV
ZlRkNlZqQjgvbnRScQpOVEl5TWtUWS8zNDA3ZHk1RTRtSmlVaE5UZFg1L3VUSmt4ZzRjQ0FHRFJv
a1VzMllNZTIxekc3Y3VJRU5HelpneTVZdHNMT3pRMEJBCkFJS0NndkRYdi82MVZjb1hHNi83NG5u
NzdiY1JFaExTYWhjT3NyWVRIQndNdFZvTlRzQnQ0UExseXdnSUNNRFVxVlBoNysrUG1wb2EKbEph
V0lqUTBGS0dob1dKWGp4blFuc3ZzeG8wYitPcXJyN0Jnd1FLNHVia2hJQ0FBLy9yWHYxcDFIbUxo
ZFY4Y21abVpzTEd4c2ZpSgpjVXhjbklEYjJMMTc5NUNabVltU2toSUVCd2Z6WC82L0F1Mjl6RDc3
N0RQaG9wd0JBd1pnOXV6WmJUcS85c0xyUG1PbWNRSm1qREhHClJLQkp3QjN5UG1ER0dHUHNVY2NK
bURIR0dCTUJKMkRHR0dOTUJKeUFHV09NTVJGd0FtYU1NY1pFSU5yYmtKcnpUSHNKQ0ZJMHdBcHEK
U05ENFBHR0NCR3BZb1FGU0VGcitocE8yUnNSdE51ZFJhVE5qakZtaXc3Mk9VSnN0Nm1DRGVzaWdO
Tmt4S3lGRFBXeFFCMXVSYTl4eQozT2JPMFdiR0dPdVFDZGdXZGJCSFRaT08yUm9xblk1WkJlc21I
WE1ON0grVkhUUzN1WE8wbVRIR05EcFVBcGFBMEFVUDRJQnEyS0VXCmRxZ1ZPbWRUSGJPbVU2NkZI
V3hRajJvNDRBRzYvQ29PV1hLYk8wZWJHV05NWDRkSndOWlFvUXNlQ0QvMnFCRTZaODNla2FHT1di
TlgKVkFzN29STzNoZ3BXVU9NQnVrQUZhNUZiWmh5M3VYTzBtVEhHRE9rUUNWaXpSK1NJU3FGamRr
QzEwRG5ib2s0NFBLbmRNV3NPUzliQgpWbWNQeWdwcVdLSHh4ZFdWY095UWUwamM1czdSWnNZWU02
WkRKR0R0UFNKRG5iTjJ4NnpwY0xVdnpOR2NFOVRzUFdtUG80WVZxdEJWCnpPWVp4RzN1SEcxbWpE
RmpSRS9BdHFpREE2cU5kczdhZTBlR09tYk5PVUZqbmJMbThHVkh1bUNIMjl3NTJzd1lZNmFJbm9B
MUhhODkKYW5RNmFPM09XWE9PVUFhbFRzZXJoRXc0SjZqZmFXdGZ1TlBSYmwzaE5uZU9OalBHbUNt
aUptQmIxTUVXZFVMSGE2eHoxbHd0cTdudwpCZ0JVc0VZOWJJVERsdnFkc3ZZdEs1cHpoeDJoYytZ
MmQ0NDJNOGFZT2FJbVlKdi83YmZvZDg3MnFHblNPV3ZPRVVyUkFBRENZVW50Cnpsci9mS0gyTFNz
MnFPOFFIVE8zdVhPMG1USEd6Qkh2VVpRZ3lLQ0VERXFkRGxxN2s5YnNKV2s2WjgzaFNRRENZVWxO
UjYxOURsRDcKYWxuTnJTMHlLQ0VCaVhxbExMZTVjN1NaTWNZc0lWb0NscUpCNTBmVGVjcWdiTEtu
cE9tY0hWQU5XOVFCQU9wZ0szVFMrZzlwMEM1TApmejVLeU1ScU1yZTVrN1NaTWNZc0lWb0MxdHpE
YVEyVjhLUGZVV3NmdG5SQU5icmhQdXhSQXdDb2dUMkFYL2FRdEI5bHFQblJMbHY3Cm5sR3hjSnM3
UjVzWlk4d1NvaDZDTnZTajZVQTFuYmFtazlZOE4vZ3gzQlBLME93ZGFUcGg3V21ObFM4bWJuUG5h
RE5qakZtQzN3Zk0KR0dPTWlVQzBQV0REK3kwU3JYMmJYKzd4MUg0S2tvYm1iVGhLeU5BQUtWU3cx
cG5XV1BsaTRqWjNqall6eHBnbFJFdkEycDJ2NWtmNwpNaHJ0K3pzMUY5d0FFRzR4cVlNdHF1R0FX
dGloRHJhb2g0M1FTV3QrdE12V3pFOU0zT2JPMFdiR0dMT0VhQWxZOTVwVnFkYjFyREtoCk05Wis4
RDdRZUNHTy91MHBEOUFGTmJELzM3VzBkc0xla3VaSGZ6NWk0alozampZenhwZ2xSRDBFcmVrOHRS
OGpxTjBwYTU3N0N6UjIKNU5yM2cyb2UwRkFEZXp4QUYyRXZTZE01YS9hV05IdE1Tc2hFUHpUSmJl
NGNiV2FNTVV1SXVxdWczU0ZyT21QTjIyNjBuL21yZVJ5aApvVWNVMXNKT2VERzdaaTlKZjA5Sk01
K09nTnZjT2RyTUdHUG1pSnFBOWZlRXRGL0lydjh3ZnMydEtJWWUwcTg1UktuNXFZWkRrODY1Cm96
eWVrTnZjT2RyTUdHUG1pSDZ5ckFiMndxTUV0ZS96QkpxK2lzN1VhK28waHlnTmRjN2FWOVYyQk56
bXp0Rm14aGd6UmZRRXJMbksKVmY4cFJ2cnZlTFhrUmUzYWh5aTFPK2lPdGxmRWJlNGNiV2FNTVZO
RVQ4QUE4QUJkVEhiS21ndDFwR2dRbm5KRWtPaDB6Sm85SUVPZApjMGZFYmU0Y2JXYU1NV002UkFJ
bVNJUU9WSE1mcC9hRDk3WFBHV3Azek5ydmc5V2NCOVEvUk5sUnI0amxObmVPTmpQR21ERWRJZ0VE
CmpWZTdWc0pSMkN2U3ZtcFcrN3loZnNlcy80WWM3YXRsTzNxbnpHM3VIRzFtakRGRE9rd0NCaG83
MnlwMDFYazZrdmJiYjR4MXpOcmoKYXg1ZCtHdkJiZTRjYldhTU1YMGRLZ0ZyNkw5c1hmdkNITzJP
V2ZzQ0hVM0gvR3ZGYmU0Y2JXYU1NWTBPbVlBMU5CMjBCR1N5WTM2VQpEa0Z5bXp0SG14bGpyRU1u
WUEzTjR3dzdFMjR6WTR3OTJ2aTFNWXd4eHBnSU9BRXp4aGhqSXVBRXpCaGpqSW1BRXpCampERW1B
azdBCmpESEdtQWc0QVRQR0dHTWk0QVRNR0dPTWlZQVRNR09NTVNZQ1RzQ01NY2FZQ0RnQk04WVlZ
eUxnQk13WVk0eUpnQk13WTR3eEpnSk8Kd0l3eHhwZ0lPQUV6eGhoakl1QUV6QmhqakltQUV6Qmpq
REVtQWs3QWpESEdtQWc0QVRQR0dHTWk0QVRNR0dPTWlZQVRNR09NTVNZQwpUc0NNTWNhWUNEZ0JN
OFlZWXlMZ0JNd1lZNHlKZ0JNd1k0d3hKZ0pPd0l3eHhwZ0lPQUV6eGhoakl1QUV6QmhqakltQUUz
Q25jeHRBCm9kaVZFTmw5QUQvKzcvK1ZBR3BGckF0anJMTVNNUUVmQmVBRFFBSmdBb0EvQUJnRDRQ
Y0F6b2xYclRhVkNNQWJ2N1I1S1lBbEFPWUMKK0EyQXllMVFoN1VBcHJmRGZEVCtCZUJKTkxaNUZJ
QmpXc091QVpqeHYySC9CNkNramV0eUE4QThBS3NBZkFnZ0FNQm9BSmZhZUw2TQpNZGFVYUFtWWFD
cTJibDBDQU1qT2pnYlJRVFEwWkdMSmtwNndzUm1ITTJleVFJUU84MU5iVzRlMHRQU0hucjZ4elRN
UUhUMWZxODJmCmdHZ1hpUGJpenAxemVPNDUyemF2ZDNuNXV5Z28rRmU3eEt5eHpkTVJHN3NNQUxC
Mzcwb1FoV3FONHdXbGNoLzY5dTBMb285QjFMdE4KNnhNUjhTcWVlNjRTUkR0QjlBSHE2OC9DMTFl
S0F3ZCthdFUyTThhWUpVUTlCTjI5ZTNjQWdFUWlBUUJZVzF2ajlkZGZSMzE5UGZidQozU3RtMVhR
b2xVck1temNQWjg2Y2FYRlorbTNXNk5LbEMySmpZODFPMzlEUVlQRzhETlhiMmRrWmd3Y1B0cmlN
MXVEazVLVHpXNXRVCktvV2ZuNS9CNmFpVk05cTFhOWRRWEZ3TXBWSUpBSkRKWlBqSFAvNkJPM2Z1
Tkh2K3pWa09qREZtaUZUc0N1aTdkZXNXQUtCMzc5NEEKZ05MU1VzVEV4T0RpeFl1b3FxckNSeDk5
aEZHalJpRXZMdyt4c2JHUXkrV3d0N2ZIMXExYmtaU1VCQjhmSDJ6WXNBSGR1blZEWGw0ZQpBZ0lD
c0dyVktwTmxwYWVuSXpZMkZxNnVydkQyOWtaMGREUmtNaGxPbkRnQlQwOVBiTjI2RlVlT0hNSDE2
OWRSVkZTRTdkdTNvMHVYCkxxM1daaUxDNnRXcjhjRUhIeGh0VjJWbEpYSnpjeUdSU0hENDhHSEV4
c1ppNk5DaEFJQ2FtaHFEYmRhdjk5cTFhL0hsbDEvaTBLRkQKeU03T0JnQlVWVlZoOWVyVnNMVzFS
VkZSRWZyMzc0K1ltQmpZMjl1YmpVdHJzYkxTL1Rzd0lTRUJkKzdjd2YzNzkzSDQ4R0djUFhzVwpR
UFBYaFJFalJ1aVVPMnZXTFB6NXozOUdTRWdJRWhJUzRPTGlnbUhEaG1IWXNHRUFnTlRVVkh6NjZh
Y1lOR2dRbEVvbDl1elpBeHNiCkcremV2UnZQUFBNTUFPRFVxVlBOWGc2bTZzNFk2OFRHang5UFFV
RkJKSVk5ZS9ZUUFEcDM3aHdSRWRYVzFsSklTQWoxNk5HRENnc0wKcWFHaGdTWlBua3ozNzk4bmxV
cEZrWkdSSkpmTHFhS2lnckt6czhuSnlZbjgvUHpvNE1HREZCa1pTUVVGQlRScDBpVEt6czRtSXFM
YwozRndDUUJjdlhqUlpWa2xKQ1QzKytPUGs1ZVZGUjQ4ZXBSOSsrSUYrODV2ZjBOS2xTNFc2ZW5o
NFVIUjBkSXZidkgzN2RnSkFhOWV1CnBjOC8vNXgyN3R4SnMyZlBwb2lJQ0NJaWcrMjZ3d1hNZGdB
QUlBQkpSRUZVY3VVSzlldlhqOUxTMG9pSTZKMTMzcUh3OEhDaFRHTnQKMXE5M1dWa1pMVnUyakhy
MjdDbE1HeFFVUko5Ly9qa1JFZFhYMTlPSUVTTW9ORFNVaU1paXVGZ2lNVEdSQU5EeDQ4Y05EdGZN
ajRoSQpxVlRTOE9IRGhjK3Z2dm9xcVZTcWgxb1g5TjI3ZDQvR2p4OVBBS2huejU1MDVNZ1JuZUhm
Zi84OTllclZpenc5UGVuTW1UT1VrWkZCCnZyNis1T2JtUmtSRWRYVjFEN1VjVE5XZE1kYjVhUEp1
aDlnRGpvcUtncFdWRlc3ZXZBbC9mMytjT1hNR2d3WU53djc5KzBGRXdpSFUKUG4zNjROYXRXOGpN
ek1TMGFkUGc1ZVVGRHc4UGhJZUhJenc4SEdscGFjalB6OGZJa1NNQkFQNysvdGl4WXdmYzNkMlJt
Smhvc3F5QgpBd2VpYTlldUNBME5CUUJNbURBQjMzenpqVTQ5OVE4YnQ0Uk1Kb09OalEySUNEWTJO
bENwVkFDQVVhTkdOV2tYRVNFc0xBeSt2cjRBCkdnOGpLeFFLQUREWlp2MTZ5K1Z5K1BqNDRNQ0JB
d0NBNU9Sa1pHVmxJVFUxVmFqVG9rV0xzR3paTW1SbloyUDA2TkVXeGFVMTNiMTcKRjVjdVhjTHg0
OGN4WmNvVUxGMjZGRVJrZHZucHg4eVFidDI2NGF1dnZzSzZkZXZ3L3Z2dlkvcjA2ZmpiMy82RzVj
dVhBd0E4UER6Zwo1dWFHcDU1NkNrODk5UlFBSUQ0K0h0N2UzbEFvRlBEeThucW81V0N1N295eHpx
bERKT0NOR3pkaXhJZ1JrRXAxcTVPZG5RMW5aMmZZCjJOZ0FBTWFNR1lPVWxCUjRlM3NEQU96dDdT
R1h5NFh4TXpNekVSZ1lxSk1vSXlNakxTcExJcEhvVE9mbzZJamFXdDNiVTFvekFZZUUKaEFpZDli
eDU4NFJEbFliYUpaRklzRzNiTm56MzNYZjQ1Sk5Qa0p1Ymk4cktTck50TmxSdjdYYWVQMzhlY3Jr
Y01wbE1HSzQ1Ykp1ZgpuNC9SbzBkYkZKZlcxTE5uVDRTRmhXSHExS2xZdG13Wk5tL2VER3RyNjJh
dkM4YklaREpFUjBmamQ3LzdIV2JPbklrVksxWkFMcGNqCklpSUNRR044cksydGhmRzl2THpnNU9T
RTFOUlVlSHQ3UDlSeU1GZDN4bGpuMUNFU3NMVzFkWlBrQ3dEbDVlV1FTcVhDK1RkelNrdEwKY2VY
S0ZZUERtbHRXZTVKSUpOaTBhWlBKY1dKalk1R1ZsWVhkdTNkajE2NWRPSC8rUEFEVGJUYW51cm9h
NWVYbHFLcXFRdGV1WFFFQQpQajQra0VxbGVQRGd3VU9WYVVqLy92MEJOQzREUTdRVEhnRHMyOWQ0
WmZTSEgzNkl2THc4bkR4NXNzWEw3NGNmZm9DenN6TWNIUjBCCkFPUEdqY00vLy9sUGpCa3pCZ2NP
SEJBU3NDRldWbGJDK3Zrd3k2RWpyM3VNTWZGMDZBZHhlSHA2SWlVbFJXZVBpNGh3K3ZScGcrTzcK
dTd1anNMQVFSVVZGT3VQbjUrYzN1eXhEV25NUFdKLzJYcWkrcTFldll2bnk1ZGk4ZVhPVDhVeTFX
Y05ZdmIyOHZLQlNxWERod2dYaAp1N0t5TWpRME5MVHEzcG1Qancrc3JhMXg3ZHExSnNOKy9QRkhJ
VUVEUUVsSkNjckt5ckJseXhZa0p5Zmo4dVhMaUkrUGIvSHlLeTB0CnhZY2ZmcWp6WFdCZ0lEdzhQ
RkJjWEd4MHVvS0NBdHkrZlJ0UFB2bmtReStIMWxqM0dHT1BIbEVUc09hS1oyTzNnY3lkT3hlbHBh
V0kKakl4RVJVVUZ5c3JLOE82Nzd3cTMwVFEwTktDbXBrWVlmK2JNbWJDenM4UENoUXVoVUNpZ1VD
Z1FGUlVGTnpjM3MyWFYxOWREclZZTApaVlZYVnd2blpZSEcyNGQrK3VrbkFFQkZSUVhxNnVvUUhS
MHRmR2NwVFgwcktpcU1qcVBmTG9WQ0FiVmFqYXRYcjBLbFVpRWpJd08xCnRiVWdJc3lZTWNOb213
M1Z1N3E2R2pVMU5TQWlSRVJFd05YVkZTa3BLY0s4Y25OejRlWGxoVW1USmxrVUYwczRPRGdnS0Nn
SUJ3OGUKMU5rTFZxdlZlTys5OS9EODg4OEwzOTIrZlJzSkNRa0FnSWtUSitLNTU1NUQxNjVkLzM5
N2R4NFdWZG4rQWZ3N3JJS2lJRTZJaW9pNApnSXFRZ0xzRW1rdSttcFNwWUpwQ0dZWkxtV2FtYVds
bVVwWkxieHBwWlpvcHR1Q0drYUtFb0xqZ2twb283dUlDaUtDSWJBTnovLzd3Ck4rZWRNOHdLQTRO
NGY2N0x5em5uUE9kWnpubWVjek5uem1Kd1gxRFZ0bTFiTEYrK0hCa1pHY0s4ckt3czNMeDVFME9I
RGhXbHZYZnYKbnZBNU1URVIvZnIxUTQ4ZVBhcThIM1RWblRIMmxETFZWZEE3ZHV5Z0xsMjZFQUFL
Q2dxaStQaDR0ZW5XckZsRDF0YldKSkZJU0NxVgpVbXhzTEJFUmJkcTBpUm8yYkVqT3pzNFVFeE1q
cEkrTmpTV3BWRW9BeU5YVmxWSlNVblRtbFpTVVJQYjI5dFNpUlF0S1RVMmxVNmRPClVidDI3Y2ph
MnByMjdObERSRVJ6NTg0bGlVUkM0ZUhobEoyZFRlZk9uU09KUkVJLy9mU1QzbTJPaVlrUnRUa3hN
YkZTR25YdGV2VG8KRWZuNCtGQ2pSbzBvTEN5TTR1TGl5TmJXbHNhTkcwZWxwYVZhMjZ4Yzd6Ly8v
Sk42OWVwRkFHajU4dVZVV2xwS0owNmNvRTZkT3RFWApYM3hCdTNmdnBwQ1FFRXBQVDlkN3UraXJv
S0NBaGc4ZlR1M2J0NmZ3OEhDYU1tVUtCUWNIMDk2OWUwWHB6cDQ5Uys3dTdoUWRIVTNiCnQyK255
TWhJa3Nsa1JHUjRYMURsNGVGQlFVRkJOR1BHREZxeVpBbDVlM3ZUbTIrK1NXVmxaVUlhUHo4Lzh2
SHhvZm56NTlQQ2hRdHAKMEtCQmxKV1ZWZTM5b0tudWpMR25qeUx1U2dJREEwa3VseU1wS2NtVWZ3
ZG9WVlpXaHN6TVRMaTZ1cXI5clZnVkVTRW5Kd2RPVGs3Vgp6a3RaYm00dW1qVnJKa3pmdlh0WHJ3
dC9qS1c0dUJnMk5qWUFIajlrUS9rMHFMWTJxOVpiRlJIaDBxVkxNRE16Zzd1N3UvRXJya1FtCmt5
RWpJd1BPenM1bzJyUnBwZVZ5dVJ4bVptYTRmLzgrTEMwdEs5MXZYWjM5bDVlWGg2Wk5tNktvcUFo
WHIxNUY2OWF0aGQrRUZmejkKL1JFUUVJQkZpeGFocUtoSTdmNnQ2bjZvVHQwWlkvVkhVRkFRNUhJ
NW5vZ0F6Rmh0VVFUZ0w3LzgwdFJWWVl6VlU0b0FYS2N2d21LcwpOc25sY3R5K2ZWdDBJUlZqak5V
VURzQ00vYitOR3pjaU1qSVMvdjcrMkx4NXM2bXJ3eGlyNS9pSEtNYiszNFFKRTB4ZEJjYllVNFMv
CkFUUEdHR01td0FHWU1jWVlNd0VPd0l3eHhwZ0pjQUJtakRIR1RJQURNR09NTVdZQ0hJQVpZNHd4
RStBQXpCaGpqSmtBQjJER0dHUE0KQkRnQU04WVlZeWJBQVpneHhoZ3pBUTdBakRIR21BbHdBR2FN
TWNaTWdBTXdZNHd4WmdJY2dEV29xS2pBK2ZQbmhlbDc5KzdoNHNXTApOVlplWVdFaGJ0MjZWV1A1
VjFkcGFTa09IVHBVcFhWcmV0c1pRbGRkVlBlN3FzTENRbVJtWnVvc0p5c3JDM2w1ZVhxbnIwcGRx
MW8zCmZSUVZGUmtsSDZZL1hYMVBJU2NuQi92MzcwZGVYbDZOMXNlWTQvYlJvMGRHeWFlK01Wa0Ev
dXV2dnpCdzRFQklKQkowNmRJRjQ4ZVAKeDhTSkUvSDY2NjlqMWFwVmtNbGtwcW9hamgwN0JoOGZI
N3o1NXB2Q3ZBVUxGaUE0T0xoR3lvdU9qb2Fqb3lOKy9mWFhHc20vdW80YwpPUUkvUHorOC9QTExW
VnEvSnJlZG9iVFZSZDErVi9iTEw3L0F5Y2tKR3pkdTFGbk83Tm16c1g3OWVyM1RHMXJYNnRSTmw4
T0hEeU11CkxxN2ErVEQ5NmVwN0N0OTk5eDIyYk5tQ3BLUWtkTzdjR2FXbHBUVldKMk9PMit2WHJ5
TW1Kc1lvZWRVcmdZR0JGQkFRUUthUW1KaEkKQUdqNTh1WEN2Rk9uVHBHTmpRMjk4Y1liSnFtVHd0
U3BVNmwvLy83Q2RHNXVMbVZrWk5SWWVVNU9UcUx0VU5jc1c3YU1uSnljOUVwYgpVbEpDKy9mdkY2
WnJldHNaUWxkZFZQZTdhbHM4UFQzcDAwOC8xVnFHVENhalBuMzY2SjIrcW5WVnBhc3MxYmFvczNY
cjFqcmREelhSCnAyMTFuV3JmVTFWWVdFZ05HemFraW9vS0lpSTZlUENnVWN1djZYR2JrWkZCYytm
T05WcCtUekpGM0RYcEtXZ0hCd2NBZ0VRaUVlWjUKZTN2RDM5OGZmLy85dDBucUpKZkxBUUFXRmhZ
d00vdmY1bkYwZEVUNzl1ME56bytJOUVwbmFXa3AyZzUxalpXVmxkcjZsWmVYaTZabApNaG5Hangr
UDVPUmtZVjVWdDExTjBGUVhkZnRkWFZ2MDJVL0p5Y25vMTYrZjN1a05yYXVtUHFXdExIVnRVWldW
bFlXbFM1ZmluWGZlClVidGMzNzVjMjdTMVRiVi9Lak5tZTdTVm80dW1ZNDZxTTJmT29LeXNURWpU
dTNkdm85V3BOc1p0Ky9idFVWRlJ3V2RYbE5TNTM0QWYKUFhxRUN4Y3VZUFRvMGFMNWhZV0ZtRHAx
S21iT25Jbmc0R0JNbno0ZHhjWEZBSUNZbUJpMGJOa1NYMy85TlFCZ3k1WXQ2Tml4SXlaUApuZ3dB
U0V4TVJFaElDR2JObW9YdnYvOGU3dTd1OFBEd3dOV3JWNFg4aTRxS0VCa1ppY1dMRjJQeTVNbElT
MHNUbHQyNWN3ZWZmLzQ1CmV2WHFaVkIrVTZkT3hTZWZmSUpCZ3dZaEpDUUVVVkZSV2crQVJVVkZt
RFZyRnB5Y25PRHI2NHYwOUhTOTJuLzgrSEVNR2pRSW5UdDMKeHQ5Ly80M2p4NC9EMjlzYlAvMzBr
OXB5VHB3NGdZaUlDSHo0NFlmNDlOTlBJWlZLY2ZUb1VXUm5aK1BkZDkvRmM4ODlCMTlmWHh3Kwpm
RmhqWGZmdDI0ZW9xQ2g4OWRWWDZOT25EODZlUFFzQVdMRmlCWGJzMklGdDI3Wmh3b1FKdUh6NXNt
amI3ZHExQzgyYk40ZS92ejh1Clhib0VBRGg2OUNoY1hWMnhaODhlQU5DN0huLzg4UWVrVWlsZWV1
a2wzTDkvSCt2WHI0ZFVLc1hBZ1FPRnZMLzY2aXYwNjljUEpTVWwKbGZhallwdHIydStxYlZIOGpp
V1h5N0Znd1FLMGJ0MGFYYnAwRWUxM0FOaStmVHRHakJnaFRHdExyNm10bXVxcXEwOXBLa3RUVzVU
TgpuejlmOURORFFrSUNRa05ETVgvK2ZNeVpNd2ZPenM1bzNibzFFaElTZE5aZlV4OHJMaTdHdkhu
ekVCVVZoVEZqeG1EWnNtVTY4OUkxCjN0UzFUVlAvMUdjN0dtTWNWUGVZbzJyZHVuWDQrT09QVVY1
ZWppbFRwbURXckZrYXQ3RzJ0bXZhL3JyR0xhRDlHS1JQZXdFZ05EUVUKYytiTVFVVkZoY2EyUGxW
TWVRcjYxS2xUQklBbVRweElXN1pzb2FWTGw1S3ZyeStOSFR1V2NuSnlSR2tEQWdKb3c0WU5SRVJV
VmxaRwozYnQzcDJIRGhnbkxXN1pzS1RyOU5talFJQm8xYWhRUkVXVmxaVkdIRGgzSXc4T0RkdTdj
U2RldVhhT09IVHZTcEVtVGhQVC8rYzkvCmFNdVdMVVJFVkZGUlFTMWF0S0NCQXdjU0VWRk9UZzVO
bmp5Wm1qVnJwbmQrWDMvOU5jMmNPWk9JaU02Y09VTUFLQ29xaXE1ZHU2WjIKVzdScTFZbzZkKzVN
TzNic29QMzc5MU9iTm0yb2JkdTJKSlBKOUdwL1FrSUNBYUEvLy95VGR1L2VUVjk5OVpYRzdaNmFt
a29PRGc3awo0K05Edi8zMkcwVkVSRkI2ZWpxOThNSUxWRkJRUUJVVkZSUVJFVUZTcVpUeTgvT0pp
R2pWcWxYVXZIbHpJaUlxTFMybGxpMWJDcWVyClB2NzRZeG81Y3FTUWY1czJiV2pKa2lWcXR4MFIw
UnR2dkVIdDI3Y1hwbVV5R1lXR2hoSVJVWGw1dWRaNnFPcldyUnVGaDRjTDA0R0IKZ1JRV0ZpWk14
OFhGMFk4Ly9xaXhMdHIydTJwYmlJaTZkdTFLM3Q3ZWxKQ1FRSm1abWVUaDRWSHA1NUtlUFh1U1hD
N1htVjViVzlYVgpWVmVmMGxVMzFiYW9hdEtrQ2UzY3VWT1l2bnIxS2ozenpEUGs1dVpHeWNuSmxK
U1VSTjdlM3VUaTRxS3ovdXI2V0VaR0JnMFpNb1JTClUxT0ppQ2d0TFkwQTBQSGp4N1htcGM5NFUy
NmJydjZwYlRzYTB2KzBsVlBkWTQ0Nlc3ZHVKVE16TTJGYTNUWStlL2FzMXJacjJ2NnEKMjFCZC85
TjJETktudllyMUxDMHQ2Y2lSSXhyYitUU29FNmVnRldReUdiS3lzbkRxMUNuazVPU2d0TFFVOSs3
ZEU1Ykh4OGNqSlNVRgpJU0VoQUI2ZmFnc1BEOGV1WGJ1UW1wb0tBTEN4c1JHZGZyTzF0Uldtblp5
YzRPN3VEaTh2THd3Yk5neXVycTdvMzc4L0xseTRBT0R4ClJTZTdkKy9HNE1HREFRQm1abVlZT25T
b2tKZFVLb1dYbDVkd3lrcFhmZ0N3Y2VOR09EbzZBZ0M2ZE9rQ3FWUUtBSEIxZGRXNEhWNTcKN1RV
TUh6NGNRVUZCV0xwMEthNWN1WUtFaEFTOTJqOWd3QUNNR1RNR2MrZk94Y2FOR3pGOStuU041ZlRz
MlJNZUhoN3c5UFRFeUpFago4ZTIzMytMa3laTWdJaVFuSnlNK1BoN096czY0ZS9jdURodzRVR2w5
UzB0THZQenl5L0QyOWdidytGU1Y4cmQxNEg4L0s2aHVPd0NZCk9uVXFMbDY4aUdQSGpnRjQvRTFy
MUtoUkFJQ3RXN2ZxWFE4QUNBc0x3MTkvL1NXY3hudisrZWV4YytkTzRmU2JjdDZxZGRHMTMxWGIK
b2pCczJEQU1HREFBclZxMVFsQlFrT2pLMVgvKytRZGVYbDZpZFRTbDE5WldkZHRObno2bHJXN3Ey
cUtRazVPREJ3OGU0SmxubmhIbQp0V25UQmk0dUxuanh4UmZSdDI5ZkJBUUVZTXVXTGNqTXpFUjZl
cnJXK3F2clk1bVptVGg1OGlSNjlPZ0JBUEQxOWNXMzMzNExWMWRYCnJYbnBNOTZVMjZhcmYycmJq
b2IwUDIzbFZQZVlvdzkxMjdoVHAwNGE2N1IvLzM2TjIxOTFHNnIyUDEzSElIMzNrYVdsSlJ3Y0hK
Q1IKa1dGUVcrdXJPaEdBL2YzOThmYmJiMlB6NXMzSXlNaEFabVltQmd3WUlCeEVqeDQ5Q3FsVUNr
dExTMkdkN3QyN0F3Qk9uanlwVnhrUwppVVIwOExHenMwTkpTUWtBNE8rLy80YUhod2ZzN2UyRjVZ
MGFOUktsVjExZlczNkthVVZ3QklEbXpac0xIVitUSmsyYUNKOTc5dXdKCkFMaDQ4YUxlN1YrMmJC
a3lNakxnNitzTGMzTnpyV1haMk5nSUJ4NEFTRTFOaGFPakk2eXNyR0JsWllVK2ZmcGc3OTY5OFBY
MXJiU3UKUkNMQnFsV3JjUC8rZlVSRlJTRXBLUWtQSHo2c2xFYjVzK3J2L0w2K3Z2ajU1NThCUEw0
aS9qLy8rWS9COVFBZW45SzZlL2V1Y1Bydwo3Tm16d2luSWtwSVN5T1Z5Tkd6WVVHMWQ5Tm52cW0x
Um5YWndjRUJoWWFFd3ZYMzdkcno0NG90NnBkZlZWblY5VEZlZjBsWTNkVzFSCnVITGxDZ0NnYWRP
bWxkSXI5eVVQRHc4NE9EZ2dJU0ZCWi8xVis5aUJBd2ZRdTNkdlVSMGlJaUxnNk9oWXBXMmhQTjZV
MjZhcmYycmIKanNZY0I5VTk1dWhEZFJ0cnE1TzI3YSs2RFZYcnI4OHhTSjk5cEpoZlYyNUxORFVM
VTFkQVZZTUdEVEI2OUdqTW1qVUxjWEZ4R0RGaQpCSXFLaXBDYm00dkN3a0kwYXRRSUFPRGw1UVVM
Q3d1ajNGOTI4K1pONU9ibVZwcGZuWXVpWnN5WWdZa1RKK0xNbVRPd3RyYUdyYTB0Cm5udnVPYjNY
ZDNWMWhaMmRIZXpzN0hEcjFpMjkybTlwYVFtcFZJclBQLzhjcjcvK3VtaHc2NUtibXdzTEN3czgv
L3p6ZXFXUGpvNUcKU2tvS2Z2amhCNnhidHc1SGp4N1Z1eXdBQ0E4UHg4S0ZDN0Y0OFdJMGFOQUFW
bFpXVmFxSG82TWpoZzBiaGsyYk5zSGUzaDUrZm40dwpNelBEbGkxYjhPREJBNjIzVWRURWZrOUlT
TURzMmJQMVNtdG9XNnZicDdSUkhNVDF1YTNGek13TUZoWVdCdGMvT3p0YjlIdWtNa1B6CjBrVmIv
OVMySFd0ckhOUkUzOU5WSjIzYlh4ZGpIb05sTWhsc2JXMnJWSS82cGs1OEExYWw2SVNLSCtvOVBE
eFFVVkVobkxJRUhwOHkKS3k4dmg2ZW5wekJQY1JyU1VDMWF0TURkdTNlTmVscGs2TkNobURScEV1
TGo0NUdXbG9iRXhFU0Qxcjk5K3pZZVBueUlaNTk5VnUvMgp6NTgvSDd0Mzc0WkVJc0g4K2ZNTktz
L056UTE3OSs0Vi9jVktSR3F2Umo5Mzdod2lJeU94Yk5reTBWL0V5blFkU01hT0hZdUNnZ0pNCm16
WU5MNzMwVXBYcW9UQng0a1Q4K3V1dldMdDJMZDU0NHcyRWhZVWhOallXQ1FrSldnT1V2dnRkMzRO
aVptWW1wRklwR2pSb29GZDYKUTl0YTNUNEZhRzZMbTVzYkdqUm9nQWNQSG1oZFB5TWpBL2Z1M1VP
M2J0ME1ycitycXlzdVhyeUl5NWN2aTlLZlBIbXlTdnRkVTl0MAo5VTl0MjlIWTQwQ1RtamptNktx
VHR1MnZvS2wvNkhzTTBrZDJkamJhdEdsajBEcjFsVWtEc09KSkxzcVh5eGNYRjJQejVzMlFTcVVJ
CkRBd0VBSXdhTlFxdFdyWEMzcjE3aFhScGFXbnc4UERBa0NGREFEeithK3pJa1NNb0t5dkQ3ZHUz
Y2ZueVpkSHZ5R1ZsWmFJQVhWUlUKSkFUNE1XUEd3TUxDQXQ5Kys2MncvUHo1ODhqTnpSWFNGQlVW
b2JpNFdQaE5SRnQrQUxCdzRVSjA2TkFCMDZkUHg5aXhZMkZqWTZOegpleWl2djMvL2ZnUUhCOFBi
MjF1djlzZkh4Nk45Ky9idzlQUkVWRlFVMXF4Wm8vWDBmSGw1dVhBRkl3QzgrdXFyeU03T1JrUkVC
UEx6Cjg1R1RrNE5GaXhZSnR5R1VsWlVKRDBkSlQwK0hYQzdIdVhQblVGRlJnYVNrSkpTVWxJQ0lR
RVN3dDdmSHpaczNBUUQ1K2ZtVnRoMEEKMk52YjQrV1hYOGFSSTBlRVUxbjYxRU9kRjE1NEFkYlcx
akEzTjBlVEprM1F2MzkvTkc3Y0dNN096cFVPS01wMTBXZS9xMnVMOGxPaQppb3VMaGUybzd2U3p0
dlM2MnFxNjNYVDFLVzFscVd1TE1qTXpNM1R0MmxWdFFGQWVSNG1KaWVqWHJ4OTY5T2locy82cWZX
ek1tREZvCjBLQUJ3c0xDa0o2ZWp2VDBkTXllUFJzdUxpNTY5VDl0NDAyNWJjZU9IZFBhUDdWdFIw
UDZuNjV4VU4xampxcUNnZ0xJNVhMUlBsYmQKeHRycU5IcjBhSTNiWDNVYnFvNWJmWTVCdXZZUjhM
Z3Z5V1F5K1B2N3EyM2pVOGRVVjBIdjJiT0hCZzRjU0FESTFkV1Z3c1BEYWVEQQpnZVRyNjB1aG9h
RjA0OFlOVWZvVEowNVFwMDZkNklzdnZxRGR1M2RUU0VnSXBhZW5DOHYzN2R0SGpvNk8xTFp0VzNy
dnZmZG84dVRKCk5HREFBTnEvZno4bEpTV1J2YjA5dFdqUmdsSlRVK25VcVZQVXJsMDdzcmEycGox
NzloQVIwYVpObThqT3pvNDhQVDFwOU9qUk5IejQKY09yZHV6ZHQyclNKamh3NVFyMTY5UkllR3BL
UWtLQXp2M2ZlZVljQUVBQXlOemNuSnljbmlveU1wTkxTVXJYYjQ2T1BQaUl2THk5YQp1blFwZmZi
WlovVDIyMjlUUVVHQlh1M2Z2MzgvTlcvZW5FNmRPa1ZFUk9mT25TTnpjM055YzNOVGU3WGhwazJi
cUdIRGh1VHM3RXd4Ck1USEMvRFZyMXBDMXRUVkpKQktTU3FVVUd4dExSRVJIamh3aFgxOWZBa0Ny
VjYrbS9QeDg4dkh4b1VhTkdsRllXQmpGeGNXUnJhMHQKalJzM2prcExTMm51M0xra2tVZ29QRHlj
L3Z6elQ5RzJVMjcvdm4zNzZMUFBQcXRVUDAzMTBHYldyRmwwNmRJbFlYcisvUG1pYVVVNwpWT3Vp
YmI4VGthZ3QzMy8vUFptWm1WR25UcDNvNU1tVGRPTEVDZkwwOUNRTEN3dmFzV01IRFJreWhISnpj
NFh5ZnZ2dE42M3BkVzF6CjFicHE2MVA2bEtYY2x1enM3RXJiTUM0dWprSkNRa1R6L1B6OHlNZkho
K2JQbjA4TEZ5NmtRWU1HVVZaV2xzNTlwYW1QeGNiR2tsUXEKRmNaOVNrcUt6cnowR2IvS2JidDY5
YXJXL3FscmJPcmIveDQ5ZXFTeEhIMk9FYnI2bnJMRGh3OVR2Mzc5Q0FETm1qV0xMbCsrckhZYgph
NnRUYVdtcDF1MnZhOXhxT3dicHM0K0lpTmF2WDAvQndjRnF0K2ZUUkJGM1RYb2JrcUhrY2psbFpH
UlVPckFxbEphV1VsRlJFUkU5CnZ0emRVT1hsNVhUMzdsMGlJaW91THE1NlJZbG95WklsbEpHUlFh
ZFBuNmFEQnc5U1hGd2NUWmd3Z2ZidTNhdDF2VHQzN2dpM0hxblMKMVg1aktDMHRwVXVYTG1tc2d6
TEZ0aWFxdkwwVjIxR1hrcEtTYXRkRFhUNmE4bFZIMTM3WHR5MVZ2YlZDMzdaV3RVOHAwOVdXb1VP
SAowdlhyMTRWcFB6OC9ldmZkZDZtd3NMRFNyWUdHMWw5QkxwZUxnbmgxOGxLbTJqWk4vVk9mN1dp
c2NhQ0xNWTg1K3RaSjIvYlgxVCtxCmV3eDY4Y1VYNmQ5Ly82M1N1dldKSXU1S0FnTURTUzZYSXlr
cHFmYS9mdGRUMzMzM0hiWnUzU3A2WUFIdytHcGZkM2QzdEd2WHprUTEKWTArcTJ1cFR0Mjdkd3VM
Rmk3RjgrWEkwYU5BQS92NytDQWdJd0pkZmZtbVUvRTJOeDZicGZQamhoeGc0Y0tEUkxoeDhrZ1VG
QlVFdQpsNE1EY0EwNGMrWU0vUDM5TVh6NGNQajYrcUs0dUJqWjJka1lObXdZaGcwYlp1cnFzU2RR
YmZhcFc3ZHVZYytlUFpnd1lRSmNYRnpnCjcrK1BiZHUyR2JVTVUrR3hhUm9IRGh5QWxaV1ZjSHZs
MDQ0RGNBMTc4T0FCRGh3NGdLeXNMQVFGQmZGZjFxemFhcnRQL2ZUVFQ4SkYKT1czYnRrVm9hR2lO
bGxkYmVHd3lVK01BekJoampKbUFJZ0RYeWZ1QUdXT01zZnFPQXpCampERm1BaHlBR1dPTU1SUGdB
TXdZWTR5WgpnTWxleHZEUlJ4K1pxbWlqV3Jod29hbXJ3SlJ3djJJMWdmc1Zxd2ttQ2NBTEZ5N0Vv
a1dMOFBISEg1dWllS05SZEdidTFIVUQ5eXRXCkV6VDJxN2c0UU9ubEJKVVlveDhhc1F6dVYzV1B5
YjRCTDFpd29GNzhWVm5WTnpDeG1zSDlpdFdFU3YwcUprWjM4S3R1UDZ5Qk1yaGYKMVMzOEd6Qmpq
Qm1pdEJTWU9mUEpMNE9aSEFkZ3hoZ3p4RysvQWJkdVBmbGxNSk16MlNsb3hoaDdJc1hHVnBvbEFW
V2FWM2xPSFN1RAptUngvQTJhTU1VTm91eWpxU1NxRG1Sd0hZTVlZTThTZE8vV2pER1p5ZkFxYU1j
WU1VVlpXYVpiUlR3WFhSaG5NNVBnYk1HT3NXdTdkCnU0ZUxGeSthdWhxc25pc29LTUQxNjljQkFB
OGZQa1JKU1ltSmExUjlISUJyeWM2ZE8rSGw1UVdKUklMKy9mdmpsVmRlUVo4K2ZmRFMKU3kvaDhP
SERwcTRlZTBKdDNib1ZucDZlUXIrYU5Ha1MzbmpqRGJ6NjZxdm8yTEVqWG5qaGhScXZ3NElGQ3hB
Y0hGemo1YkRhczIzYgpOblRyMWcwU2lRUTllL2JFcmwyN2hHWG56NS9INk5HaklaRkk4TlpiYnlF
cks2dEc2M0xyMWkyTUh6OGVzMmJOd3NxVksrSHY3NDllCnZYcmgxS2xUTlZwdWJlQlQwTFZrK1BE
aHVITGxDdDU1NXgwc1diSUVQWHYyUkVWRkJTWlBub3pubm5zTysvYnRROSsrZlUxZFRVRnAKYVNr
T0hUcUVvS0FnVTFlRmFURjY5R2hjdm53WmMrZk9GZnFWUW41K1BzTEN3b3hlcG1yZldMUm9FZkx5
OG94ZURqT2Q0T0JnNU9UawpJQ0lpQXRPblQ4ZXdZY09FWlI0ZUh2amxsMTl3OE9CQnJGbXpwc2Jy
TW1QR0RKU1ZsV0hqeG8wQUFKbE1CbjkvZjl5OGViUEd5NjVwCi9BMjRGdG5iMndNQUpCSUpBTURj
M0J3elo4NUVXVmtaTm0zYVpNcXFpY2hrTW93ZlB4N0p5Y21WbHBXWGwydGNqNGgvcFRJRjFYNmwK
MExCaFEwUkhSK3RjWDlzK1ZhV3Viemc2T3FKOSsvWjY1OEdlREE0T0RxTC9sVmxZV01ESHgwZnRl
c1krRHB3L2Z4NlptWm1ReVdRQQpBRXRMUy96NDQ0OGEvK2pUVnI0aGZiMDI4RGRnRTd0Nzl5NEFv
SG56NWdDQTdPeHNSRVZGNGZqeDR5Z3NMTVEzMzN5RG5qMTc0c1NKCkU0aU9qb1pVS29XTmpRMVdy
RmlCdUxnNGVIbDVZZkhpeFdqY3VERk9uRGdCZjM5L3pKbzFTMnRlaVltSmlJNk9ScXRXcmVEcDZZ
a2wKUzViQTB0SVNmLzc1Sjl6YzNMQml4UXJzMkxFRGx5NWR3dVhMbDdGNjlXb2NQbndZYVdscGtF
Z2syTDU5TzZLam85R2xTeGNBUUZGUgpFV2JQbm8xbm5ua0dLU2twYU5xMEtaNTk5bG4wN3QwYi9m
cjEwMWdQVm5PSUNIUG16TUZYWDMybHNlODhmUGhRNHo0dExpNVcyNjlVCis4YUNCUXZ3KysrL0l6
WTJGcW1wcVFDQXdzSkN6Smt6QjliVzFyaDgrVEphdDI2TnFLZ28yTmpZNk94N1Q2elMwc2NQejRp
TmZYd0wKMFowN2FpK2txdk5sR01ETVRQejlMU1ltQm5sNWVTZ29LTUQyN2R0eDZOQWhBSVlmMDdw
Mzd5N0tOeVFrQlBQbXpjUEFnUU1SRXhNRApKeWNuUFB2c3MzajIyV2NCQUFrSkNmaisrKy9Scmww
N3lHUXlyRisvSGxaV1Z2amhoeC93L1BQUEF3RDI3ZHRuY0YvWFZuZWpDUXdNCnBJQ0FBS3BOSDMv
OE1TMVlzS0JXeTZ3SmhyWmovZnIxQklBT0h6NU1SRVFsSlNVMGNPQkFhdHEwS1YyOGVKSEt5OHZw
aFJkZW9JS0MKQXFxb3FLQ0lpQWlTU3FXVW41OVBxYW1wNU9EZ1FENCtQdlRiYjc5UlJFUUVaV1Jr
MEpBaFF5ZzFOWldJaU5MUzBnZ0FIVDkrWEd0ZQpXVmxaMUtGREIvTHc4S0NkTzNmU3RXdlhxR1BI
ampScDBpU2hybTNhdEtFbFM1WVFFVkZwYVNtMWJObVM5dS9mTDdSNzVNaVJRdHF2CnYvNmFaczZj
U1VSRVo4NmNJUUFVRlJWRjE2NWQwMW9QWTN0YSs5WHExYXNKQUMxWXNJQTJiTmhBMzMzM0hZV0do
dEtvVWFPSWlOVDIKbmJObnoycmRwNXI2RlpHNGIrVGs1TkRreVpPcFdiTm13cm9CQVFHMFljTUdJ
aUlxS3l1ajd0MjcwN0JodzRpSTlPcDdkWTNPL2JGbApDMUhMbGtTQStKOHhHYUVNUS92VjFxMWJD
UUR0M3IxYjdYTEZQaVVpa3NsazVPZm5KMHpQbURHREtpb3FxblJNVS9YZ3dRTUtEQXdrCkFOU3NX
VFBhc1dPSGFQblZxMWZwbVdmQTM3M21BQUFlSzBsRVFWU2VJVGMzTjBwT1RxYWtwQ1R5OXZZbUZ4
Y1hJdEo5L0tyS01iUzYKRkhHWFQwR2J3T3pac3hFVUZJU3VYYnVpV2JObVNFNU9ScnQyN2JCMTYx
WVFFWktUa3hFZkh3OW5aMmZjdlhzWEJ3NGNRTStlUGVIaAo0UUZQVDArTUhEa1MzMzc3TFRJek0z
SHk1RW4wNk5FREFPRHI2NHR2di8wV3JxNnVXdk55Y25LQ3U3czd2THk4TUd6WU1MaTZ1cUovCi8v
NjRjT0dDcUo2S1U1cVdscFo0K2VXWDRlM3REZUR4S2NmMDlIUWgzY2FORytIbzZBZ0E2TktsQzZS
U0tRRG9yQWN6TGt0TFMxaFoKV2NIYTJocFdWbGJDL2xQWGR6cDE2cVJ4bis3ZnYxOWp2MUpRNUMy
VlN1SGw1U1djOW91UGowZEtTZ3BDUWtLRU9vV0hoMlBYcmwxSQpUVTNWdSs4OUVlUnlZTW9VSUNT
azVoNGJXUnRsR01IOSsvZHg2dFFwN042OUd3QXdhZElrRUpIQnh6UjFQMlUwYnR3WWUvYnN3UWNm
CmZJRDgvSHdFQndkajllclZ3dkkyYmRyQXhjVUZMNzc0SXZyMjdZdUFnQUJzMmJJRm1abVpTRTlQ
MTNyODB0YlhhK1BZeGFlZ1RlQ3oKeno1RDkrN2RZV0VoM3Z5cHFhbHdkSFNFbFpVVkFLQlBuejdZ
dTNjdlBEMDlBUUEyTmpaQ2NBT0FBd2NPb0hmdjNxTGYvaUlpSXZUSwpTeUtSaU5henM3T3JkRm0v
WXJsRUlzR3FWYXR3NWNvVnJGMjdGbWxwYVhqNDhLRm9YY1hwUitEeDZYUkZoOVpWRDJZOEF3Y09G
TGE3CjRxcFJCZFcrbzIyZmF1dFh5dXNyZjFaTUh6MTZGRktwRkphV2xzSnl4U25Ga3lkUG9sZXZY
bnIxdlNmQ3RHbUFVaUI0WXNzd2dtYk4KbXVIbGwxL0c4T0hETVhueVpDeGJ0Z3ptNXVZR0g5TTBz
YlMweEpJbFN6QjQ4R0NNR1RNR1U2Wk1nVlFxeGFoUm93QTg3b1BtNXVaQwplZzhQRHpnNE9DQWhJ
UUdlbnA1VjZ1dTFjZXppQUd3QzV1Ym1sWUl2QU9UbTVzTEN3a0w0M1VLWDdPeHNuRDE3VnUweVEv
UFNKVG82Ckdpa3BLZmpoaHgrd2J0MDZIRDE2VkZnMlk4WU1USnc0RVdmT25JRzF0VFZzYlczeDNI
UFAxVWc5bUg0a0VnbVdMbDJxTlkybWZhcXQKWCtsU1ZGU0UzTnhjRkJZV29sR2pSZ0FBTHk4dldG
aFk0TkdqUjFYS3MwNktpYW41d0ZnYlpXalJ1blZyQUkvSHNEcktBUThBZnZubApGN1JvMFFJclY2
N0VpUk1uOE5kZmYxVjcvRis3ZGcyT2pvNndzN01EQUR6MzNIUDQ0NDgvMEtkUEgvejY2NjlDQUZi
SHpNeE1PTTVXCnBhL1h4ckdMVDBIWElXNXVidGk3ZDYvbzJ3QVI0ZSsvLzFhYjN0WFZGUmN2WHNU
bHk1ZEY2VStlUEdsd1h1b28vaW84ZCs0Y0lpTWoKc1d6Wk10RTNHNFdoUTRkaTBxUkppSStQUjFw
YUdoSVRFNnZjSm1ZODZ2YVZnclo5cXExZkthaGVjYTNnNGVHQmlvb0tIRk42bG5GTwpUZzdLeTh2
cnoxbVBwK1IxaEY1ZVhqQTNOOGY1OCtjckxidCsvYm9Rb0FFZ0t5c0xPVGs1V0w1OE9lTGo0M0ht
ekJsczJiS2wydU0vCk96c2JLMWV1Rk0zcjNiczMyclJwZzh6TVRJM3JaV1JrNE42OWUraldyVnVW
KzNwdEhMczRBTmNpeFJYUG1pNmZmL1hWVjVHZG5ZMkkKaUFqazUrY2pKeWNIaXhZdEVuNFhLUzh2
UjNGeHNaQit6Smd4YU5DZ0FjTEN3cENlbm83MDlIVE1uajBiTGk0dU92TXFLeXNUdlp5NwpxS2dJ
RlJVVndyUzl2YjF3bjkyeFk4Y2dsOHR4N3R3NVZGUlVJQ2twQ1NVbEpTQWlFQkVXTGx5SURoMDZZ
UHIwNlJnN2RpeHNiR3owCmJoT3JQa1dmeU0vUDE1aEd0ZStrcDZkcjNLZWpSNC9XMks4QWNkL0l6
ODlIVVZFUmlvdUxRVVFZTldvVVdyVnFoYjE3OXdwbHBhV2wKd2NQREEwT0dEQUdndSsvVmVVL0o2
d2h0YlcwUkVCQ0EzMzc3VGZRdFdDNlg0OU5QUDhXNGNlT0VlZmZ1M1VOTVRBd0FZTkNnUVJneApZ
Z1FhTldwazhERk5WZHUyYmJGOCtYSmtaR1FJODdLeXNuRHo1azBNSFRwVWxQYmV2WHZDNThURVJQ
VHIxdzg5ZXZTb2NsK3ZsV01YClh3VmRkWWEwWThlT0hkU2xTeGNDUUVGQlFSUWZINjgyM1pvMWE4
amEycG9rRWdsSnBWS0tqWTBsSXFKTm16WlJ3NFlOeWRuWm1XSmkKWW9UMHNiR3hKSlZLQ1FDNXVy
cFNTa3FLenJ5U2twTEkzdDZlV3JSb1FhbXBxWFRxMUNscTE2NGRXVnRiMDU0OWU0aUlhTzdjdVNT
UgpTQ2c4UEp5dVhyMUtQajQrMUtoUkl3b0xDNk80dURpeXRiV2xjZVBHVVdscEtiM3p6anVFeDQr
cUpYTnpjM0p5Y3FMSXlFZ3FMUzNWCldnOWpleHI3VlV4TWpLaGZKU1ltVmtxanJ1ODhldlJJNno3
VjFxK1UrOGFmZi81SnZYcjFJZ0MwZlBseUtpMHRwUk1uVGxDblRwM28KaXkrK29OMjdkMU5JU0Fp
bHA2Y1RrWDU5cjY2cHREOUdqcXgwTmJMcXhjblZ2Z2k2QnNxb3l2Z29LQ2lnNGNPSFUvdjI3U2s4
UEp5bQpUSmxDd2NIQnRIZnZYbEc2czJmUGtydTdPMFZIUjlQMjdkc3BNaktTWkRJWkVSbCtURlBs
NGVGQlFVRkJOR1BHREZxeVpBbDVlM3ZUCm0yKytTV1ZsWlVJYVB6OC84dkh4b2ZuejU5UENoUXRw
MEtCQmxKV1ZSVVRWNitzMWRleFN4RjFKWUdBZ3llVnlKQ1VsR1MrcTY3QncKNFVMSTVYSXNYTGl3
MXNxc0NUWFZqckt5TW1SbVpzTFYxVlh0YjhXcWlBZzVPVGx3Y25LcWRsN0tjbk56MGF4Wk0yRzZ1
TGhZK0hZcgprOG1FMHptZmZmWVpYbm5sRlpTVWxPRGh3NGU0Zi84K3RtN2RpbkhqeGdtL24xU25I
dnJpZm1VNFRmc1UwTjZ2VlB1R0tpTENwVXVYCllHWm1CbmQzZCtOWHZCWlYyaCt1cnNDTkc2STBh
dC9WVzUzblVkUkFHZFhwVnpLWkRCa1pHWEIyZGtiVHBrMHJMWmZMNVRBek04UDkKKy9kaGFXbUpo
ZzBiaXBaWFovem41ZVdoYWRPbUtDb3F3dFdyVjlHNmRXdmhOMkVGZjM5L0JBUUVZTkdpUlNncUts
SjdZVmRWKzNwTgpITHVDZ29JZ2w4djVJcXk2eU1yS3lxQ0Rsa1FpVWR0eHFwS1hNdFVEclBLcFpV
WG4vZTY3NzdCdjN6NTg4TUVIb3JUbTV1Wm8wNmFOClVlckJhbzY2ZmFxZ3JWOXBDNzZLZGV2dHp3
eFA0ZXNJTFMwdDBibHpaNDNMRlEvbFVEeVZUVlYxeHI4aTROdmEybXF0QS9ENDZXK3EKd1YraHFu
MjlKbzlkSElCWnRmVHExUXZUcDAvSHFGR2o0T3ZyaStMaVltUm5aMlBZc0dGbzE2NmRxYXZIbVBI
eDZ3anJGTGxjanR1MwpiNHN1cEhwU2NBQm0xZUxsNVlYczdHd2NPSEFBV1ZsWkNBb0s0c0RMR0tz
MUd6ZHVSR1JrSkFCZzgrYk5DQTBOTlhHTjlNY0JtRlZiCmt5Wk5NSHo0Y0ZOWGd6SDJGSm93WVlL
cHExQmw5Zm8ycEtKRFQvNzdJbG5kdy8yS01XWU05VG9BMi9aVy83b3N4cXFEK3hWanpCanEKZFFC
bWpMRmFVVm9LYk5vRXZQTEs0MXVJL3YvNXdVOWNHYXhXOFcvQWpERldIVEV4ang4YldaTlBycXFO
TWxpdE0xa0FYclJva2FtSwpOcHBGaXhaaHdZSUZwcTRHVThMOWl0VUV0ZjJLQ1BqelR5QXRUZjFL
SDMxVS9ZS05XQWIzcTdySEpFL0NBdkRFUDYxSTRTTmpEREptCk5OeXZXRTNnZnNXTVNmRWtMSk1G
WU1ZWVkreHBwQWpBZkJFV1k0d3haZ0ljZ0JsampERVQ0QURNR0dPTW1RQUhZTVlZWTh3RU9BQXoK
eGhoakpzQUJtREhHR0RNQkRzQ01NY2FZQ1hBQVpvd3h4a3lBQXpCampERm1BaHlBR1dPTU1SUGdB
TXdZWTR5WkFBZGd4aGhqekFRNApBRFBHR0dNbXdBR1lNY1lZTXdFT3dJd3h4cGdKY0FCbWpESEdU
SUFETUdPTU1XWUNISUFaWTR3eEUrQUF6QmhqakprQUIyREdHR1BNCkJEZ0FNOFlZWXliQUFaZ3h4
aGd6QVE3QWpESEdtQWx3QUdhTU1jWk1nQU13WTR3eFpnSWNnQmxqakRFVDRBRE1HR09NbVFBSFlN
WVkKWTh3RWpCcUFDd3NMVVZKU1lzd3NHV01td3VPWnNacGwxQUFjR0JpSStmUG5Hek5MeHBpSjhI
aG1yR2J4S2VnNlJDYVQ0ZUxGaS9XdQpMTVlZWTVWWlZEZURSNDhlNFo5Ly9zR0pFeWR3OCtaTkpD
Y25ZKzNhdGZEeThrTG56cDFoWjJlbmRyM0V4RVFjUFhwVXJ6TE16YzNSCnBFa1RORzNhRk0yYU5j
T3p6ejZMeG8wYlY3ZnFkY3JwMDZjeGVQQmdaR1ZsWWVqUW9ZaUxpNnNYWmRVM2UvYnNRWFIwTkg3
Ly9mZDYKV1c1Vnh6TmpyQW9DQXdNcElDQ0FERlZTVWtMejU4OG5LeXNyYXRDZ0FRMGNPSkFjSEJ5
b2E5ZXVGQmdZU0haMmRpU1JTR2pBZ0FGMAo1TWlSU3V1ZlBuMmFsaTFiUm9NSER5WUFCdjB6Tnpl
bjd0MjdVMVJVRkQxNjlNamd1dGRGa1pHUm9qWWVQWHEwWHBSVlgremZ2NS82Cjl1MUxBTWplM3I3
ZWxWdmQ4Y3dZMDU4aTdsWXBBRis5ZXBYYXQyOVBBQ2c0T0ppeXM3T0ppTWpUMDVObXpacEZSRVFQ
SHo2a21UTm4Ka29XRkJRR2dWMTU1UldOKzA2Wk5xeFJrMTY1ZFM3ZHYzNmJjM0Z5NmRPa1NIVHg0
a0pZdVhVcmUzdDZpZE0yYk42ZWRPM2RXZlV2VQpFYXRXclJMYVpHMXRUWGZ2M3EwWFpUM3BrcE9U
S1RBd1VOVG5haU1BMTJhNXhoN1BqREh0cWh5QVMwdEx5ZC9mbndCUW56NTlxS0tpClFsaW1QR0FW
WW1KaUNBQlpXVmxwelBQQWdRT2lBMDJEQmcyb3ZMeGNZL212dmZhYUtMMmxwZVVUSDRRZlBYcEVp
eGN2cHVIRGgxTmMKWEZ5OUtldEpkZXJVS1JvN2RpeUZob2JTeElrVHljcktxbFlDY0cyWFd4UGpt
VEdtblNMdUd2d2I4TXFWSzNIczJERUF3UHo1ODJGbQpwdjA2cnRHalJ5TTFOUldyVjYvV21LWjU4
K2FpYVFzTEM1aWJtNnROYTJWbGhaOSsrZ24yOXZaWXRXb1ZnTWNYRkUyZVBCbFhybHlCCmxaV1ZJ
YzJwTTJ4dGJURnYzcng2VjlhVHFtSERodmp4eHgrRi9pU1h5N0Zod3dZQWdFUWlxVGZsMXNSNFpv
enB4K0Nyb0JNU0VvVFAKblRwMTBtdWRkOTk5Vit2QXRyR3hFVTNyYzZCNS9mWFhSZE8zYnQycTlR
dGpXUDNWcmwwNzBSOXpiZHUyRlQ0VFViMHB0eWJHTTJOTQpQd2FQb3JObnp3cWZNekl5OUZySHhj
VUYzYnQzTjdRb3JieTh2TkMwYVZPTmRXUE1tQ3dzL25leXFDYS9BZGQydVhWbFBEUDJOREk0CkFI
ZnMyRkg0L09PUFArcTlYbUppb3FGRmFTV1JTTkM1YzJmUnZEdDM3aGkxRE1icXU3b3luaGw3R2hu
OEc3Q2ZuNTh3K0RadDJvVCsKL2ZzalBEeGM1M3JHUG1WVlhsNk9mLzc1UnpUUDNkM2Q0SHdxS2ly
dzc3Ly9JaTh2RDE1ZVhuQjBkTlNZdHFpb0NMZHUzZEs0M043ZQpIbEtwVkRRdlB6OGZ1Ym01bGRL
NnU3dHIzQ2JYcjErSGxaVVZuSjJkdGRiOTVzMmJPSDM2Tks1ZHV3WTNOemQwNmRJRkxpNHVJQ0tV
CmxKUlVPclZmbmJLVTVlZm40NTkvL29HZG5SMDZkZXFrVnptcXJsMjdockt5TW5UbzBFR1lWMUJR
Z0xTME5OeTdkdzlCUVVGbzFxeVoKWG5rOWVQQUFSNDhlUldCZ0lDd3RMUTJ1eTlPc3JveG54cDVH
Qm8raUtWT21vRW1USnNMMHBFbVQ4TkZISDZHaW9zS29GZFBsMkxGagpLQ2dvRU0zejl2YldlLzBO
R3pZZ0lDQUFUWm8wZ2JlM3QzREFkM056dzg4Ly82eDJuVHQzN21ENjlPbm8xS2tUT25Ub0lQbzNi
ZG8wCkhEcDBxTkk2cDArZnh0dHZ2MTBwclV3bUU2VzdmLzgrMXE5ZmovNzkrOFBOelUyNE1FYWR2
THc4dlBYV1cralFvUU5pWW1KdysvWnQKckZ5NVVxaFg3OTY5OGMwMzMyaGMzNUN5Rks1ZHU0YVFr
QkM0dWJuQjJka1pJMGVPaEorZkgrenM3T0RwNllucDA2ZFgyaCtxTGw2OAppS1ZMbDhMZjN4OXVi
bTZJalkwRkFCUVhGMlBPbkRsbzFhb1ZCZ3dZZ05HalI2TjU4K1lZTUdDQTJqOWVsQjA4ZUJBdFc3
YkVvRUdECjBLWk5HOXkvZjE5blc5ai8xSlh4ek5oVHFTcjNBZi95eXkrVjd0dnQxNjhmdFdqUm90
SnRDL3JJek13VTVXVm5aNmR6bllpSUNORTYKYmR1MnBZS0NBcDNybFpXVlVXUmtKRFZ1M0pnV0xW
cEV5Y25KZE9USUVWcXhZZ1ZKcFZJaHYwR0RCbW5NYjlPbVRhS3lQVHc4dEpaWgpVVkVoM09xeGRP
bFMwZnlmZnZxSmhnMGJKcnJkQkFCdDM3NWRZLzI3ZCs5T0FDZ3BLVW0wN09yVnErVHE2a29BYVBI
aXhaWHFZR2haCkNqLy8vRE0xYnR5WW5KMmQ2ZGRmZnlXWlRFWnl1WnlPSGoxS2MrZk9KWE56Y3dK
QUxpNHVGQjhmWDJuOTFOUlU2dHk1YzZVK3MzVHAKVXJwMDZSSjE2dFNKQUpDRGcwT2x1ZzBhTkVo
MGE0eXFWMTk5VlpSK3hZb1ZXdHRTVllzWEx4YktjSEJ3cUpFeVRGV3VzY2N6WTB5NwphajJJZzRq
bzY2Ky9Ka3RMeTBvRHQyZlBublRseWhXRDhqSWtBQmNVRk5ESWtTTkY2YTJzck9qWXNXTTZ5eWty
SzZPQWdBQnEyTEFoCkpTY25WMXArNXN3WmF0cTBxWkR2cEVtVE5PYjF3Z3N2Q09ta1VpbkpaREt0
WmZmdjM1K2FObTFLUlVWRndqeVpURVo3OXV5aFc3ZHUKMGV6WnMwVnQyckZqaDlwOFB2bmtFd0pB
dnI2K2FwZGZ2WHFWYkcxdGFjR0NCYUw1VlNtTGlHaldyRmxDdWdNSERxaE44K1dYWDRyeQpXNzE2
dFdoNWNYRXhYYjkrbldiT25DbEtOMnJVS0hybW1XZG93b1FKdEgvL2Zpb3ZMNmZTMGxKYXVuU3BL
RjEwZExURytpMWN1RkNVCmR1L2V2UnJUVmtkOURzQkV4aDNQakRIdHFoMkFpWWdPSGp4SWJtNXVs
UWF0dGJVMXZmLysrM3A5SXlYU0hZREx5OHZwK1BIanRIejUKY3ZMdzhCQ2w5Zkh4VVJ0TTFWbXhZ
Z1VCb0U4KytVUmptbm56NW9ueS8rdXZ2OVNtTzNUb2tON2ZJdlB5OHNqS3lvcG16NTZ0TVUxRwpS
b1plK1NrZVMvajY2Njlyekd2S2xDazBaODZjYXBkMTZOQWhra2drQklER2p4K3ZNVDhpRWowY3BW
R2pSblR0MmpXMTZaVFBNbGhZCldOQzZkZXZVcHV2UW9ZT1FMaXdzVEdPNWQrL2VwVGZmZkpQYXRt
MUxIMzc0SWNubGNxMzFyS3I2SG9DSmpEZWVHV1BhR1NVQUV4RVYKRlJYUisrKy9MenlpVHZtZms1
TVQvZnJycnpyelVBM0FGaFlXTkdEQUFPcmF0U3M1T3p0WCtzdmMzdDZlZ29PRGFmMzY5VnBQVHly
TAp5OHNUdnQxZXVIQkJZenJWcDNLTkd6ZE9ZOXB1M2JvSjZZWU9IYW94M1pvMWEwZ2lrZERseTVj
MXBpa29LTkFyS0RvNk9oSUFhdEtrCmljYm5ZQ2NrSk5DTUdUT3FWWlpNSmlNdkx5OGhUVVpHaHNi
OGlJaHUzTGdoQkdzQU5HVElFTFhwZkgxOVJkK0FOWmt3WVlLUXJrZVAKSGxyTHJnMVBRd0FtTXM1
NFpveHBwNGk3MWI2VTBjYkdCa3VYTHNXSkV5Zmc1T1FrV3BhZG5ZMVJvMFpoenB3NWtNdmxldWNw
bDh0UgpVbEtDNXMyYm82S2lRblRCVXI5Ky9aQ2JtNHZZMkZoTW1EQkI3NnN4UC8vOGMrVGw1YUZs
eTVhNGNlTUdFaElTMVA3THlzb1NyZmZ2CnYvOXF6SFBLbENuQzUvajRlRnkvZmwxdHVuWHIxdUg1
NTU4WFBWUkJsZXJWdTVydStXemR1aldBeDFmK0RoNDhHRGR2M3F5VXBtL2YKdmdnTkRhMVdXWnMz
YjhhWk0yY0FQTDRYVlZ2ZGdjZjNoZ1lGQlFuVDhmSHhPSDc4ZUtWMHlnK1owTGJ2ZXZic0tYeStj
T0dDMXJLWgo4ZFRFZUdhTXFXZTBld204dkx6UXFsVXJCQVlHd3RYVlZiUXNLaW9LNDhhTjB6dXZo
ZzBiSWlVbEJYLzk5UmUyYmRzbUNoakp5Y240CjRvc3ZESzdmZ1FNSEFBQzNiOS9Ha0NGRE5QNExE
UTJGdWJtNThPL1NwVXNhRHphaG9hRndjSEFBOFBpUGhuWHIxbFZLYy9Ma1NSdy8KZmh3UkVSRUcx
MW1kRVNOR0NKOVRVbExnNCtPRFRaczJpWjZTWkcxdERYOS8vMnFWb3h3OFc3ZHVyZkhSb01yR2p4
OHZtbFlFOEtxdwp0N2NYUGhjWEYxYzVIMVkxeGh6UGpESDFqSDR6bjUrZkg4NmVQWXZKa3llTDVt
L2V2Qm03ZHUweU9MOWV2WHJocTYrK0VzMmJOMjhlCmR1L2ViVkErNmVucEFJQUJBd2Fndkx4Yzcz
OEZCUVVhdjZuWjJOaUk3cG44NFljZlVGNWVMa3F6ZHUxYU5HL2VIQysrK0tKQjlkVmsKOXV6WjhQ
RHdFS2J2M2J1SGNlUEdvVnUzYnRpelo0OVJ5Z0RFVDBqUzllMVhvVmV2WHFMcGMrZk9HYTArekRT
TVBaNFpZLzlUSTNmVApOMnJVQ0d2V3JNRzMzMzRybXYvQkJ4OVVLYitwVTZlS1Rxbks1WEtNSFR0
VzcxT1QyZG5aeU0vUEJ3Q2NQMysrU25YUTVLMjMzaEpPCjRkNitmUnM3ZCs0VWxoVVZGZUdYWDM1
QldGaVkwUjRRWVdOamcrVGs1RXFQQWp4MTZoUUdEeDZNTVdQR0lDY25wOXJsS0FkZ2ZVL3oKdTdp
NGlLYTFuYjVuVHc1amoyZkcyR00xK2ppYmlJZ0l2UGJhYThMMHVYUG5VRnBhV3FXODFxNWRLM3Iw
NUlNSER6Qml4QWc4ZVBCQQo1N3JLQWVubXpac29MQ3lzVWgzVWNYZDN4NUFoUTRUcDZPaG80Zk92
di82S2dvSUNUSm8weVdqbEFVQ3paczJRbkp5TXhZc1hvMEdECkJxSmxXN2R1eGJQUFBsdnQzMDJW
LzJDNGNlT0dYdXZZMnRxS25pVEdUMHVxWDR3NW5obGpCZ2Jnd3NKQzNMdDN6NkFDRml4WUlIeVcK
eStWNlAvQmRWY09HRGZINzc3L0R6czVPbUhmaHdnV01IVHRXNXdVaHFxZFFqWDFSai9MRldIdjM3
c1hWcTFjQlBMNzRhdENnUVhCegpjek5xZWNEamk1bm16WnVIZi8vOUY4SEJ3YUpsdDIvZlJsQlFr
UEN0dnlxNmRPa2lmTlkzQUFPUHZ5MnB5NFBWUGFZY3o0d3hBd1B3CnlaTW44Y2tubnhoVWdMdTd1
K2hSZDlYUnNXTkgvUERERDZKNXUzZnZ4dHk1YzdXdTE3QmhRN1JvMFVLWVZzMURHNWxNaHIvKytr
dHIKbWhkZWVFRUlzbks1SEd2WHJzWDU4K2VSa3BKaXRJdXZGRlJmT05HMmJWdkV4c1ppMzc1OW9q
YmV1WE1IbjMzMldaWExVVDdiVUZSVQpKUHhSb1l2eVZlU3FMOHRnZFl1cHh6TmpUenVEenhGdTI3
Yk5vUFRsNWVYQ2FTcExTMHZSMjFlcTRwVlhYc0c3Nzc0cm1oY1ZGWVhOCm16ZHJYYy9UMDFQNHZI
YnRXbHk2ZEVtdjh1YlBuNCswdERTdGFjek16UERXVzI4SjB6LysrQ05XcjE0TloyZG5EQjgrWEs5
eTlLVjgKdWx0Wi8vNzljZVRJRVhUdDJsV1l0M2Z2M2lxWDQrUGpJNXJXOUh4c1pYbDVlYUpUa3I2
K3ZsVXVuOVVPVTQ5bnhwNW1CZ2ZnNjlldgo0N2ZmZnRNNy9kbXpaMUZTVWdJQUNBZ0lFTjBIcWxC
V1ZpYWExblZLT1NvcUN2MzY5UlBOZS8zMTEzSGl4QW1ONjBSR1JncWZaVElaClpzeVlVZW1GQ0tw
aVltTHczWGZmWWVyVXFWclRBVUI0ZUxqd2UyeFdWaGErK2VZYmhJZUhpOTduYWd3M2I5NFVydWhX
MWFwVks2eFoKczBhWXJzN3RPNk5IanhiOTBiSisvWHFkTDRSWC9rTmw3Tml4b3ZWckd0K1hXalUx
TVo0WlkvcXAwbFV5NzcvL1BtN2Z2cTFYV3NXOQpzUktKQkI5Ly9MSGFOSGw1ZWFMcFI0OGVhYjI0
dzhMQ0FqRXhNV2pldkxrd3I3aTRHTUhCd1JxdkFIN3BwWmRFYjB2YXRXc1hBZ0lDCmtKbVpXU2x0
ZVhrNVZxNWNpVmRmZlJXZmYvNjVYcWZjSEIwZEVSSVNJcHBueU1WWGp4NDkwanF0VFBsQ0wxVTll
L1lVWGcvbzUrZFgKNWJLc3JLd1FIUjB0WE9GOTVjb1YwUlhlNnF4ZnZ4N0E0OStCTmQycnJYcWJs
aVpGUlVYQ1oyM0I5YzZkTzNqcHBaZGdiMitQc0xDdwpHcnRuV05jZmE3b1VGeGZqdmZmZVE3dDI3
VEJqeGd5OUx3U3Nicm42TVBaNFpvenBwMG9CK01xVksvRDE5Vlg3K2oxbHExYXRFbDZMCjkrV1hY
Nkp2Mzc1cTA2bTdOZWppeFl0YTgzWjJkc2FXTFZ0RTN6QXpNek14WXNRSXRSY2ZTU1FTTEZteVJI
Umw3dUhEaDlHbFN4ZU0KR0RFQ24zMzJHYUtqby9IZWUrL0IwOU1UNzd6ekRxWk5tNFkzM25oRGF6
MlVLVitNTlhqdzRFb1BNTkRtN3QyN29tbHR0eEt0WGJzVwpxYW1wYXBkbFoyZWp1TGdZRW9sRWRN
VnFWY3JxMTYrZjZJK0lDUk1tYUx6bzV0S2xTOExyQlQvNTVCUFI3OUdheXRMMjZrRGxnQ0NUCnlV
UzNSU243NzMvL2kyM2J0dUhodzRkWXYzNDlObXpZb0RIUDZsQis0dGpEaHc4cm5iWFJaZE9tVFZp
MmJCa3VYNzZNRlN0V0NIK3MKMUhTNStqRDJlR2FNNmNtUVowRlhWRlRRMXExYnFXdlhyc0piaU1h
T0hVdkxseStuNU9Sazh2THlvZ2tUSnRDeVpjdUUxODkxN2RxVgpkdTdjcVRIUDA2ZFBpNTQ1clBn
M2FOQWd1bnIxcXM0NmZmSEZGNVhXN2R5NU14MC9mbHp0Zy9uLytPTVBzckd4cWJTTzhqK0pSRUxU
CnBrMmo4dkp5dmJhTE1zV3JBbU5qWS9WZVJ5NlgwL3Z2dnkrcVE1OCtmYWk0dUxoU1dzWHpyQnMx
YWtUNzkrOFhMU3NxS3FMZzRHQUMKVU9sdFNGVXBpK2p4UHYva2swK0Vad04zNk5DaDByTzBiOXk0
UWE2dXJtUnJhMHNiTm16UTJNNmtwQ1JSdVUyYk5xWHM3T3hLNmZMego4eXU5ZE9Qamp6OVdtMmRZ
V0pnb25hWjJWOGVGQ3hmSTN0NWVWTTdQUC85c1VCN1RwazBUcmEvdFRWdkdMRmVibWhqUGpESGRx
djB5CmhwU1VGSm96Wnc0RkJRVlJtelp0eU03T2pnQ1FwYVVsK2ZqNDBPdXZ2MDVidDI3VitIYWFy
Ny8rbXB5Y25MUUdRZ0RVc21WTFdybHkKcGRhNnZQenl5MnJYZFhaMnBoczNibFJLZi9Ub1VlclNw
WXZvNVFHS2Y1NmVucFNTa21MdzlsRFl1SEVqdFd6WlV1ZnJDWW1JcmwyNwpScU5IanlaM2QzZTE5
Vy9ldkRtTkhEbVN6cDgvTDZ6ajV1WkdvYUdod3R1Q1hGeGNLRFEwbE1hUEgwOHVMaTdVdVhObmlv
dUxNMHBaCnlsSlRVNmw5Ky9aQ2VnOFBENHFNaktUKy9mdFRnd1lOeU12TGk4NmVQYXQyM2ZUMGRC
bzhlTERhQi94YlcxdFRVRkNRRU5RaklpS28KV2JObWF1dm83dTVlNlhXRHg0OGZKd2NIQndKQTdk
dTNwNXMzYityYzd2bzRmZm8walJ3NWtycDE2NmEybnlpQ1VVaElDUDMzdi8vVgptZCtwVTZmSTJ0
cGFDSFJIamh5cGxYTDFWZDN4ekJqVG55THVTZ0lEQTBrdWx5TXBLVW43VjJVOStQbjVJU2dvcUVy
UGFqYUZCdzhlCklDMHREZWZQbjBlN2R1M2c1ZVdsOGRTcHZpb3FLbkR1M0RsNGVYa1pxWlppT1Rr
NWVPYVpad0E4UGlWNThlSkZYTGx5QmMyYU5VUDcKOXUzUnNtWExHaWxYSVRNekU4ZVBIOGZ4NDhk
aGFXa0pYMTlmK1BuNVZYcHdmMjBxS2lyQ21UTm4wTDE3ZDQwdnNhZ0w3dDI3aDkyNwpkMlB3NE1I
Q1BxekxuclR4ek5pVElpZ29DSEs1SE1hOVJQY0owNlJKRXd3WU1BQURCZ3d3V3A3bTV1WTFGbndC
aUE3Y2RuWjI2TmF0Ckc3cDE2MVpqNWFseWNYR0JpNHRMcFlkL21KS3RyUzE2OU9oaDZtcm81T2pv
V09tRkZZeXhweGMvSzVBeHhoZ3pBYU4rQTU0d1lRTGMKM2QyTm1TVmp6RVI0UEROV3M0ejZHekJq
akRIR3RGUDhCc3lub0JsampERVQ0QURNR0dPTW1RQUhZTVlZWTh3RU9BQXp4aGhqSnNBQgptREhH
R0RNQkRzQ01NY2FZQ1hBQVpvd3h4a3lBQXpCampERm1BaHlBR1dPTU1SUGdBTXdZWTR5WkFBZGd4
aGhqekFRNEFEUEdHR01tCndBR1lNY1lZTXdFTEFEaHc0QUNlZSs0NVU5ZUZNY1lZcS9jT0hEaUFn
SUFBU0lpSWdvS0NURjBmeGhoajdLbVJtSmlJL3dOWCtEdWcKZTFTMFl3QUFBQUJKUlU1RXJrSmdn
Zz09Cgo=
</data>
<flag name="review"
          id="4341"
          type_id="1"
          status="+"
          setter="rwlbuis"
    />
          </attachment>
      

    </bug>

</bugzilla>