<?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>47538</bug_id>
          
          <creation_ts>2010-10-12 02:35:18 -0700</creation_ts>
          <short_desc>Unify JSC::StringBuilder &amp; WebCore::StringBuilder</short_desc>
          <delta_ts>2010-10-14 05:05:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>18994</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>292890</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-12 02:35:18 -0700</bug_when>
    <thetext>JSC::StringBuilder operates on a Vector&lt;UChar, 64&gt; and allows to efficiently build a string based on a stream of characters.
WebCore::StringBuilder operates on a Vector&lt;String, 16&gt; and allows to concat a set of arbitary Strings, it&apos;s not very efficient for single characters, as a String is built for each of them.

When evaluating the usages of WebCore::StringBuilder, all clients of this code, use it to combine Strings _and_ single characters (grep -RI StringBuilder * in WebCore).
My proposal is to use the JSC::StringBuilder throughout WebCore &amp; JSC, as it&apos;s more efficient, and reduces the duplicated code mess.

Move it to wtf/text/StringBuilder, add a new UStringBuilder class to JSC/runtime that extends the StringBuilder to support appending/creating UStrings as well. This class can go away, once we&apos;ve completed unifying WTFString &amp; UString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292897</commentid>
    <comment_count>1</comment_count>
      <attachid>70520</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-12 03:30:54 -0700</bug_when>
    <thetext>Created attachment 70520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292898</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-12 03:35:01 -0700</bug_when>
    <thetext>Attachment 70520 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeWin.cpp:49:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.cpp:56:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292899</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-12 03:35:23 -0700</bug_when>
    <thetext>The WebCore/ChangeLog is still missing some information, only marked it for review, to get EWS results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292909</commentid>
    <comment_count>4</comment_count>
      <attachid>70523</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-12 05:46:53 -0700</bug_when>
    <thetext>Created attachment 70523
Patch v2

Fixed a regression, now all tests pass as expected, also simplifies Node.h a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292910</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-12 05:47:16 -0700</bug_when>
    <thetext>Attachment 70520 did not build on chromium:
Build output: http://queues.webkit.org/results/4334033</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292912</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-12 05:48:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Attachment 70520 [details] did not build on chromium:
&gt; Build output: http://queues.webkit.org/results/4334033

Fixing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292916</commentid>
    <comment_count>7</comment_count>
      <attachid>70524</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-12 05:58:40 -0700</bug_when>
    <thetext>Created attachment 70524
Patch v3

Chromium is using StringBuilder from WebKit/chromium/src - didn&apos;t know that, uploading new patch, which attempts to fix the Chromium build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292957</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-12 08:41:59 -0700</bug_when>
    <thetext>Attachment 70524 did not build on chromium:
Build output: http://queues.webkit.org/results/4321039</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292983</commentid>
    <comment_count>9</comment_count>
      <attachid>70540</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-12 10:09:44 -0700</bug_when>
    <thetext>Created attachment 70540
Patch v4

Hopefully chromium builds this time...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293032</commentid>
    <comment_count>10</comment_count>
      <attachid>70540</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-12 12:09:17 -0700</bug_when>
    <thetext>Comment on attachment 70540
Patch v4

Looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293067</commentid>
    <comment_count>11</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-12 12:48:35 -0700</bug_when>
    <thetext>Committed r69594: &lt;http://trac.webkit.org/changeset/69594&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293073</commentid>
    <comment_count>12</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-12 12:56:56 -0700</bug_when>
    <thetext>Landed in r69594.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70520</attachid>
            <date>2010-10-12 03:30:54 -0700</date>
            <delta_ts>2010-10-12 05:46:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>UnifyStringBuilder.diff</filename>
            <type>text/plain</type>
            <size>84884</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NTY5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTAtMTAtMTIgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgSlNDOjpTdHJpbmdCdWlsZGVyICYgV2Vi
Q29yZTo6U3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc1MzgKKworICAgICAgICBNb3ZlIHJ1bnRpbWUvU3RyaW5nQnVpbGRlci5o
IHRvIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaC4gUmVuYW1lIGJ1aWxkKCkgdG8gdG9TdHJpbmco
KSBhbmQgcmV0dXJuIGEgV1RGOjpTdHJpbmcoKS4KKyAgICAgICAgTW92ZSB0aGUgYXBwZW5kKGNv
bnN0IEpTQzo6VVN0cmluZyYpIG1ldGhvZCBpbnRvIHJ1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaC4K
KyAgICAgICAgVVN0cmluZ0J1aWxkZXIgaW5oZXJpdHMgZnJvbSBTdHJpbmdCdWlsZGVyLmggYW5k
IGFkZHMgYXBwZW5kKGNvbnN0IEpTQzo6VVN0cmluZyYpIGFuZCBVU3RyaW5nIHRvVVN0cmluZygp
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm8gbmV3IGNvZGUsIGp1c3QgbW92ZSBjb2RlIGFy
b3VuZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oIC8gcnVudGltZS9VU3RyaW5nQnVpbGRlci5oLiBSZW1vdmUgcnVudGltZS9TdHJpbmdC
dWlsZGVyLmguCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8uCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKTogVXNlIFVTdHJpbmdCdWls
ZGVyLCBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuIFJlbmFtZSBidWlsZCgpIC0+IHRvVVN0cmlu
ZygpLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNVbmVzY2Fw
ZSk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OlN0cmluZ2lmaWVyOjpzdHJpbmdpZnkpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6U3RyaW5n
aWZpZXI6OmFwcGVuZFF1b3RlZFN0cmluZyk6IERpdHRvLgorICAgICAgICAoSlNDOjpTdHJpbmdp
Zmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6IERpdHRvLgorICAgICAgICAoSlNDOjpTdHJp
bmdpZmllcjo6c3RhcnROZXdMaW5lKTogRGl0dG8uCisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjps
ZXhTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6
IFJlbW92ZSB1bm5lZWRlZCBKU1N0cmluZ0J1aWxkZXIuaCAvIFN0cmluZ0J1aWxkZXIuaCBpbmNs
dWRlLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQnVpbGRlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHJ1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaDogQWRkZWQuIEluaGVyaXRzIGZyb20gV1RGOjpT
dHJpbmdCdWlsZGVyLCBleHRlbmRpbmcgaXQgYnkgdHdvIG1ldGhvZHMuCisgICAgICAgIChKU0M6
OlVTdHJpbmdCdWlsZGVyOjphcHBlbmQpOiBhcHBlbmQoY29uc3QgSlNDOjpVU3RyaW5nJikKKyAg
ICAgICAgKEpTQzo6VVN0cmluZ0J1aWxkZXI6OnRvVVN0cmluZyk6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oOiBDb3BpZWQgZnJvbSBydW50aW1lL1N0cmluZ0J1aWxkZXIuaC4g
TW92ZSBKU0M6OlVTdHJpbmcgcGFydHMgaW50byBydW50aW1lL1VTdHJpbmdCdWlsZGVyLmgKKyAg
ICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKTogUmVuYW1lZCBtX2J1ZmZlciB0byBi
dWZmZXIgZXZlcnl3aGVyZS4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6aXNFbXB0eSk6
IERpdHRvICgrIGNvbnN0aWZ5IG1ldGhvZCkuIAorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVy
OjpyZXNlcnZlQ2FwYWNpdHkpOiBEaXR0by4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6
cmVzaXplKTogRGl0dG8uCisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OnNpemUpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6b3BlcmF0b3JbXSk6IERpdHRvLgorICAg
ICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjp0b1N0cmluZyk6IERpdHRvICgrIHJlbmFtZWQgZnJv
bSBidWlsZCgpKS4gUmV0dXJucyBhIFN0cmluZywgbm90IGFuIFVTdHJpbmcuIFRoZSBvbGQgYnVp
bGQoKSBtZXRob2QgaXMgbm93IG5hbWVkIHRvVVN0cmluZygpIGFuZCBsaXZlcyBpbiBVU3RyaW5n
QnVpbGRlci4KKwogMjAxMC0xMC0xMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpJbmRleDogSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJl
dmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQxMSw2ICs0MTEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RyYWNpbmcuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9VU3RyaW5nLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggXAorCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaCBcCiAJSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrR0NNYXAuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIu
aCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggXApAQCAtNTA4LDYgKzUw
OSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L0NTdHJpbmcuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmggXAog
CUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oIFwKKwlKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0hhc2guaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbEJhc2UuaCBc
CiAJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgXApJbmRleDogSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw2ICszNDYsNyBAQAog
ICAgICAgICAgICAgJ3J1bnRpbWUvVHJhY2luZy5oJywKICAgICAgICAgICAgICdydW50aW1lL1VT
dHJpbmcuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL1VTdHJpbmcuaCcsCisgICAgICAgICAg
ICAncnVudGltZS9VU3RyaW5nQnVpbGRlci5oJywKICAgICAgICAgICAgICdydW50aW1lL1dlYWtS
YW5kb20uaCcsCiAgICAgICAgICAgICAnd3RmL0Fsd2F5c0lubGluZS5oJywKICAgICAgICAgICAg
ICd3dGYvQVNDSUlDVHlwZS5oJywKQEAgLTQ1MCw2ICs0NTEsOCBAQAogICAgICAgICAgICAgJ3d0
Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvQ1N0cmlu
Zy5jcHAnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L0NTdHJpbmcuaCcsCisgICAgICAgICAgICAn
d3RmL3RleHQvU3RyaW5nQnVmZmVyLmgnLAorICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3RyaW5nSGFzaC5oJywKICAgICAgICAg
ICAgICd3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3Ry
aW5nSW1wbC5oJywKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagkocmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjUzLDYgKzEyNTMsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxVU3RyaW5nQnVpbGRlci5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
cnVudGltZVxVU3RyaW5nSW1wbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJ
KHJldmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L1dURi9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MDksNiArNjA5LDE0IEBACiAgCQkJ
Pg0KICAJCTwvRmlsZT4NCiAgCQk8RmlsZQ0KKyAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0Zlx0
ZXh0XFN0cmluZ0J1ZmZlci5oIg0KKyAJCQk+DQorIAkJPC9GaWxlPg0KKyAJCTxGaWxlDQorIAkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHRleHRcU3RyaW5nQnVpbGRlci5oIg0KKyAJCQk+DQor
IAkJPC9GaWxlPg0KKyAJCTxGaWxlDQogIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHRleHRc
U3RyaW5nSGFzaC5oIg0KICAJCQk+DQogIAkJPC9GaWxlPg0KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiwxMCBAQAogLyog
QmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMDZEMzU4QjMwREFBREFBNDAwM0IxNzRF
IC8qIE1haW5UaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDZEMzU4QTIwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJlYWQuY3BwICovOyB9
OwogCQkwNkQzNThCNDBEQUFEQUFBMDAzQjE3NEUgLyogTWFpblRocmVhZE1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2RDM1OEExMERBQUQ5QzQw
MDNCMTc0RSAvKiBNYWluVGhyZWFkTWFjLm1tICovOyB9OworCQkwODE0Njk0OTEyNjQzNzg1MDBE
RkY5MzUgLyogU3RyaW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDgxNDY5NDgxMjY0Mzc1RTAwREZGOTM1IC8qIFN0cmluZ0J1aWxkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhG
QTVCQjBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEZBNUI5MEVGNzZENDMwMDU3OEU2RiAv
KiBSYW5kb21OdW1iZXIuY3BwICovOyB9OwogCQkwODhGQTVCQzBFRjc2RDQzMDA1NzhFNkYgLyog
UmFuZG9tTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDhEREE1QzExMjY0NjMx
NzAwNzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1
aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwOEUyNzlFOTBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFMjc5RTgwRUY4M0IxMDAw
N0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLzsgfTsKIAkJMEIzMzBDMjcwRjM4QzYyMzAw
NjkyREUzIC8qIFR5cGVUcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEIzMzBDMjYwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFpdHMuY3Bw
ICovOyB9OwogCQkwQjREN0U2MzBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI0RDdFNjIwRjMxOUFD
ODAwQUQ3RTU4IC8qIFR5cGVUcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjE3LDcgKzIxOSw2IEBACiAJCTg2OEJGQTE4MTE3Q0YxOTkw
MEI5MDhCMSAvKiBXVEZTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2OEJGQTE2MTE3Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjhCRkE2MDEx
N0QwNDgyMDBCOTA4QjEgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjhCRkE1RjExN0QwNDgyMDBCOTA4QjEgLyog
U3RhdGljQ29uc3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY5MDIzMTUxMjA5MkQ1QzAwNjMwQUY5IC8qIFBhZ2VSZXNlcnZhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5MDIz
MTQxMjA5MkQ1QzAwNjMwQUY5IC8qIFBhZ2VSZXNlcnZhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2OThCODY5MTBENDREOTQwMEQ4RDAx
QiAvKiBTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4Njk4Qjg2ODEwRDQ0RDk0MDBEOEQwMUIgLyogU3RyaW5nQnVpbGRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUQwNEFG
MTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlEMDRBRTExOTNCNTRE
MDA4MDM0NzUgLyogQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3
MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QTkwRUQwMEVF
N0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRB
cml0aG1ldGljLmNwcCAqLzsgfTsKQEAgLTYyOSw4ICs2MzAsMTAgQEAKIAkJMDZEMzU4QTEwREFB
RDlDNDAwM0IxNzRFIC8qIE1haW5UaHJlYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNYWluVGhyZWFkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNkQzNThBMjBEQUFEOUM0MDAzQjE3NEUgLyogTWFpblRocmVhZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDZEMzU4QTMwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJl
YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFpblRocmVhZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwODE0Njk0ODEyNjQzNzVFMDBERkY5MzUgLyogU3Ry
aW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHJpbmdCdWls
ZGVyLmg7IHBhdGggPSB0ZXh0L1N0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg4RkE1QjkwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21OdW1iZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFu
ZG9tTnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmRvbU51bWJl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEREQTVCQjEyNjQ1RjFEMDA3NTE3
MzIgLyogVVN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VVN0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFMjc5RTgw
RUY4M0IxMDAwN0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmFuZG9tTnVtYmVyU2VlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlVHJhaXRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVUcmFp
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVRyYWl0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIyLDcgKzgyNSw2IEBACiAJCTg2OEJGQTE2MTE3
Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV1RGU3RyaW5nLmg7IHBhdGggPSB0ZXh0L1dURlN0cmluZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjhCRkE1RjExN0QwNDgyMDBCOTA4QjEgLyogU3RhdGljQ29uc3Ry
dWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY0NvbnN0cnVj
dG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjkwMjMxNDEyMDkyRDVDMDA2
MzBBRjkgLyogUGFnZVJlc2VydmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhZ2VSZXNlcnZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njk4
Qjg2ODEwRDQ0RDk0MDBEOEQwMUIgLyogU3RyaW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2OUQwNEFFMTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFRyYW5zY2Vu
ZGVudGFsRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY5RUJDQjYw
RThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzdWx0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkE5
MEVDRjBFRTdENTFGMDBBQjM1MEQgLyogSklUQXJpdGhtZXRpYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBcml0aG1ldGljLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3OTMsNyArMTc5NSw2IEBACiAJCQkJN0UyQzZDOTgwRDMxQzZCNjAw
MkQ0NEUyIC8qIFNjb3BlQ2hhaW5NYXJrLmggKi8sCiAJCQkJOTMzMDNGRTgwRTZBNzJCNTAwNzg2
RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgKi8sCiAJCQkJOTMzMDNGRUEwRTZBNzJDMDAwNzg2RTZB
IC8qIFNtYWxsU3RyaW5ncy5oICovLAotCQkJCTg2OThCODY4MTBENDREOTQwMEQ4RDAxQiAvKiBT
dHJpbmdCdWlsZGVyLmggKi8sCiAJCQkJODZCNkRBMDExMjEzMkI5QTAwMEQzMTZGIC8qIFN0cmlu
Z0NvbmNhdGVuYXRlLmggKi8sCiAJCQkJQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmlu
Z0NvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzE4QzNDMTBFMTZFRTMzMDBCMzQ0NjAgLyogU3Ry
aW5nQ29uc3RydWN0b3IuaCAqLywKQEAgLTE4MTUsNiArMTgxNiw3IEBACiAJCQkJNUQ1MzcyNkUw
RTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLywKIAkJCQlGNjkyQTg4NTAyNTU1OTdEMDFG
RjYwRjcgLyogVVN0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8q
IFVTdHJpbmcuaCAqLywKKwkJCQkwOEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1
aWxkZXIuaCAqLywKIAkJCQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmgg
Ki8sCiAJCQkJMTQwMzVEQjAxMERCRkIyQTAwRkZGRkU3IC8qIFdlYWtHQ1B0ci5oICovLAogCQkJ
CTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCkBAIC0xODM0LDYg
KzE4MzYsNyBAQAogCQkJCTg2NTY1NzQwMTE1QkUzREEwMDI5MUY0MCAvKiBDU3RyaW5nLmNwcCAq
LywKIAkJCQk4NjU2NTc0MTExNUJFM0RBMDAyOTFGNDAgLyogQ1N0cmluZy5oICovLAogCQkJCTg2
Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLywKKwkJCQkwODE0Njk0
ODEyNjQzNzVFMDBERkY5MzUgLyogU3RyaW5nQnVpbGRlci5oICovLAogCQkJCTg2OEJGQTA1MTE3
Q0VGRDEwMEI5MDhCMSAvKiBTdHJpbmdIYXNoLmggKi8sCiAJCQkJODY4QkZBMDYxMTdDRUZEMTAw
QjkwOEIxIC8qIFN0cmluZ0ltcGwuY3BwICovLAogCQkJCTg2OEJGQTA3MTE3Q0VGRDEwMEI5MDhC
MSAvKiBTdHJpbmdJbXBsLmggKi8sCkBAIC0yMjU2LDcgKzIyNTksNyBAQAogCQkJCTg2OEJGQTYw
MTE3RDA0ODIwMEI5MDhCMSAvKiBTdGF0aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMUI0NDdBMEVDQ0Q3M0IwMDRGNEREMSAvKiBTdGRMaWJFeHRyYXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTg2OThCODY5MTBENDREOTQwMEQ4RDAxQiAvKiBTdHJpbmdCdWlsZGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwODE0Njk0OTEyNjQzNzg1MDBERkY5MzUgLyogU3RyaW5n
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8q
IFN0cmluZ0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2NzBFMTZGNUNE
MDBCMzQ0NjAgLyogU3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjhCRkEwRDEx
N0NFRkQxMDBCOTA4QjEgLyogU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjkyLDYg
KzIyOTUsNyBAQAogCQkJCUJDMThDNDc0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVbmljb2RlSWN1Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3NTBFMTZGNUNEMDBCMzQ0NjAgLyogVW51c2VkUGFy
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDc2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVU3Ry
aW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEREQTVDMTEyNjQ2MzE3MDA3NTE3MzIgLyogVVN0
cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDc3MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTdGRjc3MTExMjEzMUQyMDAwNzZBMTkg
LyogVmFsdWVDaGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NzgwRTE2RjVDRDAwQjM0
NDYwIC8qIFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgot
I2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgog
I2luY2x1ZGUgIlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2NywxMyArMzY3LDEz
IEBAIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBGdW5jdGlvbkUKIFVTdHJpbmcgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CiB7CiAgICAgRnVuY3Rpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzID0gKm1fcGFyYW1ldGVyczsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBwb3Mg
PSAwOyBwb3MgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytwb3MpIHsKICAgICAgICAgaWYgKCFidWls
ZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZChwYXJhbWV0ZXJzW3Bvc10udXN0cmluZygpKTsKICAgICB9Ci0gICAg
cmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1VTdHJpbmcoKTsK
IH0KIAogUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBQcm9ncmFtRXhlY3V0YWJsZTo6cmVwYXJz
ZUV4Y2VwdGlvbkluZm8oU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKQpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA2
OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJMZXhlci5oIgogI2lu
Y2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgorI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29u
Y2F0ZW5hdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04Myw3ICs4Myw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICBlbHNlIGlmIChhcmdzLnNpemUo
KSA9PSAxKQogICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygiKGZ1bmN0aW9uKCkgeyAiLCBh
cmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCAiXG59KSIpOwogICAgIGVsc2UgewotICAgICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIFVTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IGFyZ3Muc2l6ZSgpIC0gMTsgaSsrKSB7CkBAIC05Myw3ICs5Myw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IikgeyAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdChhcmdzLnNpemUoKSAtIDEp
LnRvU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxufSkiKTsKLSAgICAg
ICAgcHJvZ3JhbSA9IGJ1aWxkZXIuYnVpbGQoKTsKKyAgICAgICAgcHJvZ3JhbSA9IGJ1aWxkZXIu
dG9VU3RyaW5nKCk7CiAgICAgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiA2OTU2MSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTGl0ZXJhbFBhcnNlci5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVkZSAiU3Ry
aW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiZHRv
YS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC01NjMsNyAr
NTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIFVTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KTsKICAgICBpbnQgayA9IDA7CiAgICAgaW50IGxlbiA9IHN0ci5sZW5ndGgoKTsKQEAgLTU4NSw3
ICs1ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVCiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCpjKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIGJ1aWxkZXIuYnVpbGQoKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgYnVpbGRlci50b1VTdHJpbmcoKSkpOwogfQogCiAjaWZu
ZGVmIE5ERUJVRwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZp
c2lvbiA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgi
CiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKLSNp
bmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiVVN0cmluZ0J1aWxkZXIuaCIKICNp
bmNsdWRlICJTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBKU09iamVjdCogb2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KIAotICAgICAgICBib29sIGFwcGVuZE5leHRQ
cm9wZXJ0eShTdHJpbmdpZmllciYsIFN0cmluZ0J1aWxkZXImKTsKKyAgICAgICAgYm9vbCBhcHBl
bmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImLCBVU3RyaW5nQnVpbGRlciYpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgSlNPYmplY3QqIGNvbnN0IG1fb2JqZWN0OwpAQCAtOTgsMTcgKzk4LDE3
IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgSG9sZGVyOwogCi0gICAgc3RhdGljIHZv
aWQgYXBwZW5kUXVvdGVkU3RyaW5nKFN0cmluZ0J1aWxkZXImLCBjb25zdCBVU3RyaW5nJik7Cisg
ICAgc3RhdGljIHZvaWQgYXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiwgY29uc3Qg
VVN0cmluZyYpOwogCiAgICAgSlNWYWx1ZSB0b0pTT04oSlNWYWx1ZSwgY29uc3QgUHJvcGVydHlO
YW1lRm9yRnVuY3Rpb25DYWxsJik7CiAKICAgICBlbnVtIFN0cmluZ2lmeVJlc3VsdCB7IFN0cmlu
Z2lmeUZhaWxlZCwgU3RyaW5naWZ5U3VjY2VlZGVkLCBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVm
aW5lZFZhbHVlIH07Ci0gICAgU3RyaW5naWZ5UmVzdWx0IGFwcGVuZFN0cmluZ2lmaWVkVmFsdWUo
U3RyaW5nQnVpbGRlciYsIEpTVmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5
TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOworICAgIFN0cmluZ2lmeVJlc3VsdCBhcHBlbmRTdHJpbmdp
ZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJiwgSlNWYWx1ZSwgSlNPYmplY3QqIGhvbGRlciwgY29u
c3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJik7CiAKICAgICBib29sIHdpbGxJbmRlbnQo
KSBjb25zdDsKICAgICB2b2lkIGluZGVudCgpOwogICAgIHZvaWQgdW5pbmRlbnQoKTsKLSAgICB2
b2lkIHN0YXJ0TmV3TGluZShTdHJpbmdCdWlsZGVyJikgY29uc3Q7CisgICAgdm9pZCBzdGFydE5l
d0xpbmUoVVN0cmluZ0J1aWxkZXImKSBjb25zdDsKIAogICAgIFN0cmluZ2lmaWVyKiBjb25zdCBt
X25leHRTdHJpbmdpZmllclRvTWFyazsKICAgICBFeGVjU3RhdGUqIGNvbnN0IG1fZXhlYzsKQEAg
LTI3MCwxNiArMjcwLDE2IEBAIEpTVmFsdWUgU3RyaW5naWZpZXI6OnN0cmluZ2lmeShKU1ZhbHVl
IHYKICAgICBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwgZW1wdHlQcm9wZXJ0eU5hbWUobV9l
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKICAgICBv
YmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0
eUlkZW50aWZpZXIsIHZhbHVlKTsKIAotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIFVT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBpZiAoYXBwZW5kU3RyaW5naWZpZWRWYWx1ZShyZXN1
bHQsIHZhbHVlLCBvYmplY3QsIGVtcHR5UHJvcGVydHlOYW1lKSAhPSBTdHJpbmdpZnlTdWNjZWVk
ZWQpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmIChtX2V4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICByZXR1cm4ganNTdHJp
bmcobV9leGVjLCByZXN1bHQuYnVpbGQoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKG1fZXhlYywg
cmVzdWx0LnRvVVN0cmluZygpKTsKIH0KIAotdm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVk
U3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFVTdHJpbmcmIHZhbHVlKQordm9p
ZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVy
LCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpbnQgbGVuZ3RoID0gdmFsdWUubGVuZ3Ro
KCk7CiAKQEAgLTM2MSw3ICszNjEsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9K
U09OKEpTVmFsCiAgICAgcmV0dXJuIGNhbGwobV9leGVjLCBvYmplY3QsIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdmFsdWUsIGFyZ3MpOwogfQogCi1TdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0
cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIs
IEpTVmFsdWUgdmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1
bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQorU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBT
dHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgSlNWYWx1ZSB2YWx1ZSwgSlNPYmplY3QqIGhvbGRlciwgY29uc3QgUHJvcGVydHlOYW1lRm9y
RnVuY3Rpb25DYWxsJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gQ2FsbCB0aGUgdG9KU09OIGZ1
bmN0aW9uLgogICAgIHZhbHVlID0gdG9KU09OKHZhbHVlLCBwcm9wZXJ0eU5hbWUpOwpAQCAtNDc3
LDcgKzQ3Nyw3IEBAIGlubGluZSB2b2lkIFN0cmluZ2lmaWVyOjp1bmluZGVudCgpCiAgICAgbV9p
bmRlbnQgPSBtX3JlcGVhdGVkR2FwLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG1faW5kZW50Lmxl
bmd0aCgpIC0gbV9nYXAubGVuZ3RoKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6
c3RhcnROZXdMaW5lKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CitpbmxpbmUgdm9pZCBT
dHJpbmdpZmllcjo6c3RhcnROZXdMaW5lKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAog
ewogICAgIGlmIChtX2dhcC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5Miw3ICs0
OTIsNyBAQCBpbmxpbmUgU3RyaW5naWZpZXI6OkhvbGRlcjo6SG9sZGVyKEpTT2JqCiB7CiB9CiAK
LWJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVy
JiBzdHJpbmdpZmllciwgU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKK2Jvb2wgU3RyaW5naWZpZXI6
OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiB7CiAgICAgQVNTRVJUKG1faW5kZXggPD0gbV9zaXplKTsK
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCShyZXZpc2lv
biA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJMZXhlci5oIgotI2luY2x1ZGUgIlN0cmluZ0J1
aWxkZXIuaCIKKyNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHRl
bXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKIHsKICAgICArK21fcHRyOwog
ICAgIGNvbnN0IFVDaGFyKiBydW5TdGFydDsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBkbyB7CiAgICAgICAgIHJ1blN0YXJ0ID0g
bV9wdHI7CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzU2FmZVN0cmluZ0NoYXJh
Y3Rlcjxtb2RlPigqbV9wdHIpKQpAQCAtMjAwLDcgKzIwMCw3IEBAIHRlbXBsYXRlIDxMaXRlcmFs
UGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgKm1fcHRy
ICE9ICciJykKICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogCi0gICAgdG9rZW4uc3RyaW5nVG9r
ZW4gPSBidWlsZGVyLmJ1aWxkKCk7CisgICAgdG9rZW4uc3RyaW5nVG9rZW4gPSBidWlsZGVyLnRv
VVN0cmluZygpOwogICAgIHRva2VuLnR5cGUgPSBUb2tTdHJpbmc7CiAgICAgdG9rZW4uZW5kID0g
KyttX3B0cjsKICAgICByZXR1cm4gVG9rU3RyaW5nOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEw
ICsyNSw4IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24uaCIKLSNpbmNs
dWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiZHRvYS5oIgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0RlY2ltYWxOdW1iZXIuaD4KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTU2MSkKKysrIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2lmbmRlZiBTdHJpbmdCdWlsZGVyX2gKLSNkZWZpbmUgU3RyaW5nQnVpbGRlcl9oCi0KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTdHJpbmdCdWls
ZGVyIHsKLXB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciB1KQotICAgIHsKLSAg
ICAgICAgYnVmZmVyLmFwcGVuZCh1KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiBzdHIpCi0gICAgewotICAgICAgICBhcHBlbmQoc3RyLCBzdHJsZW4oc3RyKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKQotICAgIHsK
LSAgICAgICAgcmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlci5zaXplKCkgKyBsZW4pOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXplX3QgbGVuKQotICAgIHsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZChzdHIsIGxlbik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0
cmluZyYgc3RyKQotICAgIHsKLSAgICAgICAgYnVmZmVyLmFwcGVuZChzdHIuY2hhcmFjdGVycygp
LCBzdHIubGVuZ3RoKCkpOwotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJ1
ZmZlci5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIHJlc2VydmVDYXBhY2l0eShzaXplX3QgbmV3Q2Fw
YWNpdHkpCi0gICAgewotICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPCBidWZmZXIuY2FwYWNpdHko
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYnVmZmVyLnJlc2VydmVDYXBhY2l0eShz
dGQ6Om1heChuZXdDYXBhY2l0eSwgYnVmZmVyLmNhcGFjaXR5KCkgKyBidWZmZXIuY2FwYWNpdHko
KSAvIDQgKyAxKSk7Ci0gICAgfQotICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7IGJ1ZmZl
ci5yZXNpemUoc2l6ZSk7IH0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZl
ci5zaXplKCk7IH0KLQotICAgIFVDaGFyIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0
dXJuIGJ1ZmZlci5hdChpKTsgfQotCi0gICAgVVN0cmluZyBidWlsZCgpCi0gICAgewotICAgICAg
ICBidWZmZXIuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlci5kYXRhKCkgfHwg
IWJ1ZmZlci5zaXplKCkpOwotICAgICAgICByZXR1cm4gVVN0cmluZzo6YWRvcHQoYnVmZmVyKTsK
LSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBWZWN0b3I8VUNoYXIsIDY0PiBidWZmZXI7Ci19Owot
Ci19Ci0KLSNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nQnVpbGRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIu
aAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVTdHJpbmdCdWlsZGVyX2gKKyNkZWZpbmUg
VVN0cmluZ0J1aWxkZXJfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVVN0cmluZ0J1aWxkZXIgOiBwdWJsaWMgU3RyaW5n
QnVpbGRlciB7CitwdWJsaWM6CisgICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNlIG1ldGhvZHMs
IG90aGVyd2hpc2UgYXBwZW5kKCkgaXMgYW1iaWdpb3VzLgorICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFVDaGFyIHUpIHsgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKHUpOyB9CisgICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogc3RyKSB7IFN0cmluZ0J1aWxkZXI6OmFwcGVuZChzdHIpOyB9CisgICAgdm9p
ZCBhcHBlbmQoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKSB7IFN0cmluZ0J1aWxkZXI6OmFw
cGVuZChzdHIsIGxlbik7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXpl
X3QgbGVuKSB7IFN0cmluZ0J1aWxkZXI6OmFwcGVuZChzdHIsIGxlbik7IH0KKworICAgIHZvaWQg
YXBwZW5kKGNvbnN0IFVTdHJpbmcmIHN0cikKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLmFwcGVu
ZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOworICAgIH0KKworICAgIFVTdHJpbmcg
dG9VU3RyaW5nKCkKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLnNocmlua1RvRml0KCk7CisgICAg
ICAgIEFTU0VSVChtX2J1ZmZlci5kYXRhKCkgfHwgIW1fYnVmZmVyLnNpemUoKSk7CisgICAgICAg
IHJldHVybiBVU3RyaW5nOjphZG9wdChtX2J1ZmZlcik7CisgICAgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBVU3RyaW5nQnVpbGRlcl9oCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTQ2NCkJKGZyb20gSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdCdWlsZGVyLmg6Njk0NjQpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFN0cmluZ0J1aWxkZXJfaAorI2RlZmluZSBTdHJpbmdCdWlsZGVyX2gKKworI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cmluZ0J1aWxkZXIgewor
cHVibGljOgorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyIHUpCisgICAgeworICAgICAgICBi
dWZmZXIuYXBwZW5kKHUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIHN0
cikKKyAgICB7CisgICAgICAgIGFwcGVuZChzdHIsIHN0cmxlbihzdHIpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4pCisgICAgeworICAgICAg
ICByZXNlcnZlQ2FwYWNpdHkoYnVmZmVyLnNpemUoKSArIGxlbik7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KHN0cltpXSkpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFVDaGFyKiBzdHIsIHNpemVfdCBsZW4pCisgICAgeworICAgICAgICBidWZmZXIuYXBw
ZW5kKHN0ciwgbGVuKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBVU3RyaW5nJiBz
dHIpCisgICAgeworICAgICAgICBidWZmZXIuYXBwZW5kKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5s
ZW5ndGgoKSk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYnVmZmVyLmlz
RW1wdHkoKTsgfQorICAgIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KHNpemVfdCBuZXdDYXBhY2l0eSkK
KyAgICB7CisgICAgICAgIGlmIChuZXdDYXBhY2l0eSA8IGJ1ZmZlci5jYXBhY2l0eSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBidWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHN0ZDo6bWF4
KG5ld0NhcGFjaXR5LCBidWZmZXIuY2FwYWNpdHkoKSArIGJ1ZmZlci5jYXBhY2l0eSgpIC8gNCAr
IDEpKTsKKyAgICB9CisgICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUpIHsgYnVmZmVyLnJlc2l6
ZShzaXplKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gYnVmZmVyLnNpemUo
KTsgfQorCisgICAgVUNoYXIgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gYnVm
ZmVyLmF0KGkpOyB9CisKKyAgICBVU3RyaW5nIGJ1aWxkKCkKKyAgICB7CisgICAgICAgIGJ1ZmZl
ci5zaHJpbmtUb0ZpdCgpOworICAgICAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSB8fCAhYnVmZmVy
LnNpemUoKSk7CisgICAgICAgIHJldHVybiBVU3RyaW5nOjphZG9wdChidWZmZXIpOworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIFZlY3RvcjxVQ2hhciwgNjQ+IGJ1ZmZlcjsKK307CisKK30KKwor
I2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZp
c2lvbiA2OTQ2NCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDE1IEBACiAjZGVmaW5lIFN0cmluZ0J1aWxkZXJf
aAogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi1uYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBTdHJpbmdC
dWlsZGVyIHsKIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciB1KQogICAgIHsK
LSAgICAgICAgYnVmZmVyLmFwcGVuZCh1KTsKKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKHUpOwog
ICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIHN0cikKQEAgLTQ0LDQ0ICs0NSw0
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBs
ZW4pCiAgICAgewotICAgICAgICByZXNlcnZlQ2FwYWNpdHkoYnVmZmVyLnNpemUoKSArIGxlbik7
CisgICAgICAgIHJlc2VydmVDYXBhY2l0eShtX2J1ZmZlci5zaXplKCkgKyBsZW4pOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgYnVmZmVyLmFw
cGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKICAgICB9
CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXplX3QgbGVuKQogICAgIHsK
LSAgICAgICAgYnVmZmVyLmFwcGVuZChzdHIsIGxlbik7CisgICAgICAgIG1fYnVmZmVyLmFwcGVu
ZChzdHIsIGxlbik7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0cmluZyYgc3Ry
KQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQogICAgIHsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOworICAgICAgICBtX2J1
ZmZlci5hcHBlbmQoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpKTsKICAgICB9CiAKLSAg
ICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBidWZmZXIuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBy
ZXNlcnZlQ2FwYWNpdHkoc2l6ZV90IG5ld0NhcGFjaXR5KQogICAgIHsKLSAgICAgICAgaWYgKG5l
d0NhcGFjaXR5IDwgYnVmZmVyLmNhcGFjaXR5KCkpCisgICAgICAgIGlmIChuZXdDYXBhY2l0eSA8
IG1fYnVmZmVyLmNhcGFjaXR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJ1ZmZl
ci5yZXNlcnZlQ2FwYWNpdHkoc3RkOjptYXgobmV3Q2FwYWNpdHksIGJ1ZmZlci5jYXBhY2l0eSgp
ICsgYnVmZmVyLmNhcGFjaXR5KCkgLyA0ICsgMSkpOworICAgICAgICBtX2J1ZmZlci5yZXNlcnZl
Q2FwYWNpdHkoc3RkOjptYXgobmV3Q2FwYWNpdHksIG1fYnVmZmVyLmNhcGFjaXR5KCkgKyBtX2J1
ZmZlci5jYXBhY2l0eSgpIC8gNCArIDEpKTsKICAgICB9Ci0gICAgdm9pZCByZXNpemUoc2l6ZV90
IHNpemUpIHsgYnVmZmVyLnJlc2l6ZShzaXplKTsgfQotICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gYnVmZmVyLnNpemUoKTsgfQorICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7
IG1fYnVmZmVyLnJlc2l6ZShzaXplKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAgICBVQ2hhciBvcGVyYXRvcltdKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBidWZmZXIuYXQoaSk7IH0KKyAgICBVQ2hhciBvcGVyYXRvcltdKHNpemVf
dCBpKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5hdChpKTsgfQogCi0gICAgVVN0cmluZyBidWls
ZCgpCisgICAgU3RyaW5nIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIGJ1ZmZlci5zaHJpbmtU
b0ZpdCgpOwotICAgICAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSB8fCAhYnVmZmVyLnNpemUoKSk7
Ci0gICAgICAgIHJldHVybiBVU3RyaW5nOjphZG9wdChidWZmZXIpOworICAgICAgICBtX2J1ZmZl
ci5zaHJpbmtUb0ZpdCgpOworICAgICAgICBBU1NFUlQobV9idWZmZXIuZGF0YSgpIHx8ICFtX2J1
ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChtX2J1ZmZlcik7CiAg
ICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVmVjdG9yPFVDaGFyLCA2ND4gYnVmZmVyOworICAgIFZl
Y3RvcjxVQ2hhciwgNjQ+IG1fYnVmZmVyOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV1RGCiAK
LSNlbmRpZgordXNpbmcgV1RGOjpTdHJpbmdCdWlsZGVyOworCisjZW5kaWYgLy8gU3RyaW5nQnVp
bGRlcl9oCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gNjk1NjkpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEwLTEwLTEyICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVuaWZ5IEpTQzo6U3RyaW5nQnVpbGRlciAmIFdlYkNvcmU6OlN0cmluZ0J1
aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3
NTM4CisKKyAgICAgICAgKiBBbmRyb2lkLm1rOiBSZW1vdmUgcGxhdGZvcm0vdGV4dC9TdHJpbmdC
dWlsZGVyLiogYW5kIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLgorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OiBEaXR0by4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogRGl0dG8uIAorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5vcmRlcjogRGl0
dG8uCisgICAgICAgICogV2ViQ29yZS5wcm86IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRp
bWUvU3RyaW5nQnVpbGRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRTdHJpbmcuaDogRG9uJ3QgaW5jbHVkZSBQbGF0Zm9ybVN0cmluZy5oIGJ1dCB3
dGYvdGV4dC9XVEZTdHJpbmcuaC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFN0cmluZzo6b3Bl
cmF0b3IrPSk6IFVzZSBKU0M6OlVTdHJpbmdCdWlsZGVyIGluc3RlYWQgb2YgSlNDOjpTdHJpbmdC
dWlsZGVyLgorICAgICAgICAqIGJyaWRnZS9qbmkvSk5JQnJpZGdlLmNwcDogVXNlIFdURjo6U3Ry
aW5nQnVpbGRlciAoKyB1c2UgYXBwZW5kKGNvbnN0IFVDaGFyKSBmb3Igc2luZ2xlIGNoYXJhY3Rl
cnMpLgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5LmNwcDogRGl0dG8uCisgICAgICAgICogY3Nz
L01lZGlhUXVlcnlFeHAuY3BwOiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YXBwZW5kVGV4dENvbnRlbnQpOiBSZW1vdmUgdGhl
IG5lZWQgdG8gY2FsbCAic2V0Tm9uTnVsbCgpIiBvbiB0aGUgU3RyaW5nQnVpbGRlciwgaXQncyBu
byBsb25nZXIgbmVjZXNzYXJ5IHdpdGggV1RGOjpTdHJpbmdCdWlsZGVyLgorICAgICAgICAqIGRv
bS9Ob2RlLmg6IFVzZSBXVEY6OlN0cmluZ0J1aWxkZXIsIGZvcndhcmQgZGVjbGFyZSB0aGUgY2xh
c3MsIGluIG9yZGVyIHRvIGF2b2lkIGFuIGluY2x1ZGUuCisgICAgICAgICogaHRtbC9ET01Ub2tl
bkxpc3QuY3BwOiBVc2UgV1RGOjpTdHJpbmdCdWlsZGVyLgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZS5jcHA6IFJlbW92ZSB1c2VsZXNzIFN0cmluZ0J1ZmZlci5oIGluY2x1
ZGUuCisgICAgICAgICogcGxhdGZvcm0vYW5kcm9pZC9GaWxlU3lzdGVtQW5kcm9pZC5jcHA6IFVz
ZSBXVEY6OlN0cmluZ0J1aWxkZXIuCisgICAgICAgICogcGxhdGZvcm0vYnJldy9GaWxlU3lzdGVt
QnJldy5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmNwcDogRGl0dG8gKCsgdXNlIGFwcGVuZChjb25zdCBVQ2hhcikgZm9yIHNpbmdsZSBj
aGFyYWN0ZXJzKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvUE9ESW50ZXJ2YWwu
aDogRGl0dG8gKE9ubHkgdXNlZCBhcyBkZWJ1Z2dpbmcgaGVscGVyIGhlcmUsIGluIGRlYnVnIGJ1
aWxkcykuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5o
OiBEaXR0byAoT25seSB1c2VkIGFzIGRlYnVnZ2luZyBoZWxwZXIgaGVyZSwgaW4gZGVidWcgYnVp
bGRzKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1t
OiBSZW1vdmUgdXNlbGVzcyBTdHJpbmdCdWlsZGVyLmggaW5jbHVkZS4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4
dC5jcHA6IFVzZSBXVEY6OlN0cmluZ0J1aWxkZXIsIGFuZCB1c2UgYXBwZW5kKGNvbnN0IFVDaGFy
KSBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHA6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
UHJveHlTZXJ2ZXJTdHJpbmcpOiBVc2UgV1RGOjpTdHJpbmdCdWlsZGVyLgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
dGV4dC9TdHJpbmdCdWlsZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L1N0cmluZ0J1aWxkZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBl
LmNwcDogVXNlIFdURjo6U3RyaW5nQnVpbGRlci4KKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNl
ckZhY3RvcnkuY3BwOiBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIu
Y3BwOiBTVkdQYXRoU3RyaW5nQnVpbGRlciB1c2VkIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoQ29u
Y2F0QWRkaW5nU3BhY2VzQmV0d2VlbkluZGl2aWR1YWxTdHJpbmdzKSwgYWRhcHQgdG8gdGhlIGNo
YW5nZSwgdGhhdCB0aGlzIG1vZGUgaXMgZ29uZSBub3cuCisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoU3RyaW5nQnVpbGRlcjo6cmVzdWx0KTogSnVzdCB1c2UgdG9TdHJpbmcoKSwgYXBwZW5kIGEg
c3BhY2UgdG8gdGhlIGVuZCBvZiBlYWNoIGNvbW1hbmQsIHdoZW4gYnVpbGRpbmcgdGhlIHN0cmlu
Zy4gUmVtb3ZlIHRoZSBsYXN0IHRyYWlsaW5nIHNwYWNlIGJlZm9yZSBidWlsZGluZyB0aGUgcmVz
dWx0LgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6Om1vdmVUbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6bGluZVRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9WZXJ0aWNhbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6Y3VydmVUb0N1YmljKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0
aWNTbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmFyY1Rv
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjbG9zZVBhdGgpOgor
ICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsZWFudXApOiBTdHJpbmdCdWlsZGVyOjpjbGVhcigpIGlz
IGdvbmUsIGp1c3QgY2xlYW51cCBieSBhc3NpZ25pbmcgU3RyaW5nQnVpbGRlcigpLgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDogVXNlIFdURjo6U3RyaW5nQnVpbGRlci4KKyAg
ICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6IERpdHRvICgrIHVzZSBh
cHBlbmQoY29uc3QgVUNoYXIpIGZvciBzaW5nbGUgY2hhcmFjdGVycykuCisKIDIwMTAtMTAtMDcg
IFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9B
bmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC02MDYsNyArNjA2LDYgQEAgTE9DQUxfU1JDX0ZJ
TEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVz
c2lvbi5jcHAgXAogCXBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCBcCiAJcGxhdGZv
cm0vdGV4dC9TdHJpbmcuY3BwIFwKLQlwbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwK
IAlwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcCBcCiAJcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWMuY3BwIFwKIAlwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAgXApJbmRl
eDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEzNjEsNyArMTM2MSw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBw
bGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmNwcAogICAgIHBsYXRmb3JtL3RleHQvU2Vn
bWVudGVkU3RyaW5nLmNwcAogICAgIHBsYXRmb3JtL3RleHQvU3RyaW5nLmNwcAotICAgIHBsYXRm
b3JtL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFy
aWVzLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjLmNwcAogICAgIHBsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjTGF0aW4xLmNwcApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2OTU2MSkKKysrIFdl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0NTUsOSArMjQ1NSw2IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHBy
ZXNzaW9uLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggXAotCVdlYkNvcmUvcGxh
dGZvcm0vdGV4dC9TdHJpbmdCdWZmZXIuaCBcCi0JV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmlu
Z0J1aWxkZXIuY3BwIFwKLQlXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nQnVpbGRlci5oIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1N1ZmZpeFRyZWUuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVz
LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtMzE0Myw5ICszMTQzLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQv
U2VnbWVudGVkU3RyaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nLmNw
cCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdHJpbmdCdWZmZXIuaCcsCi0gICAgICAg
ICAgICAncGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCcsCi0gICAgICAgICAgICAncGxh
dGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQv
U3RyaW5nSGFzaC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdWZmaXhUcmVlLmgnLApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2
aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL1dlYkNvcmUub3JkZXIJKHdvcmtpbmcgY29weSkKQEAg
LTMzOTcsOSArMzM5Nyw2IEBAIF9fWk43V2ViQ29yZTE3SFRNTFNjcmlwdEVsZW1lbnQ4Y2hlY2tE
VEQKIF9fWk43V2ViQ29yZTE3SFRNTFNjcmlwdEVsZW1lbnQxNWNoaWxkcmVuQ2hhbmdlZEViUE5T
XzROb2RlRVMyX2kKIF9fWk43V2ViQ29yZTEzU2NyaXB0RWxlbWVudDE1Y2hpbGRyZW5DaGFuZ2Vk
RVJOU18xN1NjcmlwdEVsZW1lbnREYXRhRQogX19aTks3V2ViQ29yZTROb2RlMTF0ZXh0Q29udGVu
dEViCi1fX1pOSzdXZWJDb3JlNE5vZGUxN2FwcGVuZFRleHRDb250ZW50RWJSTlNfMTNTdHJpbmdC
dWlsZGVyRQotX19aTjdXZWJDb3JlMTNTdHJpbmdCdWlsZGVyNmFwcGVuZEVSS05TXzZTdHJpbmdF
Ci1fX1pOSzdXZWJDb3JlMTNTdHJpbmdCdWlsZGVyOHRvU3RyaW5nRXYKIF9fWk4zV1RGNlZlY3Rv
cklON1dlYkNvcmU2U3RyaW5nRUxtMTZFRTZzaHJpbmtFbQogX19aTjdXZWJDb3JlMTdIVE1MU2Ny
aXB0RWxlbWVudDIxZmluaXNoUGFyc2luZ0NoaWxkcmVuRXYKIF9fWk43V2ViQ29yZTEzU2NyaXB0
RWxlbWVudDIxZmluaXNoUGFyc2luZ0NoaWxkcmVuRVJOU18xN1NjcmlwdEVsZW1lbnREYXRhRVJL
TlNfNlN0cmluZ0UKQEAgLTIyNTk1LDcgKzIyNTkyLDYgQEAgX19aTjdXZWJDb3JlMTZKU0RPTVdp
bmRvd1NoZWxsMTJsb29rdXBHZQogX19aTjdXZWJDb3JlMTFKU0RPTVdpbmRvdzEybG9va3VwR2V0
dGVyRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRQogX19aTjdXZWJDb3JlMTZK
U0RPTVdpbmRvd1NoZWxsMTJkZWZpbmVTZXR0ZXJFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElk
ZW50aWZpZXJFUE5TMV84SlNPYmplY3RFagogX19aTjdXZWJDb3JlMTFKU0RPTVdpbmRvdzEyZGVm
aW5lU2V0dGVyRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRVBOUzFfOEpTT2Jq
ZWN0RWoKLV9fWk43V2ViQ29yZTEzU3RyaW5nQnVpbGRlcjZhcHBlbmRFYwogX19aTjdXZWJDb3Jl
MzNqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25Bc3NpZ25FUE4zSlNDOUV4ZWNTdGF0ZUVQTlMw
XzhKU09iamVjdEVOUzBfN0pTVmFsdWVFUktOUzBfN0FyZ0xpc3RFCiBfX1pON1dlYkNvcmUxMEpT
TG9jYXRpb242YXNzaWduRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfN0FyZ0xpc3RFCiBfX1pON1dl
YkNvcmUzM2pzSGlzdG9yeVByb3RvdHlwZUZ1bmN0aW9uRm9yd2FyZEVQTjNKU0M5RXhlY1N0YXRl
RVBOUzBfOEpTT2JqZWN0RU5TMF83SlNWYWx1ZUVSS05TMF83QXJnTGlzdEUKQEAgLTI1ODQwLDcg
KzI1ODM2LDYgQEAgX19aTkszSlNDOEJpbmRpbmdzMTBSb290T2JqZWN0MTJuYXRpdmVIYQogX19a
TkszSlNDOEJpbmRpbmdzMTBKYXZhTWV0aG9kOG1ldGhvZElERVA4X2pvYmplY3QKIF9fWk5LM0pT
QzhCaW5kaW5nczEwSmF2YU1ldGhvZDlzaWduYXR1cmVFdgogX19aTjNKU0M4QmluZGluZ3MyNnNp
Z25hdHVyZUZyb21QcmltaXRpdmVUeXBlRTdKTklUeXBlCi1fX1pMMTVhcHBlbmRDbGFzc05hbWVS
TjdXZWJDb3JlMTNTdHJpbmdCdWlsZGVyRVBLYwogX19aTjNKU0M4QmluZGluZ3MxMWdldE1ldGhv
ZElERVA4X2pvYmplY3RQS2NTNF8KIF9fWk5LM0pTQzhCaW5kaW5nczEwSmF2YU1ldGhvZDEzSk5J
UmV0dXJuVHlwZUV2CiBfX1pOM0pTQzhCaW5kaW5nczE1ZGlzcGF0Y2hKTklDYWxsRVBOU185RXhl
Y1N0YXRlRVBLdlA4X2pvYmplY3RiN0pOSVR5cGVQMTBfam1ldGhvZElEUDZqdmFsdWVSU0FfUEtj
Uk5TXzdKU1ZhbHVlRQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5w
cm8JKHdvcmtpbmcgY29weSkKQEAgLTEyMDAsNyArMTIwMCw2IEBAIFNPVVJDRVMgKz0gXAogICAg
IHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcCBcCiAgICAgcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwIFwKLSAgICBwbGF0Zm9y
bS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5j
cHAgXAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcCBcCiAgICAgcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAgXApAQCAtMjE0MSw3ICsyMTQwLDYgQEAg
SEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vdGV4dC9xdC9UZXh0Q29kZWNRdC5oIFwKICAgICBw
bGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmggXAogICAgIHBsYXRmb3JtL3RleHQvU2Vn
bWVudGVkU3RyaW5nLmggXAotICAgIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVpbGRlci5oIFwKICAg
ICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y0xhdGluMS5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmggXApJ
bmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1N0cmluZ0J1aWxkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvU3RyaW5nQnVp
bGRlci5oCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMCwwIEBACi0jaWZu
ZGVmIFdlYkNvcmVfRldEX1N0cmluZ0J1aWxkZXJfaAotI2RlZmluZSBXZWJDb3JlX0ZXRF9TdHJp
bmdCdWlsZGVyX2gKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJpbmdCdWlsZGVyLmg+Ci0j
ZW5kaWYKSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nQnVp
bGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9V
U3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL1VTdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9VU3RyaW5nQnVpbGRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldE
X1VTdHJpbmdCdWlsZGVyX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VU3RyaW5nQnVpbGRl
ci5oPgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU3RyaW5nQnVpbGRlcl9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX1N0cmluZ0J1aWxkZXJfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cmluZ0J1
aWxkZXIuaD4KKyNlbmRpZgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTI4NjE0LDE4ICsyODYxNCw2IEBACiAJCQkJCT4NCiAJCQkJ
PC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0
XFN0cmluZ0J1ZmZlci5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcU3RyaW5nQnVpbGRlci5jcHAiDQotCQkJ
CQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cdGV4dFxTdHJpbmdCdWlsZGVyLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJ
PEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxTdHJpbmdIYXNoLmgi
DQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0NSw3ICsyNzQ1LDYg
QEAKIAkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTg4NUMyMDhCN0UzRDEwMEU3
MDdDNCAvKiBFdmVudE5hbWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTM5QjAyRUUwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QjAy
RUMwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuY3BwICovOyB9OwogCQk5MzlCMDJF
RjBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QjAyRUQwRUEyREJDNDAwQzU0NTcwIC8qIFdp
ZHRoSXRlcmF0b3IuaCAqLzsgfTsKLQkJOTM5QjNFNEUwRDNDMUU4NDAwQjRBOTJCIC8qIFN0cmlu
Z0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM5QjNFNEQwRDNDMUU4NDAwQjRBOTJCIC8qIFN0cmluZ0J1ZmZlci5oICovOyB9OwogCQk5M0Ez
OEI0QjBEMEU1ODA4MDA2ODcyQzIgLyogRWRpdG9yQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0EzOEI0QTBEMEU1ODA4MDA2ODcyQzIg
LyogRWRpdG9yQ29tbWFuZC5jcHAgKi87IH07CiAJCTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAv
KiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9u
LmggKi87IH07CiAJCTkzQjJEODE4MEY5OTIwRUUwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjJE
ODE3MEY5OTIwRUUwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5tbSAqLzsgfTsKQEAgLTUz
MzMsOCArNTMzMiw2IEBACiAJCUUxODI1NjkwMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNv
bnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
ODI1NjhFMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuaCAqLzsgfTsKIAkJRTE4
MjU4QUMwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTgyNThBQjBFRjNDRDcw
MDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJRTFBMTQ3MDgx
MTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMw
RjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCAqLzsgfTsKLQkJRTFBMzAyQkMwREU4Mzcw
MzAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMwMkJCMERFODM3MDMwMEM1MkYyQyAvKiBTdHJpbmdCdWls
ZGVyLmggKi87IH07Ci0JCUUxQTMwMkMxMERFODM3NjkwMEM1MkYyQyAvKiBTdHJpbmdCdWlsZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMw
MkMwMERFODM3NjkwMEM1MkYyQyAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLzsgfTsKIAkJRTFBNUY5
OUIwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBNUY5OUEwRTdFQUEyNTAw
QUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovOyB9OwogCQlFMUE2NDNGMjBF
QzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4
IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCAqLzsgfTsKIAkJRTFBNjQzRkQwRUMwOTdBMDAw
Nzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtODgwNCw3ICs4ODAxLDYgQEAKIAkJ
OTM5ODg1QzIwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnROYW1lcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJOTM5QjAy
RUMwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2lkdGhJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzOUIwMkVEMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpZHRoSXRlcmF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM5QjNFNEQwRDNDMUU4NDAwQjRBOTJCIC8qIFN0cmlu
Z0J1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWZmZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBMzhCNEEwRDBFNTgwODAwNjg3MkMy
IC8qIEVkaXRvckNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRWRpdG9yQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjJE
ODE1MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdWRkZW5UZXJtaW5hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0IyRDgxNzBGOTkyMEVFMDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdWRkZW5UZXJt
aW5hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMzMxLDggKzExMzI3
LDYgQEAKIAkJRTE4MjU2OEUwRUYyQjAyRDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dvcmtlckNvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4MjU4QUIwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFBMzAyQkIwREU4MzcwMzAwQzUyRjJD
IC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ry
aW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUEzMDJDMDBERTgz
NzY5MDBDNTJGMkMgLyogU3RyaW5nQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5l
bEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTY0M0YxMEVDMDk3
MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2
MSw5ICsxNjU1NSw2IEBACiAJCQkJQjJDM0Q5RkUwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRl
ZFN0cmluZy5jcHAgKi8sCiAJCQkJQjJDM0Q5RkYwRDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRl
ZFN0cmluZy5oICovLAogCQkJCUIyQzNEQTAwMEQwMDZDMUQwMEVGNkYyNiAvKiBTdHJpbmcuY3Bw
ICovLAotCQkJCTkzOUIzRTREMEQzQzFFODQwMEI0QTkyQiAvKiBTdHJpbmdCdWZmZXIuaCAqLywK
LQkJCQlFMUEzMDJDMDBERTgzNzY5MDBDNTJGMkMgLyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCi0J
CQkJRTFBMzAyQkIwREU4MzcwMzAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQk5
N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3VmZml4VHJlZS5oICovLAogCQkJCUIyQzNEQTA0
MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRhcmllcy5oICovLAogCQkJCUIyQzNEQTA2MEQw
MDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvci5oICovLApAQCAtMjA1OTAsOCArMjA1
ODEsNiBAQAogCQkJCUM1MEQwRTgzMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVFMzhCRjEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFn
ZU5hbWVzcGFjZUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1MTAyRDk0MEZEOUFBMkQwMEZB
RkYwNCAvKiBTdG9yYWdlU3luY01hbmFnZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzOUIzRTRF
MEQzQzFFODQwMEI0QTkyQiAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUUx
QTMwMkJDMERFODM3MDMwMEM1MkYyQyAvKiBTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NTQ4OEQ2QjBERDVBODNEMDA5RDgzQjIgLyogU3RyaW5nU291cmNlUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMzU0MEYzMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVu
Y2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBT
dHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjMxOTYsNyArMjMxODUsNiBA
QAogCQkJCUM1NUUzOEMwMTAwNDBENUQwMEE1NkJEQiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5NTBGRDlBQTJEMDBGQUZGMDQgLyogU3RvcmFn
ZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTMwMEQwMDZDMUQwMEVG
NkYyNiAvKiBTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTFBMzAyQzEwREU4Mzc2OTAw
QzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJCMjY0NUMw
RDAwQTc3RTAwMEFDQzFEIC8qIFN0cmluZ0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQjI2
NDVEMEQwMEE3N0UwMDBBQ0MxRCAvKiBTdHJpbmdJbXBsQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJBRkZDOTUwRDAwQTVERjAwMzAwNzREIC8qIFN0cmluZ0ltcGxNYWMubW0gaW4gU291cmNl
cyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RyaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaAkocmV2aXNpb24gNjk1NjEp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwxMCArMzIsMTAgQEAKICNkZWZpbmUgU2NyaXB0U3RyaW5nX2gKIAogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8cnVu
dGltZS9VU3RyaW5nLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9TdHJpbmdCdWlsZGVyLmg+CisjaW5j
bHVkZSA8cnVudGltZS9VU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNjEsMTAgKzYxLDEwIEBAIHB1YmxpYzoKIAogICAgIFNjcmlwdFN0cmluZyYgb3BlcmF0
b3IrPShjb25zdCBTdHJpbmcmIHMpCiAgICAgewotICAgICAgICBKU0M6OlN0cmluZ0J1aWxkZXIg
YnVmZmVyOworICAgICAgICBKU0M6OlVTdHJpbmdCdWlsZGVyIGJ1ZmZlcjsKICAgICAgICAgYnVm
ZmVyLmFwcGVuZChtX3N0cik7CiAgICAgICAgIGJ1ZmZlci5hcHBlbmQoc3RyaW5nVG9VU3RyaW5n
KHMpKTsKLSAgICAgICAgbV9zdHIgPSBidWZmZXIuYnVpbGQoKTsKKyAgICAgICAgbV9zdHIgPSBi
dWZmZXIudG9VU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKSW5kZXg6
IFdlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvYnJp
ZGdlL2puaS9KTklCcmlkZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNCArMjksMTEgQEAK
IAogI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKIAotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSlND
OjpCaW5kaW5nczsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiAKIEphdmFQYXJhbWV0ZXI6
OkphdmFQYXJhbWV0ZXIoSk5JRW52KiBlbnYsIGpzdHJpbmcgdHlwZSkKIHsKQEAgLTEzMiw3ICsx
MjksNyBAQCBjb25zdCBjaGFyKiBKYXZhTWV0aG9kOjpzaWduYXR1cmUoKSBjb25zCiAjZW5kaWYK
IAogICAgICAgICBTdHJpbmdCdWlsZGVyIHNpZ25hdHVyZUJ1aWxkZXI7Ci0gICAgICAgIHNpZ25h
dHVyZUJ1aWxkZXIuYXBwZW5kKCIoIik7CisgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5k
KCcoJyk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9udW1QYXJhbWV0ZXJzOyBpKysp
IHsKICAgICAgICAgICAgIEphdmFQYXJhbWV0ZXIqIGFQYXJhbWV0ZXIgPSBwYXJhbWV0ZXJBdChp
KTsKICAgICAgICAgICAgIEpOSVR5cGUgdHlwZSA9IGFQYXJhbWV0ZXItPmdldEpOSVR5cGUoKTsK
QEAgLTE0MiwxMSArMTM5LDExIEBAIGNvbnN0IGNoYXIqIEphdmFNZXRob2Q6OnNpZ25hdHVyZSgp
IGNvbnMKICAgICAgICAgICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZChzaWduYXR1cmVG
cm9tUHJpbWl0aXZlVHlwZSh0eXBlKSk7CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gb2Jq
ZWN0X3R5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVy
ZUJ1aWxkZXIsIGFQYXJhbWV0ZXItPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNpZ25h
dHVyZUJ1aWxkZXIuYXBwZW5kKCI7Iik7CisgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1
aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCIpIik7CisgICAgICAgIHNp
Z25hdHVyZUJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAKICAgICAgICAgY29uc3QgY2hhciogcmV0dXJu
VHlwZSA9IG1fcmV0dXJuVHlwZS51dGY4KCk7CiAgICAgICAgIGlmIChtX0pOSVJldHVyblR5cGUg
PT0gYXJyYXlfdHlwZSkKQEAgLTE1NSw3ICsxNTIsNyBAQCBjb25zdCBjaGFyKiBKYXZhTWV0aG9k
OjpzaWduYXR1cmUoKSBjb25zCiAgICAgICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZChz
aWduYXR1cmVGcm9tUHJpbWl0aXZlVHlwZShtX0pOSVJldHVyblR5cGUpKTsKICAgICAgICAgICAg
IGlmIChtX0pOSVJldHVyblR5cGUgPT0gb2JqZWN0X3R5cGUpIHsKICAgICAgICAgICAgICAgICBh
cHBlbmRDbGFzc05hbWUoc2lnbmF0dXJlQnVpbGRlciwgcmV0dXJuVHlwZSk7Ci0gICAgICAgICAg
ICAgICAgc2lnbmF0dXJlQnVpbGRlci5hcHBlbmQoIjsiKTsKKyAgICAgICAgICAgICAgICBzaWdu
YXR1cmVCdWlsZGVyLmFwcGVuZCgnOycpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKSW5k
ZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L01lZGlhUXVlcnkuY3BwCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvY3NzL01lZGlhUXVl
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw4IEBACiAjaW5jbHVkZSAiTWVkaWFR
dWVyeS5oIgogCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1
aWxkZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uQ29weWluZ1NvcnQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV4cC5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJDU1NQ
YXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Zh
bHVlTGlzdC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29y
ZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlz
aW9uIDY5NTYxKQorKysgV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDcgKzcyLDYgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Vs
ZWN0b3JOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCi0jaW5jbHVkZSAi
U3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRhZ05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4
dC5oIgogI2luY2x1ZGUgIlRleHRFdmVudC5oIgpAQCAtODgsNiArODcsNyBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0u
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogI2luY2x1ZGUgIlN0b3Jh
Z2VFdmVudC5oIgpAQCAtMTk0Niw5ICsxOTQ2LDcgQEAgdm9pZCBOb2RlOjphcHBlbmRUZXh0Q29u
dGVudChib29sIGNvbnZlcgogICAgICAgICBjYXNlIEVOVElUWV9OT0RFOgogICAgICAgICBjYXNl
IEVOVElUWV9SRUZFUkVOQ0VfTk9ERToKICAgICAgICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOgotICAgICAgICAgICAgY29udGVudC5zZXROb25OdWxsKCk7Ci0KLSAgICAgICAgICAgIGZv
ciAoTm9kZSAqY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0
U2libGluZygpKSB7CisgICAgICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgICAg
IGlmIChjaGlsZC0+bm9kZVR5cGUoKSA9PSBDT01NRU5UX05PREUgfHwgY2hpbGQtPm5vZGVUeXBl
KCkgPT0gUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIApJbmRleDogV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL2Rv
bS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEwIEBACiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAorbmFtZXNwYWNlIFdU
RiB7CitjbGFzcyBTdHJpbmdCdWlsZGVyOworfQorCiAjaWYgVVNFKEpTQykKIG5hbWVzcGFjZSBK
U0MgewogY2xhc3MgSlNHbG9iYWxEYXRhOwpAQCAtNjksNyArNzMsNiBAQCBjbGFzcyBSZW5kZXJC
b3g7CiBjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNs
YXNzIFJlbmRlclN0eWxlOwotY2xhc3MgU3RyaW5nQnVpbGRlcjsKIGNsYXNzIFRhZ05vZGVMaXN0
OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwpAQCAtNzA2LDcgKzcwOSw3IEBAIHByaXZh
dGU6CiAKICAgICBFbGVtZW50KiBhbmNlc3RvckVsZW1lbnQoKSBjb25zdDsKIAotICAgIHZvaWQg
YXBwZW5kVGV4dENvbnRlbnQoYm9vbCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgU3RyaW5nQnVpbGRl
ciYpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kVGV4dENvbnRlbnQoYm9vbCBjb252ZXJ0QlJzVG9O
ZXdsaW5lcywgV1RGOjpTdHJpbmdCdWlsZGVyJikgY29uc3Q7CiAgICAgdm9pZCB0cmFja0ZvckRl
YnVnZ2luZygpOwogCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CkluZGV4OiBXZWJDb3JlL2h0
bWwvRE9NVG9rZW5MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvRE9NVG9rZW5M
aXN0LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3Ry
aW5nLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTIg
KzQ0LDEyIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUg
IlN0cmluZ0J1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZS5oIgogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2FuZHJvaWQvRmlsZVN5c3RlbUFuZHJvaWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9GaWxlU3lzdGVtQW5kcm9pZC5jcHAJKHJldmlzaW9u
IDY5NTYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9hbmRyb2lkL0ZpbGVTeXN0ZW1BbmRyb2lkLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNp
bmNsdWRlICJjdXRpbHMvbG9nLmgiCiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8ZGxm
Y24uaD4KQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxmbm1hdGNoLmg+CiAjaW5jbHVkZSA8
c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vYnJldy9GaWxlU3lzdGVtQnJldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1CcmV3LmNwcAkocmV2aXNpb24gNjk1NjEpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2JyZXcvRmlsZVN5c3RlbUJyZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUg
IlN0cmluZ0J1aWxkZXIuaCIKIAogI2luY2x1ZGUgPEFFRUFwcEdlbi5oPgogI2luY2x1ZGUgPEFF
RUZpbGUuaD4KQEAgLTQxLDYgKzM5LDggQEAKICNpbmNsdWRlIDx3dGYvYnJldy9SZWZQdHJCcmV3
Lmg+CiAjaW5jbHVkZSA8d3RmL2JyZXcvU2hlbGxCcmV3Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAkocmV2
aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMgKzQxLDE0IEBACiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTmFtZWROb2Rl
TWFwLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSYW5nZS5oIgog
I2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKIAor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwpAQCAtMjA1LDcgKzIwNiw3IEBAIHN0YXRpYyBTdHJpbmcgaW1hZ2VUb01hcmt1cChj
b25zdCBTdHJpbmcKICAgICBTdHJpbmdCdWlsZGVyIG1hcmt1cDsKICAgICBtYXJrdXAuYXBwZW5k
KCI8aW1nIHNyYz1cIiIpOwogICAgIG1hcmt1cC5hcHBlbmQodXJsKTsKLSAgICBtYXJrdXAuYXBw
ZW5kKCJcIiIpOworICAgIG1hcmt1cC5hcHBlbmQoJyInKTsKICAgICAvLyBDb3B5IG92ZXIgYXR0
cmlidXRlcy4gIElmIHdlIGFyZSBkcmFnZ2luZyBhbiBpbWFnZSwgd2UgZXhwZWN0IHRoaW5ncyBs
aWtlCiAgICAgLy8gdGhlIGlkIHRvIGJlIGNvcGllZCBhcyB3ZWxsLgogICAgIE5hbWVkTm9kZU1h
cCogYXR0cnMgPSBlbGVtZW50LT5hdHRyaWJ1dGVzKCk7CkBAIC0yMTQsMTMgKzIxNSwxMyBAQCBz
dGF0aWMgU3RyaW5nIGltYWdlVG9NYXJrdXAoY29uc3QgU3RyaW5nCiAgICAgICAgIEF0dHJpYnV0
ZSogYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICBpZiAoYXR0ci0+bG9j
YWxOYW1lKCkgPT0gInNyYyIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbWFya3Vw
LmFwcGVuZCgiICIpOworICAgICAgICBtYXJrdXAuYXBwZW5kKCcgJyk7CiAgICAgICAgIG1hcmt1
cC5hcHBlbmQoYXR0ci0+bG9jYWxOYW1lKCkpOwogICAgICAgICBtYXJrdXAuYXBwZW5kKCI9XCIi
KTsKICAgICAgICAgU3RyaW5nIGVzY2FwZWRBdHRyID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAg
ZXNjYXBlZEF0dHIucmVwbGFjZSgiXCIiLCAiJnF1b3Q7Iik7CiAgICAgICAgIG1hcmt1cC5hcHBl
bmQoZXNjYXBlZEF0dHIpOwotICAgICAgICBtYXJrdXAuYXBwZW5kKCJcIiIpOworICAgICAgICBt
YXJrdXAuYXBwZW5kKCciJyk7CiAgICAgfQogCiAgICAgbWFya3VwLmFwcGVuZCgiLz4iKTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1BPREludGVydmFsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvUE9ESW50ZXJ2YWwuaAkocmV2aXNp
b24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9QT0RJbnRlcnZhbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIFBPREludGVydmFsX2gK
IAogI2lmbmRlZiBOREVCVUcKLSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJl
ZS5oCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1BP
RFJlZEJsYWNrVHJlZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw5ICs3OCw5IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc0xheWVyQ0EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvR3JhcGhpY3NMYXllckNBLm1tCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNiBAQAogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0ICJS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbXBvcnQgIlNjYWxlVHJhbnNmb3JtT3BlcmF0
aW9uLmgiCi0jaW1wb3J0ICJTdHJpbmdCdWlsZGVyLmgiCiAjaW1wb3J0ICJTeXN0ZW1UaW1lLmgi
CiAjaW1wb3J0ICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbXBvcnQgIldlYkxh
eWVyLmgiCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250
ZXh0LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCi0jaW5jbHVkZSAiU3RyaW5n
QnVpbGRlci5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPEFzc2VydE1hY3Jvcy5oPgpAQCAtNTQsNiArNTMsNyBAQAogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllckNBQ0YuaCIKQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgdm9pZCBhZGRDb29raWVQ
YXJhbShTdHJpbmdCdWlsZGVyCiAgICAgLy8gQWRkIHBhcmFtZXRlciBuYW1lLCBhbmQgdmFsdWUg
aWYgdGhlcmUgaXMgb25lLgogICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKG5hbWUpOwogICAgIGlm
ICghdmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKCI9Iik7
CisgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKCc9Jyk7CiAgICAgICAgIGNvb2tpZUJ1aWxk
ZXIuYXBwZW5kKHZhbHVlKTsKICAgICB9CiB9CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwogICAgICAgICAgICAgYWRkQ29va2llUGFy
YW0oY29va2llQnVpbGRlciwgImV4cGlyZXMiLCByZmMyNjE2RGF0ZVN0cmluZ0Zyb21UaW1lKGNv
b2tpZS5leHBpcmVzKSk7CiAgICAgICAgIGlmIChjb29raWUuaHR0cE9ubHkpIAogICAgICAgICAg
ICAgYWRkQ29va2llUGFyYW0oY29va2llQnVpbGRlciwgImh0dHBPbmx5IiwgU3RyaW5nKCkpOwot
ICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgiOyIpOworICAgICAgICBjb29raWVCdWlsZGVy
LmFwcGVuZCgnOycpOwogCiAgICAgICAgIFN0cmluZyBjb29raWVVUkw7CiAgICAgICAgIGlmICgh
Y29va2llLmRvbWFpbi5pc0VtcHR5KCkpIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1l
V2luLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUVRNb3ZpZVRhc2suaCIKICNpbmNsdWRlICJTY3JvbGxW
aWV3LmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKLSNpbmNsdWRlICJTdHJpbmdCdWlsZGVy
LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSA8V2luaW5ldC5oPgpAQCAtNDcsNiArNDYsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNBQ0Yu
aCIKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgdm9pZCBhZGRDb29raWVQYXJhbShTdHJpbmdC
dWlsZGVyCiAgICAgLy8gQWRkIHBhcmFtZXRlciBuYW1lLCBhbmQgdmFsdWUgaWYgdGhlcmUgaXMg
b25lLgogICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKG5hbWUpOwogICAgIGlmICghdmFsdWUuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKCI9Iik7CisgICAgICAgIGNv
b2tpZUJ1aWxkZXIuYXBwZW5kKCc9Jyk7CiAgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKHZh
bHVlKTsKICAgICB9CiB9CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGU6OnNldFVwQ29va2llc0ZvcgogICAgICAgICAgICAgYWRkQ29va2llUGFyYW0oY29va2llQnVp
bGRlciwgImV4cGlyZXMiLCByZmMyNjE2RGF0ZVN0cmluZ0Zyb21UaW1lKGNvb2tpZS5leHBpcmVz
KSk7CiAgICAgICAgIGlmIChjb29raWUuaHR0cE9ubHkpIAogICAgICAgICAgICAgYWRkQ29va2ll
UGFyYW0oY29va2llQnVpbGRlciwgImh0dHBPbmx5IiwgU3RyaW5nKCkpOwotICAgICAgICBjb29r
aWVCdWlsZGVyLmFwcGVuZCgiOyIpOworICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgnOycp
OwogCiAgICAgICAgIFN0cmluZyBjb29raWVVUkw7CiAgICAgICAgIGlmICghY29va2llLmRvbWFp
bi5pc0VtcHR5KCkpIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVy
LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlT
ZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0jaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBhcHBlbmRQcm94eVNlcnZlclN0cmluZyhTdHJpbmdC
dWlsZGVyICZidWlsZGVyLCBjb25zdCBQcm94eVNlcnZlciYgcHJveHlTZXJ2ZXIpCitzdGF0aWMg
dm9pZCBhcHBlbmRQcm94eVNlcnZlclN0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25z
dCBQcm94eVNlcnZlciYgcHJveHlTZXJ2ZXIpCiB7CiAgICAgc3dpdGNoIChwcm94eVNlcnZlci50
eXBlKCkpIHsKICAgICBjYXNlIFByb3h5U2VydmVyOjpEaXJlY3Q6CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1N0cmluZ0J1ZmZlci5oCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vdGV4dC9TdHJpbmdCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAgICBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
V2ViQ29yZVN0cmluZ0J1ZmZlcl9oCi0jZGVmaW5lIFdlYkNvcmVTdHJpbmdCdWZmZXJfaAotCi0v
LyBGSVhNRTogcmVtb3ZlIHRoaXMgaGVhZGVyLCB1c2UgdGhlIGZvcndhcmQgZnJvbSB3dGYgZGly
ZWN0bHkuCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+Ci0KLSNlbmRpZiAvLyBT
dHJpbmdCdWZmZXJfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmNw
cAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nQnVpbGRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0gCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgotCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBpbmxpbmUgdm9p
ZCBjaGVja2VkQXBwZW5kKHVuc2lnbmVkJiB0b3RhbExlbmd0aCwgdW5zaWduZWQgY2hhcmFjdGVy
c1RvQXBwZW5kKQotewotICAgIGlmIChudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0g
Y2hhcmFjdGVyc1RvQXBwZW5kIDw9IHRvdGFsTGVuZ3RoKQotICAgICAgICBDUkFTSCgpOwotCi0g
ICAgdG90YWxMZW5ndGggKz0gY2hhcmFjdGVyc1RvQXBwZW5kOwotfQotCi12b2lkIFN0cmluZ0J1
aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBpZiAoc3RyaW5nLmlz
TnVsbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCB0b3RhbExlbmd0aCA9IGxl
bmd0aCgpOwotICAgIGNoZWNrZWRBcHBlbmQodG90YWxMZW5ndGgsIHN0cmluZy5sZW5ndGgoKSk7
Ci0gICAgbV90b3RhbExlbmd0aCA9IHRvdGFsTGVuZ3RoOwotCi0gICAgaWYgKCFzdHJpbmcuaXNF
bXB0eSgpKQotICAgICAgICBtX3N0cmluZ3MuYXBwZW5kKHN0cmluZyk7Ci19Ci0KLXZvaWQgU3Ry
aW5nQnVpbGRlcjo6YXBwZW5kKFVDaGFyIGMpCi17Ci0gICAgdW5zaWduZWQgdG90YWxMZW5ndGgg
PSBsZW5ndGgoKTsKLSAgICBjaGVja2VkQXBwZW5kKHRvdGFsTGVuZ3RoLCAxKTsKLSAgICBtX3Rv
dGFsTGVuZ3RoID0gdG90YWxMZW5ndGg7Ci0KLSAgICBtX3N0cmluZ3MuYXBwZW5kKFN0cmluZygm
YywgMSkpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjaGFyIGMpCi17Ci0gICAg
dW5zaWduZWQgdG90YWxMZW5ndGggPSBsZW5ndGgoKTsKLSAgICBjaGVja2VkQXBwZW5kKHRvdGFs
TGVuZ3RoLCAxKTsKLSAgICBtX3RvdGFsTGVuZ3RoID0gdG90YWxMZW5ndGg7Ci0KLSAgICBtX3N0
cmluZ3MuYXBwZW5kKFN0cmluZygmYywgMSkpOwotfQotCi1TdHJpbmcgU3RyaW5nQnVpbGRlcjo6
dG9TdHJpbmcoQ29uY2F0TW9kZSBtb2RlKSBjb25zdAotewotICAgIGlmIChpc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgdW5zaWduZWQgY291bnQgPSBtX3N0cmluZ3Mu
c2l6ZSgpOwotCi0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0dXJuIFN0cmluZyhTdHJpbmdJ
bXBsOjplbXB0eSgpKTsKLSAgICBpZiAoY291bnQgPT0gMSkKLSAgICAgICAgcmV0dXJuIG1fc3Ry
aW5nc1swXTsKLQotICAgIHVuc2lnbmVkIHRvdGFsTGVuZ3RoID0gbV90b3RhbExlbmd0aDsKLSAg
ICBpZiAobW9kZSA9PSBDb25jYXRBZGRpbmdTcGFjZXNCZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3Mp
Ci0gICAgICAgIGNoZWNrZWRBcHBlbmQodG90YWxMZW5ndGgsIGNvdW50IC0gMSk7Ci0KLSAgICBV
Q2hhciogYnVmZmVyOwotICAgIFN0cmluZyByZXN1bHQgPSBTdHJpbmc6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7Ci0KLSAgICBVQ2hhciogcCA9IGJ1ZmZlcjsKLQot
ICAgIC8vIFdlIGNvdWxkIGhhbmRsZSBib3RoIENvbmNhdCBtb2RlcyBpbiBhIHNpbmdsZSBmb3Ig
bG9vcCwgbm90IGRvaW5nIHRoYXQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCi0gICAgaWYgKG1v
ZGUgPT0gQ29uY2F0VW5hbHRlcmVkKSB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmdJbXBsKiBzdHJpbmcgPSBtX3N0cmlu
Z3NbaV0uaW1wbCgpOwotICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLT5sZW5n
dGgoKTsgCi0gICAgICAgICAgICBtZW1jcHkocCwgc3RyaW5nLT5jaGFyYWN0ZXJzKCksIGxlbmd0
aCAqIHNpemVvZihVQ2hhcikpOwotICAgICAgICAgICAgcCArPSBsZW5ndGg7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQobW9kZSA9PSBDb25jYXRBZGRpbmdTcGFjZXNC
ZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3MpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgU3RyaW5nSW1wbCogc3RyaW5nID0gbV9zdHJp
bmdzW2ldLmltcGwoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy0+bGVu
Z3RoKCk7IAotICAgICAgICAgICAgbWVtY3B5KHAsIHN0cmluZy0+Y2hhcmFjdGVycygpLCBsZW5n
dGggKiBzaXplb2YoVUNoYXIpKTsKLSAgICAgICAgICAgIHAgKz0gbGVuZ3RoOwotCi0gICAgICAg
ICAgICAvLyBBZGQgc3BhY2UgYWZ0ZXIgc3RyaW5nIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIG5l
eHQgc3RyaW5nLCBpZiB3ZSdyZSBub3QgcHJvY2Vzc2luZyB0aGUgbGFzdCBzdHJpbmcuCi0gICAg
ICAgICAgICBpZiAoaSA8IGNvdW50IC0gMSkgewotICAgICAgICAgICAgICAgICpwID0gJyAnOwot
ICAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAg
ICBBU1NFUlQocCA9PSB0b3RhbExlbmd0aCArIGJ1ZmZlcik7Ci0KLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmNsZWFyKCkKLXsKLSAgICBtX3RvdGFsTGVuZ3Ro
ID0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKLSAgICBtX3N0cmluZ3MuY2xlYXIo
KTsKLX0KLQotdW5zaWduZWQgU3RyaW5nQnVpbGRlcjo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICBp
ZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX3RvdGFsTGVuZ3Ro
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9T
dHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aWZuZGVmIFN0cmluZ0J1aWxkZXJfaAotI2RlZmluZSBTdHJpbmdCdWlsZGVyX2gKLQotI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVtIENvbmNhdE1vZGUgewotICAg
IENvbmNhdFVuYWx0ZXJlZCwKLSAgICBDb25jYXRBZGRpbmdTcGFjZXNCZXR3ZWVuSW5kaXZpZHVh
bFN0cmluZ3MKLX07Ci0KLWNsYXNzIFN0cmluZ0J1aWxkZXIgewotcHVibGljOgotICAgIFN0cmlu
Z0J1aWxkZXIoKSA6IG1fdG90YWxMZW5ndGgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKSB7fQotCi0gICAgdm9pZCBzZXROb25OdWxsKCkKLSAgICB7Ci0gICAgICAgIGlmIChp
c051bGwoKSkKLSAgICAgICAgICAgIG1fdG90YWxMZW5ndGggPSAwOwotICAgIH0KLQotICAgIHZv
aWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBwZW5kKFVDaGFyKTsKLSAgICB2
b2lkIGFwcGVuZChjaGFyKTsKLSAgICAKLSAgICB2b2lkIGNsZWFyKCk7Ci0gICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmcoQ29uY2F0TW9kZSBtb2RlID0g
Q29uY2F0VW5hbHRlcmVkKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuIG1fdG90YWxMZW5ndGggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpOyB9Ci0KLSAgICB1bnNpZ25lZCBtX3RvdGFsTGVuZ3RoOwotICAgIFZlY3RvcjxT
dHJpbmcsIDE2PiBtX3N0cmluZ3M7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBTdHJpbmdCdWlsZGVyX2gKSW5kZXg6IFdlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmNwcAkocmV2
aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBs
dWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxk
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5LmNwcAkocmV2aXNp
b24gNjk1NjEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJTVkdQYXRoU3RyaW5nQnVpbGRl
ci5oIgogI2luY2x1ZGUgIlNWR1BhdGhTdHJpbmdTb3VyY2UuaCIKICNpbmNsdWRlICJTVkdQYXRo
VHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdCdWls
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5j
cHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4MSArMjQsOTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitTdHJpbmcgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OnJlc3VsdCgpCit7CisgICAgdW5z
aWduZWQgc2l6ZSA9IG1fc3RyaW5nQnVpbGRlci5zaXplKCk7CisgICAgaWYgKCFzaXplKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBSZW1vdmUgdHJhaWxpbmcgc3BhY2UuCisg
ICAgbV9zdHJpbmdCdWlsZGVyLnJlc2l6ZShzaXplIC0gMSk7CisgICAgcmV0dXJuIG1fc3RyaW5n
QnVpbGRlci50b1N0cmluZygpOworfQorCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjptb3Zl
VG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2wsIFBhdGhDb29yZGluYXRlTW9k
ZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIk0gJS42bGcgJS42bGciLCB0
YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxk
ZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJNICUuNmxnICUuNmxnICIsIHRhcmdldFBvaW50Lngo
KSwgdGFyZ2V0UG9pbnQueSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJtICUuNmxnICUuNmxnIiwgdGFyZ2V0UG9pbnQueCgpLCB0
YXJnZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6
OmZvcm1hdCgibSAlLjZsZyAlLjZsZyAiLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50Lnko
KSkpOwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG8oY29uc3QgRmxvYXRQ
b2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmICht
b2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoU3RyaW5nOjpmb3JtYXQoIkwgJS42bGcgJS42bGciLCB0YXJnZXRQb2ludC54KCksIHRhcmdl
dFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9y
bWF0KCJMICUuNmxnICUuNmxnICIsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7
CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0
KCJsICUuNmxnICUuNmxnIiwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsKKyAg
ICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgibCAlLjZsZyAlLjZs
ZyAiLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2b2lkIFNWR1Bh
dGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKGZsb2F0IHgsIFBhdGhDb29yZGluYXRl
TW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAg
ICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIkggJS42bGciLCB4KSk7
CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIkggJS42bGcg
IiwgeCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6
OmZvcm1hdCgiaCAlLjZsZyIsIHgpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgiaCAlLjZsZyAiLCB4KSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1
aWxkZXI6OmxpbmVUb1ZlcnRpY2FsKGZsb2F0IHksIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQog
ewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5n
QnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlYgJS42bGciLCB5KSk7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlYgJS42bGcgIiwgeSkpOwogICAg
IGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgidiAl
LjZsZyIsIHkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1h
dCgidiAlLjZsZyAiLCB5KSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZl
VG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2Rl
KQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3Ry
aW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIkMgJS42bGcgJS42bGcgJS42bGcgJS42
bGcgJS42bGcgJS42bGciLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBwb2lu
dDIueSgpLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJDICUuNmxnICUuNmxnICUuNmxnICUu
NmxnICUuNmxnICUuNmxnICIsIHBvaW50MS54KCksIHBvaW50MS55KCksIHBvaW50Mi54KCksIHBv
aW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiAgICAgZWxzZQot
ICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJjICUuNmxnICUu
NmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnIiwgcG9pbnQxLngoKSwgcG9pbnQxLnkoKSwgcG9p
bnQyLngoKSwgcG9pbnQyLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsK
KyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiYyAlLjZsZyAl
LjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAiLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCBw
b2ludDIueCgpLCBwb2ludDIueSgpLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkp
OwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0
aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGlu
YXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiUyAl
LjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIsIHBvaW50Mi54KCksIHBvaW50Mi55KCksIHRhcmdldFBv
aW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBl
bmQoU3RyaW5nOjpmb3JtYXQoIlMgJS42bGcgJS42bGcgJS42bGcgJS42bGcgIiwgcG9pbnQyLngo
KSwgcG9pbnQyLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsKICAgICBl
bHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoInMgJS42
bGcgJS42bGcgJS42bGcgJS42bGciLCBwb2ludDIueCgpLCBwb2ludDIueSgpLCB0YXJnZXRQb2lu
dC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KFN0cmluZzo6Zm9ybWF0KCJzICUuNmxnICUuNmxnICUuNmxnICUuNmxnICIsIHBvaW50Mi54KCks
IHBvaW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiB9CiAKIHZv
aWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVN
b2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAg
ICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiUSAlLjZsZyAlLjZsZyAl
LjZsZyAlLjZsZyIsIHBvaW50MS54KCksIHBvaW50MS55KCksIHRhcmdldFBvaW50LngoKSwgdGFy
Z2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpm
b3JtYXQoIlEgJS42bGcgJS42bGcgJS42bGcgJS42bGcgIiwgcG9pbnQxLngoKSwgcG9pbnQxLnko
KSwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsKICAgICBlbHNlCi0gICAgICAg
IG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoInEgJS42bGcgJS42bGcgJS42
bGcgJS42bGciLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCB0YXJnZXRQb2ludC54KCksIHRhcmdl
dFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9y
bWF0KCJxICUuNmxnICUuNmxnICUuNmxnICUuNmxnICIsIHBvaW50MS54KCksIHBvaW50MS55KCks
IHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0
cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYgdGFy
Z2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFi
c29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIlQgJS42bGcgJS42bGciLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50Lnko
KSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJUICUu
NmxnICUuNmxnICIsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiAgICAgZWxz
ZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJ0ICUuNmxn
ICUuNmxnIiwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9z
dHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgidCAlLjZsZyAlLjZsZyAiLCB0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdC
dWlsZGVyOjphcmNUbyhmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0IGFuZ2xlLCBib29sIGxhcmdl
QXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldFBvaW50LCBQ
YXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBBYnNvbHV0ZUNvb3Jk
aW5hdGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJB
ICUuNmxnICUuNmxnICUuNmxnICVkICVkICUuNmxnICUuNmxnIiwgcjEsIHIyLCBhbmdsZSwgbGFy
Z2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7
CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIkEgJS42bGcg
JS42bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGcgIiwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNG
bGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiAgICAg
ZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJhICUu
NmxnICUuNmxnICUuNmxnICVkICVkICUuNmxnICUuNmxnIiwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VB
cmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7Cisg
ICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoImEgJS42bGcgJS42
bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGcgIiwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFn
LCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiB9CiAKIHZv
aWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsb3NlUGF0aCgpCiB7Ci0gICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZCgiWiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoIlogIik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTdHJpbmdC
dWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIu
aAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5nQnVpbGRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTYgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2lu
Y2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJTVkdQYXRoQ29uc3VtZXIuaCIKLSNpbmNs
dWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1BhdGhTdHJpbmdCdWlsZGVyIDog
cHVibGljIFNWR1BhdGhDb25zdW1lciB7CiBwdWJsaWM6Ci0gICAgU3RyaW5nIHJlc3VsdCgpIHsg
cmV0dXJuIG1fc3RyaW5nQnVpbGRlci50b1N0cmluZyhDb25jYXRBZGRpbmdTcGFjZXNCZXR3ZWVu
SW5kaXZpZHVhbFN0cmluZ3MpOyB9CisgICAgU3RyaW5nIHJlc3VsdCgpOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3N0cmluZ0J1aWxkZXIuY2xlYXIoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3N0cmluZ0J1aWxkZXIgPSBTdHJpbmdCdWls
ZGVyKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0aFNlZ21lbnRDb3VudCgpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNvbnN1bWluZygpIHsgcmV0dXJuIHRydWU7IH0K
IApJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0
MiwxMSBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkluZGV4OiBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAko
cmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAKICNpbmNsdWRlIDx3dGYv
TUQ1Lmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtNTIsNiArNTEsNyBAQAog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc1LDcgKzc1LDcgQEAg
c3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBLVVJMJiB1cmwsIAogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZCh1cmwuaG9zdCgpLmxvd2VyKCkpOwogICAg
IGlmICh1cmwucG9ydCgpICYmICgoIXNlY3VyZSAmJiB1cmwucG9ydCgpICE9IDgwKSB8fCAoc2Vj
dXJlICYmIHVybC5wb3J0KCkgIT0gNDQzKSkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoIjoi
KTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
U3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKSkpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70523</attachid>
            <date>2010-10-12 05:46:53 -0700</date>
            <delta_ts>2010-10-12 05:58:40 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>UnifyStringBuilder.diff</filename>
            <type>text/plain</type>
            <size>88436</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NTc2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTAtMTAtMTIgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgSlNDOjpTdHJpbmdCdWlsZGVyICYgV2Vi
Q29yZTo6U3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc1MzgKKworICAgICAgICBNb3ZlIHJ1bnRpbWUvU3RyaW5nQnVpbGRlci5o
IHRvIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaC4gUmVuYW1lIGJ1aWxkKCkgdG8gdG9TdHJpbmco
KSBhbmQgcmV0dXJuIGEgV1RGOjpTdHJpbmcoKS4KKyAgICAgICAgTW92ZSB0aGUgYXBwZW5kKGNv
bnN0IEpTQzo6VVN0cmluZyYpIG1ldGhvZCBpbnRvIHJ1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaC4K
KyAgICAgICAgVVN0cmluZ0J1aWxkZXIgaW5oZXJpdHMgZnJvbSBTdHJpbmdCdWlsZGVyLmggYW5k
IGFkZHMgYXBwZW5kKGNvbnN0IEpTQzo6VVN0cmluZyYpIGFuZCBVU3RyaW5nIHRvVVN0cmluZygp
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm8gbmV3IGNvZGUsIGp1c3QgbW92ZSBjb2RlIGFy
b3VuZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oIC8gcnVudGltZS9VU3RyaW5nQnVpbGRlci5oLiBSZW1vdmUgcnVudGltZS9TdHJpbmdC
dWlsZGVyLmguCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8uCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKTogVXNlIFVTdHJpbmdCdWls
ZGVyLCBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuIFJlbmFtZSBidWlsZCgpIC0+IHRvVVN0cmlu
ZygpLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNVbmVzY2Fw
ZSk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OlN0cmluZ2lmaWVyOjpzdHJpbmdpZnkpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6U3RyaW5n
aWZpZXI6OmFwcGVuZFF1b3RlZFN0cmluZyk6IERpdHRvLgorICAgICAgICAoSlNDOjpTdHJpbmdp
Zmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6IERpdHRvLgorICAgICAgICAoSlNDOjpTdHJp
bmdpZmllcjo6c3RhcnROZXdMaW5lKTogRGl0dG8uCisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjps
ZXhTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6
IFJlbW92ZSB1bm5lZWRlZCBKU1N0cmluZ0J1aWxkZXIuaCAvIFN0cmluZ0J1aWxkZXIuaCBpbmNs
dWRlLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQnVpbGRlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHJ1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaDogQWRkZWQuIEluaGVyaXRzIGZyb20gV1RGOjpT
dHJpbmdCdWlsZGVyLCBleHRlbmRpbmcgaXQgYnkgdHdvIG1ldGhvZHMuCisgICAgICAgIChKU0M6
OlVTdHJpbmdCdWlsZGVyOjphcHBlbmQpOiBhcHBlbmQoY29uc3QgSlNDOjpVU3RyaW5nJikKKyAg
ICAgICAgKEpTQzo6VVN0cmluZ0J1aWxkZXI6OnRvVVN0cmluZyk6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oOiBDb3BpZWQgZnJvbSBydW50aW1lL1N0cmluZ0J1aWxkZXIuaC4g
TW92ZSBKU0M6OlVTdHJpbmcgcGFydHMgaW50byBydW50aW1lL1VTdHJpbmdCdWlsZGVyLmgKKyAg
ICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKTogUmVuYW1lZCBtX2J1ZmZlciB0byBi
dWZmZXIgZXZlcnl3aGVyZS4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6aXNFbXB0eSk6
IERpdHRvICgrIGNvbnN0aWZ5IG1ldGhvZCkuIAorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVy
OjpyZXNlcnZlQ2FwYWNpdHkpOiBEaXR0by4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6
cmVzaXplKTogRGl0dG8uCisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OnNpemUpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6b3BlcmF0b3JbXSk6IERpdHRvLgorICAg
ICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjp0b1N0cmluZyk6IERpdHRvICgrIHJlbmFtZWQgZnJv
bSBidWlsZCgpKS4gUmV0dXJucyBhIFN0cmluZywgbm90IGFuIFVTdHJpbmcuIFRoZSBvbGQgYnVp
bGQoKSBtZXRob2QgaXMgbm93IG5hbWVkIHRvVVN0cmluZygpIGFuZCBsaXZlcyBpbiBVU3RyaW5n
QnVpbGRlci4KKwogMjAxMC0xMC0xMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpJbmRleDogSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJl
dmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQxMSw2ICs0MTEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RyYWNpbmcuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9VU3RyaW5nLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggXAorCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaCBcCiAJSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrR0NNYXAuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIu
aCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggXApAQCAtNTA4LDYgKzUw
OSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L0NTdHJpbmcuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmggXAog
CUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oIFwKKwlKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0hhc2guaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbEJhc2UuaCBc
CiAJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgXApJbmRleDogSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw2ICszNDYsNyBAQAog
ICAgICAgICAgICAgJ3J1bnRpbWUvVHJhY2luZy5oJywKICAgICAgICAgICAgICdydW50aW1lL1VT
dHJpbmcuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL1VTdHJpbmcuaCcsCisgICAgICAgICAg
ICAncnVudGltZS9VU3RyaW5nQnVpbGRlci5oJywKICAgICAgICAgICAgICdydW50aW1lL1dlYWtS
YW5kb20uaCcsCiAgICAgICAgICAgICAnd3RmL0Fsd2F5c0lubGluZS5oJywKICAgICAgICAgICAg
ICd3dGYvQVNDSUlDVHlwZS5oJywKQEAgLTQ1MCw2ICs0NTEsOCBAQAogICAgICAgICAgICAgJ3d0
Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvQ1N0cmlu
Zy5jcHAnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L0NTdHJpbmcuaCcsCisgICAgICAgICAgICAn
d3RmL3RleHQvU3RyaW5nQnVmZmVyLmgnLAorICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3RyaW5nSGFzaC5oJywKICAgICAgICAg
ICAgICd3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3Ry
aW5nSW1wbC5oJywKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagkocmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjUzLDYgKzEyNTMsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxVU3RyaW5nQnVpbGRlci5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
cnVudGltZVxVU3RyaW5nSW1wbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJ
KHJldmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L1dURi9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MDksNiArNjA5LDE0IEBACiAgCQkJ
Pg0KICAJCTwvRmlsZT4NCiAgCQk8RmlsZQ0KKyAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0Zlx0
ZXh0XFN0cmluZ0J1ZmZlci5oIg0KKyAJCQk+DQorIAkJPC9GaWxlPg0KKyAJCTxGaWxlDQorIAkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHRleHRcU3RyaW5nQnVpbGRlci5oIg0KKyAJCQk+DQor
IAkJPC9GaWxlPg0KKyAJCTxGaWxlDQogIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHRleHRc
U3RyaW5nSGFzaC5oIg0KICAJCQk+DQogIAkJPC9GaWxlPg0KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiwxMCBAQAogLyog
QmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMDZEMzU4QjMwREFBREFBNDAwM0IxNzRF
IC8qIE1haW5UaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDZEMzU4QTIwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJlYWQuY3BwICovOyB9
OwogCQkwNkQzNThCNDBEQUFEQUFBMDAzQjE3NEUgLyogTWFpblRocmVhZE1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2RDM1OEExMERBQUQ5QzQw
MDNCMTc0RSAvKiBNYWluVGhyZWFkTWFjLm1tICovOyB9OworCQkwODE0Njk0OTEyNjQzNzg1MDBE
RkY5MzUgLyogU3RyaW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDgxNDY5NDgxMjY0Mzc1RTAwREZGOTM1IC8qIFN0cmluZ0J1aWxkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhG
QTVCQjBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEZBNUI5MEVGNzZENDMwMDU3OEU2RiAv
KiBSYW5kb21OdW1iZXIuY3BwICovOyB9OwogCQkwODhGQTVCQzBFRjc2RDQzMDA1NzhFNkYgLyog
UmFuZG9tTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDhEREE1QzExMjY0NjMx
NzAwNzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1
aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwOEUyNzlFOTBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFMjc5RTgwRUY4M0IxMDAw
N0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLzsgfTsKIAkJMEIzMzBDMjcwRjM4QzYyMzAw
NjkyREUzIC8qIFR5cGVUcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEIzMzBDMjYwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFpdHMuY3Bw
ICovOyB9OwogCQkwQjREN0U2MzBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI0RDdFNjIwRjMxOUFD
ODAwQUQ3RTU4IC8qIFR5cGVUcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjE3LDcgKzIxOSw2IEBACiAJCTg2OEJGQTE4MTE3Q0YxOTkw
MEI5MDhCMSAvKiBXVEZTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2OEJGQTE2MTE3Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjhCRkE2MDEx
N0QwNDgyMDBCOTA4QjEgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjhCRkE1RjExN0QwNDgyMDBCOTA4QjEgLyog
U3RhdGljQ29uc3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY5MDIzMTUxMjA5MkQ1QzAwNjMwQUY5IC8qIFBhZ2VSZXNlcnZhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5MDIz
MTQxMjA5MkQ1QzAwNjMwQUY5IC8qIFBhZ2VSZXNlcnZhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2OThCODY5MTBENDREOTQwMEQ4RDAx
QiAvKiBTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4Njk4Qjg2ODEwRDQ0RDk0MDBEOEQwMUIgLyogU3RyaW5nQnVpbGRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUQwNEFG
MTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlEMDRBRTExOTNCNTRE
MDA4MDM0NzUgLyogQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3
MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QTkwRUQwMEVF
N0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRB
cml0aG1ldGljLmNwcCAqLzsgfTsKQEAgLTYyOSw4ICs2MzAsMTAgQEAKIAkJMDZEMzU4QTEwREFB
RDlDNDAwM0IxNzRFIC8qIE1haW5UaHJlYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNYWluVGhyZWFkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNkQzNThBMjBEQUFEOUM0MDAzQjE3NEUgLyogTWFpblRocmVhZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDZEMzU4QTMwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJl
YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFpblRocmVhZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwODE0Njk0ODEyNjQzNzVFMDBERkY5MzUgLyogU3Ry
aW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHJpbmdCdWls
ZGVyLmg7IHBhdGggPSB0ZXh0L1N0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg4RkE1QjkwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21OdW1iZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFu
ZG9tTnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmRvbU51bWJl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEREQTVCQjEyNjQ1RjFEMDA3NTE3
MzIgLyogVVN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VVN0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFMjc5RTgw
RUY4M0IxMDAwN0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmFuZG9tTnVtYmVyU2VlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlVHJhaXRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVUcmFp
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVRyYWl0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIyLDcgKzgyNSw2IEBACiAJCTg2OEJGQTE2MTE3
Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV1RGU3RyaW5nLmg7IHBhdGggPSB0ZXh0L1dURlN0cmluZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjhCRkE1RjExN0QwNDgyMDBCOTA4QjEgLyogU3RhdGljQ29uc3Ry
dWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY0NvbnN0cnVj
dG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjkwMjMxNDEyMDkyRDVDMDA2
MzBBRjkgLyogUGFnZVJlc2VydmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhZ2VSZXNlcnZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njk4
Qjg2ODEwRDQ0RDk0MDBEOEQwMUIgLyogU3RyaW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2OUQwNEFFMTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFRyYW5zY2Vu
ZGVudGFsRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY5RUJDQjYw
RThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzdWx0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkE5
MEVDRjBFRTdENTFGMDBBQjM1MEQgLyogSklUQXJpdGhtZXRpYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBcml0aG1ldGljLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3OTMsNyArMTc5NSw2IEBACiAJCQkJN0UyQzZDOTgwRDMxQzZCNjAw
MkQ0NEUyIC8qIFNjb3BlQ2hhaW5NYXJrLmggKi8sCiAJCQkJOTMzMDNGRTgwRTZBNzJCNTAwNzg2
RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgKi8sCiAJCQkJOTMzMDNGRUEwRTZBNzJDMDAwNzg2RTZB
IC8qIFNtYWxsU3RyaW5ncy5oICovLAotCQkJCTg2OThCODY4MTBENDREOTQwMEQ4RDAxQiAvKiBT
dHJpbmdCdWlsZGVyLmggKi8sCiAJCQkJODZCNkRBMDExMjEzMkI5QTAwMEQzMTZGIC8qIFN0cmlu
Z0NvbmNhdGVuYXRlLmggKi8sCiAJCQkJQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmlu
Z0NvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzE4QzNDMTBFMTZFRTMzMDBCMzQ0NjAgLyogU3Ry
aW5nQ29uc3RydWN0b3IuaCAqLywKQEAgLTE4MTUsNiArMTgxNiw3IEBACiAJCQkJNUQ1MzcyNkUw
RTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLywKIAkJCQlGNjkyQTg4NTAyNTU1OTdEMDFG
RjYwRjcgLyogVVN0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8q
IFVTdHJpbmcuaCAqLywKKwkJCQkwOEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1
aWxkZXIuaCAqLywKIAkJCQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmgg
Ki8sCiAJCQkJMTQwMzVEQjAxMERCRkIyQTAwRkZGRkU3IC8qIFdlYWtHQ1B0ci5oICovLAogCQkJ
CTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCkBAIC0xODM0LDYg
KzE4MzYsNyBAQAogCQkJCTg2NTY1NzQwMTE1QkUzREEwMDI5MUY0MCAvKiBDU3RyaW5nLmNwcCAq
LywKIAkJCQk4NjU2NTc0MTExNUJFM0RBMDAyOTFGNDAgLyogQ1N0cmluZy5oICovLAogCQkJCTg2
Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLywKKwkJCQkwODE0Njk0
ODEyNjQzNzVFMDBERkY5MzUgLyogU3RyaW5nQnVpbGRlci5oICovLAogCQkJCTg2OEJGQTA1MTE3
Q0VGRDEwMEI5MDhCMSAvKiBTdHJpbmdIYXNoLmggKi8sCiAJCQkJODY4QkZBMDYxMTdDRUZEMTAw
QjkwOEIxIC8qIFN0cmluZ0ltcGwuY3BwICovLAogCQkJCTg2OEJGQTA3MTE3Q0VGRDEwMEI5MDhC
MSAvKiBTdHJpbmdJbXBsLmggKi8sCkBAIC0yMjU2LDcgKzIyNTksNyBAQAogCQkJCTg2OEJGQTYw
MTE3RDA0ODIwMEI5MDhCMSAvKiBTdGF0aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMUI0NDdBMEVDQ0Q3M0IwMDRGNEREMSAvKiBTdGRMaWJFeHRyYXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTg2OThCODY5MTBENDREOTQwMEQ4RDAxQiAvKiBTdHJpbmdCdWlsZGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwODE0Njk0OTEyNjQzNzg1MDBERkY5MzUgLyogU3RyaW5n
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8q
IFN0cmluZ0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2NzBFMTZGNUNE
MDBCMzQ0NjAgLyogU3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjhCRkEwRDEx
N0NFRkQxMDBCOTA4QjEgLyogU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjkyLDYg
KzIyOTUsNyBAQAogCQkJCUJDMThDNDc0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVbmljb2RlSWN1Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3NTBFMTZGNUNEMDBCMzQ0NjAgLyogVW51c2VkUGFy
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDc2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVU3Ry
aW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEREQTVDMTEyNjQ2MzE3MDA3NTE3MzIgLyogVVN0
cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDc3MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTdGRjc3MTExMjEzMUQyMDAwNzZBMTkg
LyogVmFsdWVDaGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NzgwRTE2RjVDRDAwQjM0
NDYwIC8qIFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgot
I2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgog
I2luY2x1ZGUgIlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2NywxMyArMzY3LDEz
IEBAIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBGdW5jdGlvbkUKIFVTdHJpbmcgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CiB7CiAgICAgRnVuY3Rpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzID0gKm1fcGFyYW1ldGVyczsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBwb3Mg
PSAwOyBwb3MgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytwb3MpIHsKICAgICAgICAgaWYgKCFidWls
ZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZChwYXJhbWV0ZXJzW3Bvc10udXN0cmluZygpKTsKICAgICB9Ci0gICAg
cmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1VTdHJpbmcoKTsK
IH0KIAogUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBQcm9ncmFtRXhlY3V0YWJsZTo6cmVwYXJz
ZUV4Y2VwdGlvbkluZm8oU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKQpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA2
OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJMZXhlci5oIgogI2lu
Y2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgorI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29u
Y2F0ZW5hdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04Myw3ICs4Myw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICBlbHNlIGlmIChhcmdzLnNpemUo
KSA9PSAxKQogICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygiKGZ1bmN0aW9uKCkgeyAiLCBh
cmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCAiXG59KSIpOwogICAgIGVsc2UgewotICAgICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIFVTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IGFyZ3Muc2l6ZSgpIC0gMTsgaSsrKSB7CkBAIC05Myw3ICs5Myw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IikgeyAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdChhcmdzLnNpemUoKSAtIDEp
LnRvU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxufSkiKTsKLSAgICAg
ICAgcHJvZ3JhbSA9IGJ1aWxkZXIuYnVpbGQoKTsKKyAgICAgICAgcHJvZ3JhbSA9IGJ1aWxkZXIu
dG9VU3RyaW5nKCk7CiAgICAgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiA2OTU2MSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTGl0ZXJhbFBhcnNlci5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVkZSAiU3Ry
aW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiZHRv
YS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC01NjMsNyAr
NTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIFVTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KTsKICAgICBpbnQgayA9IDA7CiAgICAgaW50IGxlbiA9IHN0ci5sZW5ndGgoKTsKQEAgLTU4NSw3
ICs1ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVCiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCpjKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIGJ1aWxkZXIuYnVpbGQoKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgYnVpbGRlci50b1VTdHJpbmcoKSkpOwogfQogCiAjaWZu
ZGVmIE5ERUJVRwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZp
c2lvbiA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgi
CiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKLSNp
bmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiVVN0cmluZ0J1aWxkZXIuaCIKICNp
bmNsdWRlICJTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBKU09iamVjdCogb2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KIAotICAgICAgICBib29sIGFwcGVuZE5leHRQ
cm9wZXJ0eShTdHJpbmdpZmllciYsIFN0cmluZ0J1aWxkZXImKTsKKyAgICAgICAgYm9vbCBhcHBl
bmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImLCBVU3RyaW5nQnVpbGRlciYpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgSlNPYmplY3QqIGNvbnN0IG1fb2JqZWN0OwpAQCAtOTgsMTcgKzk4LDE3
IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgSG9sZGVyOwogCi0gICAgc3RhdGljIHZv
aWQgYXBwZW5kUXVvdGVkU3RyaW5nKFN0cmluZ0J1aWxkZXImLCBjb25zdCBVU3RyaW5nJik7Cisg
ICAgc3RhdGljIHZvaWQgYXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiwgY29uc3Qg
VVN0cmluZyYpOwogCiAgICAgSlNWYWx1ZSB0b0pTT04oSlNWYWx1ZSwgY29uc3QgUHJvcGVydHlO
YW1lRm9yRnVuY3Rpb25DYWxsJik7CiAKICAgICBlbnVtIFN0cmluZ2lmeVJlc3VsdCB7IFN0cmlu
Z2lmeUZhaWxlZCwgU3RyaW5naWZ5U3VjY2VlZGVkLCBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVm
aW5lZFZhbHVlIH07Ci0gICAgU3RyaW5naWZ5UmVzdWx0IGFwcGVuZFN0cmluZ2lmaWVkVmFsdWUo
U3RyaW5nQnVpbGRlciYsIEpTVmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5
TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOworICAgIFN0cmluZ2lmeVJlc3VsdCBhcHBlbmRTdHJpbmdp
ZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJiwgSlNWYWx1ZSwgSlNPYmplY3QqIGhvbGRlciwgY29u
c3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJik7CiAKICAgICBib29sIHdpbGxJbmRlbnQo
KSBjb25zdDsKICAgICB2b2lkIGluZGVudCgpOwogICAgIHZvaWQgdW5pbmRlbnQoKTsKLSAgICB2
b2lkIHN0YXJ0TmV3TGluZShTdHJpbmdCdWlsZGVyJikgY29uc3Q7CisgICAgdm9pZCBzdGFydE5l
d0xpbmUoVVN0cmluZ0J1aWxkZXImKSBjb25zdDsKIAogICAgIFN0cmluZ2lmaWVyKiBjb25zdCBt
X25leHRTdHJpbmdpZmllclRvTWFyazsKICAgICBFeGVjU3RhdGUqIGNvbnN0IG1fZXhlYzsKQEAg
LTI3MCwxNiArMjcwLDE2IEBAIEpTVmFsdWUgU3RyaW5naWZpZXI6OnN0cmluZ2lmeShKU1ZhbHVl
IHYKICAgICBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwgZW1wdHlQcm9wZXJ0eU5hbWUobV9l
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKICAgICBv
YmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0
eUlkZW50aWZpZXIsIHZhbHVlKTsKIAotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIFVT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBpZiAoYXBwZW5kU3RyaW5naWZpZWRWYWx1ZShyZXN1
bHQsIHZhbHVlLCBvYmplY3QsIGVtcHR5UHJvcGVydHlOYW1lKSAhPSBTdHJpbmdpZnlTdWNjZWVk
ZWQpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmIChtX2V4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICByZXR1cm4ganNTdHJp
bmcobV9leGVjLCByZXN1bHQuYnVpbGQoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKG1fZXhlYywg
cmVzdWx0LnRvVVN0cmluZygpKTsKIH0KIAotdm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVk
U3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFVTdHJpbmcmIHZhbHVlKQordm9p
ZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVy
LCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpbnQgbGVuZ3RoID0gdmFsdWUubGVuZ3Ro
KCk7CiAKQEAgLTM2MSw3ICszNjEsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9K
U09OKEpTVmFsCiAgICAgcmV0dXJuIGNhbGwobV9leGVjLCBvYmplY3QsIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdmFsdWUsIGFyZ3MpOwogfQogCi1TdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0
cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIs
IEpTVmFsdWUgdmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1
bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQorU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBT
dHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgSlNWYWx1ZSB2YWx1ZSwgSlNPYmplY3QqIGhvbGRlciwgY29uc3QgUHJvcGVydHlOYW1lRm9y
RnVuY3Rpb25DYWxsJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gQ2FsbCB0aGUgdG9KU09OIGZ1
bmN0aW9uLgogICAgIHZhbHVlID0gdG9KU09OKHZhbHVlLCBwcm9wZXJ0eU5hbWUpOwpAQCAtNDc3
LDcgKzQ3Nyw3IEBAIGlubGluZSB2b2lkIFN0cmluZ2lmaWVyOjp1bmluZGVudCgpCiAgICAgbV9p
bmRlbnQgPSBtX3JlcGVhdGVkR2FwLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG1faW5kZW50Lmxl
bmd0aCgpIC0gbV9nYXAubGVuZ3RoKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6
c3RhcnROZXdMaW5lKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CitpbmxpbmUgdm9pZCBT
dHJpbmdpZmllcjo6c3RhcnROZXdMaW5lKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAog
ewogICAgIGlmIChtX2dhcC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5Miw3ICs0
OTIsNyBAQCBpbmxpbmUgU3RyaW5naWZpZXI6OkhvbGRlcjo6SG9sZGVyKEpTT2JqCiB7CiB9CiAK
LWJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVy
JiBzdHJpbmdpZmllciwgU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKK2Jvb2wgU3RyaW5naWZpZXI6
OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiB7CiAgICAgQVNTRVJUKG1faW5kZXggPD0gbV9zaXplKTsK
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCShyZXZpc2lv
biA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJMZXhlci5oIgotI2luY2x1ZGUgIlN0cmluZ0J1
aWxkZXIuaCIKKyNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHRl
bXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKIHsKICAgICArK21fcHRyOwog
ICAgIGNvbnN0IFVDaGFyKiBydW5TdGFydDsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBkbyB7CiAgICAgICAgIHJ1blN0YXJ0ID0g
bV9wdHI7CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzU2FmZVN0cmluZ0NoYXJh
Y3Rlcjxtb2RlPigqbV9wdHIpKQpAQCAtMjAwLDcgKzIwMCw3IEBAIHRlbXBsYXRlIDxMaXRlcmFs
UGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgKm1fcHRy
ICE9ICciJykKICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogCi0gICAgdG9rZW4uc3RyaW5nVG9r
ZW4gPSBidWlsZGVyLmJ1aWxkKCk7CisgICAgdG9rZW4uc3RyaW5nVG9rZW4gPSBidWlsZGVyLnRv
VVN0cmluZygpOwogICAgIHRva2VuLnR5cGUgPSBUb2tTdHJpbmc7CiAgICAgdG9rZW4uZW5kID0g
KyttX3B0cjsKICAgICByZXR1cm4gVG9rU3RyaW5nOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEw
ICsyNSw4IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24uaCIKLSNpbmNs
dWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiZHRvYS5oIgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0RlY2ltYWxOdW1iZXIuaD4KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTU2MSkKKysrIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2lmbmRlZiBTdHJpbmdCdWlsZGVyX2gKLSNkZWZpbmUgU3RyaW5nQnVpbGRlcl9oCi0KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTdHJpbmdCdWls
ZGVyIHsKLXB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciB1KQotICAgIHsKLSAg
ICAgICAgYnVmZmVyLmFwcGVuZCh1KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiBzdHIpCi0gICAgewotICAgICAgICBhcHBlbmQoc3RyLCBzdHJsZW4oc3RyKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKQotICAgIHsK
LSAgICAgICAgcmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlci5zaXplKCkgKyBsZW4pOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXplX3QgbGVuKQotICAgIHsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZChzdHIsIGxlbik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0
cmluZyYgc3RyKQotICAgIHsKLSAgICAgICAgYnVmZmVyLmFwcGVuZChzdHIuY2hhcmFjdGVycygp
LCBzdHIubGVuZ3RoKCkpOwotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJ1
ZmZlci5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIHJlc2VydmVDYXBhY2l0eShzaXplX3QgbmV3Q2Fw
YWNpdHkpCi0gICAgewotICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPCBidWZmZXIuY2FwYWNpdHko
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYnVmZmVyLnJlc2VydmVDYXBhY2l0eShz
dGQ6Om1heChuZXdDYXBhY2l0eSwgYnVmZmVyLmNhcGFjaXR5KCkgKyBidWZmZXIuY2FwYWNpdHko
KSAvIDQgKyAxKSk7Ci0gICAgfQotICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7IGJ1ZmZl
ci5yZXNpemUoc2l6ZSk7IH0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZl
ci5zaXplKCk7IH0KLQotICAgIFVDaGFyIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0
dXJuIGJ1ZmZlci5hdChpKTsgfQotCi0gICAgVVN0cmluZyBidWlsZCgpCi0gICAgewotICAgICAg
ICBidWZmZXIuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlci5kYXRhKCkgfHwg
IWJ1ZmZlci5zaXplKCkpOwotICAgICAgICByZXR1cm4gVVN0cmluZzo6YWRvcHQoYnVmZmVyKTsK
LSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBWZWN0b3I8VUNoYXIsIDY0PiBidWZmZXI7Ci19Owot
Ci19Ci0KLSNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nQnVpbGRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIu
aAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVTdHJpbmdCdWlsZGVyX2gKKyNkZWZpbmUg
VVN0cmluZ0J1aWxkZXJfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVVN0cmluZ0J1aWxkZXIgOiBwdWJsaWMgU3RyaW5n
QnVpbGRlciB7CitwdWJsaWM6CisgICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNlIG1ldGhvZHMs
IG90aGVyd2hpc2UgYXBwZW5kKCkgaXMgYW1iaWdpb3VzLgorICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFVDaGFyIHUpIHsgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKHUpOyB9CisgICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogc3RyKSB7IFN0cmluZ0J1aWxkZXI6OmFwcGVuZChzdHIpOyB9CisgICAgdm9p
ZCBhcHBlbmQoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKSB7IFN0cmluZ0J1aWxkZXI6OmFw
cGVuZChzdHIsIGxlbik7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXpl
X3QgbGVuKSB7IFN0cmluZ0J1aWxkZXI6OmFwcGVuZChzdHIsIGxlbik7IH0KKworICAgIHZvaWQg
YXBwZW5kKGNvbnN0IFVTdHJpbmcmIHN0cikKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLmFwcGVu
ZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOworICAgIH0KKworICAgIFVTdHJpbmcg
dG9VU3RyaW5nKCkKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLnNocmlua1RvRml0KCk7CisgICAg
ICAgIEFTU0VSVChtX2J1ZmZlci5kYXRhKCkgfHwgIW1fYnVmZmVyLnNpemUoKSk7CisgICAgICAg
IHJldHVybiBVU3RyaW5nOjphZG9wdChtX2J1ZmZlcik7CisgICAgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBVU3RyaW5nQnVpbGRlcl9oCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTQ2NCkJKGZyb20gSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdCdWlsZGVyLmg6Njk0NjQpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFN0cmluZ0J1aWxkZXJfaAorI2RlZmluZSBTdHJpbmdCdWlsZGVyX2gKKworI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cmluZ0J1aWxkZXIgewor
cHVibGljOgorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyIHUpCisgICAgeworICAgICAgICBi
dWZmZXIuYXBwZW5kKHUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIHN0
cikKKyAgICB7CisgICAgICAgIGFwcGVuZChzdHIsIHN0cmxlbihzdHIpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4pCisgICAgeworICAgICAg
ICByZXNlcnZlQ2FwYWNpdHkoYnVmZmVyLnNpemUoKSArIGxlbik7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KHN0cltpXSkpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFVDaGFyKiBzdHIsIHNpemVfdCBsZW4pCisgICAgeworICAgICAgICBidWZmZXIuYXBw
ZW5kKHN0ciwgbGVuKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBVU3RyaW5nJiBz
dHIpCisgICAgeworICAgICAgICBidWZmZXIuYXBwZW5kKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5s
ZW5ndGgoKSk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYnVmZmVyLmlz
RW1wdHkoKTsgfQorICAgIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KHNpemVfdCBuZXdDYXBhY2l0eSkK
KyAgICB7CisgICAgICAgIGlmIChuZXdDYXBhY2l0eSA8IGJ1ZmZlci5jYXBhY2l0eSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBidWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHN0ZDo6bWF4
KG5ld0NhcGFjaXR5LCBidWZmZXIuY2FwYWNpdHkoKSArIGJ1ZmZlci5jYXBhY2l0eSgpIC8gNCAr
IDEpKTsKKyAgICB9CisgICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUpIHsgYnVmZmVyLnJlc2l6
ZShzaXplKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gYnVmZmVyLnNpemUo
KTsgfQorCisgICAgVUNoYXIgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gYnVm
ZmVyLmF0KGkpOyB9CisKKyAgICBVU3RyaW5nIGJ1aWxkKCkKKyAgICB7CisgICAgICAgIGJ1ZmZl
ci5zaHJpbmtUb0ZpdCgpOworICAgICAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSB8fCAhYnVmZmVy
LnNpemUoKSk7CisgICAgICAgIHJldHVybiBVU3RyaW5nOjphZG9wdChidWZmZXIpOworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIFZlY3RvcjxVQ2hhciwgNjQ+IGJ1ZmZlcjsKK307CisKK30KKwor
I2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZp
c2lvbiA2OTQ2NCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDE1IEBACiAjZGVmaW5lIFN0cmluZ0J1aWxkZXJf
aAogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi1uYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBTdHJpbmdC
dWlsZGVyIHsKIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciB1KQogICAgIHsK
LSAgICAgICAgYnVmZmVyLmFwcGVuZCh1KTsKKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKHUpOwog
ICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIHN0cikKQEAgLTQ0LDQ0ICs0NSw0
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBs
ZW4pCiAgICAgewotICAgICAgICByZXNlcnZlQ2FwYWNpdHkoYnVmZmVyLnNpemUoKSArIGxlbik7
CisgICAgICAgIHJlc2VydmVDYXBhY2l0eShtX2J1ZmZlci5zaXplKCkgKyBsZW4pOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgYnVmZmVyLmFw
cGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKICAgICB9
CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXplX3QgbGVuKQogICAgIHsK
LSAgICAgICAgYnVmZmVyLmFwcGVuZChzdHIsIGxlbik7CisgICAgICAgIG1fYnVmZmVyLmFwcGVu
ZChzdHIsIGxlbik7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0cmluZyYgc3Ry
KQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQogICAgIHsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOworICAgICAgICBtX2J1
ZmZlci5hcHBlbmQoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpKTsKICAgICB9CiAKLSAg
ICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBidWZmZXIuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBy
ZXNlcnZlQ2FwYWNpdHkoc2l6ZV90IG5ld0NhcGFjaXR5KQogICAgIHsKLSAgICAgICAgaWYgKG5l
d0NhcGFjaXR5IDwgYnVmZmVyLmNhcGFjaXR5KCkpCisgICAgICAgIGlmIChuZXdDYXBhY2l0eSA8
IG1fYnVmZmVyLmNhcGFjaXR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJ1ZmZl
ci5yZXNlcnZlQ2FwYWNpdHkoc3RkOjptYXgobmV3Q2FwYWNpdHksIGJ1ZmZlci5jYXBhY2l0eSgp
ICsgYnVmZmVyLmNhcGFjaXR5KCkgLyA0ICsgMSkpOworICAgICAgICBtX2J1ZmZlci5yZXNlcnZl
Q2FwYWNpdHkoc3RkOjptYXgobmV3Q2FwYWNpdHksIG1fYnVmZmVyLmNhcGFjaXR5KCkgKyBtX2J1
ZmZlci5jYXBhY2l0eSgpIC8gNCArIDEpKTsKICAgICB9Ci0gICAgdm9pZCByZXNpemUoc2l6ZV90
IHNpemUpIHsgYnVmZmVyLnJlc2l6ZShzaXplKTsgfQotICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gYnVmZmVyLnNpemUoKTsgfQorICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7
IG1fYnVmZmVyLnJlc2l6ZShzaXplKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAgICBVQ2hhciBvcGVyYXRvcltdKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBidWZmZXIuYXQoaSk7IH0KKyAgICBVQ2hhciBvcGVyYXRvcltdKHNpemVf
dCBpKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5hdChpKTsgfQogCi0gICAgVVN0cmluZyBidWls
ZCgpCisgICAgU3RyaW5nIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIGJ1ZmZlci5zaHJpbmtU
b0ZpdCgpOwotICAgICAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSB8fCAhYnVmZmVyLnNpemUoKSk7
Ci0gICAgICAgIHJldHVybiBVU3RyaW5nOjphZG9wdChidWZmZXIpOworICAgICAgICBtX2J1ZmZl
ci5zaHJpbmtUb0ZpdCgpOworICAgICAgICBBU1NFUlQobV9idWZmZXIuZGF0YSgpIHx8ICFtX2J1
ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChtX2J1ZmZlcik7CiAg
ICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVmVjdG9yPFVDaGFyLCA2ND4gYnVmZmVyOworICAgIFZl
Y3RvcjxVQ2hhciwgNjQ+IG1fYnVmZmVyOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV1RGCiAK
LSNlbmRpZgordXNpbmcgV1RGOjpTdHJpbmdCdWlsZGVyOworCisjZW5kaWYgLy8gU3RyaW5nQnVp
bGRlcl9oCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gNjk1NzYpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEwLTEwLTEyICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVuaWZ5IEpTQzo6U3RyaW5nQnVpbGRlciAmIFdlYkNvcmU6OlN0cmluZ0J1
aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3
NTM4CisKKyAgICAgICAgSlNDOjpTdHJpbmdCdWlsZGVyIG9wZXJhdGVzIG9uIGEgVmVjdG9yPFVD
aGFyLCA2ND4gYW5kIGFsbG93cyB0byBidWlsZCBhIHN0cmluZyBiYXNlZCBvbiBhIHN0cmVhbSBv
ZiBjaGFyYWN0ZXJzIGluIGFuIGVmZmljaWVudCBtYW5uZXIuCisgICAgICAgIFdlYkNvcmU6OlN0
cmluZ0J1aWxkZXIgb3BlcmF0ZXMgb24gYSBWZWN0b3I8U3RyaW5nLCAxNj4gYW5kIGFsbG93cyB0
byBjb25jYXQgYW4gYXJiaXRhcnkgbnVtYmVyIG9mIFN0cmluZ3MuIEl0J3Mgbm90IGVmZmljaWVu
dCBpbiBoYW5kbGluZyBzaW5nbGUKKyAgICAgICAgY2hhcmFjdGVycywgYXMgYSBTdHJpbmcgd2l0
aCBsZW5ndGg9MSBoYXMgdG8gYmUgY29uc3RydWN0ZWQgZm9yIHRob3NlLiBBbiBhbmFseXNpcyBv
ZiB0aGUgY2FsbGVycyBvZiBXZWJDb3JlOjpTdHJpbmdCdWlsZGVyIHNob3dzIHRoYXQKKyAgICAg
ICAgbW9zdCBjYWxsc2l0ZXMgYWN0dWFsbHkgY29tYmluZSBTdHJpbmdzIGFuZCBzaW5nbGUgY2hh
cmFjdGVycywgc28gdXNpbmcgYSBWZWN0b3I8VUNoYXI+IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50
LiBUaG9zZSB3aG8gb25seSBjb21iaW5lIGxhcmdlCisgICAgICAgIHN0cmluZ3MgYXJlIG9ubHkg
dXNlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBzbyBpdCdzIGZpbmUgdG8gc3dpdGNoIHRoZW0g
dG8gYSBWZWN0b3I8VUNoYXI+IGFwcHJvYWNoIGFzIHdlbGwuCisKKyAgICAgICAgUmVwbGFjZSBX
ZWJDb3JlOjpTdHJpbmdCdWlsZGVyIHdpdGggSlNDOjpTdHJpbmdCdWlsZGVyLCBhbmQgbW92ZSBp
dCB0byB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggaW50byB0aGUgV1RGIG5hbWVzcGFjZS4KKyAg
ICAgICAgV2hpbGUgSSB3YXMgYXQgaXQgcmVtb3ZlIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVy
LmgsIGFzIGl0IHdhcyBvbmx5IGluY2x1ZGluZyB3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaC4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgdGh1cyBubyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBBbmRyb2lkLm1rOiBSZW1vdmUgcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVy
LiogYW5kIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmguCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6IERpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBEaXR0by4gCisgICAgICAg
ICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9T
dHJpbmdCdWlsZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9VU3RyaW5nQnVpbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVy
cy93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdFN0cmluZy5oOiBEb24ndCBpbmNsdWRlIFBsYXRmb3JtU3RyaW5nLmggYnV0IHd0Zi90
ZXh0L1dURlN0cmluZy5oLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRv
cis9KTogVXNlIEpTQzo6VVN0cmluZ0J1aWxkZXIgaW5zdGVhZCBvZiBKU0M6OlN0cmluZ0J1aWxk
ZXIuCisgICAgICAgICogYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwOiBVc2UgV1RGOjpTdHJpbmdC
dWlsZGVyICgrIHVzZSBhcHBlbmQoY29uc3QgVUNoYXIpIGZvciBzaW5nbGUgY2hhcmFjdGVycyku
CisgICAgICAgICogY3NzL01lZGlhUXVlcnkuY3BwOiBEaXR0by4KKyAgICAgICAgKiBjc3MvTWVk
aWFRdWVyeUV4cC5jcHA6IERpdHRvLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjphcHBlbmRUZXh0Q29udGVudCk6IE1hbnVhbGx5IHRyYWNr
IHdoZXRlciB0aGUgU3RyaW5nQnVpbGRlciBjb250ZW50IGlzIGVtcHR5IG9yIG51bGwsIHRoZSBu
ZXcgU3RyaW5nQnVpbGRlciBkb2Vzbid0IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBudWxsICYgZW1w
dHkgc3RyaW5ncy4KKyAgICAgICAgKiBkb20vTm9kZS5oOiBSZW1vdmUgYXBwZW5kVGV4dENvbnRl
bnQgZGVmaW5pdGlvbiwgaXQncyBub3QgbmVlZGVkIHRvIGJlIGV4cG9ydGVkLCByZW1vdmVzIHRo
ZSBuZWVkIGZvciBhIFN0cmluZ0J1aWxkZXIuaCBpbmNsdWRlIG9yIGZvcndhcmQgZGVjbGFyYXRp
b24uCisgICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOiBVc2UgV1RGOjpTdHJpbmdCdWls
ZGVyLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHA6IFJlbW92ZSB1
c2VsZXNzIFN0cmluZ0J1ZmZlci5oIGluY2x1ZGUuCisgICAgICAgICogcGxhdGZvcm0vYW5kcm9p
ZC9GaWxlU3lzdGVtQW5kcm9pZC5jcHA6IFVzZSBXVEY6OlN0cmluZ0J1aWxkZXIuCisgICAgICAg
ICogcGxhdGZvcm0vYnJldy9GaWxlU3lzdGVtQnJldy5jcHA6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcDogRGl0dG8gKCsgdXNlIGFwcGVu
ZChjb25zdCBVQ2hhcikgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzKS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvUE9ESW50ZXJ2YWwuaDogRGl0dG8gKE9ubHkgdXNlZCBhcyBkZWJ1Z2dp
bmcgaGVscGVyIGhlcmUsIGluIGRlYnVnIGJ1aWxkcykuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oOiBEaXR0byAoT25seSB1c2VkIGFzIGRlYnVnZ2lu
ZyBoZWxwZXIgaGVyZSwgaW4gZGVidWcgYnVpbGRzKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tOiBSZW1vdmUgdXNlbGVzcyBTdHJpbmdCdWlsZGVy
LmggaW5jbHVkZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHA6IFVzZSBXVEY6OlN0cmluZ0J1aWxkZXIs
IGFuZCB1c2UgYXBwZW5kKGNvbnN0IFVDaGFyKSBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdp
bi5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUHJveHlTZXJ2ZXJTdHJpbmcpOiBVc2UgV1RGOjpT
dHJpbmdCdWlsZGVyLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlLmNwcDogVXNlIFdURjo6U3RyaW5nQnVpbGRlci4K
KyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwOiBTVkdQYXRoU3RyaW5nQnVpbGRlciB1c2Vk
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoQ29uY2F0QWRkaW5nU3BhY2VzQmV0d2VlbkluZGl2aWR1
YWxTdHJpbmdzKSwgYWRhcHQgdG8gdGhlIGNoYW5nZSwgdGhhdCB0aGlzIG1vZGUgaXMgZ29uZSBu
b3cuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6cmVzdWx0KTogSnVz
dCB1c2UgdG9TdHJpbmcoKSwgYXBwZW5kIGEgc3BhY2UgdG8gdGhlIGVuZCBvZiBlYWNoIGNvbW1h
bmQsIHdoZW4gYnVpbGRpbmcgdGhlIHN0cmluZy4gUmVtb3ZlIHRoZSBsYXN0IHRyYWlsaW5nIHNw
YWNlIGJlZm9yZSBidWlsZGluZyB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFN0cmluZ0J1aWxkZXI6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5n
QnVpbGRlcjo6bGluZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVy
OjpsaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWls
ZGVyOjpsaW5lVG9WZXJ0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVp
bGRlcjo6Y3VydmVUb0N1YmljKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWls
ZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmlu
Z0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0
cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmFyY1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhT
dHJpbmdCdWlsZGVyOjpjbG9zZVBhdGgpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nQnVp
bGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsZWFudXAp
OiBTdHJpbmdCdWlsZGVyOjpjbGVhcigpIGlzIGdvbmUsIGp1c3QgY2xlYW51cCBieSBhc3NpZ25p
bmcgU3RyaW5nQnVpbGRlcigpLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDog
VXNlIFdURjo6U3RyaW5nQnVpbGRlci4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHA6IERpdHRvICgrIHVzZSBhcHBlbmQoY29uc3QgVUNoYXIpIGZvciBzaW5nbGUg
Y2hhcmFjdGVycykuCisKIDIwMTAtMTAtMDcgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6
IFdlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJl
dmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC02
MDYsNyArNjA2LDYgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJ
cGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgXAogCXBsYXRmb3JtL3RleHQvU2Vn
bWVudGVkU3RyaW5nLmNwcCBcCiAJcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwIFwKLQlwbGF0Zm9y
bS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKIAlwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJh
dG9ySUNVLmNwcCBcCiAJcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWMuY3BwIFwKIAlwbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY0lDVS5jcHAgXApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA2OTU2MSkKKysrIFdl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzNjEsNyArMTM2MSw2IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9u
LmNwcAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcAogICAgIHBsYXRmb3Jt
L3RleHQvU3RyaW5nLmNwcAotICAgIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKICAg
ICBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4
dENvZGVjLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcApJbmRleDog
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI0NTUsOSArMjQ1NSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVu
dGVkU3RyaW5nLmggXAotCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWZmZXIuaCBcCi0J
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKLQlXZWJDb3JlL3BsYXRm
b3JtL3RleHQvU3RyaW5nQnVpbGRlci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5n
LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N1ZmZpeFRyZWUuaCBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNjk1NjEp
CisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzE0Myw5ICszMTQz
LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vdGV4
dC9TdHJpbmdCdWZmZXIuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdHJpbmdCdWls
ZGVyLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nSGFzaC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9T
dWZmaXhUcmVlLmgnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLm9yZGVyCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL1dlYkNv
cmUub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTMzOTcsOSArMzM5Nyw2IEBAIF9fWk43V2ViQ29y
ZTE3SFRNTFNjcmlwdEVsZW1lbnQ4Y2hlY2tEVEQKIF9fWk43V2ViQ29yZTE3SFRNTFNjcmlwdEVs
ZW1lbnQxNWNoaWxkcmVuQ2hhbmdlZEViUE5TXzROb2RlRVMyX2kKIF9fWk43V2ViQ29yZTEzU2Ny
aXB0RWxlbWVudDE1Y2hpbGRyZW5DaGFuZ2VkRVJOU18xN1NjcmlwdEVsZW1lbnREYXRhRQogX19a
Tks3V2ViQ29yZTROb2RlMTF0ZXh0Q29udGVudEViCi1fX1pOSzdXZWJDb3JlNE5vZGUxN2FwcGVu
ZFRleHRDb250ZW50RWJSTlNfMTNTdHJpbmdCdWlsZGVyRQotX19aTjdXZWJDb3JlMTNTdHJpbmdC
dWlsZGVyNmFwcGVuZEVSS05TXzZTdHJpbmdFCi1fX1pOSzdXZWJDb3JlMTNTdHJpbmdCdWlsZGVy
OHRvU3RyaW5nRXYKIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmU2U3RyaW5nRUxtMTZFRTZzaHJp
bmtFbQogX19aTjdXZWJDb3JlMTdIVE1MU2NyaXB0RWxlbWVudDIxZmluaXNoUGFyc2luZ0NoaWxk
cmVuRXYKIF9fWk43V2ViQ29yZTEzU2NyaXB0RWxlbWVudDIxZmluaXNoUGFyc2luZ0NoaWxkcmVu
RVJOU18xN1NjcmlwdEVsZW1lbnREYXRhRVJLTlNfNlN0cmluZ0UKQEAgLTIyNTk1LDcgKzIyNTky
LDYgQEAgX19aTjdXZWJDb3JlMTZKU0RPTVdpbmRvd1NoZWxsMTJsb29rdXBHZQogX19aTjdXZWJD
b3JlMTFKU0RPTVdpbmRvdzEybG9va3VwR2V0dGVyRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJ
ZGVudGlmaWVyRQogX19aTjdXZWJDb3JlMTZKU0RPTVdpbmRvd1NoZWxsMTJkZWZpbmVTZXR0ZXJF
UE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFUE5TMV84SlNPYmplY3RFagogX19a
TjdXZWJDb3JlMTFKU0RPTVdpbmRvdzEyZGVmaW5lU2V0dGVyRVBOM0pTQzlFeGVjU3RhdGVFUktO
UzFfMTBJZGVudGlmaWVyRVBOUzFfOEpTT2JqZWN0RWoKLV9fWk43V2ViQ29yZTEzU3RyaW5nQnVp
bGRlcjZhcHBlbmRFYwogX19aTjdXZWJDb3JlMzNqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25B
c3NpZ25FUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVOUzBfN0pTVmFsdWVFUktOUzBf
N0FyZ0xpc3RFCiBfX1pON1dlYkNvcmUxMEpTTG9jYXRpb242YXNzaWduRVBOM0pTQzlFeGVjU3Rh
dGVFUktOUzFfN0FyZ0xpc3RFCiBfX1pON1dlYkNvcmUzM2pzSGlzdG9yeVByb3RvdHlwZUZ1bmN0
aW9uRm9yd2FyZEVQTjNKU0M5RXhlY1N0YXRlRVBOUzBfOEpTT2JqZWN0RU5TMF83SlNWYWx1ZUVS
S05TMF83QXJnTGlzdEUKQEAgLTI1ODQwLDcgKzI1ODM2LDYgQEAgX19aTkszSlNDOEJpbmRpbmdz
MTBSb290T2JqZWN0MTJuYXRpdmVIYQogX19aTkszSlNDOEJpbmRpbmdzMTBKYXZhTWV0aG9kOG1l
dGhvZElERVA4X2pvYmplY3QKIF9fWk5LM0pTQzhCaW5kaW5nczEwSmF2YU1ldGhvZDlzaWduYXR1
cmVFdgogX19aTjNKU0M4QmluZGluZ3MyNnNpZ25hdHVyZUZyb21QcmltaXRpdmVUeXBlRTdKTklU
eXBlCi1fX1pMMTVhcHBlbmRDbGFzc05hbWVSTjdXZWJDb3JlMTNTdHJpbmdCdWlsZGVyRVBLYwog
X19aTjNKU0M4QmluZGluZ3MxMWdldE1ldGhvZElERVA4X2pvYmplY3RQS2NTNF8KIF9fWk5LM0pT
QzhCaW5kaW5nczEwSmF2YU1ldGhvZDEzSk5JUmV0dXJuVHlwZUV2CiBfX1pOM0pTQzhCaW5kaW5n
czE1ZGlzcGF0Y2hKTklDYWxsRVBOU185RXhlY1N0YXRlRVBLdlA4X2pvYmplY3RiN0pOSVR5cGVQ
MTBfam1ldGhvZElEUDZqdmFsdWVSU0FfUEtjUk5TXzdKU1ZhbHVlRQpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA2
OTU2MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEyMDAsNyAr
MTIwMCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5n
LmNwcCBcCiAgICAgcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4
dC9TdHJpbmcuY3BwIFwKLSAgICBwbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKICAg
ICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENv
ZGVjTGF0aW4xLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5j
cHAgXApAQCAtMjE0MSw3ICsyMTQwLDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vdGV4
dC9xdC9UZXh0Q29kZWNRdC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9u
LmggXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggXAotICAgIHBsYXRmb3Jt
L3RleHQvU3RyaW5nQnVpbGRlci5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5oIFwK
ICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5oIFwKICAgICBwbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VzZXJEZWZpbmVkLmggXApJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTU2MSkKKysrIFdl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMCwwIEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX1N0cmluZ0J1aWxkZXJf
aAotI2RlZmluZSBXZWJDb3JlX0ZXRF9TdHJpbmdCdWlsZGVyX2gKLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJpbmdCdWlsZGVyLmg+Ci0jZW5kaWYKSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VTdHJpbmdCdWlsZGVyLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9VU3RyaW5nQnVp
bGRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1VTdHJpbmdCdWlsZGVyX2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9VU3RyaW5nQnVpbGRlci5oPgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU3Ry
aW5nQnVpbGRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1N0cmluZ0J1aWxkZXJfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cmluZ0J1aWxkZXIuaD4KKyNlbmRpZgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4NjE0LDE4
ICsyODYxNCw2IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFN0cmluZ0J1ZmZlci5oIg0KLQkJCQkJPg0KLQkJ
CQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRl
eHRcU3RyaW5nQnVpbGRlci5jcHAiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUN
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxTdHJpbmdCdWlsZGVyLmgiDQot
CQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cdGV4dFxTdHJpbmdIYXNoLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjk1
NjEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjc0NSw3ICsyNzQ1LDYgQEAKIAkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0
IC8qIEV2ZW50TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzOTg4NUMyMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM5QjAyRUUwRUEyREJD
NDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QjAyRUMwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRl
cmF0b3IuY3BwICovOyB9OwogCQk5MzlCMDJFRjBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5
QjAyRUQwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuaCAqLzsgfTsKLQkJOTM5QjNF
NEUwRDNDMUU4NDAwQjRBOTJCIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QjNFNEQwRDNDMUU4NDAwQjRBOTJCIC8qIFN0
cmluZ0J1ZmZlci5oICovOyB9OwogCQk5M0EzOEI0QjBEMEU1ODA4MDA2ODcyQzIgLyogRWRpdG9y
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0EzOEI0QTBEMEU1ODA4MDA2ODcyQzIgLyogRWRpdG9yQ29tbWFuZC5jcHAgKi87IH07CiAJ
CTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAw
NkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi87IH07CiAJCTkzQjJEODE4MEY5OTIwRUUw
MDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjJEODE3MEY5OTIwRUUwMDZBRTZCMiAvKiBTdWRkZW5U
ZXJtaW5hdGlvbi5tbSAqLzsgfTsKQEAgLTUzMzMsOCArNTMzMiw2IEBACiAJCUUxODI1NjkwMEVG
MkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODI1NjhFMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dv
cmtlckNvbnRleHQuaCAqLzsgfTsKIAkJRTE4MjU4QUMwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTgyNThBQjBFRjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCAqLzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5v
ZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
aCAqLzsgfTsKLQkJRTFBMzAyQkMwREU4MzcwMzAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMwMkJCMERF
ODM3MDMwMEM1MkYyQyAvKiBTdHJpbmdCdWlsZGVyLmggKi87IH07Ci0JCUUxQTMwMkMxMERFODM3
NjkwMEM1MkYyQyAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMwMkMwMERFODM3NjkwMEM1MkYyQyAvKiBTdHJpbmdC
dWlsZGVyLmNwcCAqLzsgfTsKIAkJRTFBNUY5OUIwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0
b20uY3BwICovOyB9OwogCQlFMUE2NDNGMjBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCAq
LzsgfTsKIAkJRTFBNjQzRkQwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFB
NjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovOyB9
OwpAQCAtODgwNCw3ICs4ODAxLDYgQEAKIAkJOTM5ODg1QzIwOEI3RTNEMTAwRTcwN0M0IC8qIEV2
ZW50TmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXZlbnROYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJOTM5QjAyRUMwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRl
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lkdGhJdGVy
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOUIwMkVEMEVBMkRCQzQw
MEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdpZHRoSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM5QjNF
NEQwRDNDMUU4NDAwQjRBOTJCIC8qIFN0cmluZ0J1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJpbmdCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNBMzhCNEEwRDBFNTgwODAwNjg3MkMyIC8qIEVkaXRvckNvbW1hbmQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdG9yQ29tbWFuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjJEODE1MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5U
ZXJtaW5hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWRkZW5UZXJt
aW5hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyRDgxNzBGOTkyMEVF
MDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTdWRkZW5UZXJtaW5hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTExMzMxLDggKzExMzI3LDYgQEAKIAkJRTE4MjU2OEUwRUYyQjAyRDAwOTMz
MjQyIC8qIEpTV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dvcmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4MjU4
QUIwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyog
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRTFBMzAyQkIwREU4MzcwMzAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlFMUEzMDJDMDBERTgzNzY5MDBDNTJGMkMgLyogU3RyaW5nQnVpbGRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVB
IC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdB
MDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2MSw5ICsxNjU1NSw2IEBACiAJCQkJQjJDM0Q5RkUw
RDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAgKi8sCiAJCQkJQjJDM0Q5RkYw
RDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovLAogCQkJCUIyQzNEQTAwMEQw
MDZDMUQwMEVGNkYyNiAvKiBTdHJpbmcuY3BwICovLAotCQkJCTkzOUIzRTREMEQzQzFFODQwMEI0
QTkyQiAvKiBTdHJpbmdCdWZmZXIuaCAqLywKLQkJCQlFMUEzMDJDMDBERTgzNzY5MDBDNTJGMkMg
LyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCi0JCQkJRTFBMzAyQkIwREU4MzcwMzAwQzUyRjJDIC8q
IFN0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQk5N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3Vm
Zml4VHJlZS5oICovLAogCQkJCUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRh
cmllcy5oICovLAogCQkJCUIyQzNEQTA2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVy
YXRvci5oICovLApAQCAtMjA1OTAsOCArMjA1ODEsNiBAQAogCQkJCUM1MEQwRTgzMEZGNDI3Mjkw
MEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVFMzhC
RjEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM1MTAyRDk0MEZEOUFBMkQwMEZBRkYwNCAvKiBTdG9yYWdlU3luY01hbmFnZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTkzOUIzRTRFMEQzQzFFODQwMEI0QTkyQiAvKiBTdHJpbmdCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxQTMwMkJDMERFODM3MDMwMEM1MkYyQyAvKiBTdHJp
bmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTQ4OEQ2QjBERDVBODNEMDA5RDgzQjIg
LyogU3RyaW5nU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMzU0MEYzMEQw
MDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0
OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjMxOTYsNyArMjMxODUsNiBAQAogCQkJCUM1NUUzOEMwMTAwNDBENUQwMEE1NkJE
QiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5
NTBGRDlBQTJEMDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTMwMEQwMDZDMUQwMEVGNkYyNiAvKiBTdHJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJRTFBMzAyQzEwREU4Mzc2OTAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJCMjY0NUMwRDAwQTc3RTAwMEFDQzFEIC8qIFN0cmluZ0NGLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyQjI2NDVEMEQwMEE3N0UwMDBBQ0MxRCAvKiBTdHJpbmdJ
bXBsQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDOTUwRDAwQTVERjAwMzAwNzREIC8q
IFN0cmluZ0ltcGxNYWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdHJpbmcuaAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTAgQEAKICNkZWZpbmUgU2Ny
aXB0U3RyaW5nX2gKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+Ci0jaW5jbHVkZSA8cnVu
dGltZS9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nQnVpbGRlci5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsMTAgKzYxLDEwIEBAIHB1YmxpYzoK
IAogICAgIFNjcmlwdFN0cmluZyYgb3BlcmF0b3IrPShjb25zdCBTdHJpbmcmIHMpCiAgICAgewot
ICAgICAgICBKU0M6OlN0cmluZ0J1aWxkZXIgYnVmZmVyOworICAgICAgICBKU0M6OlVTdHJpbmdC
dWlsZGVyIGJ1ZmZlcjsKICAgICAgICAgYnVmZmVyLmFwcGVuZChtX3N0cik7CiAgICAgICAgIGJ1
ZmZlci5hcHBlbmQoc3RyaW5nVG9VU3RyaW5nKHMpKTsKLSAgICAgICAgbV9zdHIgPSBidWZmZXIu
YnVpbGQoKTsKKyAgICAgICAgbV9zdHIgPSBidWZmZXIudG9VU3RyaW5nKCk7CiAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwCShyZXZp
c2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwxNCArMjksMTEgQEAKIAogI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKIAot
I2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCiAKIEphdmFQYXJhbWV0ZXI6OkphdmFQYXJhbWV0ZXIoSk5JRW52KiBlbnYsIGpz
dHJpbmcgdHlwZSkKIHsKQEAgLTEzMiw3ICsxMjksNyBAQCBjb25zdCBjaGFyKiBKYXZhTWV0aG9k
OjpzaWduYXR1cmUoKSBjb25zCiAjZW5kaWYKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIHNpZ25h
dHVyZUJ1aWxkZXI7Ci0gICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCIoIik7CisgICAg
ICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbV9udW1QYXJhbWV0ZXJzOyBpKyspIHsKICAgICAgICAgICAgIEphdmFQYXJhbWV0ZXIq
IGFQYXJhbWV0ZXIgPSBwYXJhbWV0ZXJBdChpKTsKICAgICAgICAgICAgIEpOSVR5cGUgdHlwZSA9
IGFQYXJhbWV0ZXItPmdldEpOSVR5cGUoKTsKQEAgLTE0MiwxMSArMTM5LDExIEBAIGNvbnN0IGNo
YXIqIEphdmFNZXRob2Q6OnNpZ25hdHVyZSgpIGNvbnMKICAgICAgICAgICAgICAgICBzaWduYXR1
cmVCdWlsZGVyLmFwcGVuZChzaWduYXR1cmVGcm9tUHJpbWl0aXZlVHlwZSh0eXBlKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gb2JqZWN0X3R5cGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIGFQYXJhbWV0ZXItPnR5cGUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCI7Iik7CisgICAg
ICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHNpZ25hdHVyZUJ1aWxk
ZXIuYXBwZW5kKCIpIik7CisgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAK
ICAgICAgICAgY29uc3QgY2hhciogcmV0dXJuVHlwZSA9IG1fcmV0dXJuVHlwZS51dGY4KCk7CiAg
ICAgICAgIGlmIChtX0pOSVJldHVyblR5cGUgPT0gYXJyYXlfdHlwZSkKQEAgLTE1NSw3ICsxNTIs
NyBAQCBjb25zdCBjaGFyKiBKYXZhTWV0aG9kOjpzaWduYXR1cmUoKSBjb25zCiAgICAgICAgICAg
ICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZChzaWduYXR1cmVGcm9tUHJpbWl0aXZlVHlwZShtX0pO
SVJldHVyblR5cGUpKTsKICAgICAgICAgICAgIGlmIChtX0pOSVJldHVyblR5cGUgPT0gb2JqZWN0
X3R5cGUpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRDbGFzc05hbWUoc2lnbmF0dXJlQnVpbGRl
ciwgcmV0dXJuVHlwZSk7Ci0gICAgICAgICAgICAgICAgc2lnbmF0dXJlQnVpbGRlci5hcHBlbmQo
IjsiKTsKKyAgICAgICAgICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZCgnOycpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCShyZXZpc2lvbiA2OTU2
MSkKKysrIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4
ICszMCw4IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgogCiAjaW5jbHVkZSAiTWVkaWFRdWVy
eUV4cC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uQ29w
eWluZ1NvcnQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAJKHJldmlzaW9uIDY5NTYx
KQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1
aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9kb20vTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYgQEAKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0
YXRpY05vZGVMaXN0LmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRh
Z05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRFdmVudC5oIgpA
QCAtODgsNiArODcsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKERP
TV9TVE9SQUdFKQogI2luY2x1ZGUgIlN0b3JhZ2VFdmVudC5oIgpAQCAtMTkyMyw1MiArMTkyMyw1
NCBAQCBTdHJpbmcgTm9kZTo6bG9va3VwTmFtZXNwYWNlUHJlZml4KGNvbnN0CiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi12b2lkIE5vZGU6OmFwcGVuZFRleHRDb250ZW50KGJvb2wgY29udmVy
dEJSc1RvTmV3bGluZXMsIFN0cmluZ0J1aWxkZXImIGNvbnRlbnQpIGNvbnN0CitzdGF0aWMgdm9p
ZCBhcHBlbmRUZXh0Q29udGVudChjb25zdCBOb2RlKiBub2RlLCBib29sIGNvbnZlcnRCUnNUb05l
d2xpbmVzLCBib29sJiBpc051bGxTdHJpbmcsIFN0cmluZ0J1aWxkZXImIGNvbnRlbnQpCiB7Ci0g
ICAgc3dpdGNoIChub2RlVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgVEVYVF9OT0RFOgotICAgICAg
ICBjYXNlIENEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgICAgY2FzZSBDT01NRU5UX05PREU6Ci0g
ICAgICAgICAgICBjb250ZW50LmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBDaGFyYWN0ZXJEYXRh
Kj4odGhpcyktPmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKG5vZGUt
Pm5vZGVUeXBlKCkpIHsKKyAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKKyAgICBjYXNlIE5vZGU6
OkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKKyAgICAg
ICAgaXNOdWxsU3RyaW5nID0gZmFsc2U7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKHN0YXRpY19j
YXN0PGNvbnN0IENoYXJhY3RlckRhdGEqPihub2RlKS0+ZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAgICAg
ICBjb250ZW50LmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24q
Pih0aGlzKS0+ZGF0YSgpKTsKKyAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05f
Tk9ERToKKyAgICAgICAgaXNOdWxsU3RyaW5nID0gZmFsc2U7CisgICAgICAgIGNvbnRlbnQuYXBw
ZW5kKHN0YXRpY19jYXN0PGNvbnN0IFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KG5vZGUpLT5kYXRh
KCkpOworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToK
KyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpICYmIGNvbnZlcnRCUnNUb05ld2xp
bmVzKSB7CisgICAgICAgICAgICBpc051bGxTdHJpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGNv
bnRlbnQuYXBwZW5kKCdcbicpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAg
ICBjYXNlIEVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlmIChoYXNUYWdOYW1lKGJyVGFnKSAm
JiBjb252ZXJ0QlJzVG9OZXdsaW5lcykgewotICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k
KCdcbicpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZh
bGwgdGhyb3VnaC4KLSAgICAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgY2FzZSBF
TlRJVFlfTk9ERToKLSAgICAgICAgY2FzZSBFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0gICAgICAg
IGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgICAgIGNvbnRlbnQuc2V0Tm9u
TnVsbCgpOwotCi0gICAgICAgICAgICBmb3IgKE5vZGUgKmNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlm
IChjaGlsZC0+bm9kZVR5cGUoKSA9PSBDT01NRU5UX05PREUgfHwgY2hpbGQtPm5vZGVUeXBlKCkg
PT0gUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNoaWxkLT5hcHBlbmRUZXh0Q29u
dGVudChjb252ZXJ0QlJzVG9OZXdsaW5lcywgY29udGVudCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAvLyBGYWxsIHRocm91Z2guCisgICAgY2FzZSBOb2RlOjpBVFRS
SUJVVEVfTk9ERToKKyAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgorICAgIGNhc2UgTm9kZTo6
RU5USVRZX1JFRkVSRU5DRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRf
Tk9ERToKKyAgICAgICAgaXNOdWxsU3RyaW5nID0gZmFsc2U7CisgICAgICAgIGZvciAoTm9kZSog
Y2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09N
TUVOVF9OT0RFIHx8IGNoaWxkLT5ub2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJV
Q1RJT05fTk9ERSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGFwcGVu
ZFRleHRDb250ZW50KGNoaWxkLCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgaXNOdWxsU3RyaW5nLCBj
b250ZW50KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIERPQ1VN
RU5UX05PREU6Ci0gICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICBjYXNl
IE5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgWFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CisgICAgY2FzZSBO
b2RlOjpET0NVTUVOVF9UWVBFX05PREU6CisgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgor
ICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6CisgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIAogU3RyaW5nIE5vZGU6OnRleHRDb250ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGlu
ZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBjb250ZW50OwotICAgIGFwcGVuZFRleHRD
b250ZW50KGNvbnZlcnRCUnNUb05ld2xpbmVzLCBjb250ZW50KTsKLSAgICByZXR1cm4gY29udGVu
dC50b1N0cmluZygpOworICAgIGJvb2wgaXNOdWxsU3RyaW5nID0gdHJ1ZTsKKyAgICBhcHBlbmRU
ZXh0Q29udGVudCh0aGlzLCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgaXNOdWxsU3RyaW5nLCBjb250
ZW50KTsKKyAgICByZXR1cm4gaXNOdWxsU3RyaW5nID8gU3RyaW5nKCkgOiBjb250ZW50LnRvU3Ry
aW5nKCk7CiB9CiAKIHZvaWQgTm9kZTo6c2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5nICZ0ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9kb20v
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIGNsYXNzIFJlbmRlckJveDsK
IGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3Mg
UmVuZGVyU3R5bGU7Ci1jbGFzcyBTdHJpbmdCdWlsZGVyOwogY2xhc3MgVGFnTm9kZUxpc3Q7CiAK
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CkBAIC03MDYsNyArNzA1LDYgQEAgcHJpdmF0ZToK
IAogICAgIEVsZW1lbnQqIGFuY2VzdG9yRWxlbWVudCgpIGNvbnN0OwogCi0gICAgdm9pZCBhcHBl
bmRUZXh0Q29udGVudChib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzLCBTdHJpbmdCdWlsZGVyJikg
Y29uc3Q7CiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCiAgICAgRG9jdW1lbnQqIG1f
ZG9jdW1lbnQ7CkluZGV4OiBXZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBX
ZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRl
ci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCShy
ZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTIgKzQ0LDEyIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlN0cmluZ0J1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgogCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRmlsZVN5c3Rl
bUFuZHJvaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9GaWxl
U3lzdGVtQW5kcm9pZC5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9h
bmRyb2lkL0ZpbGVTeXN0ZW1BbmRyb2lkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAotI2lu
Y2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJjdXRpbHMvbG9nLmgiCiAjaW5jbHVk
ZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8ZGxmY24uaD4KQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNs
dWRlIDxmbm1hdGNoLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYnJldy9GaWxlU3lzdGVt
QnJldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1C
cmV3LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2JyZXcvRmlsZVN5
c3RlbUJyZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKIAogI2luY2x1ZGUg
PEFFRUFwcEdlbi5oPgogI2luY2x1ZGUgPEFFRUZpbGUuaD4KQEAgLTQxLDYgKzM5LDggQEAKICNp
bmNsdWRlIDx3dGYvYnJldy9SZWZQdHJCcmV3Lmg+CiAjaW5jbHVkZSA8d3RmL2JyZXcvU2hlbGxC
cmV3Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZENocm9taXVtLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
MTMgKzQxLDE0IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIu
aCIKICNpbmNsdWRlICJtYXJrdXAuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjA1LDcgKzIwNiw3IEBAIHN0
YXRpYyBTdHJpbmcgaW1hZ2VUb01hcmt1cChjb25zdCBTdHJpbmcKICAgICBTdHJpbmdCdWlsZGVy
IG1hcmt1cDsKICAgICBtYXJrdXAuYXBwZW5kKCI8aW1nIHNyYz1cIiIpOwogICAgIG1hcmt1cC5h
cHBlbmQodXJsKTsKLSAgICBtYXJrdXAuYXBwZW5kKCJcIiIpOworICAgIG1hcmt1cC5hcHBlbmQo
JyInKTsKICAgICAvLyBDb3B5IG92ZXIgYXR0cmlidXRlcy4gIElmIHdlIGFyZSBkcmFnZ2luZyBh
biBpbWFnZSwgd2UgZXhwZWN0IHRoaW5ncyBsaWtlCiAgICAgLy8gdGhlIGlkIHRvIGJlIGNvcGll
ZCBhcyB3ZWxsLgogICAgIE5hbWVkTm9kZU1hcCogYXR0cnMgPSBlbGVtZW50LT5hdHRyaWJ1dGVz
KCk7CkBAIC0yMTQsMTMgKzIxNSwxMyBAQCBzdGF0aWMgU3RyaW5nIGltYWdlVG9NYXJrdXAoY29u
c3QgU3RyaW5nCiAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVt
KGkpOwogICAgICAgICBpZiAoYXR0ci0+bG9jYWxOYW1lKCkgPT0gInNyYyIpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgbWFya3VwLmFwcGVuZCgiICIpOworICAgICAgICBtYXJrdXAu
YXBwZW5kKCcgJyk7CiAgICAgICAgIG1hcmt1cC5hcHBlbmQoYXR0ci0+bG9jYWxOYW1lKCkpOwog
ICAgICAgICBtYXJrdXAuYXBwZW5kKCI9XCIiKTsKICAgICAgICAgU3RyaW5nIGVzY2FwZWRBdHRy
ID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgZXNjYXBlZEF0dHIucmVwbGFjZSgiXCIiLCAiJnF1
b3Q7Iik7CiAgICAgICAgIG1hcmt1cC5hcHBlbmQoZXNjYXBlZEF0dHIpOwotICAgICAgICBtYXJr
dXAuYXBwZW5kKCJcIiIpOworICAgICAgICBtYXJrdXAuYXBwZW5kKCciJyk7CiAgICAgfQogCiAg
ICAgbWFya3VwLmFwcGVuZCgiLz4iKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1BPREludGVydmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvUE9ESW50ZXJ2YWwuaAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9QT0RJbnRlcnZhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiAjZGVmaW5lIFBPREludGVydmFsX2gKIAogI2lmbmRlZiBOREVCVUcKLSNpbmNsdWRlICJT
dHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OCw5ICs3OCw5IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lmbmRlZiBOREVC
VUcKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNp
bmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCShyZXZpc2lv
biA2OTU2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJD
QS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0ICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNp
bXBvcnQgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW1wb3J0ICJTdHJpbmdCdWlsZGVy
LmgiCiAjaW1wb3J0ICJTeXN0ZW1UaW1lLmgiCiAjaW1wb3J0ICJUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb24uaCIKICNpbXBvcnQgIldlYkxheWVyLmgiCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1
ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNvZnRM
aW5raW5nLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRpbWVSYW5n
ZXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPEFzc2VydE1hY3Jvcy5oPgpAQCAt
NTMsNiArNTIsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAgLTI0MSw3ICsyNDEsNyBA
QCBzdGF0aWMgdm9pZCBhZGRDb29raWVQYXJhbShTdHJpbmdCdWlsZGVyCiAgICAgLy8gQWRkIHBh
cmFtZXRlciBuYW1lLCBhbmQgdmFsdWUgaWYgdGhlcmUgaXMgb25lLgogICAgIGNvb2tpZUJ1aWxk
ZXIuYXBwZW5kKG5hbWUpOwogICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNv
b2tpZUJ1aWxkZXIuYXBwZW5kKCI9Iik7CisgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKCc9
Jyk7CiAgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKICAgICB9CiB9CkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwog
ICAgICAgICAgICAgYWRkQ29va2llUGFyYW0oY29va2llQnVpbGRlciwgImV4cGlyZXMiLCByZmMy
NjE2RGF0ZVN0cmluZ0Zyb21UaW1lKGNvb2tpZS5leHBpcmVzKSk7CiAgICAgICAgIGlmIChjb29r
aWUuaHR0cE9ubHkpIAogICAgICAgICAgICAgYWRkQ29va2llUGFyYW0oY29va2llQnVpbGRlciwg
Imh0dHBPbmx5IiwgU3RyaW5nKCkpOwotICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgiOyIp
OworICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgnOycpOwogCiAgICAgICAgIFN0cmluZyBj
b29raWVVUkw7CiAgICAgICAgIGlmICghY29va2llLmRvbWFpbi5pc0VtcHR5KCkpIHsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUVRNb3ZpZVRh
c2suaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIK
LSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8V2luaW5ldC5oPgpAQCAtNDYsNiArNDUsNyBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgdm9pZCBhZGRD
b29raWVQYXJhbShTdHJpbmdCdWlsZGVyCiAgICAgLy8gQWRkIHBhcmFtZXRlciBuYW1lLCBhbmQg
dmFsdWUgaWYgdGhlcmUgaXMgb25lLgogICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKG5hbWUpOwog
ICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5k
KCI9Iik7CisgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKCc9Jyk7CiAgICAgICAgIGNvb2tp
ZUJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKICAgICB9CiB9CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OnNldFVwQ29va2llc0ZvcgogICAgICAgICAgICAgYWRkQ29v
a2llUGFyYW0oY29va2llQnVpbGRlciwgImV4cGlyZXMiLCByZmMyNjE2RGF0ZVN0cmluZ0Zyb21U
aW1lKGNvb2tpZS5leHBpcmVzKSk7CiAgICAgICAgIGlmIChjb29raWUuaHR0cE9ubHkpIAogICAg
ICAgICAgICAgYWRkQ29va2llUGFyYW0oY29va2llQnVpbGRlciwgImh0dHBPbmx5IiwgU3RyaW5n
KCkpOwotICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgiOyIpOworICAgICAgICBjb29raWVC
dWlsZGVyLmFwcGVuZCgnOycpOwogCiAgICAgICAgIFN0cmluZyBjb29raWVVUkw7CiAgICAgICAg
IGlmICghY29va2llLmRvbWFpbi5pc0VtcHR5KCkpIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Qcm94eVNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Byb3h5U2VydmVyLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYs
MTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0j
aW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBhcHBlbmRQcm94eVNl
cnZlclN0cmluZyhTdHJpbmdCdWlsZGVyICZidWlsZGVyLCBjb25zdCBQcm94eVNlcnZlciYgcHJv
eHlTZXJ2ZXIpCitzdGF0aWMgdm9pZCBhcHBlbmRQcm94eVNlcnZlclN0cmluZyhTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQcm94eVNlcnZlciYgcHJveHlTZXJ2ZXIpCiB7CiAgICAgc3dp
dGNoIChwcm94eVNlcnZlci50eXBlKCkpIHsKICAgICBjYXNlIFByb3h5U2VydmVyOjpEaXJlY3Q6
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0J1ZmZlci5oCShyZXZpc2lvbiA2OTU2MSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV2ViQ29yZVN0cmluZ0J1ZmZlcl9oCi0jZGVmaW5lIFdlYkNvcmVT
dHJpbmdCdWZmZXJfaAotCi0vLyBGSVhNRTogcmVtb3ZlIHRoaXMgaGVhZGVyLCB1c2UgdGhlIGZv
cndhcmQgZnJvbSB3dGYgZGlyZWN0bHkuCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVy
Lmg+Ci0KLSNlbmRpZiAvLyBTdHJpbmdCdWZmZXJfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9TdHJpbmdCdWlsZGVyLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTM4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0gCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCBjaGVja2VkQXBwZW5kKHVuc2lnbmVkJiB0b3RhbExlbmd0aCwg
dW5zaWduZWQgY2hhcmFjdGVyc1RvQXBwZW5kKQotewotICAgIGlmIChudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpIC0gY2hhcmFjdGVyc1RvQXBwZW5kIDw9IHRvdGFsTGVuZ3RoKQotICAg
ICAgICBDUkFTSCgpOwotCi0gICAgdG90YWxMZW5ndGggKz0gY2hhcmFjdGVyc1RvQXBwZW5kOwot
fQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKLXsK
LSAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25l
ZCB0b3RhbExlbmd0aCA9IGxlbmd0aCgpOwotICAgIGNoZWNrZWRBcHBlbmQodG90YWxMZW5ndGgs
IHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgbV90b3RhbExlbmd0aCA9IHRvdGFsTGVuZ3RoOwotCi0g
ICAgaWYgKCFzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICBtX3N0cmluZ3MuYXBwZW5kKHN0cmlu
Zyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKFVDaGFyIGMpCi17Ci0gICAgdW5z
aWduZWQgdG90YWxMZW5ndGggPSBsZW5ndGgoKTsKLSAgICBjaGVja2VkQXBwZW5kKHRvdGFsTGVu
Z3RoLCAxKTsKLSAgICBtX3RvdGFsTGVuZ3RoID0gdG90YWxMZW5ndGg7Ci0KLSAgICBtX3N0cmlu
Z3MuYXBwZW5kKFN0cmluZygmYywgMSkpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZChjaGFyIGMpCi17Ci0gICAgdW5zaWduZWQgdG90YWxMZW5ndGggPSBsZW5ndGgoKTsKLSAgICBj
aGVja2VkQXBwZW5kKHRvdGFsTGVuZ3RoLCAxKTsKLSAgICBtX3RvdGFsTGVuZ3RoID0gdG90YWxM
ZW5ndGg7Ci0KLSAgICBtX3N0cmluZ3MuYXBwZW5kKFN0cmluZygmYywgMSkpOwotfQotCi1TdHJp
bmcgU3RyaW5nQnVpbGRlcjo6dG9TdHJpbmcoQ29uY2F0TW9kZSBtb2RlKSBjb25zdAotewotICAg
IGlmIChpc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgdW5zaWduZWQg
Y291bnQgPSBtX3N0cmluZ3Muc2l6ZSgpOwotCi0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0
dXJuIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKTsKLSAgICBpZiAoY291bnQgPT0gMSkKLSAg
ICAgICAgcmV0dXJuIG1fc3RyaW5nc1swXTsKLQotICAgIHVuc2lnbmVkIHRvdGFsTGVuZ3RoID0g
bV90b3RhbExlbmd0aDsKLSAgICBpZiAobW9kZSA9PSBDb25jYXRBZGRpbmdTcGFjZXNCZXR3ZWVu
SW5kaXZpZHVhbFN0cmluZ3MpCi0gICAgICAgIGNoZWNrZWRBcHBlbmQodG90YWxMZW5ndGgsIGNv
dW50IC0gMSk7Ci0KLSAgICBVQ2hhciogYnVmZmVyOwotICAgIFN0cmluZyByZXN1bHQgPSBTdHJp
bmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7Ci0KLSAgICBVQ2hh
ciogcCA9IGJ1ZmZlcjsKLQotICAgIC8vIFdlIGNvdWxkIGhhbmRsZSBib3RoIENvbmNhdCBtb2Rl
cyBpbiBhIHNpbmdsZSBmb3IgbG9vcCwgbm90IGRvaW5nIHRoYXQgZm9yIHBlcmZvcm1hbmNlIHJl
YXNvbnMuCi0gICAgaWYgKG1vZGUgPT0gQ29uY2F0VW5hbHRlcmVkKSB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmdJbXBs
KiBzdHJpbmcgPSBtX3N0cmluZ3NbaV0uaW1wbCgpOwotICAgICAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gc3RyaW5nLT5sZW5ndGgoKTsgCi0gICAgICAgICAgICBtZW1jcHkocCwgc3RyaW5nLT5j
aGFyYWN0ZXJzKCksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOwotICAgICAgICAgICAgcCArPSBs
ZW5ndGg7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQobW9kZSA9PSBD
b25jYXRBZGRpbmdTcGFjZXNCZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3MpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgU3RyaW5nSW1w
bCogc3RyaW5nID0gbV9zdHJpbmdzW2ldLmltcGwoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHN0cmluZy0+bGVuZ3RoKCk7IAotICAgICAgICAgICAgbWVtY3B5KHAsIHN0cmluZy0+
Y2hhcmFjdGVycygpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKLSAgICAgICAgICAgIHAgKz0g
bGVuZ3RoOwotCi0gICAgICAgICAgICAvLyBBZGQgc3BhY2UgYWZ0ZXIgc3RyaW5nIGJlZm9yZSB0
aGUgc3RhcnQgb2YgdGhlIG5leHQgc3RyaW5nLCBpZiB3ZSdyZSBub3QgcHJvY2Vzc2luZyB0aGUg
bGFzdCBzdHJpbmcuCi0gICAgICAgICAgICBpZiAoaSA8IGNvdW50IC0gMSkgewotICAgICAgICAg
ICAgICAgICpwID0gJyAnOwotICAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLSAgICBBU1NFUlQocCA9PSB0b3RhbExlbmd0aCArIGJ1ZmZlcik7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmNsZWFyKCkKLXsK
LSAgICBtX3RvdGFsTGVuZ3RoID0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKLSAg
ICBtX3N0cmluZ3MuY2xlYXIoKTsKLX0KLQotdW5zaWduZWQgU3RyaW5nQnVpbGRlcjo6bGVuZ3Ro
KCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiBtX3RvdGFsTGVuZ3RoOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDY5NTYxKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFN0cmluZ0J1aWxkZXJfaAotI2RlZmluZSBTdHJpbmdC
dWlsZGVyX2gKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8bGltaXRz
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVt
IENvbmNhdE1vZGUgewotICAgIENvbmNhdFVuYWx0ZXJlZCwKLSAgICBDb25jYXRBZGRpbmdTcGFj
ZXNCZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3MKLX07Ci0KLWNsYXNzIFN0cmluZ0J1aWxkZXIgewot
cHVibGljOgotICAgIFN0cmluZ0J1aWxkZXIoKSA6IG1fdG90YWxMZW5ndGgoc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7fQotCi0gICAgdm9pZCBzZXROb25OdWxsKCkKLSAg
ICB7Ci0gICAgICAgIGlmIChpc051bGwoKSkKLSAgICAgICAgICAgIG1fdG90YWxMZW5ndGggPSAw
OwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBw
ZW5kKFVDaGFyKTsKLSAgICB2b2lkIGFwcGVuZChjaGFyKTsKLSAgICAKLSAgICB2b2lkIGNsZWFy
KCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmco
Q29uY2F0TW9kZSBtb2RlID0gQ29uY2F0VW5hbHRlcmVkKSBjb25zdDsKLQotcHJpdmF0ZToKLSAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxMZW5ndGggPT0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9Ci0KLSAgICB1bnNpZ25lZCBtX3RvdGFsTGVu
Z3RoOwotICAgIFZlY3RvcjxTdHJpbmcsIDE2PiBtX3N0cmluZ3M7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTdHJpbmdCdWlsZGVyX2gKSW5kZXg6IFdlYkNvcmUv
cGx1Z2lucy9ET01NaW1lVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL0RP
TU1pbWVUeXBlLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsdWdpbnMvRE9NTWlt
ZVR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2lu
Y2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBh
cnNlckZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJG
YWN0b3J5LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2Vy
RmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJT
VkdQYXRoU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR1BhdGhTdHJpbmdTb3VyY2UuaCIK
ICNpbmNsdWRlICJTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgiCi0jaW5jbHVkZSAiU3Ry
aW5nQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9zdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4MSArMjQsOTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitTdHJpbmcgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OnJl
c3VsdCgpCit7CisgICAgdW5zaWduZWQgc2l6ZSA9IG1fc3RyaW5nQnVpbGRlci5zaXplKCk7Cisg
ICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBSZW1vdmUg
dHJhaWxpbmcgc3BhY2UuCisgICAgbV9zdHJpbmdCdWlsZGVyLnJlc2l6ZShzaXplIC0gMSk7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworfQorCiB2b2lkIFNWR1BhdGhT
dHJpbmdCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2ws
IFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29v
cmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQo
Ik0gJS42bGcgJS42bGciLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJNICUuNmxnICUuNmxn
ICIsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiAgICAgZWxzZQotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJtICUuNmxnICUuNmxnIiwg
dGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgibSAlLjZsZyAlLjZsZyAiLCB0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjps
aW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBt
b2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIkwgJS42bGcgJS42bGciLCB0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJMICUuNmxnICUuNmxnICIsIHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKFN0cmluZzo6Zm9ybWF0KCJsICUuNmxnICUuNmxnIiwgdGFyZ2V0UG9pbnQueCgpLCB0YXJn
ZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZv
cm1hdCgibCAlLjZsZyAlLjZsZyAiLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkp
OwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKGZsb2F0
IHgsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRl
Q29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3Jt
YXQoIkggJS42bGciLCB4KSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIkggJS42bGcgIiwgeCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiaCAlLjZsZyIsIHgpKTsKKyAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiaCAlLjZsZyAiLCB4KSk7CiB9CiAKIHZv
aWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmxpbmVUb1ZlcnRpY2FsKGZsb2F0IHksIFBhdGhDb29y
ZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMp
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlYgJS42bGci
LCB5KSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlYg
JS42bGcgIiwgeSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgidiAlLjZsZyIsIHkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZChTdHJpbmc6OmZvcm1hdCgidiAlLjZsZyAiLCB5KSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0
cmluZ0J1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhD
b29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0
ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIkMgJS42
bGcgJS42bGcgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBwb2ludDEueCgpLCBwb2ludDEueSgp
LCBwb2ludDIueCgpLCBwb2ludDIueSgpLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50Lnko
KSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJDICUu
NmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnICIsIHBvaW50MS54KCksIHBvaW50MS55
KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQu
eSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6
Zm9ybWF0KCJjICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnIiwgcG9pbnQxLngo
KSwgcG9pbnQxLnkoKSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0
YXJnZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6
OmZvcm1hdCgiYyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAiLCBwb2ludDEu
eCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgpLCB0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2
ZVRvQ3ViaWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50
JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUg
PT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgiUyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIsIHBvaW50Mi54KCksIHBv
aW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlMgJS42bGcgJS42bGcgJS42bGcg
JS42bGcgIiwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQ
b2ludC55KCkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3Ry
aW5nOjpmb3JtYXQoInMgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBwb2ludDIueCgpLCBwb2lu
dDIueSgpLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJzICUuNmxnICUuNmxnICUuNmxnICUu
NmxnICIsIHBvaW50Mi54KCksIHBvaW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0
aWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2lu
dCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVD
b29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1h
dCgiUSAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIsIHBvaW50MS54KCksIHBvaW50MS55KCksIHRh
cmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlEgJS42bGcgJS42bGcgJS42bGcgJS42bGcgIiwgcG9p
bnQxLngoKSwgcG9pbnQxLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQo
InEgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCB0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJxICUuNmxnICUuNmxnICUuNmxnICUuNmxnICIsIHBvaW50
MS54KCksIHBvaW50MS55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiB9
CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29u
c3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewog
ICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlQgJS42bGcgJS42bGciLCB0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0
cmluZzo6Zm9ybWF0KCJUICUuNmxnICUuNmxnICIsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmlu
Zzo6Zm9ybWF0KCJ0ICUuNmxnICUuNmxnIiwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55
KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgidCAl
LjZsZyAlLjZsZyAiLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2
b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjphcmNUbyhmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0
IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9p
bnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9k
ZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KFN0cmluZzo6Zm9ybWF0KCJBICUuNmxnICUuNmxnICUuNmxnICVkICVkICUuNmxnICUuNmxnIiwg
cjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIkEgJS42bGcgJS42bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGcgIiwgcjEsIHIy
LCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0
UG9pbnQueSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0
cmluZzo6Zm9ybWF0KCJhICUuNmxnICUuNmxnICUuNmxnICVkICVkICUuNmxnICUuNmxnIiwgcjEs
IHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFy
Z2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpm
b3JtYXQoImEgJS42bGcgJS42bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGcgIiwgcjEsIHIyLCBh
bmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsb3NlUGF0aCgpCiB7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiWiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoIlogIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTYgQEAKICNp
ZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJTVkdQYXRo
Q29uc3VtZXIuaCIKLSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1Bh
dGhTdHJpbmdCdWlsZGVyIDogcHVibGljIFNWR1BhdGhDb25zdW1lciB7CiBwdWJsaWM6Ci0gICAg
U3RyaW5nIHJlc3VsdCgpIHsgcmV0dXJuIG1fc3RyaW5nQnVpbGRlci50b1N0cmluZyhDb25jYXRB
ZGRpbmdTcGFjZXNCZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3MpOyB9CisgICAgU3RyaW5nIHJlc3Vs
dCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3N0cmluZ0J1
aWxkZXIuY2xlYXIoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3N0cmluZ0J1
aWxkZXIgPSBTdHJpbmdCdWlsZGVyKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0
aFNlZ21lbnRDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNvbnN1bWluZygp
IHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHJldmlz
aW9uIDY5NTYxKQorKysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDExICs0MiwxMSBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgi
CiAKICNpbmNsdWRlIDx3dGYvTUQ1Lmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpA
QCAtNTIsNiArNTEsNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBLVVJMJiB1cmws
IAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZCh1cmwuaG9z
dCgpLmxvd2VyKCkpOwogICAgIGlmICh1cmwucG9ydCgpICYmICgoIXNlY3VyZSAmJiB1cmwucG9y
dCgpICE9IDgwKSB8fCAoc2VjdXJlICYmIHVybC5wb3J0KCkgIT0gNDQzKSkpIHsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKSkpOwogICAgIH0KICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70524</attachid>
            <date>2010-10-12 05:58:40 -0700</date>
            <delta_ts>2010-10-12 10:09:44 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>UnifyStringBuilder.diff</filename>
            <type>text/plain</type>
            <size>92816</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NTc2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTAtMTAtMTIgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgSlNDOjpTdHJpbmdCdWlsZGVyICYgV2Vi
Q29yZTo6U3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc1MzgKKworICAgICAgICBNb3ZlIHJ1bnRpbWUvU3RyaW5nQnVpbGRlci5o
IHRvIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaC4gUmVuYW1lIGJ1aWxkKCkgdG8gdG9TdHJpbmco
KSBhbmQgcmV0dXJuIGEgV1RGOjpTdHJpbmcoKS4KKyAgICAgICAgTW92ZSB0aGUgYXBwZW5kKGNv
bnN0IEpTQzo6VVN0cmluZyYpIG1ldGhvZCBpbnRvIHJ1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaC4K
KyAgICAgICAgVVN0cmluZ0J1aWxkZXIgaW5oZXJpdHMgZnJvbSBTdHJpbmdCdWlsZGVyLmggYW5k
IGFkZHMgYXBwZW5kKGNvbnN0IEpTQzo6VVN0cmluZyYpIGFuZCBVU3RyaW5nIHRvVVN0cmluZygp
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm8gbmV3IGNvZGUsIGp1c3QgbW92ZSBjb2RlIGFy
b3VuZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oIC8gcnVudGltZS9VU3RyaW5nQnVpbGRlci5oLiBSZW1vdmUgcnVudGltZS9TdHJpbmdC
dWlsZGVyLmguCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8uCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKTogVXNlIFVTdHJpbmdCdWls
ZGVyLCBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuIFJlbmFtZSBidWlsZCgpIC0+IHRvVVN0cmlu
ZygpLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNVbmVzY2Fw
ZSk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OlN0cmluZ2lmaWVyOjpzdHJpbmdpZnkpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6U3RyaW5n
aWZpZXI6OmFwcGVuZFF1b3RlZFN0cmluZyk6IERpdHRvLgorICAgICAgICAoSlNDOjpTdHJpbmdp
Zmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6IERpdHRvLgorICAgICAgICAoSlNDOjpTdHJp
bmdpZmllcjo6c3RhcnROZXdMaW5lKTogRGl0dG8uCisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjps
ZXhTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6
IFJlbW92ZSB1bm5lZWRlZCBKU1N0cmluZ0J1aWxkZXIuaCAvIFN0cmluZ0J1aWxkZXIuaCBpbmNs
dWRlLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQnVpbGRlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHJ1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaDogQWRkZWQuIEluaGVyaXRzIGZyb20gV1RGOjpT
dHJpbmdCdWlsZGVyLCBleHRlbmRpbmcgaXQgYnkgdHdvIG1ldGhvZHMuCisgICAgICAgIChKU0M6
OlVTdHJpbmdCdWlsZGVyOjphcHBlbmQpOiBhcHBlbmQoY29uc3QgSlNDOjpVU3RyaW5nJikKKyAg
ICAgICAgKEpTQzo6VVN0cmluZ0J1aWxkZXI6OnRvVVN0cmluZyk6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oOiBDb3BpZWQgZnJvbSBydW50aW1lL1N0cmluZ0J1aWxkZXIuaC4g
TW92ZSBKU0M6OlVTdHJpbmcgcGFydHMgaW50byBydW50aW1lL1VTdHJpbmdCdWlsZGVyLmgKKyAg
ICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKTogUmVuYW1lZCBtX2J1ZmZlciB0byBi
dWZmZXIgZXZlcnl3aGVyZS4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6aXNFbXB0eSk6
IERpdHRvICgrIGNvbnN0aWZ5IG1ldGhvZCkuIAorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVy
OjpyZXNlcnZlQ2FwYWNpdHkpOiBEaXR0by4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6
cmVzaXplKTogRGl0dG8uCisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OnNpemUpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6b3BlcmF0b3JbXSk6IERpdHRvLgorICAg
ICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjp0b1N0cmluZyk6IERpdHRvICgrIHJlbmFtZWQgZnJv
bSBidWlsZCgpKS4gUmV0dXJucyBhIFN0cmluZywgbm90IGFuIFVTdHJpbmcuIFRoZSBvbGQgYnVp
bGQoKSBtZXRob2QgaXMgbm93IG5hbWVkIHRvVVN0cmluZygpIGFuZCBsaXZlcyBpbiBVU3RyaW5n
QnVpbGRlci4KKwogMjAxMC0xMC0xMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpJbmRleDogSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJl
dmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQxMSw2ICs0MTEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RyYWNpbmcuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9VU3RyaW5nLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggXAorCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaCBcCiAJSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrR0NNYXAuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIu
aCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggXApAQCAtNTA4LDYgKzUw
OSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L0NTdHJpbmcuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmggXAog
CUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oIFwKKwlKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0hhc2guaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbEJhc2UuaCBc
CiAJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgXApJbmRleDogSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw2ICszNDYsNyBAQAog
ICAgICAgICAgICAgJ3J1bnRpbWUvVHJhY2luZy5oJywKICAgICAgICAgICAgICdydW50aW1lL1VT
dHJpbmcuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL1VTdHJpbmcuaCcsCisgICAgICAgICAg
ICAncnVudGltZS9VU3RyaW5nQnVpbGRlci5oJywKICAgICAgICAgICAgICdydW50aW1lL1dlYWtS
YW5kb20uaCcsCiAgICAgICAgICAgICAnd3RmL0Fsd2F5c0lubGluZS5oJywKICAgICAgICAgICAg
ICd3dGYvQVNDSUlDVHlwZS5oJywKQEAgLTQ1MCw2ICs0NTEsOCBAQAogICAgICAgICAgICAgJ3d0
Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvQ1N0cmlu
Zy5jcHAnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L0NTdHJpbmcuaCcsCisgICAgICAgICAgICAn
d3RmL3RleHQvU3RyaW5nQnVmZmVyLmgnLAorICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3RyaW5nSGFzaC5oJywKICAgICAgICAg
ICAgICd3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3Ry
aW5nSW1wbC5oJywKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagkocmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjUzLDYgKzEyNTMsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxVU3RyaW5nQnVpbGRlci5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
cnVudGltZVxVU3RyaW5nSW1wbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJ
KHJldmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L1dURi9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MDksNiArNjA5LDE0IEBACiAgCQkJ
Pg0KICAJCTwvRmlsZT4NCiAgCQk8RmlsZQ0KKyAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0Zlx0
ZXh0XFN0cmluZ0J1ZmZlci5oIg0KKyAJCQk+DQorIAkJPC9GaWxlPg0KKyAJCTxGaWxlDQorIAkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHRleHRcU3RyaW5nQnVpbGRlci5oIg0KKyAJCQk+DQor
IAkJPC9GaWxlPg0KKyAJCTxGaWxlDQogIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHRleHRc
U3RyaW5nSGFzaC5oIg0KICAJCQk+DQogIAkJPC9GaWxlPg0KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiwxMCBAQAogLyog
QmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMDZEMzU4QjMwREFBREFBNDAwM0IxNzRF
IC8qIE1haW5UaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDZEMzU4QTIwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJlYWQuY3BwICovOyB9
OwogCQkwNkQzNThCNDBEQUFEQUFBMDAzQjE3NEUgLyogTWFpblRocmVhZE1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2RDM1OEExMERBQUQ5QzQw
MDNCMTc0RSAvKiBNYWluVGhyZWFkTWFjLm1tICovOyB9OworCQkwODE0Njk0OTEyNjQzNzg1MDBE
RkY5MzUgLyogU3RyaW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDgxNDY5NDgxMjY0Mzc1RTAwREZGOTM1IC8qIFN0cmluZ0J1aWxkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhG
QTVCQjBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEZBNUI5MEVGNzZENDMwMDU3OEU2RiAv
KiBSYW5kb21OdW1iZXIuY3BwICovOyB9OwogCQkwODhGQTVCQzBFRjc2RDQzMDA1NzhFNkYgLyog
UmFuZG9tTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDhEREE1QzExMjY0NjMx
NzAwNzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1
aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwOEUyNzlFOTBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFMjc5RTgwRUY4M0IxMDAw
N0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLzsgfTsKIAkJMEIzMzBDMjcwRjM4QzYyMzAw
NjkyREUzIC8qIFR5cGVUcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEIzMzBDMjYwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFpdHMuY3Bw
ICovOyB9OwogCQkwQjREN0U2MzBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI0RDdFNjIwRjMxOUFD
ODAwQUQ3RTU4IC8qIFR5cGVUcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjE3LDcgKzIxOSw2IEBACiAJCTg2OEJGQTE4MTE3Q0YxOTkw
MEI5MDhCMSAvKiBXVEZTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2OEJGQTE2MTE3Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjhCRkE2MDEx
N0QwNDgyMDBCOTA4QjEgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjhCRkE1RjExN0QwNDgyMDBCOTA4QjEgLyog
U3RhdGljQ29uc3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY5MDIzMTUxMjA5MkQ1QzAwNjMwQUY5IC8qIFBhZ2VSZXNlcnZhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5MDIz
MTQxMjA5MkQ1QzAwNjMwQUY5IC8qIFBhZ2VSZXNlcnZhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2OThCODY5MTBENDREOTQwMEQ4RDAx
QiAvKiBTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4Njk4Qjg2ODEwRDQ0RDk0MDBEOEQwMUIgLyogU3RyaW5nQnVpbGRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUQwNEFG
MTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlEMDRBRTExOTNCNTRE
MDA4MDM0NzUgLyogQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3
MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QTkwRUQwMEVF
N0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRB
cml0aG1ldGljLmNwcCAqLzsgfTsKQEAgLTYyOSw4ICs2MzAsMTAgQEAKIAkJMDZEMzU4QTEwREFB
RDlDNDAwM0IxNzRFIC8qIE1haW5UaHJlYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNYWluVGhyZWFkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNkQzNThBMjBEQUFEOUM0MDAzQjE3NEUgLyogTWFpblRocmVhZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDZEMzU4QTMwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJl
YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFpblRocmVhZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwODE0Njk0ODEyNjQzNzVFMDBERkY5MzUgLyogU3Ry
aW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHJpbmdCdWls
ZGVyLmg7IHBhdGggPSB0ZXh0L1N0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg4RkE1QjkwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21OdW1iZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFu
ZG9tTnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmRvbU51bWJl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEREQTVCQjEyNjQ1RjFEMDA3NTE3
MzIgLyogVVN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VVN0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFMjc5RTgw
RUY4M0IxMDAwN0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmFuZG9tTnVtYmVyU2VlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlVHJhaXRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVUcmFp
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVRyYWl0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIyLDcgKzgyNSw2IEBACiAJCTg2OEJGQTE2MTE3
Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV1RGU3RyaW5nLmg7IHBhdGggPSB0ZXh0L1dURlN0cmluZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjhCRkE1RjExN0QwNDgyMDBCOTA4QjEgLyogU3RhdGljQ29uc3Ry
dWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY0NvbnN0cnVj
dG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjkwMjMxNDEyMDkyRDVDMDA2
MzBBRjkgLyogUGFnZVJlc2VydmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhZ2VSZXNlcnZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njk4
Qjg2ODEwRDQ0RDk0MDBEOEQwMUIgLyogU3RyaW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2OUQwNEFFMTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFRyYW5zY2Vu
ZGVudGFsRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY5RUJDQjYw
RThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzdWx0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkE5
MEVDRjBFRTdENTFGMDBBQjM1MEQgLyogSklUQXJpdGhtZXRpYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBcml0aG1ldGljLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3OTMsNyArMTc5NSw2IEBACiAJCQkJN0UyQzZDOTgwRDMxQzZCNjAw
MkQ0NEUyIC8qIFNjb3BlQ2hhaW5NYXJrLmggKi8sCiAJCQkJOTMzMDNGRTgwRTZBNzJCNTAwNzg2
RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgKi8sCiAJCQkJOTMzMDNGRUEwRTZBNzJDMDAwNzg2RTZB
IC8qIFNtYWxsU3RyaW5ncy5oICovLAotCQkJCTg2OThCODY4MTBENDREOTQwMEQ4RDAxQiAvKiBT
dHJpbmdCdWlsZGVyLmggKi8sCiAJCQkJODZCNkRBMDExMjEzMkI5QTAwMEQzMTZGIC8qIFN0cmlu
Z0NvbmNhdGVuYXRlLmggKi8sCiAJCQkJQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmlu
Z0NvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzE4QzNDMTBFMTZFRTMzMDBCMzQ0NjAgLyogU3Ry
aW5nQ29uc3RydWN0b3IuaCAqLywKQEAgLTE4MTUsNiArMTgxNiw3IEBACiAJCQkJNUQ1MzcyNkUw
RTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLywKIAkJCQlGNjkyQTg4NTAyNTU1OTdEMDFG
RjYwRjcgLyogVVN0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8q
IFVTdHJpbmcuaCAqLywKKwkJCQkwOEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1
aWxkZXIuaCAqLywKIAkJCQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmgg
Ki8sCiAJCQkJMTQwMzVEQjAxMERCRkIyQTAwRkZGRkU3IC8qIFdlYWtHQ1B0ci5oICovLAogCQkJ
CTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCkBAIC0xODM0LDYg
KzE4MzYsNyBAQAogCQkJCTg2NTY1NzQwMTE1QkUzREEwMDI5MUY0MCAvKiBDU3RyaW5nLmNwcCAq
LywKIAkJCQk4NjU2NTc0MTExNUJFM0RBMDAyOTFGNDAgLyogQ1N0cmluZy5oICovLAogCQkJCTg2
Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLywKKwkJCQkwODE0Njk0
ODEyNjQzNzVFMDBERkY5MzUgLyogU3RyaW5nQnVpbGRlci5oICovLAogCQkJCTg2OEJGQTA1MTE3
Q0VGRDEwMEI5MDhCMSAvKiBTdHJpbmdIYXNoLmggKi8sCiAJCQkJODY4QkZBMDYxMTdDRUZEMTAw
QjkwOEIxIC8qIFN0cmluZ0ltcGwuY3BwICovLAogCQkJCTg2OEJGQTA3MTE3Q0VGRDEwMEI5MDhC
MSAvKiBTdHJpbmdJbXBsLmggKi8sCkBAIC0yMjU2LDcgKzIyNTksNyBAQAogCQkJCTg2OEJGQTYw
MTE3RDA0ODIwMEI5MDhCMSAvKiBTdGF0aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMUI0NDdBMEVDQ0Q3M0IwMDRGNEREMSAvKiBTdGRMaWJFeHRyYXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTg2OThCODY5MTBENDREOTQwMEQ4RDAxQiAvKiBTdHJpbmdCdWlsZGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwODE0Njk0OTEyNjQzNzg1MDBERkY5MzUgLyogU3RyaW5n
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8q
IFN0cmluZ0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2NzBFMTZGNUNE
MDBCMzQ0NjAgLyogU3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjhCRkEwRDEx
N0NFRkQxMDBCOTA4QjEgLyogU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjkyLDYg
KzIyOTUsNyBAQAogCQkJCUJDMThDNDc0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVbmljb2RlSWN1Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3NTBFMTZGNUNEMDBCMzQ0NjAgLyogVW51c2VkUGFy
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDc2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVU3Ry
aW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEREQTVDMTEyNjQ2MzE3MDA3NTE3MzIgLyogVVN0
cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDc3MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTdGRjc3MTExMjEzMUQyMDAwNzZBMTkg
LyogVmFsdWVDaGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NzgwRTE2RjVDRDAwQjM0
NDYwIC8qIFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgot
I2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgog
I2luY2x1ZGUgIlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2NywxMyArMzY3LDEz
IEBAIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBGdW5jdGlvbkUKIFVTdHJpbmcgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CiB7CiAgICAgRnVuY3Rpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzID0gKm1fcGFyYW1ldGVyczsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBwb3Mg
PSAwOyBwb3MgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytwb3MpIHsKICAgICAgICAgaWYgKCFidWls
ZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZChwYXJhbWV0ZXJzW3Bvc10udXN0cmluZygpKTsKICAgICB9Ci0gICAg
cmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1VTdHJpbmcoKTsK
IH0KIAogUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBQcm9ncmFtRXhlY3V0YWJsZTo6cmVwYXJz
ZUV4Y2VwdGlvbkluZm8oU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKQpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA2
OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJMZXhlci5oIgogI2lu
Y2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgorI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29u
Y2F0ZW5hdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04Myw3ICs4Myw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICBlbHNlIGlmIChhcmdzLnNpemUo
KSA9PSAxKQogICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygiKGZ1bmN0aW9uKCkgeyAiLCBh
cmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCAiXG59KSIpOwogICAgIGVsc2UgewotICAgICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIFVTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IGFyZ3Muc2l6ZSgpIC0gMTsgaSsrKSB7CkBAIC05Myw3ICs5Myw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IikgeyAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdChhcmdzLnNpemUoKSAtIDEp
LnRvU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxufSkiKTsKLSAgICAg
ICAgcHJvZ3JhbSA9IGJ1aWxkZXIuYnVpbGQoKTsKKyAgICAgICAgcHJvZ3JhbSA9IGJ1aWxkZXIu
dG9VU3RyaW5nKCk7CiAgICAgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiA2OTU2MSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTGl0ZXJhbFBhcnNlci5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVkZSAiU3Ry
aW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiZHRv
YS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC01NjMsNyAr
NTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIFVTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KTsKICAgICBpbnQgayA9IDA7CiAgICAgaW50IGxlbiA9IHN0ci5sZW5ndGgoKTsKQEAgLTU4NSw3
ICs1ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVCiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCpjKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIGJ1aWxkZXIuYnVpbGQoKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgYnVpbGRlci50b1VTdHJpbmcoKSkpOwogfQogCiAjaWZu
ZGVmIE5ERUJVRwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZp
c2lvbiA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgi
CiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKLSNp
bmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiVVN0cmluZ0J1aWxkZXIuaCIKICNp
bmNsdWRlICJTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBKU09iamVjdCogb2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KIAotICAgICAgICBib29sIGFwcGVuZE5leHRQ
cm9wZXJ0eShTdHJpbmdpZmllciYsIFN0cmluZ0J1aWxkZXImKTsKKyAgICAgICAgYm9vbCBhcHBl
bmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImLCBVU3RyaW5nQnVpbGRlciYpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgSlNPYmplY3QqIGNvbnN0IG1fb2JqZWN0OwpAQCAtOTgsMTcgKzk4LDE3
IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgSG9sZGVyOwogCi0gICAgc3RhdGljIHZv
aWQgYXBwZW5kUXVvdGVkU3RyaW5nKFN0cmluZ0J1aWxkZXImLCBjb25zdCBVU3RyaW5nJik7Cisg
ICAgc3RhdGljIHZvaWQgYXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiwgY29uc3Qg
VVN0cmluZyYpOwogCiAgICAgSlNWYWx1ZSB0b0pTT04oSlNWYWx1ZSwgY29uc3QgUHJvcGVydHlO
YW1lRm9yRnVuY3Rpb25DYWxsJik7CiAKICAgICBlbnVtIFN0cmluZ2lmeVJlc3VsdCB7IFN0cmlu
Z2lmeUZhaWxlZCwgU3RyaW5naWZ5U3VjY2VlZGVkLCBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVm
aW5lZFZhbHVlIH07Ci0gICAgU3RyaW5naWZ5UmVzdWx0IGFwcGVuZFN0cmluZ2lmaWVkVmFsdWUo
U3RyaW5nQnVpbGRlciYsIEpTVmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5
TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOworICAgIFN0cmluZ2lmeVJlc3VsdCBhcHBlbmRTdHJpbmdp
ZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJiwgSlNWYWx1ZSwgSlNPYmplY3QqIGhvbGRlciwgY29u
c3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJik7CiAKICAgICBib29sIHdpbGxJbmRlbnQo
KSBjb25zdDsKICAgICB2b2lkIGluZGVudCgpOwogICAgIHZvaWQgdW5pbmRlbnQoKTsKLSAgICB2
b2lkIHN0YXJ0TmV3TGluZShTdHJpbmdCdWlsZGVyJikgY29uc3Q7CisgICAgdm9pZCBzdGFydE5l
d0xpbmUoVVN0cmluZ0J1aWxkZXImKSBjb25zdDsKIAogICAgIFN0cmluZ2lmaWVyKiBjb25zdCBt
X25leHRTdHJpbmdpZmllclRvTWFyazsKICAgICBFeGVjU3RhdGUqIGNvbnN0IG1fZXhlYzsKQEAg
LTI3MCwxNiArMjcwLDE2IEBAIEpTVmFsdWUgU3RyaW5naWZpZXI6OnN0cmluZ2lmeShKU1ZhbHVl
IHYKICAgICBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwgZW1wdHlQcm9wZXJ0eU5hbWUobV9l
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKICAgICBv
YmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0
eUlkZW50aWZpZXIsIHZhbHVlKTsKIAotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIFVT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBpZiAoYXBwZW5kU3RyaW5naWZpZWRWYWx1ZShyZXN1
bHQsIHZhbHVlLCBvYmplY3QsIGVtcHR5UHJvcGVydHlOYW1lKSAhPSBTdHJpbmdpZnlTdWNjZWVk
ZWQpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmIChtX2V4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICByZXR1cm4ganNTdHJp
bmcobV9leGVjLCByZXN1bHQuYnVpbGQoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKG1fZXhlYywg
cmVzdWx0LnRvVVN0cmluZygpKTsKIH0KIAotdm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVk
U3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFVTdHJpbmcmIHZhbHVlKQordm9p
ZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVy
LCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpbnQgbGVuZ3RoID0gdmFsdWUubGVuZ3Ro
KCk7CiAKQEAgLTM2MSw3ICszNjEsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9K
U09OKEpTVmFsCiAgICAgcmV0dXJuIGNhbGwobV9leGVjLCBvYmplY3QsIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdmFsdWUsIGFyZ3MpOwogfQogCi1TdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0
cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIs
IEpTVmFsdWUgdmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1
bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQorU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBT
dHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgSlNWYWx1ZSB2YWx1ZSwgSlNPYmplY3QqIGhvbGRlciwgY29uc3QgUHJvcGVydHlOYW1lRm9y
RnVuY3Rpb25DYWxsJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gQ2FsbCB0aGUgdG9KU09OIGZ1
bmN0aW9uLgogICAgIHZhbHVlID0gdG9KU09OKHZhbHVlLCBwcm9wZXJ0eU5hbWUpOwpAQCAtNDc3
LDcgKzQ3Nyw3IEBAIGlubGluZSB2b2lkIFN0cmluZ2lmaWVyOjp1bmluZGVudCgpCiAgICAgbV9p
bmRlbnQgPSBtX3JlcGVhdGVkR2FwLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG1faW5kZW50Lmxl
bmd0aCgpIC0gbV9nYXAubGVuZ3RoKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6
c3RhcnROZXdMaW5lKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CitpbmxpbmUgdm9pZCBT
dHJpbmdpZmllcjo6c3RhcnROZXdMaW5lKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAog
ewogICAgIGlmIChtX2dhcC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5Miw3ICs0
OTIsNyBAQCBpbmxpbmUgU3RyaW5naWZpZXI6OkhvbGRlcjo6SG9sZGVyKEpTT2JqCiB7CiB9CiAK
LWJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVy
JiBzdHJpbmdpZmllciwgU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKK2Jvb2wgU3RyaW5naWZpZXI6
OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiB7CiAgICAgQVNTRVJUKG1faW5kZXggPD0gbV9zaXplKTsK
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCShyZXZpc2lv
biA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJMZXhlci5oIgotI2luY2x1ZGUgIlN0cmluZ0J1
aWxkZXIuaCIKKyNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHRl
bXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKIHsKICAgICArK21fcHRyOwog
ICAgIGNvbnN0IFVDaGFyKiBydW5TdGFydDsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBkbyB7CiAgICAgICAgIHJ1blN0YXJ0ID0g
bV9wdHI7CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzU2FmZVN0cmluZ0NoYXJh
Y3Rlcjxtb2RlPigqbV9wdHIpKQpAQCAtMjAwLDcgKzIwMCw3IEBAIHRlbXBsYXRlIDxMaXRlcmFs
UGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgKm1fcHRy
ICE9ICciJykKICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogCi0gICAgdG9rZW4uc3RyaW5nVG9r
ZW4gPSBidWlsZGVyLmJ1aWxkKCk7CisgICAgdG9rZW4uc3RyaW5nVG9rZW4gPSBidWlsZGVyLnRv
VVN0cmluZygpOwogICAgIHRva2VuLnR5cGUgPSBUb2tTdHJpbmc7CiAgICAgdG9rZW4uZW5kID0g
KyttX3B0cjsKICAgICByZXR1cm4gVG9rU3RyaW5nOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEw
ICsyNSw4IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24uaCIKLSNpbmNs
dWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiZHRvYS5oIgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0RlY2ltYWxOdW1iZXIuaD4KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTU2MSkKKysrIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2lmbmRlZiBTdHJpbmdCdWlsZGVyX2gKLSNkZWZpbmUgU3RyaW5nQnVpbGRlcl9oCi0KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTdHJpbmdCdWls
ZGVyIHsKLXB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciB1KQotICAgIHsKLSAg
ICAgICAgYnVmZmVyLmFwcGVuZCh1KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiBzdHIpCi0gICAgewotICAgICAgICBhcHBlbmQoc3RyLCBzdHJsZW4oc3RyKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKQotICAgIHsK
LSAgICAgICAgcmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlci5zaXplKCkgKyBsZW4pOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXplX3QgbGVuKQotICAgIHsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZChzdHIsIGxlbik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0
cmluZyYgc3RyKQotICAgIHsKLSAgICAgICAgYnVmZmVyLmFwcGVuZChzdHIuY2hhcmFjdGVycygp
LCBzdHIubGVuZ3RoKCkpOwotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJ1
ZmZlci5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIHJlc2VydmVDYXBhY2l0eShzaXplX3QgbmV3Q2Fw
YWNpdHkpCi0gICAgewotICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPCBidWZmZXIuY2FwYWNpdHko
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYnVmZmVyLnJlc2VydmVDYXBhY2l0eShz
dGQ6Om1heChuZXdDYXBhY2l0eSwgYnVmZmVyLmNhcGFjaXR5KCkgKyBidWZmZXIuY2FwYWNpdHko
KSAvIDQgKyAxKSk7Ci0gICAgfQotICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7IGJ1ZmZl
ci5yZXNpemUoc2l6ZSk7IH0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZl
ci5zaXplKCk7IH0KLQotICAgIFVDaGFyIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0
dXJuIGJ1ZmZlci5hdChpKTsgfQotCi0gICAgVVN0cmluZyBidWlsZCgpCi0gICAgewotICAgICAg
ICBidWZmZXIuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlci5kYXRhKCkgfHwg
IWJ1ZmZlci5zaXplKCkpOwotICAgICAgICByZXR1cm4gVVN0cmluZzo6YWRvcHQoYnVmZmVyKTsK
LSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBWZWN0b3I8VUNoYXIsIDY0PiBidWZmZXI7Ci19Owot
Ci19Ci0KLSNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nQnVpbGRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIu
aAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVTdHJpbmdCdWlsZGVyX2gKKyNkZWZpbmUg
VVN0cmluZ0J1aWxkZXJfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVVN0cmluZ0J1aWxkZXIgOiBwdWJsaWMgU3RyaW5n
QnVpbGRlciB7CitwdWJsaWM6CisgICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNlIG1ldGhvZHMs
IG90aGVyd2hpc2UgYXBwZW5kKCkgaXMgYW1iaWdpb3VzLgorICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFVDaGFyIHUpIHsgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKHUpOyB9CisgICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogc3RyKSB7IFN0cmluZ0J1aWxkZXI6OmFwcGVuZChzdHIpOyB9CisgICAgdm9p
ZCBhcHBlbmQoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKSB7IFN0cmluZ0J1aWxkZXI6OmFw
cGVuZChzdHIsIGxlbik7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXpl
X3QgbGVuKSB7IFN0cmluZ0J1aWxkZXI6OmFwcGVuZChzdHIsIGxlbik7IH0KKworICAgIHZvaWQg
YXBwZW5kKGNvbnN0IFVTdHJpbmcmIHN0cikKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLmFwcGVu
ZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOworICAgIH0KKworICAgIFVTdHJpbmcg
dG9VU3RyaW5nKCkKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLnNocmlua1RvRml0KCk7CisgICAg
ICAgIEFTU0VSVChtX2J1ZmZlci5kYXRhKCkgfHwgIW1fYnVmZmVyLnNpemUoKSk7CisgICAgICAg
IHJldHVybiBVU3RyaW5nOjphZG9wdChtX2J1ZmZlcik7CisgICAgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBVU3RyaW5nQnVpbGRlcl9oCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTQ2NCkJKGZyb20gSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdCdWlsZGVyLmg6Njk0NjQpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFN0cmluZ0J1aWxkZXJfaAorI2RlZmluZSBTdHJpbmdCdWlsZGVyX2gKKworI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cmluZ0J1aWxkZXIgewor
cHVibGljOgorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyIHUpCisgICAgeworICAgICAgICBi
dWZmZXIuYXBwZW5kKHUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIHN0
cikKKyAgICB7CisgICAgICAgIGFwcGVuZChzdHIsIHN0cmxlbihzdHIpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4pCisgICAgeworICAgICAg
ICByZXNlcnZlQ2FwYWNpdHkoYnVmZmVyLnNpemUoKSArIGxlbik7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KHN0cltpXSkpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFVDaGFyKiBzdHIsIHNpemVfdCBsZW4pCisgICAgeworICAgICAgICBidWZmZXIuYXBw
ZW5kKHN0ciwgbGVuKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBVU3RyaW5nJiBz
dHIpCisgICAgeworICAgICAgICBidWZmZXIuYXBwZW5kKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5s
ZW5ndGgoKSk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYnVmZmVyLmlz
RW1wdHkoKTsgfQorICAgIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KHNpemVfdCBuZXdDYXBhY2l0eSkK
KyAgICB7CisgICAgICAgIGlmIChuZXdDYXBhY2l0eSA8IGJ1ZmZlci5jYXBhY2l0eSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBidWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHN0ZDo6bWF4
KG5ld0NhcGFjaXR5LCBidWZmZXIuY2FwYWNpdHkoKSArIGJ1ZmZlci5jYXBhY2l0eSgpIC8gNCAr
IDEpKTsKKyAgICB9CisgICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUpIHsgYnVmZmVyLnJlc2l6
ZShzaXplKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gYnVmZmVyLnNpemUo
KTsgfQorCisgICAgVUNoYXIgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gYnVm
ZmVyLmF0KGkpOyB9CisKKyAgICBVU3RyaW5nIGJ1aWxkKCkKKyAgICB7CisgICAgICAgIGJ1ZmZl
ci5zaHJpbmtUb0ZpdCgpOworICAgICAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSB8fCAhYnVmZmVy
LnNpemUoKSk7CisgICAgICAgIHJldHVybiBVU3RyaW5nOjphZG9wdChidWZmZXIpOworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIFZlY3RvcjxVQ2hhciwgNjQ+IGJ1ZmZlcjsKK307CisKK30KKwor
I2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZp
c2lvbiA2OTQ2NCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDE1IEBACiAjZGVmaW5lIFN0cmluZ0J1aWxkZXJf
aAogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi1uYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBTdHJpbmdC
dWlsZGVyIHsKIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciB1KQogICAgIHsK
LSAgICAgICAgYnVmZmVyLmFwcGVuZCh1KTsKKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKHUpOwog
ICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIHN0cikKQEAgLTQ0LDQ0ICs0NSw0
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBs
ZW4pCiAgICAgewotICAgICAgICByZXNlcnZlQ2FwYWNpdHkoYnVmZmVyLnNpemUoKSArIGxlbik7
CisgICAgICAgIHJlc2VydmVDYXBhY2l0eShtX2J1ZmZlci5zaXplKCkgKyBsZW4pOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgYnVmZmVyLmFw
cGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKICAgICB9
CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXplX3QgbGVuKQogICAgIHsK
LSAgICAgICAgYnVmZmVyLmFwcGVuZChzdHIsIGxlbik7CisgICAgICAgIG1fYnVmZmVyLmFwcGVu
ZChzdHIsIGxlbik7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0cmluZyYgc3Ry
KQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQogICAgIHsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOworICAgICAgICBtX2J1
ZmZlci5hcHBlbmQoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpKTsKICAgICB9CiAKLSAg
ICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBidWZmZXIuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBy
ZXNlcnZlQ2FwYWNpdHkoc2l6ZV90IG5ld0NhcGFjaXR5KQogICAgIHsKLSAgICAgICAgaWYgKG5l
d0NhcGFjaXR5IDwgYnVmZmVyLmNhcGFjaXR5KCkpCisgICAgICAgIGlmIChuZXdDYXBhY2l0eSA8
IG1fYnVmZmVyLmNhcGFjaXR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJ1ZmZl
ci5yZXNlcnZlQ2FwYWNpdHkoc3RkOjptYXgobmV3Q2FwYWNpdHksIGJ1ZmZlci5jYXBhY2l0eSgp
ICsgYnVmZmVyLmNhcGFjaXR5KCkgLyA0ICsgMSkpOworICAgICAgICBtX2J1ZmZlci5yZXNlcnZl
Q2FwYWNpdHkoc3RkOjptYXgobmV3Q2FwYWNpdHksIG1fYnVmZmVyLmNhcGFjaXR5KCkgKyBtX2J1
ZmZlci5jYXBhY2l0eSgpIC8gNCArIDEpKTsKICAgICB9Ci0gICAgdm9pZCByZXNpemUoc2l6ZV90
IHNpemUpIHsgYnVmZmVyLnJlc2l6ZShzaXplKTsgfQotICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gYnVmZmVyLnNpemUoKTsgfQorICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7
IG1fYnVmZmVyLnJlc2l6ZShzaXplKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAgICBVQ2hhciBvcGVyYXRvcltdKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBidWZmZXIuYXQoaSk7IH0KKyAgICBVQ2hhciBvcGVyYXRvcltdKHNpemVf
dCBpKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5hdChpKTsgfQogCi0gICAgVVN0cmluZyBidWls
ZCgpCisgICAgU3RyaW5nIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIGJ1ZmZlci5zaHJpbmtU
b0ZpdCgpOwotICAgICAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSB8fCAhYnVmZmVyLnNpemUoKSk7
Ci0gICAgICAgIHJldHVybiBVU3RyaW5nOjphZG9wdChidWZmZXIpOworICAgICAgICBtX2J1ZmZl
ci5zaHJpbmtUb0ZpdCgpOworICAgICAgICBBU1NFUlQobV9idWZmZXIuZGF0YSgpIHx8ICFtX2J1
ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChtX2J1ZmZlcik7CiAg
ICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVmVjdG9yPFVDaGFyLCA2ND4gYnVmZmVyOworICAgIFZl
Y3RvcjxVQ2hhciwgNjQ+IG1fYnVmZmVyOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV1RGCiAK
LSNlbmRpZgordXNpbmcgV1RGOjpTdHJpbmdCdWlsZGVyOworCisjZW5kaWYgLy8gU3RyaW5nQnVp
bGRlcl9oCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gNjk1NzYpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEwLTEwLTEyICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVuaWZ5IEpTQzo6U3RyaW5nQnVpbGRlciAmIFdlYkNvcmU6OlN0cmluZ0J1
aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3
NTM4CisKKyAgICAgICAgSlNDOjpTdHJpbmdCdWlsZGVyIG9wZXJhdGVzIG9uIGEgVmVjdG9yPFVD
aGFyLCA2ND4gYW5kIGFsbG93cyB0byBidWlsZCBhIHN0cmluZyBiYXNlZCBvbiBhIHN0cmVhbSBv
ZiBjaGFyYWN0ZXJzIGluIGFuIGVmZmljaWVudCBtYW5uZXIuCisgICAgICAgIFdlYkNvcmU6OlN0
cmluZ0J1aWxkZXIgb3BlcmF0ZXMgb24gYSBWZWN0b3I8U3RyaW5nLCAxNj4gYW5kIGFsbG93cyB0
byBjb25jYXQgYW4gYXJiaXRhcnkgbnVtYmVyIG9mIFN0cmluZ3MuIEl0J3Mgbm90IGVmZmljaWVu
dCBpbiBoYW5kbGluZyBzaW5nbGUKKyAgICAgICAgY2hhcmFjdGVycywgYXMgYSBTdHJpbmcgd2l0
aCBsZW5ndGg9MSBoYXMgdG8gYmUgY29uc3RydWN0ZWQgZm9yIHRob3NlLiBBbiBhbmFseXNpcyBv
ZiB0aGUgY2FsbGVycyBvZiBXZWJDb3JlOjpTdHJpbmdCdWlsZGVyIHNob3dzIHRoYXQKKyAgICAg
ICAgbW9zdCBjYWxsc2l0ZXMgYWN0dWFsbHkgY29tYmluZSBTdHJpbmdzIGFuZCBzaW5nbGUgY2hh
cmFjdGVycywgc28gdXNpbmcgYSBWZWN0b3I8VUNoYXI+IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50
LiBUaG9zZSB3aG8gb25seSBjb21iaW5lIGxhcmdlCisgICAgICAgIHN0cmluZ3MgYXJlIG9ubHkg
dXNlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBzbyBpdCdzIGZpbmUgdG8gc3dpdGNoIHRoZW0g
dG8gYSBWZWN0b3I8VUNoYXI+IGFwcHJvYWNoIGFzIHdlbGwuCisKKyAgICAgICAgUmVwbGFjZSBX
ZWJDb3JlOjpTdHJpbmdCdWlsZGVyIHdpdGggSlNDOjpTdHJpbmdCdWlsZGVyLCBhbmQgbW92ZSBp
dCB0byB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggaW50byB0aGUgV1RGIG5hbWVzcGFjZS4KKyAg
ICAgICAgV2hpbGUgSSB3YXMgYXQgaXQgcmVtb3ZlIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVy
LmgsIGFzIGl0IHdhcyBvbmx5IGluY2x1ZGluZyB3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaC4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgdGh1cyBubyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBBbmRyb2lkLm1rOiBSZW1vdmUgcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVy
LiogYW5kIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmguCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6IERpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBEaXR0by4gCisgICAgICAg
ICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9T
dHJpbmdCdWlsZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9VU3RyaW5nQnVpbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVy
cy93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdFN0cmluZy5oOiBEb24ndCBpbmNsdWRlIFBsYXRmb3JtU3RyaW5nLmggYnV0IHd0Zi90
ZXh0L1dURlN0cmluZy5oLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRv
cis9KTogVXNlIEpTQzo6VVN0cmluZ0J1aWxkZXIgaW5zdGVhZCBvZiBKU0M6OlN0cmluZ0J1aWxk
ZXIuCisgICAgICAgICogYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwOiBVc2UgV1RGOjpTdHJpbmdC
dWlsZGVyICgrIHVzZSBhcHBlbmQoY29uc3QgVUNoYXIpIGZvciBzaW5nbGUgY2hhcmFjdGVycyku
CisgICAgICAgICogY3NzL01lZGlhUXVlcnkuY3BwOiBEaXR0by4KKyAgICAgICAgKiBjc3MvTWVk
aWFRdWVyeUV4cC5jcHA6IERpdHRvLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjphcHBlbmRUZXh0Q29udGVudCk6IE1hbnVhbGx5IHRyYWNr
IHdoZXRlciB0aGUgU3RyaW5nQnVpbGRlciBjb250ZW50IGlzIGVtcHR5IG9yIG51bGwsIHRoZSBu
ZXcgU3RyaW5nQnVpbGRlciBkb2Vzbid0IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBudWxsICYgZW1w
dHkgc3RyaW5ncy4KKyAgICAgICAgKiBkb20vTm9kZS5oOiBSZW1vdmUgYXBwZW5kVGV4dENvbnRl
bnQgZGVmaW5pdGlvbiwgaXQncyBub3QgbmVlZGVkIHRvIGJlIGV4cG9ydGVkLCByZW1vdmVzIHRo
ZSBuZWVkIGZvciBhIFN0cmluZ0J1aWxkZXIuaCBpbmNsdWRlIG9yIGZvcndhcmQgZGVjbGFyYXRp
b24uCisgICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOiBVc2UgV1RGOjpTdHJpbmdCdWls
ZGVyLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHA6IFJlbW92ZSB1
c2VsZXNzIFN0cmluZ0J1ZmZlci5oIGluY2x1ZGUuCisgICAgICAgICogcGxhdGZvcm0vYW5kcm9p
ZC9GaWxlU3lzdGVtQW5kcm9pZC5jcHA6IFVzZSBXVEY6OlN0cmluZ0J1aWxkZXIuCisgICAgICAg
ICogcGxhdGZvcm0vYnJldy9GaWxlU3lzdGVtQnJldy5jcHA6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcDogRGl0dG8gKCsgdXNlIGFwcGVu
ZChjb25zdCBVQ2hhcikgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzKS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvUE9ESW50ZXJ2YWwuaDogRGl0dG8gKE9ubHkgdXNlZCBhcyBkZWJ1Z2dp
bmcgaGVscGVyIGhlcmUsIGluIGRlYnVnIGJ1aWxkcykuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oOiBEaXR0byAoT25seSB1c2VkIGFzIGRlYnVnZ2lu
ZyBoZWxwZXIgaGVyZSwgaW4gZGVidWcgYnVpbGRzKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tOiBSZW1vdmUgdXNlbGVzcyBTdHJpbmdCdWlsZGVy
LmggaW5jbHVkZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHA6IFVzZSBXVEY6OlN0cmluZ0J1aWxkZXIs
IGFuZCB1c2UgYXBwZW5kKGNvbnN0IFVDaGFyKSBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdp
bi5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUHJveHlTZXJ2ZXJTdHJpbmcpOiBVc2UgV1RGOjpT
dHJpbmdCdWlsZGVyLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlLmNwcDogVXNlIFdURjo6U3RyaW5nQnVpbGRlci4K
KyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwOiBTVkdQYXRoU3RyaW5nQnVpbGRlciB1c2Vk
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoQ29uY2F0QWRkaW5nU3BhY2VzQmV0d2VlbkluZGl2aWR1
YWxTdHJpbmdzKSwgYWRhcHQgdG8gdGhlIGNoYW5nZSwgdGhhdCB0aGlzIG1vZGUgaXMgZ29uZSBu
b3cuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6cmVzdWx0KTogSnVz
dCB1c2UgdG9TdHJpbmcoKSwgYXBwZW5kIGEgc3BhY2UgdG8gdGhlIGVuZCBvZiBlYWNoIGNvbW1h
bmQsIHdoZW4gYnVpbGRpbmcgdGhlIHN0cmluZy4gUmVtb3ZlIHRoZSBsYXN0IHRyYWlsaW5nIHNw
YWNlIGJlZm9yZSBidWlsZGluZyB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFN0cmluZ0J1aWxkZXI6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5n
QnVpbGRlcjo6bGluZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVy
OjpsaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWls
ZGVyOjpsaW5lVG9WZXJ0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVp
bGRlcjo6Y3VydmVUb0N1YmljKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWls
ZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmlu
Z0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0
cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmFyY1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhT
dHJpbmdCdWlsZGVyOjpjbG9zZVBhdGgpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nQnVp
bGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsZWFudXAp
OiBTdHJpbmdCdWlsZGVyOjpjbGVhcigpIGlzIGdvbmUsIGp1c3QgY2xlYW51cCBieSBhc3NpZ25p
bmcgU3RyaW5nQnVpbGRlcigpLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDog
VXNlIFdURjo6U3RyaW5nQnVpbGRlci4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHA6IERpdHRvICgrIHVzZSBhcHBlbmQoY29uc3QgVUNoYXIpIGZvciBzaW5nbGUg
Y2hhcmFjdGVycykuCisKIDIwMTAtMTAtMDcgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6
IFdlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJl
dmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC02
MDYsNyArNjA2LDYgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJ
cGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgXAogCXBsYXRmb3JtL3RleHQvU2Vn
bWVudGVkU3RyaW5nLmNwcCBcCiAJcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwIFwKLQlwbGF0Zm9y
bS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKIAlwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJh
dG9ySUNVLmNwcCBcCiAJcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWMuY3BwIFwKIAlwbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY0lDVS5jcHAgXApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA2OTU2MSkKKysrIFdl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzNjEsNyArMTM2MSw2IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9u
LmNwcAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcAogICAgIHBsYXRmb3Jt
L3RleHQvU3RyaW5nLmNwcAotICAgIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKICAg
ICBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4
dENvZGVjLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcApJbmRleDog
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI0NTUsOSArMjQ1NSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVu
dGVkU3RyaW5nLmggXAotCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWZmZXIuaCBcCi0J
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKLQlXZWJDb3JlL3BsYXRm
b3JtL3RleHQvU3RyaW5nQnVpbGRlci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5n
LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N1ZmZpeFRyZWUuaCBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNjk1NjEp
CisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzE0Myw5ICszMTQz
LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vdGV4
dC9TdHJpbmdCdWZmZXIuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdHJpbmdCdWls
ZGVyLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nSGFzaC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9T
dWZmaXhUcmVlLmgnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLm9yZGVyCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL1dlYkNv
cmUub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTMzOTcsOSArMzM5Nyw2IEBAIF9fWk43V2ViQ29y
ZTE3SFRNTFNjcmlwdEVsZW1lbnQ4Y2hlY2tEVEQKIF9fWk43V2ViQ29yZTE3SFRNTFNjcmlwdEVs
ZW1lbnQxNWNoaWxkcmVuQ2hhbmdlZEViUE5TXzROb2RlRVMyX2kKIF9fWk43V2ViQ29yZTEzU2Ny
aXB0RWxlbWVudDE1Y2hpbGRyZW5DaGFuZ2VkRVJOU18xN1NjcmlwdEVsZW1lbnREYXRhRQogX19a
Tks3V2ViQ29yZTROb2RlMTF0ZXh0Q29udGVudEViCi1fX1pOSzdXZWJDb3JlNE5vZGUxN2FwcGVu
ZFRleHRDb250ZW50RWJSTlNfMTNTdHJpbmdCdWlsZGVyRQotX19aTjdXZWJDb3JlMTNTdHJpbmdC
dWlsZGVyNmFwcGVuZEVSS05TXzZTdHJpbmdFCi1fX1pOSzdXZWJDb3JlMTNTdHJpbmdCdWlsZGVy
OHRvU3RyaW5nRXYKIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmU2U3RyaW5nRUxtMTZFRTZzaHJp
bmtFbQogX19aTjdXZWJDb3JlMTdIVE1MU2NyaXB0RWxlbWVudDIxZmluaXNoUGFyc2luZ0NoaWxk
cmVuRXYKIF9fWk43V2ViQ29yZTEzU2NyaXB0RWxlbWVudDIxZmluaXNoUGFyc2luZ0NoaWxkcmVu
RVJOU18xN1NjcmlwdEVsZW1lbnREYXRhRVJLTlNfNlN0cmluZ0UKQEAgLTIyNTk1LDcgKzIyNTky
LDYgQEAgX19aTjdXZWJDb3JlMTZKU0RPTVdpbmRvd1NoZWxsMTJsb29rdXBHZQogX19aTjdXZWJD
b3JlMTFKU0RPTVdpbmRvdzEybG9va3VwR2V0dGVyRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJ
ZGVudGlmaWVyRQogX19aTjdXZWJDb3JlMTZKU0RPTVdpbmRvd1NoZWxsMTJkZWZpbmVTZXR0ZXJF
UE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFUE5TMV84SlNPYmplY3RFagogX19a
TjdXZWJDb3JlMTFKU0RPTVdpbmRvdzEyZGVmaW5lU2V0dGVyRVBOM0pTQzlFeGVjU3RhdGVFUktO
UzFfMTBJZGVudGlmaWVyRVBOUzFfOEpTT2JqZWN0RWoKLV9fWk43V2ViQ29yZTEzU3RyaW5nQnVp
bGRlcjZhcHBlbmRFYwogX19aTjdXZWJDb3JlMzNqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25B
c3NpZ25FUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVOUzBfN0pTVmFsdWVFUktOUzBf
N0FyZ0xpc3RFCiBfX1pON1dlYkNvcmUxMEpTTG9jYXRpb242YXNzaWduRVBOM0pTQzlFeGVjU3Rh
dGVFUktOUzFfN0FyZ0xpc3RFCiBfX1pON1dlYkNvcmUzM2pzSGlzdG9yeVByb3RvdHlwZUZ1bmN0
aW9uRm9yd2FyZEVQTjNKU0M5RXhlY1N0YXRlRVBOUzBfOEpTT2JqZWN0RU5TMF83SlNWYWx1ZUVS
S05TMF83QXJnTGlzdEUKQEAgLTI1ODQwLDcgKzI1ODM2LDYgQEAgX19aTkszSlNDOEJpbmRpbmdz
MTBSb290T2JqZWN0MTJuYXRpdmVIYQogX19aTkszSlNDOEJpbmRpbmdzMTBKYXZhTWV0aG9kOG1l
dGhvZElERVA4X2pvYmplY3QKIF9fWk5LM0pTQzhCaW5kaW5nczEwSmF2YU1ldGhvZDlzaWduYXR1
cmVFdgogX19aTjNKU0M4QmluZGluZ3MyNnNpZ25hdHVyZUZyb21QcmltaXRpdmVUeXBlRTdKTklU
eXBlCi1fX1pMMTVhcHBlbmRDbGFzc05hbWVSTjdXZWJDb3JlMTNTdHJpbmdCdWlsZGVyRVBLYwog
X19aTjNKU0M4QmluZGluZ3MxMWdldE1ldGhvZElERVA4X2pvYmplY3RQS2NTNF8KIF9fWk5LM0pT
QzhCaW5kaW5nczEwSmF2YU1ldGhvZDEzSk5JUmV0dXJuVHlwZUV2CiBfX1pOM0pTQzhCaW5kaW5n
czE1ZGlzcGF0Y2hKTklDYWxsRVBOU185RXhlY1N0YXRlRVBLdlA4X2pvYmplY3RiN0pOSVR5cGVQ
MTBfam1ldGhvZElEUDZqdmFsdWVSU0FfUEtjUk5TXzdKU1ZhbHVlRQpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA2
OTU2MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEyMDAsNyAr
MTIwMCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5n
LmNwcCBcCiAgICAgcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4
dC9TdHJpbmcuY3BwIFwKLSAgICBwbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKICAg
ICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENv
ZGVjTGF0aW4xLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5j
cHAgXApAQCAtMjE0MSw3ICsyMTQwLDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vdGV4
dC9xdC9UZXh0Q29kZWNRdC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9u
LmggXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggXAotICAgIHBsYXRmb3Jt
L3RleHQvU3RyaW5nQnVpbGRlci5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5oIFwK
ICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5oIFwKICAgICBwbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VzZXJEZWZpbmVkLmggXApJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTU2MSkKKysrIFdl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMCwwIEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX1N0cmluZ0J1aWxkZXJf
aAotI2RlZmluZSBXZWJDb3JlX0ZXRF9TdHJpbmdCdWlsZGVyX2gKLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJpbmdCdWlsZGVyLmg+Ci0jZW5kaWYKSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VTdHJpbmdCdWlsZGVyLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9VU3RyaW5nQnVp
bGRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1VTdHJpbmdCdWlsZGVyX2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9VU3RyaW5nQnVpbGRlci5oPgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU3Ry
aW5nQnVpbGRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1N0cmluZ0J1aWxkZXJfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cmluZ0J1aWxkZXIuaD4KKyNlbmRpZgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4NjE0LDE4
ICsyODYxNCw2IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFN0cmluZ0J1ZmZlci5oIg0KLQkJCQkJPg0KLQkJ
CQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRl
eHRcU3RyaW5nQnVpbGRlci5jcHAiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUN
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxTdHJpbmdCdWlsZGVyLmgiDQot
CQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cdGV4dFxTdHJpbmdIYXNoLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjk1
NjEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjc0NSw3ICsyNzQ1LDYgQEAKIAkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0
IC8qIEV2ZW50TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzOTg4NUMyMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM5QjAyRUUwRUEyREJD
NDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QjAyRUMwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRl
cmF0b3IuY3BwICovOyB9OwogCQk5MzlCMDJFRjBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5
QjAyRUQwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuaCAqLzsgfTsKLQkJOTM5QjNF
NEUwRDNDMUU4NDAwQjRBOTJCIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QjNFNEQwRDNDMUU4NDAwQjRBOTJCIC8qIFN0
cmluZ0J1ZmZlci5oICovOyB9OwogCQk5M0EzOEI0QjBEMEU1ODA4MDA2ODcyQzIgLyogRWRpdG9y
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0EzOEI0QTBEMEU1ODA4MDA2ODcyQzIgLyogRWRpdG9yQ29tbWFuZC5jcHAgKi87IH07CiAJ
CTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAw
NkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi87IH07CiAJCTkzQjJEODE4MEY5OTIwRUUw
MDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjJEODE3MEY5OTIwRUUwMDZBRTZCMiAvKiBTdWRkZW5U
ZXJtaW5hdGlvbi5tbSAqLzsgfTsKQEAgLTUzMzMsOCArNTMzMiw2IEBACiAJCUUxODI1NjkwMEVG
MkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODI1NjhFMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dv
cmtlckNvbnRleHQuaCAqLzsgfTsKIAkJRTE4MjU4QUMwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTgyNThBQjBFRjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCAqLzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5v
ZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
aCAqLzsgfTsKLQkJRTFBMzAyQkMwREU4MzcwMzAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMwMkJCMERF
ODM3MDMwMEM1MkYyQyAvKiBTdHJpbmdCdWlsZGVyLmggKi87IH07Ci0JCUUxQTMwMkMxMERFODM3
NjkwMEM1MkYyQyAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMwMkMwMERFODM3NjkwMEM1MkYyQyAvKiBTdHJpbmdC
dWlsZGVyLmNwcCAqLzsgfTsKIAkJRTFBNUY5OUIwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0
b20uY3BwICovOyB9OwogCQlFMUE2NDNGMjBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCAq
LzsgfTsKIAkJRTFBNjQzRkQwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFB
NjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovOyB9
OwpAQCAtODgwNCw3ICs4ODAxLDYgQEAKIAkJOTM5ODg1QzIwOEI3RTNEMTAwRTcwN0M0IC8qIEV2
ZW50TmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXZlbnROYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJOTM5QjAyRUMwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRl
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lkdGhJdGVy
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOUIwMkVEMEVBMkRCQzQw
MEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdpZHRoSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM5QjNF
NEQwRDNDMUU4NDAwQjRBOTJCIC8qIFN0cmluZ0J1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJpbmdCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNBMzhCNEEwRDBFNTgwODAwNjg3MkMyIC8qIEVkaXRvckNvbW1hbmQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdG9yQ29tbWFuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjJEODE1MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5U
ZXJtaW5hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWRkZW5UZXJt
aW5hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyRDgxNzBGOTkyMEVF
MDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTdWRkZW5UZXJtaW5hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTExMzMxLDggKzExMzI3LDYgQEAKIAkJRTE4MjU2OEUwRUYyQjAyRDAwOTMz
MjQyIC8qIEpTV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dvcmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4MjU4
QUIwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyog
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRTFBMzAyQkIwREU4MzcwMzAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlFMUEzMDJDMDBERTgzNzY5MDBDNTJGMkMgLyogU3RyaW5nQnVpbGRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVB
IC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdB
MDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2MSw5ICsxNjU1NSw2IEBACiAJCQkJQjJDM0Q5RkUw
RDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAgKi8sCiAJCQkJQjJDM0Q5RkYw
RDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovLAogCQkJCUIyQzNEQTAwMEQw
MDZDMUQwMEVGNkYyNiAvKiBTdHJpbmcuY3BwICovLAotCQkJCTkzOUIzRTREMEQzQzFFODQwMEI0
QTkyQiAvKiBTdHJpbmdCdWZmZXIuaCAqLywKLQkJCQlFMUEzMDJDMDBERTgzNzY5MDBDNTJGMkMg
LyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCi0JCQkJRTFBMzAyQkIwREU4MzcwMzAwQzUyRjJDIC8q
IFN0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQk5N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3Vm
Zml4VHJlZS5oICovLAogCQkJCUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRh
cmllcy5oICovLAogCQkJCUIyQzNEQTA2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVy
YXRvci5oICovLApAQCAtMjA1OTAsOCArMjA1ODEsNiBAQAogCQkJCUM1MEQwRTgzMEZGNDI3Mjkw
MEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVFMzhC
RjEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM1MTAyRDk0MEZEOUFBMkQwMEZBRkYwNCAvKiBTdG9yYWdlU3luY01hbmFnZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTkzOUIzRTRFMEQzQzFFODQwMEI0QTkyQiAvKiBTdHJpbmdCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxQTMwMkJDMERFODM3MDMwMEM1MkYyQyAvKiBTdHJp
bmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTQ4OEQ2QjBERDVBODNEMDA5RDgzQjIg
LyogU3RyaW5nU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMzU0MEYzMEQw
MDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0
OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjMxOTYsNyArMjMxODUsNiBAQAogCQkJCUM1NUUzOEMwMTAwNDBENUQwMEE1NkJE
QiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5
NTBGRDlBQTJEMDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTMwMEQwMDZDMUQwMEVGNkYyNiAvKiBTdHJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJRTFBMzAyQzEwREU4Mzc2OTAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJCMjY0NUMwRDAwQTc3RTAwMEFDQzFEIC8qIFN0cmluZ0NGLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyQjI2NDVEMEQwMEE3N0UwMDBBQ0MxRCAvKiBTdHJpbmdJ
bXBsQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDOTUwRDAwQTVERjAwMzAwNzREIC8q
IFN0cmluZ0ltcGxNYWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdHJpbmcuaAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTAgQEAKICNkZWZpbmUgU2Ny
aXB0U3RyaW5nX2gKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+Ci0jaW5jbHVkZSA8cnVu
dGltZS9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nQnVpbGRlci5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsMTAgKzYxLDEwIEBAIHB1YmxpYzoK
IAogICAgIFNjcmlwdFN0cmluZyYgb3BlcmF0b3IrPShjb25zdCBTdHJpbmcmIHMpCiAgICAgewot
ICAgICAgICBKU0M6OlN0cmluZ0J1aWxkZXIgYnVmZmVyOworICAgICAgICBKU0M6OlVTdHJpbmdC
dWlsZGVyIGJ1ZmZlcjsKICAgICAgICAgYnVmZmVyLmFwcGVuZChtX3N0cik7CiAgICAgICAgIGJ1
ZmZlci5hcHBlbmQoc3RyaW5nVG9VU3RyaW5nKHMpKTsKLSAgICAgICAgbV9zdHIgPSBidWZmZXIu
YnVpbGQoKTsKKyAgICAgICAgbV9zdHIgPSBidWZmZXIudG9VU3RyaW5nKCk7CiAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwCShyZXZp
c2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwxNCArMjksMTEgQEAKIAogI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKIAot
I2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCiAKIEphdmFQYXJhbWV0ZXI6OkphdmFQYXJhbWV0ZXIoSk5JRW52KiBlbnYsIGpz
dHJpbmcgdHlwZSkKIHsKQEAgLTEzMiw3ICsxMjksNyBAQCBjb25zdCBjaGFyKiBKYXZhTWV0aG9k
OjpzaWduYXR1cmUoKSBjb25zCiAjZW5kaWYKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIHNpZ25h
dHVyZUJ1aWxkZXI7Ci0gICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCIoIik7CisgICAg
ICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbV9udW1QYXJhbWV0ZXJzOyBpKyspIHsKICAgICAgICAgICAgIEphdmFQYXJhbWV0ZXIq
IGFQYXJhbWV0ZXIgPSBwYXJhbWV0ZXJBdChpKTsKICAgICAgICAgICAgIEpOSVR5cGUgdHlwZSA9
IGFQYXJhbWV0ZXItPmdldEpOSVR5cGUoKTsKQEAgLTE0MiwxMSArMTM5LDExIEBAIGNvbnN0IGNo
YXIqIEphdmFNZXRob2Q6OnNpZ25hdHVyZSgpIGNvbnMKICAgICAgICAgICAgICAgICBzaWduYXR1
cmVCdWlsZGVyLmFwcGVuZChzaWduYXR1cmVGcm9tUHJpbWl0aXZlVHlwZSh0eXBlKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gb2JqZWN0X3R5cGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIGFQYXJhbWV0ZXItPnR5cGUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCI7Iik7CisgICAg
ICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHNpZ25hdHVyZUJ1aWxk
ZXIuYXBwZW5kKCIpIik7CisgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAK
ICAgICAgICAgY29uc3QgY2hhciogcmV0dXJuVHlwZSA9IG1fcmV0dXJuVHlwZS51dGY4KCk7CiAg
ICAgICAgIGlmIChtX0pOSVJldHVyblR5cGUgPT0gYXJyYXlfdHlwZSkKQEAgLTE1NSw3ICsxNTIs
NyBAQCBjb25zdCBjaGFyKiBKYXZhTWV0aG9kOjpzaWduYXR1cmUoKSBjb25zCiAgICAgICAgICAg
ICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZChzaWduYXR1cmVGcm9tUHJpbWl0aXZlVHlwZShtX0pO
SVJldHVyblR5cGUpKTsKICAgICAgICAgICAgIGlmIChtX0pOSVJldHVyblR5cGUgPT0gb2JqZWN0
X3R5cGUpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRDbGFzc05hbWUoc2lnbmF0dXJlQnVpbGRl
ciwgcmV0dXJuVHlwZSk7Ci0gICAgICAgICAgICAgICAgc2lnbmF0dXJlQnVpbGRlci5hcHBlbmQo
IjsiKTsKKyAgICAgICAgICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZCgnOycpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCShyZXZpc2lvbiA2OTU2
MSkKKysrIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4
ICszMCw4IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgogCiAjaW5jbHVkZSAiTWVkaWFRdWVy
eUV4cC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uQ29w
eWluZ1NvcnQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAJKHJldmlzaW9uIDY5NTYx
KQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1
aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9kb20vTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYgQEAKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0
YXRpY05vZGVMaXN0LmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRh
Z05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRFdmVudC5oIgpA
QCAtODgsNiArODcsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKERP
TV9TVE9SQUdFKQogI2luY2x1ZGUgIlN0b3JhZ2VFdmVudC5oIgpAQCAtMTkyMyw1MiArMTkyMyw1
NCBAQCBTdHJpbmcgTm9kZTo6bG9va3VwTmFtZXNwYWNlUHJlZml4KGNvbnN0CiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi12b2lkIE5vZGU6OmFwcGVuZFRleHRDb250ZW50KGJvb2wgY29udmVy
dEJSc1RvTmV3bGluZXMsIFN0cmluZ0J1aWxkZXImIGNvbnRlbnQpIGNvbnN0CitzdGF0aWMgdm9p
ZCBhcHBlbmRUZXh0Q29udGVudChjb25zdCBOb2RlKiBub2RlLCBib29sIGNvbnZlcnRCUnNUb05l
d2xpbmVzLCBib29sJiBpc051bGxTdHJpbmcsIFN0cmluZ0J1aWxkZXImIGNvbnRlbnQpCiB7Ci0g
ICAgc3dpdGNoIChub2RlVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgVEVYVF9OT0RFOgotICAgICAg
ICBjYXNlIENEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgICAgY2FzZSBDT01NRU5UX05PREU6Ci0g
ICAgICAgICAgICBjb250ZW50LmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBDaGFyYWN0ZXJEYXRh
Kj4odGhpcyktPmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKG5vZGUt
Pm5vZGVUeXBlKCkpIHsKKyAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKKyAgICBjYXNlIE5vZGU6
OkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKKyAgICAg
ICAgaXNOdWxsU3RyaW5nID0gZmFsc2U7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKHN0YXRpY19j
YXN0PGNvbnN0IENoYXJhY3RlckRhdGEqPihub2RlKS0+ZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAgICAg
ICBjb250ZW50LmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24q
Pih0aGlzKS0+ZGF0YSgpKTsKKyAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05f
Tk9ERToKKyAgICAgICAgaXNOdWxsU3RyaW5nID0gZmFsc2U7CisgICAgICAgIGNvbnRlbnQuYXBw
ZW5kKHN0YXRpY19jYXN0PGNvbnN0IFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KG5vZGUpLT5kYXRh
KCkpOworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToK
KyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpICYmIGNvbnZlcnRCUnNUb05ld2xp
bmVzKSB7CisgICAgICAgICAgICBpc051bGxTdHJpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGNv
bnRlbnQuYXBwZW5kKCdcbicpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAg
ICBjYXNlIEVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlmIChoYXNUYWdOYW1lKGJyVGFnKSAm
JiBjb252ZXJ0QlJzVG9OZXdsaW5lcykgewotICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k
KCdcbicpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZh
bGwgdGhyb3VnaC4KLSAgICAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgY2FzZSBF
TlRJVFlfTk9ERToKLSAgICAgICAgY2FzZSBFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0gICAgICAg
IGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgICAgIGNvbnRlbnQuc2V0Tm9u
TnVsbCgpOwotCi0gICAgICAgICAgICBmb3IgKE5vZGUgKmNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlm
IChjaGlsZC0+bm9kZVR5cGUoKSA9PSBDT01NRU5UX05PREUgfHwgY2hpbGQtPm5vZGVUeXBlKCkg
PT0gUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNoaWxkLT5hcHBlbmRUZXh0Q29u
dGVudChjb252ZXJ0QlJzVG9OZXdsaW5lcywgY29udGVudCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAvLyBGYWxsIHRocm91Z2guCisgICAgY2FzZSBOb2RlOjpBVFRS
SUJVVEVfTk9ERToKKyAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgorICAgIGNhc2UgTm9kZTo6
RU5USVRZX1JFRkVSRU5DRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRf
Tk9ERToKKyAgICAgICAgaXNOdWxsU3RyaW5nID0gZmFsc2U7CisgICAgICAgIGZvciAoTm9kZSog
Y2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09N
TUVOVF9OT0RFIHx8IGNoaWxkLT5ub2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJV
Q1RJT05fTk9ERSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGFwcGVu
ZFRleHRDb250ZW50KGNoaWxkLCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgaXNOdWxsU3RyaW5nLCBj
b250ZW50KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIERPQ1VN
RU5UX05PREU6Ci0gICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICBjYXNl
IE5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgWFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CisgICAgY2FzZSBO
b2RlOjpET0NVTUVOVF9UWVBFX05PREU6CisgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgor
ICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6CisgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIAogU3RyaW5nIE5vZGU6OnRleHRDb250ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGlu
ZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBjb250ZW50OwotICAgIGFwcGVuZFRleHRD
b250ZW50KGNvbnZlcnRCUnNUb05ld2xpbmVzLCBjb250ZW50KTsKLSAgICByZXR1cm4gY29udGVu
dC50b1N0cmluZygpOworICAgIGJvb2wgaXNOdWxsU3RyaW5nID0gdHJ1ZTsKKyAgICBhcHBlbmRU
ZXh0Q29udGVudCh0aGlzLCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgaXNOdWxsU3RyaW5nLCBjb250
ZW50KTsKKyAgICByZXR1cm4gaXNOdWxsU3RyaW5nID8gU3RyaW5nKCkgOiBjb250ZW50LnRvU3Ry
aW5nKCk7CiB9CiAKIHZvaWQgTm9kZTo6c2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5nICZ0ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9kb20v
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIGNsYXNzIFJlbmRlckJveDsK
IGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3Mg
UmVuZGVyU3R5bGU7Ci1jbGFzcyBTdHJpbmdCdWlsZGVyOwogY2xhc3MgVGFnTm9kZUxpc3Q7CiAK
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CkBAIC03MDYsNyArNzA1LDYgQEAgcHJpdmF0ZToK
IAogICAgIEVsZW1lbnQqIGFuY2VzdG9yRWxlbWVudCgpIGNvbnN0OwogCi0gICAgdm9pZCBhcHBl
bmRUZXh0Q29udGVudChib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzLCBTdHJpbmdCdWlsZGVyJikg
Y29uc3Q7CiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCiAgICAgRG9jdW1lbnQqIG1f
ZG9jdW1lbnQ7CkluZGV4OiBXZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBX
ZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRl
ci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCShy
ZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTIgKzQ0LDEyIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlN0cmluZ0J1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgogCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRmlsZVN5c3Rl
bUFuZHJvaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9GaWxl
U3lzdGVtQW5kcm9pZC5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9h
bmRyb2lkL0ZpbGVTeXN0ZW1BbmRyb2lkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAotI2lu
Y2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJjdXRpbHMvbG9nLmgiCiAjaW5jbHVk
ZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8ZGxmY24uaD4KQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNs
dWRlIDxmbm1hdGNoLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYnJldy9GaWxlU3lzdGVt
QnJldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1C
cmV3LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2JyZXcvRmlsZVN5
c3RlbUJyZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKIAogI2luY2x1ZGUg
PEFFRUFwcEdlbi5oPgogI2luY2x1ZGUgPEFFRUZpbGUuaD4KQEAgLTQxLDYgKzM5LDggQEAKICNp
bmNsdWRlIDx3dGYvYnJldy9SZWZQdHJCcmV3Lmg+CiAjaW5jbHVkZSA8d3RmL2JyZXcvU2hlbGxC
cmV3Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZENocm9taXVtLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
MTMgKzQxLDE0IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIu
aCIKICNpbmNsdWRlICJtYXJrdXAuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjA1LDcgKzIwNiw3IEBAIHN0
YXRpYyBTdHJpbmcgaW1hZ2VUb01hcmt1cChjb25zdCBTdHJpbmcKICAgICBTdHJpbmdCdWlsZGVy
IG1hcmt1cDsKICAgICBtYXJrdXAuYXBwZW5kKCI8aW1nIHNyYz1cIiIpOwogICAgIG1hcmt1cC5h
cHBlbmQodXJsKTsKLSAgICBtYXJrdXAuYXBwZW5kKCJcIiIpOworICAgIG1hcmt1cC5hcHBlbmQo
JyInKTsKICAgICAvLyBDb3B5IG92ZXIgYXR0cmlidXRlcy4gIElmIHdlIGFyZSBkcmFnZ2luZyBh
biBpbWFnZSwgd2UgZXhwZWN0IHRoaW5ncyBsaWtlCiAgICAgLy8gdGhlIGlkIHRvIGJlIGNvcGll
ZCBhcyB3ZWxsLgogICAgIE5hbWVkTm9kZU1hcCogYXR0cnMgPSBlbGVtZW50LT5hdHRyaWJ1dGVz
KCk7CkBAIC0yMTQsMTMgKzIxNSwxMyBAQCBzdGF0aWMgU3RyaW5nIGltYWdlVG9NYXJrdXAoY29u
c3QgU3RyaW5nCiAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVt
KGkpOwogICAgICAgICBpZiAoYXR0ci0+bG9jYWxOYW1lKCkgPT0gInNyYyIpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgbWFya3VwLmFwcGVuZCgiICIpOworICAgICAgICBtYXJrdXAu
YXBwZW5kKCcgJyk7CiAgICAgICAgIG1hcmt1cC5hcHBlbmQoYXR0ci0+bG9jYWxOYW1lKCkpOwog
ICAgICAgICBtYXJrdXAuYXBwZW5kKCI9XCIiKTsKICAgICAgICAgU3RyaW5nIGVzY2FwZWRBdHRy
ID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgZXNjYXBlZEF0dHIucmVwbGFjZSgiXCIiLCAiJnF1
b3Q7Iik7CiAgICAgICAgIG1hcmt1cC5hcHBlbmQoZXNjYXBlZEF0dHIpOwotICAgICAgICBtYXJr
dXAuYXBwZW5kKCJcIiIpOworICAgICAgICBtYXJrdXAuYXBwZW5kKCciJyk7CiAgICAgfQogCiAg
ICAgbWFya3VwLmFwcGVuZCgiLz4iKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1BPREludGVydmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvUE9ESW50ZXJ2YWwuaAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9QT0RJbnRlcnZhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiAjZGVmaW5lIFBPREludGVydmFsX2gKIAogI2lmbmRlZiBOREVCVUcKLSNpbmNsdWRlICJT
dHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OCw5ICs3OCw5IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lmbmRlZiBOREVC
VUcKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNp
bmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCShyZXZpc2lv
biA2OTU2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJD
QS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0ICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNp
bXBvcnQgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW1wb3J0ICJTdHJpbmdCdWlsZGVy
LmgiCiAjaW1wb3J0ICJTeXN0ZW1UaW1lLmgiCiAjaW1wb3J0ICJUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb24uaCIKICNpbXBvcnQgIldlYkxheWVyLmgiCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1
ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNvZnRM
aW5raW5nLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRpbWVSYW5n
ZXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPEFzc2VydE1hY3Jvcy5oPgpAQCAt
NTMsNiArNTIsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAgLTI0MSw3ICsyNDEsNyBA
QCBzdGF0aWMgdm9pZCBhZGRDb29raWVQYXJhbShTdHJpbmdCdWlsZGVyCiAgICAgLy8gQWRkIHBh
cmFtZXRlciBuYW1lLCBhbmQgdmFsdWUgaWYgdGhlcmUgaXMgb25lLgogICAgIGNvb2tpZUJ1aWxk
ZXIuYXBwZW5kKG5hbWUpOwogICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNv
b2tpZUJ1aWxkZXIuYXBwZW5kKCI9Iik7CisgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKCc9
Jyk7CiAgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKICAgICB9CiB9CkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwog
ICAgICAgICAgICAgYWRkQ29va2llUGFyYW0oY29va2llQnVpbGRlciwgImV4cGlyZXMiLCByZmMy
NjE2RGF0ZVN0cmluZ0Zyb21UaW1lKGNvb2tpZS5leHBpcmVzKSk7CiAgICAgICAgIGlmIChjb29r
aWUuaHR0cE9ubHkpIAogICAgICAgICAgICAgYWRkQ29va2llUGFyYW0oY29va2llQnVpbGRlciwg
Imh0dHBPbmx5IiwgU3RyaW5nKCkpOwotICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgiOyIp
OworICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgnOycpOwogCiAgICAgICAgIFN0cmluZyBj
b29raWVVUkw7CiAgICAgICAgIGlmICghY29va2llLmRvbWFpbi5pc0VtcHR5KCkpIHsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUVRNb3ZpZVRh
c2suaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIK
LSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8V2luaW5ldC5oPgpAQCAtNDYsNiArNDUsNyBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgdm9pZCBhZGRD
b29raWVQYXJhbShTdHJpbmdCdWlsZGVyCiAgICAgLy8gQWRkIHBhcmFtZXRlciBuYW1lLCBhbmQg
dmFsdWUgaWYgdGhlcmUgaXMgb25lLgogICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKG5hbWUpOwog
ICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5k
KCI9Iik7CisgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKCc9Jyk7CiAgICAgICAgIGNvb2tp
ZUJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKICAgICB9CiB9CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OnNldFVwQ29va2llc0ZvcgogICAgICAgICAgICAgYWRkQ29v
a2llUGFyYW0oY29va2llQnVpbGRlciwgImV4cGlyZXMiLCByZmMyNjE2RGF0ZVN0cmluZ0Zyb21U
aW1lKGNvb2tpZS5leHBpcmVzKSk7CiAgICAgICAgIGlmIChjb29raWUuaHR0cE9ubHkpIAogICAg
ICAgICAgICAgYWRkQ29va2llUGFyYW0oY29va2llQnVpbGRlciwgImh0dHBPbmx5IiwgU3RyaW5n
KCkpOwotICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgiOyIpOworICAgICAgICBjb29raWVC
dWlsZGVyLmFwcGVuZCgnOycpOwogCiAgICAgICAgIFN0cmluZyBjb29raWVVUkw7CiAgICAgICAg
IGlmICghY29va2llLmRvbWFpbi5pc0VtcHR5KCkpIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Qcm94eVNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Byb3h5U2VydmVyLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYs
MTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0j
aW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBhcHBlbmRQcm94eVNl
cnZlclN0cmluZyhTdHJpbmdCdWlsZGVyICZidWlsZGVyLCBjb25zdCBQcm94eVNlcnZlciYgcHJv
eHlTZXJ2ZXIpCitzdGF0aWMgdm9pZCBhcHBlbmRQcm94eVNlcnZlclN0cmluZyhTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQcm94eVNlcnZlciYgcHJveHlTZXJ2ZXIpCiB7CiAgICAgc3dp
dGNoIChwcm94eVNlcnZlci50eXBlKCkpIHsKICAgICBjYXNlIFByb3h5U2VydmVyOjpEaXJlY3Q6
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0J1ZmZlci5oCShyZXZpc2lvbiA2OTU2MSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV2ViQ29yZVN0cmluZ0J1ZmZlcl9oCi0jZGVmaW5lIFdlYkNvcmVT
dHJpbmdCdWZmZXJfaAotCi0vLyBGSVhNRTogcmVtb3ZlIHRoaXMgaGVhZGVyLCB1c2UgdGhlIGZv
cndhcmQgZnJvbSB3dGYgZGlyZWN0bHkuCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVy
Lmg+Ci0KLSNlbmRpZiAvLyBTdHJpbmdCdWZmZXJfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9TdHJpbmdCdWlsZGVyLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTM4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0gCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCBjaGVja2VkQXBwZW5kKHVuc2lnbmVkJiB0b3RhbExlbmd0aCwg
dW5zaWduZWQgY2hhcmFjdGVyc1RvQXBwZW5kKQotewotICAgIGlmIChudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpIC0gY2hhcmFjdGVyc1RvQXBwZW5kIDw9IHRvdGFsTGVuZ3RoKQotICAg
ICAgICBDUkFTSCgpOwotCi0gICAgdG90YWxMZW5ndGggKz0gY2hhcmFjdGVyc1RvQXBwZW5kOwot
fQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKLXsK
LSAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25l
ZCB0b3RhbExlbmd0aCA9IGxlbmd0aCgpOwotICAgIGNoZWNrZWRBcHBlbmQodG90YWxMZW5ndGgs
IHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgbV90b3RhbExlbmd0aCA9IHRvdGFsTGVuZ3RoOwotCi0g
ICAgaWYgKCFzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICBtX3N0cmluZ3MuYXBwZW5kKHN0cmlu
Zyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKFVDaGFyIGMpCi17Ci0gICAgdW5z
aWduZWQgdG90YWxMZW5ndGggPSBsZW5ndGgoKTsKLSAgICBjaGVja2VkQXBwZW5kKHRvdGFsTGVu
Z3RoLCAxKTsKLSAgICBtX3RvdGFsTGVuZ3RoID0gdG90YWxMZW5ndGg7Ci0KLSAgICBtX3N0cmlu
Z3MuYXBwZW5kKFN0cmluZygmYywgMSkpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZChjaGFyIGMpCi17Ci0gICAgdW5zaWduZWQgdG90YWxMZW5ndGggPSBsZW5ndGgoKTsKLSAgICBj
aGVja2VkQXBwZW5kKHRvdGFsTGVuZ3RoLCAxKTsKLSAgICBtX3RvdGFsTGVuZ3RoID0gdG90YWxM
ZW5ndGg7Ci0KLSAgICBtX3N0cmluZ3MuYXBwZW5kKFN0cmluZygmYywgMSkpOwotfQotCi1TdHJp
bmcgU3RyaW5nQnVpbGRlcjo6dG9TdHJpbmcoQ29uY2F0TW9kZSBtb2RlKSBjb25zdAotewotICAg
IGlmIChpc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgdW5zaWduZWQg
Y291bnQgPSBtX3N0cmluZ3Muc2l6ZSgpOwotCi0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0
dXJuIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKTsKLSAgICBpZiAoY291bnQgPT0gMSkKLSAg
ICAgICAgcmV0dXJuIG1fc3RyaW5nc1swXTsKLQotICAgIHVuc2lnbmVkIHRvdGFsTGVuZ3RoID0g
bV90b3RhbExlbmd0aDsKLSAgICBpZiAobW9kZSA9PSBDb25jYXRBZGRpbmdTcGFjZXNCZXR3ZWVu
SW5kaXZpZHVhbFN0cmluZ3MpCi0gICAgICAgIGNoZWNrZWRBcHBlbmQodG90YWxMZW5ndGgsIGNv
dW50IC0gMSk7Ci0KLSAgICBVQ2hhciogYnVmZmVyOwotICAgIFN0cmluZyByZXN1bHQgPSBTdHJp
bmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7Ci0KLSAgICBVQ2hh
ciogcCA9IGJ1ZmZlcjsKLQotICAgIC8vIFdlIGNvdWxkIGhhbmRsZSBib3RoIENvbmNhdCBtb2Rl
cyBpbiBhIHNpbmdsZSBmb3IgbG9vcCwgbm90IGRvaW5nIHRoYXQgZm9yIHBlcmZvcm1hbmNlIHJl
YXNvbnMuCi0gICAgaWYgKG1vZGUgPT0gQ29uY2F0VW5hbHRlcmVkKSB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmdJbXBs
KiBzdHJpbmcgPSBtX3N0cmluZ3NbaV0uaW1wbCgpOwotICAgICAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gc3RyaW5nLT5sZW5ndGgoKTsgCi0gICAgICAgICAgICBtZW1jcHkocCwgc3RyaW5nLT5j
aGFyYWN0ZXJzKCksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOwotICAgICAgICAgICAgcCArPSBs
ZW5ndGg7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQobW9kZSA9PSBD
b25jYXRBZGRpbmdTcGFjZXNCZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3MpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgU3RyaW5nSW1w
bCogc3RyaW5nID0gbV9zdHJpbmdzW2ldLmltcGwoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHN0cmluZy0+bGVuZ3RoKCk7IAotICAgICAgICAgICAgbWVtY3B5KHAsIHN0cmluZy0+
Y2hhcmFjdGVycygpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKLSAgICAgICAgICAgIHAgKz0g
bGVuZ3RoOwotCi0gICAgICAgICAgICAvLyBBZGQgc3BhY2UgYWZ0ZXIgc3RyaW5nIGJlZm9yZSB0
aGUgc3RhcnQgb2YgdGhlIG5leHQgc3RyaW5nLCBpZiB3ZSdyZSBub3QgcHJvY2Vzc2luZyB0aGUg
bGFzdCBzdHJpbmcuCi0gICAgICAgICAgICBpZiAoaSA8IGNvdW50IC0gMSkgewotICAgICAgICAg
ICAgICAgICpwID0gJyAnOwotICAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLSAgICBBU1NFUlQocCA9PSB0b3RhbExlbmd0aCArIGJ1ZmZlcik7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmNsZWFyKCkKLXsK
LSAgICBtX3RvdGFsTGVuZ3RoID0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKLSAg
ICBtX3N0cmluZ3MuY2xlYXIoKTsKLX0KLQotdW5zaWduZWQgU3RyaW5nQnVpbGRlcjo6bGVuZ3Ro
KCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiBtX3RvdGFsTGVuZ3RoOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDY5NTYxKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFN0cmluZ0J1aWxkZXJfaAotI2RlZmluZSBTdHJpbmdC
dWlsZGVyX2gKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8bGltaXRz
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVt
IENvbmNhdE1vZGUgewotICAgIENvbmNhdFVuYWx0ZXJlZCwKLSAgICBDb25jYXRBZGRpbmdTcGFj
ZXNCZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3MKLX07Ci0KLWNsYXNzIFN0cmluZ0J1aWxkZXIgewot
cHVibGljOgotICAgIFN0cmluZ0J1aWxkZXIoKSA6IG1fdG90YWxMZW5ndGgoc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7fQotCi0gICAgdm9pZCBzZXROb25OdWxsKCkKLSAg
ICB7Ci0gICAgICAgIGlmIChpc051bGwoKSkKLSAgICAgICAgICAgIG1fdG90YWxMZW5ndGggPSAw
OwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBw
ZW5kKFVDaGFyKTsKLSAgICB2b2lkIGFwcGVuZChjaGFyKTsKLSAgICAKLSAgICB2b2lkIGNsZWFy
KCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmco
Q29uY2F0TW9kZSBtb2RlID0gQ29uY2F0VW5hbHRlcmVkKSBjb25zdDsKLQotcHJpdmF0ZToKLSAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxMZW5ndGggPT0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9Ci0KLSAgICB1bnNpZ25lZCBtX3RvdGFsTGVu
Z3RoOwotICAgIFZlY3RvcjxTdHJpbmcsIDE2PiBtX3N0cmluZ3M7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTdHJpbmdCdWlsZGVyX2gKSW5kZXg6IFdlYkNvcmUv
cGx1Z2lucy9ET01NaW1lVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL0RP
TU1pbWVUeXBlLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsdWdpbnMvRE9NTWlt
ZVR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2lu
Y2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBh
cnNlckZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJG
YWN0b3J5LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2Vy
RmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJT
VkdQYXRoU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR1BhdGhTdHJpbmdTb3VyY2UuaCIK
ICNpbmNsdWRlICJTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgiCi0jaW5jbHVkZSAiU3Ry
aW5nQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9zdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4MSArMjQsOTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitTdHJpbmcgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OnJl
c3VsdCgpCit7CisgICAgdW5zaWduZWQgc2l6ZSA9IG1fc3RyaW5nQnVpbGRlci5zaXplKCk7Cisg
ICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBSZW1vdmUg
dHJhaWxpbmcgc3BhY2UuCisgICAgbV9zdHJpbmdCdWlsZGVyLnJlc2l6ZShzaXplIC0gMSk7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworfQorCiB2b2lkIFNWR1BhdGhT
dHJpbmdCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2ws
IFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29v
cmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQo
Ik0gJS42bGcgJS42bGciLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJNICUuNmxnICUuNmxn
ICIsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiAgICAgZWxzZQotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJtICUuNmxnICUuNmxnIiwg
dGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgibSAlLjZsZyAlLjZsZyAiLCB0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjps
aW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBt
b2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIkwgJS42bGcgJS42bGciLCB0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJMICUuNmxnICUuNmxnICIsIHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKFN0cmluZzo6Zm9ybWF0KCJsICUuNmxnICUuNmxnIiwgdGFyZ2V0UG9pbnQueCgpLCB0YXJn
ZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZv
cm1hdCgibCAlLjZsZyAlLjZsZyAiLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkp
OwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKGZsb2F0
IHgsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRl
Q29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3Jt
YXQoIkggJS42bGciLCB4KSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIkggJS42bGcgIiwgeCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiaCAlLjZsZyIsIHgpKTsKKyAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiaCAlLjZsZyAiLCB4KSk7CiB9CiAKIHZv
aWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmxpbmVUb1ZlcnRpY2FsKGZsb2F0IHksIFBhdGhDb29y
ZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMp
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlYgJS42bGci
LCB5KSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlYg
JS42bGcgIiwgeSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgidiAlLjZsZyIsIHkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZChTdHJpbmc6OmZvcm1hdCgidiAlLjZsZyAiLCB5KSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0
cmluZ0J1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhD
b29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0
ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIkMgJS42
bGcgJS42bGcgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBwb2ludDEueCgpLCBwb2ludDEueSgp
LCBwb2ludDIueCgpLCBwb2ludDIueSgpLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50Lnko
KSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJDICUu
NmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnICIsIHBvaW50MS54KCksIHBvaW50MS55
KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQu
eSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6
Zm9ybWF0KCJjICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnIiwgcG9pbnQxLngo
KSwgcG9pbnQxLnkoKSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0
YXJnZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6
OmZvcm1hdCgiYyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAiLCBwb2ludDEu
eCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgpLCB0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2
ZVRvQ3ViaWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50
JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUg
PT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgiUyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIsIHBvaW50Mi54KCksIHBv
aW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlMgJS42bGcgJS42bGcgJS42bGcg
JS42bGcgIiwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQ
b2ludC55KCkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3Ry
aW5nOjpmb3JtYXQoInMgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBwb2ludDIueCgpLCBwb2lu
dDIueSgpLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJzICUuNmxnICUuNmxnICUuNmxnICUu
NmxnICIsIHBvaW50Mi54KCksIHBvaW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0
aWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2lu
dCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVD
b29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1h
dCgiUSAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIsIHBvaW50MS54KCksIHBvaW50MS55KCksIHRh
cmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlEgJS42bGcgJS42bGcgJS42bGcgJS42bGcgIiwgcG9p
bnQxLngoKSwgcG9pbnQxLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQo
InEgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCB0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJxICUuNmxnICUuNmxnICUuNmxnICUuNmxnICIsIHBvaW50
MS54KCksIHBvaW50MS55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiB9
CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29u
c3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewog
ICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlQgJS42bGcgJS42bGciLCB0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0
cmluZzo6Zm9ybWF0KCJUICUuNmxnICUuNmxnICIsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmlu
Zzo6Zm9ybWF0KCJ0ICUuNmxnICUuNmxnIiwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55
KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgidCAl
LjZsZyAlLjZsZyAiLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2
b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjphcmNUbyhmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0
IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9p
bnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9k
ZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KFN0cmluZzo6Zm9ybWF0KCJBICUuNmxnICUuNmxnICUuNmxnICVkICVkICUuNmxnICUuNmxnIiwg
cjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIkEgJS42bGcgJS42bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGcgIiwgcjEsIHIy
LCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0
UG9pbnQueSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0
cmluZzo6Zm9ybWF0KCJhICUuNmxnICUuNmxnICUuNmxnICVkICVkICUuNmxnICUuNmxnIiwgcjEs
IHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFy
Z2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpm
b3JtYXQoImEgJS42bGcgJS42bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGcgIiwgcjEsIHIyLCBh
bmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsb3NlUGF0aCgpCiB7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiWiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoIlogIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTYgQEAKICNp
ZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJTVkdQYXRo
Q29uc3VtZXIuaCIKLSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1Bh
dGhTdHJpbmdCdWlsZGVyIDogcHVibGljIFNWR1BhdGhDb25zdW1lciB7CiBwdWJsaWM6Ci0gICAg
U3RyaW5nIHJlc3VsdCgpIHsgcmV0dXJuIG1fc3RyaW5nQnVpbGRlci50b1N0cmluZyhDb25jYXRB
ZGRpbmdTcGFjZXNCZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3MpOyB9CisgICAgU3RyaW5nIHJlc3Vs
dCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3N0cmluZ0J1
aWxkZXIuY2xlYXIoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3N0cmluZ0J1
aWxkZXIgPSBTdHJpbmdCdWlsZGVyKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0
aFNlZ21lbnRDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNvbnN1bWluZygp
IHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHJldmlz
aW9uIDY5NTYxKQorKysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDExICs0MiwxMSBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgi
CiAKICNpbmNsdWRlIDx3dGYvTUQ1Lmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpA
QCAtNTIsNiArNTEsNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBLVVJMJiB1cmws
IAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZCh1cmwuaG9z
dCgpLmxvd2VyKCkpOwogICAgIGlmICh1cmwucG9ydCgpICYmICgoIXNlY3VyZSAmJiB1cmwucG9y
dCgpICE9IDgwKSB8fCAoc2VjdXJlICYmIHVybC5wb3J0KCkgIT0gNDQzKSkpIHsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKSkpOwogICAgIH0KICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2
OTU3NikKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNyBAQAorMjAxMC0xMC0xMiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5A
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVbmlmeSBKU0M6OlN0cmluZ0J1aWxkZXIgJiBXZWJDb3JlOjpTdHJpbmdCdWlsZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUzOAorCisgICAg
ICAgICogc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VU
aXRsZSk6IFVzZSBXVEY6OlN0cmluZ0J1aWxkZXIuCisgICAgICAgICogc3JjL1dlYkVudGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRW50aXRpZXM6OmNvbnZlcnRFbnRpdGllc0luU3Ry
aW5nKTogRGl0dG8uCisgICAgICAgICogc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHA6IFJl
bW92ZSB1c2VsZXNzIGluY2x1ZGVzLgorICAgICAgICAqIHNyYy9XZWJQYWdlU2VyaWFsaXplcklt
cGwuaDogVXNlIFdURjo6U3RyaW5nQnVpbGRlci4KKwogMjAxMC0xMC0xMSAgRGFuaWVsIENoZW5n
ICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5n
LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwCShyZXZpc2lv
biA2OTU2MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDE0ICszMywxNSBAQAogCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
LSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNs
dWRlICJXZWJLaXRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJMb2NhbGl6ZWRTdHJpbmcuaCIKICNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogdXNpbmcgV2ViS2l0OjpXZWJM
b2NhbGl6ZWRTdHJpbmc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIyMCw3ICsyMjEsNyBA
QCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lCiAgICAgcmVzdWx0LmFw
cGVuZChTdHJpbmc6Om51bWJlcihzaXplLndpZHRoKCkpKTsKICAgICByZXN1bHQuYXBwZW5kKHN0
YXRpY19jYXN0PFVDaGFyPigweEQ3KSk7ICAvLyBVKzAwRDcgKG11bHRpcGxpY2F0aW9uIHNpZ24p
CiAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmc6Om51bWJlcihzaXplLmhlaWdodCgpKSk7Ci0gICAg
cmVzdWx0LmFwcGVuZCgiKSIpOworICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKICAgICByZXR1cm4g
cmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRW50
aXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRW50aXRpZXMu
Y3BwCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRW50aXRpZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMTIgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJFbnRpdGllcy5oIgogCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKLSNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNzYsOSAr
NzMsOSBAQCBTdHJpbmcgV2ViRW50aXRpZXM6OmNvbnZlcnRFbnRpdGllc0luU3RyCiAgICAgICAg
ICAgICAvLyBBcHBlbmQgY29udGVudCBiZWZvcmUgZW50aXR5IGNvZGUuCiAgICAgICAgICAgICBp
ZiAoY3VyUG9zID4gc3RhcnRQb3MpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJp
bmcoc3RhcnRQb3MsIGN1clBvcyAtIHN0YXJ0UG9zKSk7Ci0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCImIik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcmJyk7CiAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKG1fZW50aXRpZXNNYXAuZ2V0KCpjdXJQb3MpKTsKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIjsiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzsnKTsKICAgICAg
ICAgICAgIHN0YXJ0UG9zID0gKytjdXJQb3M7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
Y3VyUG9zKys7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXpl
ckltcGwuY3BwCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFn
ZVNlcmlhbGl6ZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsOCArODgsNiBAQAogI2lu
Y2x1ZGUgIkhUTUxNZXRhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlN0cmlu
Z0J1aWxkZXIuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJtYXJrdXAu
aCIKIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5o
CShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6
ZXJJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEyICszMSwxMiBAQAogI2lmbmRlZiBXZWJQ
YWdlU2VyaWFsaXplckltcGxfaAogI2RlZmluZSBXZWJQYWdlU2VyaWFsaXplckltcGxfaAogCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+Ci0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaW5jbHVkZSAiV2ViRW50aXRpZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlU2Vy
aWFsaXplci5oIgpAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIC8vIG9yaWdpbmFsIGxp
bmsuCiAgICAgTGlua0xvY2FsUGF0aE1hcCBtX2xvY2FsTGlua3M7CiAgICAgLy8gRGF0YSBidWZm
ZXIgZm9yIHNhdmluZyByZXN1bHQgb2Ygc2VyaWFsaXplZCBET00gZGF0YS4KLSAgICBXZWJDb3Jl
OjpTdHJpbmdCdWlsZGVyIG1fZGF0YUJ1ZmZlcjsKKyAgICBTdHJpbmdCdWlsZGVyIG1fZGF0YUJ1
ZmZlcjsKICAgICAvLyBQYXNzaW5nIHRydWUgdG8gcmVjdXJzaXZlX3NlcmlhbGl6YXRpb25fIGlu
ZGljYXRlcyB3ZSB3aWxsIHNlcmlhbGl6ZSBub3QKICAgICAvLyBvbmx5IHRoZSBzcGVjaWZpZWQg
ZnJhbWUgYnV0IGFsc28gYWxsIHN1Yi1mcmFtZXMgaW4gdGhlIHNwZWNpZmljIGZyYW1lLgogICAg
IC8vIE90aGVyd2lzZSB3ZSBvbmx5IHNlcmlhbGl6ZSB0aGUgc3BlY2lmaWVkIGZyYW1lIGV4Y2x1
ZGVkIGFsbCBzdWItZnJhbWVzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70540</attachid>
            <date>2010-10-12 10:09:44 -0700</date>
            <delta_ts>2010-10-12 12:09:16 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>UnifyStringBuilder.diff</filename>
            <type>text/plain</type>
            <size>93398</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NTc2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTAtMTAtMTIgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgSlNDOjpTdHJpbmdCdWlsZGVyICYgV2Vi
Q29yZTo6U3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDc1MzgKKworICAgICAgICBNb3ZlIHJ1bnRpbWUvU3RyaW5nQnVpbGRlci5o
IHRvIHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaC4gUmVuYW1lIGJ1aWxkKCkgdG8gdG9TdHJpbmco
KSBhbmQgcmV0dXJuIGEgV1RGOjpTdHJpbmcoKS4KKyAgICAgICAgTW92ZSB0aGUgYXBwZW5kKGNv
bnN0IEpTQzo6VVN0cmluZyYpIG1ldGhvZCBpbnRvIHJ1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaC4K
KyAgICAgICAgVVN0cmluZ0J1aWxkZXIgaW5oZXJpdHMgZnJvbSBTdHJpbmdCdWlsZGVyLmggYW5k
IGFkZHMgYXBwZW5kKGNvbnN0IEpTQzo6VVN0cmluZyYpIGFuZCBVU3RyaW5nIHRvVVN0cmluZygp
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgTm8gbmV3IGNvZGUsIGp1c3QgbW92ZSBjb2RlIGFy
b3VuZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oIC8gcnVudGltZS9VU3RyaW5nQnVpbGRlci5oLiBSZW1vdmUgcnVudGltZS9TdHJpbmdC
dWlsZGVyLmguCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZ3lwaTogRGl0dG8uCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajogRGl0dG8uCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnBhcmFtU3RyaW5nKTogVXNlIFVTdHJpbmdCdWls
ZGVyLCBpbnN0ZWFkIG9mIFN0cmluZ0J1aWxkZXIuIFJlbmFtZSBidWlsZCgpIC0+IHRvVVN0cmlu
ZygpLgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNVbmVzY2Fw
ZSk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OlN0cmluZ2lmaWVyOjpzdHJpbmdpZnkpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6U3RyaW5n
aWZpZXI6OmFwcGVuZFF1b3RlZFN0cmluZyk6IERpdHRvLgorICAgICAgICAoSlNDOjpTdHJpbmdp
Zmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6IERpdHRvLgorICAgICAgICAoSlNDOjpTdHJp
bmdpZmllcjo6c3RhcnROZXdMaW5lKTogRGl0dG8uCisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVy
OjpIb2xkZXI6OmFwcGVuZE5leHRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUv
TGl0ZXJhbFBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OkxleGVyOjps
ZXhTdHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6
IFJlbW92ZSB1bm5lZWRlZCBKU1N0cmluZ0J1aWxkZXIuaCAvIFN0cmluZ0J1aWxkZXIuaCBpbmNs
dWRlLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQnVpbGRlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHJ1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaDogQWRkZWQuIEluaGVyaXRzIGZyb20gV1RGOjpT
dHJpbmdCdWlsZGVyLCBleHRlbmRpbmcgaXQgYnkgdHdvIG1ldGhvZHMuCisgICAgICAgIChKU0M6
OlVTdHJpbmdCdWlsZGVyOjphcHBlbmQpOiBhcHBlbmQoY29uc3QgSlNDOjpVU3RyaW5nJikKKyAg
ICAgICAgKEpTQzo6VVN0cmluZ0J1aWxkZXI6OnRvVVN0cmluZyk6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oOiBDb3BpZWQgZnJvbSBydW50aW1lL1N0cmluZ0J1aWxkZXIuaC4g
TW92ZSBKU0M6OlVTdHJpbmcgcGFydHMgaW50byBydW50aW1lL1VTdHJpbmdCdWlsZGVyLmgKKyAg
ICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKTogUmVuYW1lZCBtX2J1ZmZlciB0byBi
dWZmZXIgZXZlcnl3aGVyZS4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6aXNFbXB0eSk6
IERpdHRvICgrIGNvbnN0aWZ5IG1ldGhvZCkuIAorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVy
OjpyZXNlcnZlQ2FwYWNpdHkpOiBEaXR0by4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6
cmVzaXplKTogRGl0dG8uCisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OnNpemUpOiBEaXR0
by4KKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6b3BlcmF0b3JbXSk6IERpdHRvLgorICAg
ICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjp0b1N0cmluZyk6IERpdHRvICgrIHJlbmFtZWQgZnJv
bSBidWlsZCgpKS4gUmV0dXJucyBhIFN0cmluZywgbm90IGFuIFVTdHJpbmcuIFRoZSBvbGQgYnVp
bGQoKSBtZXRob2QgaXMgbm93IG5hbWVkIHRvVVN0cmluZygpIGFuZCBsaXZlcyBpbiBVU3RyaW5n
QnVpbGRlci4KKwogMjAxMC0xMC0xMSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpJbmRleDogSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJl
dmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQxMSw2ICs0MTEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RyYWNpbmcuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9VU3RyaW5nLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmggXAorCUph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIuaCBcCiAJSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrR0NNYXAuaCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrR0NQdHIu
aCBcCiAJSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrUmFuZG9tLmggXApAQCAtNTA4LDYgKzUw
OSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L0NTdHJpbmcuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9DU3RyaW5nLmggXAog
CUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oIFwKKwlKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0hhc2guaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbEJhc2UuaCBc
CiAJSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgXApJbmRleDogSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5neXBpCShyZXZpc2lvbiA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw2ICszNDYsNyBAQAog
ICAgICAgICAgICAgJ3J1bnRpbWUvVHJhY2luZy5oJywKICAgICAgICAgICAgICdydW50aW1lL1VT
dHJpbmcuY3BwJywKICAgICAgICAgICAgICdydW50aW1lL1VTdHJpbmcuaCcsCisgICAgICAgICAg
ICAncnVudGltZS9VU3RyaW5nQnVpbGRlci5oJywKICAgICAgICAgICAgICdydW50aW1lL1dlYWtS
YW5kb20uaCcsCiAgICAgICAgICAgICAnd3RmL0Fsd2F5c0lubGluZS5oJywKICAgICAgICAgICAg
ICd3dGYvQVNDSUlDVHlwZS5oJywKQEAgLTQ1MCw2ICs0NTEsOCBAQAogICAgICAgICAgICAgJ3d0
Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvQ1N0cmlu
Zy5jcHAnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L0NTdHJpbmcuaCcsCisgICAgICAgICAgICAn
d3RmL3RleHQvU3RyaW5nQnVmZmVyLmgnLAorICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3RyaW5nSGFzaC5oJywKICAgICAgICAg
ICAgICd3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3Ry
aW5nSW1wbC5oJywKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagkocmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjUzLDYgKzEyNTMsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccnVudGltZVxVU3RyaW5nQnVpbGRlci5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
cnVudGltZVxVU3RyaW5nSW1wbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJ
KHJldmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L1dURi9XVEYudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02MDksNiArNjA5LDE0IEBACiAgCQkJ
Pg0KICAJCTwvRmlsZT4NCiAgCQk8RmlsZQ0KKyAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0Zlx0
ZXh0XFN0cmluZ0J1ZmZlci5oIg0KKyAJCQk+DQorIAkJPC9GaWxlPg0KKyAJCTxGaWxlDQorIAkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHRleHRcU3RyaW5nQnVpbGRlci5oIg0KKyAJCQk+DQor
IAkJPC9GaWxlPg0KKyAJCTxGaWxlDQogIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXHRleHRc
U3RyaW5nSGFzaC5oIg0KICAJCQk+DQogIAkJPC9GaWxlPg0KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiwxMCBAQAogLyog
QmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAkJMDZEMzU4QjMwREFBREFBNDAwM0IxNzRF
IC8qIE1haW5UaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDZEMzU4QTIwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJlYWQuY3BwICovOyB9
OwogCQkwNkQzNThCNDBEQUFEQUFBMDAzQjE3NEUgLyogTWFpblRocmVhZE1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2RDM1OEExMERBQUQ5QzQw
MDNCMTc0RSAvKiBNYWluVGhyZWFkTWFjLm1tICovOyB9OworCQkwODE0Njk0OTEyNjQzNzg1MDBE
RkY5MzUgLyogU3RyaW5nQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDgxNDY5NDgxMjY0Mzc1RTAwREZGOTM1IC8qIFN0cmluZ0J1aWxkZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhG
QTVCQjBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEZBNUI5MEVGNzZENDMwMDU3OEU2RiAv
KiBSYW5kb21OdW1iZXIuY3BwICovOyB9OwogCQkwODhGQTVCQzBFRjc2RDQzMDA1NzhFNkYgLyog
UmFuZG9tTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFuZG9tTnVtYmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDhEREE1QzExMjY0NjMx
NzAwNzUxNzMyIC8qIFVTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1
aWxkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwOEUyNzlFOTBFRjgzQjEwMDA3REI1MjMgLyogUmFuZG9tTnVtYmVyU2VlZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFMjc5RTgwRUY4M0IxMDAw
N0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLzsgfTsKIAkJMEIzMzBDMjcwRjM4QzYyMzAw
NjkyREUzIC8qIFR5cGVUcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEIzMzBDMjYwRjM4QzYyMzAwNjkyREUzIC8qIFR5cGVUcmFpdHMuY3Bw
ICovOyB9OwogCQkwQjREN0U2MzBGMzE5QUM4MDBBRDdFNTggLyogVHlwZVRyYWl0cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI0RDdFNjIwRjMxOUFD
ODAwQUQ3RTU4IC8qIFR5cGVUcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjE3LDcgKzIxOSw2IEBACiAJCTg2OEJGQTE4MTE3Q0YxOTkw
MEI5MDhCMSAvKiBXVEZTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2OEJGQTE2MTE3Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjhCRkE2MDEx
N0QwNDgyMDBCOTA4QjEgLyogU3RhdGljQ29uc3RydWN0b3JzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjhCRkE1RjExN0QwNDgyMDBCOTA4QjEgLyog
U3RhdGljQ29uc3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY5MDIzMTUxMjA5MkQ1QzAwNjMwQUY5IC8qIFBhZ2VSZXNlcnZhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5MDIz
MTQxMjA5MkQ1QzAwNjMwQUY5IC8qIFBhZ2VSZXNlcnZhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTg2OThCODY5MTBENDREOTQwMEQ4RDAx
QiAvKiBTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4Njk4Qjg2ODEwRDQ0RDk0MDBEOEQwMUIgLyogU3RyaW5nQnVpbGRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUQwNEFG
MTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlEMDRBRTExOTNCNTRE
MDA4MDM0NzUgLyogQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3MEU4QzZENEEwMDg3
MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QTkwRUQwMEVF
N0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QTkwRUNGMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRB
cml0aG1ldGljLmNwcCAqLzsgfTsKQEAgLTYyOSw4ICs2MzAsMTAgQEAKIAkJMDZEMzU4QTEwREFB
RDlDNDAwM0IxNzRFIC8qIE1haW5UaHJlYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBNYWluVGhyZWFkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNkQzNThBMjBEQUFEOUM0MDAzQjE3NEUgLyogTWFpblRocmVhZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWluVGhyZWFkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDZEMzU4QTMwREFBRDlDNDAwM0IxNzRFIC8qIE1haW5UaHJl
YWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFpblRocmVhZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwODE0Njk0ODEyNjQzNzVFMDBERkY5MzUgLyogU3Ry
aW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHJpbmdCdWls
ZGVyLmg7IHBhdGggPSB0ZXh0L1N0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDg4RkE1QjkwRUY3NkQ0MzAwNTc4RTZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5kb21OdW1iZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhGQTVCQTBFRjc2RDQzMDA1NzhFNkYgLyogUmFu
ZG9tTnVtYmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmRvbU51bWJl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEREQTVCQjEyNjQ1RjFEMDA3NTE3
MzIgLyogVVN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VVN0cmluZ0J1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhFMjc5RTgw
RUY4M0IxMDAwN0RCNTIzIC8qIFJhbmRvbU51bWJlclNlZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmFuZG9tTnVtYmVyU2VlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwQjMzMEMyNjBGMzhDNjIzMDA2OTJERTMgLyogVHlwZVRyYWl0cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUeXBlVHJhaXRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEI0RDdFNjIwRjMxOUFDODAwQUQ3RTU4IC8qIFR5cGVUcmFp
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZVRyYWl0cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIyLDcgKzgyNSw2IEBACiAJCTg2OEJGQTE2MTE3
Q0YxOTkwMEI5MDhCMSAvKiBXVEZTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV1RGU3RyaW5nLmg7IHBhdGggPSB0ZXh0L1dURlN0cmluZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjhCRkE1RjExN0QwNDgyMDBCOTA4QjEgLyogU3RhdGljQ29uc3Ry
dWN0b3JzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY0NvbnN0cnVj
dG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjkwMjMxNDEyMDkyRDVDMDA2
MzBBRjkgLyogUGFnZVJlc2VydmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBhZ2VSZXNlcnZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4Njk4
Qjg2ODEwRDQ0RDk0MDBEOEQwMUIgLyogU3RyaW5nQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2OUQwNEFFMTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFRyYW5zY2Vu
ZGVudGFsRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY5RUJDQjYw
RThDNkQ0QTAwODcyMkNDIC8qIFJlc3VsdFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzdWx0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkE5
MEVDRjBFRTdENTFGMDBBQjM1MEQgLyogSklUQXJpdGhtZXRpYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRBcml0aG1ldGljLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3OTMsNyArMTc5NSw2IEBACiAJCQkJN0UyQzZDOTgwRDMxQzZCNjAw
MkQ0NEUyIC8qIFNjb3BlQ2hhaW5NYXJrLmggKi8sCiAJCQkJOTMzMDNGRTgwRTZBNzJCNTAwNzg2
RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgKi8sCiAJCQkJOTMzMDNGRUEwRTZBNzJDMDAwNzg2RTZB
IC8qIFNtYWxsU3RyaW5ncy5oICovLAotCQkJCTg2OThCODY4MTBENDREOTQwMEQ4RDAxQiAvKiBT
dHJpbmdCdWlsZGVyLmggKi8sCiAJCQkJODZCNkRBMDExMjEzMkI5QTAwMEQzMTZGIC8qIFN0cmlu
Z0NvbmNhdGVuYXRlLmggKi8sCiAJCQkJQkMxOEMzQzAwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmlu
Z0NvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQlCQzE4QzNDMTBFMTZFRTMzMDBCMzQ0NjAgLyogU3Ry
aW5nQ29uc3RydWN0b3IuaCAqLywKQEAgLTE4MTUsNiArMTgxNiw3IEBACiAJCQkJNUQ1MzcyNkUw
RTFDNTQ4ODAwMjFFNTQ5IC8qIFRyYWNpbmcuaCAqLywKIAkJCQlGNjkyQTg4NTAyNTU1OTdEMDFG
RjYwRjcgLyogVVN0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8q
IFVTdHJpbmcuaCAqLywKKwkJCQkwOEREQTVCQjEyNjQ1RjFEMDA3NTE3MzIgLyogVVN0cmluZ0J1
aWxkZXIuaCAqLywKIAkJCQkxNEJGQ0U2ODEwQ0RCMUZDMDAzNjRDQ0UgLyogV2Vha0dDTWFwLmgg
Ki8sCiAJCQkJMTQwMzVEQjAxMERCRkIyQTAwRkZGRkU3IC8qIFdlYWtHQ1B0ci5oICovLAogCQkJ
CTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9tLmggKi8sCkBAIC0xODM0LDYg
KzE4MzYsNyBAQAogCQkJCTg2NTY1NzQwMTE1QkUzREEwMDI5MUY0MCAvKiBDU3RyaW5nLmNwcCAq
LywKIAkJCQk4NjU2NTc0MTExNUJFM0RBMDAyOTFGNDAgLyogQ1N0cmluZy5oICovLAogCQkJCTg2
Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLywKKwkJCQkwODE0Njk0
ODEyNjQzNzVFMDBERkY5MzUgLyogU3RyaW5nQnVpbGRlci5oICovLAogCQkJCTg2OEJGQTA1MTE3
Q0VGRDEwMEI5MDhCMSAvKiBTdHJpbmdIYXNoLmggKi8sCiAJCQkJODY4QkZBMDYxMTdDRUZEMTAw
QjkwOEIxIC8qIFN0cmluZ0ltcGwuY3BwICovLAogCQkJCTg2OEJGQTA3MTE3Q0VGRDEwMEI5MDhC
MSAvKiBTdHJpbmdJbXBsLmggKi8sCkBAIC0yMjU2LDcgKzIyNTksNyBAQAogCQkJCTg2OEJGQTYw
MTE3RDA0ODIwMEI5MDhCMSAvKiBTdGF0aWNDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMUI0NDdBMEVDQ0Q3M0IwMDRGNEREMSAvKiBTdGRMaWJFeHRyYXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTg2OThCODY5MTBENDREOTQwMEQ4RDAxQiAvKiBTdHJpbmdCdWlsZGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwODE0Njk0OTEyNjQzNzg1MDBERkY5MzUgLyogU3RyaW5n
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NjYwRTE2RjVDRDAwQjM0NDYwIC8q
IFN0cmluZ0NvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2NzBFMTZGNUNE
MDBCMzQ0NjAgLyogU3RyaW5nRXh0cmFzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjhCRkEwRDEx
N0NFRkQxMDBCOTA4QjEgLyogU3RyaW5nSGFzaC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjkyLDYg
KzIyOTUsNyBAQAogCQkJCUJDMThDNDc0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVbmljb2RlSWN1Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ3NTBFMTZGNUNEMDBCMzQ0NjAgLyogVW51c2VkUGFy
YW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDc2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBVU3Ry
aW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQkwOEREQTVDMTEyNjQ2MzE3MDA3NTE3MzIgLyogVVN0
cmluZ0J1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDc3MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTdGRjc3MTExMjEzMUQyMDAwNzZBMTkg
LyogVmFsdWVDaGVjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NzgwRTE2RjVDRDAwQjM0
NDYwIC8qIFZlY3Rvci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgot
I2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgog
I2luY2x1ZGUgIlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2NywxMyArMzY3LDEz
IEBAIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBGdW5jdGlvbkUKIFVTdHJpbmcgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CiB7CiAgICAgRnVuY3Rpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzID0gKm1fcGFyYW1ldGVyczsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CisgICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKHNpemVfdCBwb3Mg
PSAwOyBwb3MgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytwb3MpIHsKICAgICAgICAgaWYgKCFidWls
ZGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIsICIpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZChwYXJhbWV0ZXJzW3Bvc10udXN0cmluZygpKTsKICAgICB9Ci0gICAg
cmV0dXJuIGJ1aWxkZXIuYnVpbGQoKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1VTdHJpbmcoKTsK
IH0KIAogUGFzc093blB0cjxFeGNlcHRpb25JbmZvPiBQcm9ncmFtRXhlY3V0YWJsZTo6cmVwYXJz
ZUV4Y2VwdGlvbkluZm8oU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKQpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiA2
OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJMZXhlci5oIgogI2lu
Y2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgorI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29u
Y2F0ZW5hdGUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04Myw3ICs4Myw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICBlbHNlIGlmIChhcmdzLnNpemUo
KSA9PSAxKQogICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygiKGZ1bmN0aW9uKCkgeyAiLCBh
cmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCAiXG59KSIpOwogICAgIGVsc2UgewotICAgICAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIFVTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoZnVuY3Rpb24oIik7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYykpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MTsgaSA8IGFyZ3Muc2l6ZSgpIC0gMTsgaSsrKSB7CkBAIC05Myw3ICs5Myw3IEBAIEpTT2JqZWN0
KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGUKICAgICAgICAgYnVpbGRlci5hcHBlbmQo
IikgeyAiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdChhcmdzLnNpemUoKSAtIDEp
LnRvU3RyaW5nKGV4ZWMpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxufSkiKTsKLSAgICAg
ICAgcHJvZ3JhbSA9IGJ1aWxkZXIuYnVpbGQoKTsKKyAgICAgICAgcHJvZ3JhbSA9IGJ1aWxkZXIu
dG9VU3RyaW5nKCk7CiAgICAgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiA2OTU2MSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiTGl0ZXJhbFBhcnNlci5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVkZSAiU3Ry
aW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIlVTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiZHRv
YS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC01NjMsNyAr
NTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRQogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVbmVzY2FwZShFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIFVTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KTsKICAgICBpbnQgayA9IDA7CiAgICAgaW50IGxlbiA9IHN0ci5sZW5ndGgoKTsKQEAgLTU4NSw3
ICs1ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNVCiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCpjKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKGV4ZWMsIGJ1aWxkZXIuYnVpbGQoKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgYnVpbGRlci50b1VTdHJpbmcoKSkpOwogfQogCiAjaWZu
ZGVmIE5ERUJVRwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCShyZXZp
c2lvbiA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgi
CiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKLSNp
bmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiVVN0cmluZ0J1aWxkZXIuaCIKICNp
bmNsdWRlICJTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CiAKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBKU09iamVjdCogb2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KIAotICAgICAgICBib29sIGFwcGVuZE5leHRQ
cm9wZXJ0eShTdHJpbmdpZmllciYsIFN0cmluZ0J1aWxkZXImKTsKKyAgICAgICAgYm9vbCBhcHBl
bmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImLCBVU3RyaW5nQnVpbGRlciYpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgSlNPYmplY3QqIGNvbnN0IG1fb2JqZWN0OwpAQCAtOTgsMTcgKzk4LDE3
IEBAIHByaXZhdGU6CiAKICAgICBmcmllbmQgY2xhc3MgSG9sZGVyOwogCi0gICAgc3RhdGljIHZv
aWQgYXBwZW5kUXVvdGVkU3RyaW5nKFN0cmluZ0J1aWxkZXImLCBjb25zdCBVU3RyaW5nJik7Cisg
ICAgc3RhdGljIHZvaWQgYXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiwgY29uc3Qg
VVN0cmluZyYpOwogCiAgICAgSlNWYWx1ZSB0b0pTT04oSlNWYWx1ZSwgY29uc3QgUHJvcGVydHlO
YW1lRm9yRnVuY3Rpb25DYWxsJik7CiAKICAgICBlbnVtIFN0cmluZ2lmeVJlc3VsdCB7IFN0cmlu
Z2lmeUZhaWxlZCwgU3RyaW5naWZ5U3VjY2VlZGVkLCBTdHJpbmdpZnlGYWlsZWREdWVUb1VuZGVm
aW5lZFZhbHVlIH07Ci0gICAgU3RyaW5naWZ5UmVzdWx0IGFwcGVuZFN0cmluZ2lmaWVkVmFsdWUo
U3RyaW5nQnVpbGRlciYsIEpTVmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5
TmFtZUZvckZ1bmN0aW9uQ2FsbCYpOworICAgIFN0cmluZ2lmeVJlc3VsdCBhcHBlbmRTdHJpbmdp
ZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJiwgSlNWYWx1ZSwgSlNPYmplY3QqIGhvbGRlciwgY29u
c3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsJik7CiAKICAgICBib29sIHdpbGxJbmRlbnQo
KSBjb25zdDsKICAgICB2b2lkIGluZGVudCgpOwogICAgIHZvaWQgdW5pbmRlbnQoKTsKLSAgICB2
b2lkIHN0YXJ0TmV3TGluZShTdHJpbmdCdWlsZGVyJikgY29uc3Q7CisgICAgdm9pZCBzdGFydE5l
d0xpbmUoVVN0cmluZ0J1aWxkZXImKSBjb25zdDsKIAogICAgIFN0cmluZ2lmaWVyKiBjb25zdCBt
X25leHRTdHJpbmdpZmllclRvTWFyazsKICAgICBFeGVjU3RhdGUqIGNvbnN0IG1fZXhlYzsKQEAg
LTI3MCwxNiArMjcwLDE2IEBAIEpTVmFsdWUgU3RyaW5naWZpZXI6OnN0cmluZ2lmeShKU1ZhbHVl
IHYKICAgICBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGwgZW1wdHlQcm9wZXJ0eU5hbWUobV9l
eGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKICAgICBv
YmplY3QtPnB1dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0
eUlkZW50aWZpZXIsIHZhbHVlKTsKIAotICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgIFVT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKICAgICBpZiAoYXBwZW5kU3RyaW5naWZpZWRWYWx1ZShyZXN1
bHQsIHZhbHVlLCBvYmplY3QsIGVtcHR5UHJvcGVydHlOYW1lKSAhPSBTdHJpbmdpZnlTdWNjZWVk
ZWQpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGlmIChtX2V4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICByZXR1cm4ganNTdHJp
bmcobV9leGVjLCByZXN1bHQuYnVpbGQoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKG1fZXhlYywg
cmVzdWx0LnRvVVN0cmluZygpKTsKIH0KIAotdm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVk
U3RyaW5nKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFVTdHJpbmcmIHZhbHVlKQordm9p
ZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVy
LCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpbnQgbGVuZ3RoID0gdmFsdWUubGVuZ3Ro
KCk7CiAKQEAgLTM2MSw3ICszNjEsNyBAQCBpbmxpbmUgSlNWYWx1ZSBTdHJpbmdpZmllcjo6dG9K
U09OKEpTVmFsCiAgICAgcmV0dXJuIGNhbGwobV9leGVjLCBvYmplY3QsIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdmFsdWUsIGFyZ3MpOwogfQogCi1TdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0
cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIs
IEpTVmFsdWUgdmFsdWUsIEpTT2JqZWN0KiBob2xkZXIsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1
bmN0aW9uQ2FsbCYgcHJvcGVydHlOYW1lKQorU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBT
dHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgSlNWYWx1ZSB2YWx1ZSwgSlNPYmplY3QqIGhvbGRlciwgY29uc3QgUHJvcGVydHlOYW1lRm9y
RnVuY3Rpb25DYWxsJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgLy8gQ2FsbCB0aGUgdG9KU09OIGZ1
bmN0aW9uLgogICAgIHZhbHVlID0gdG9KU09OKHZhbHVlLCBwcm9wZXJ0eU5hbWUpOwpAQCAtNDc3
LDcgKzQ3Nyw3IEBAIGlubGluZSB2b2lkIFN0cmluZ2lmaWVyOjp1bmluZGVudCgpCiAgICAgbV9p
bmRlbnQgPSBtX3JlcGVhdGVkR2FwLnN1YnN0cmluZ1NoYXJpbmdJbXBsKDAsIG1faW5kZW50Lmxl
bmd0aCgpIC0gbV9nYXAubGVuZ3RoKCkpOwogfQogCi1pbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6
c3RhcnROZXdMaW5lKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CitpbmxpbmUgdm9pZCBT
dHJpbmdpZmllcjo6c3RhcnROZXdMaW5lKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAog
ewogICAgIGlmIChtX2dhcC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTQ5Miw3ICs0
OTIsNyBAQCBpbmxpbmUgU3RyaW5naWZpZXI6OkhvbGRlcjo6SG9sZGVyKEpTT2JqCiB7CiB9CiAK
LWJvb2wgU3RyaW5naWZpZXI6OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVy
JiBzdHJpbmdpZmllciwgU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKK2Jvb2wgU3RyaW5naWZpZXI6
OkhvbGRlcjo6YXBwZW5kTmV4dFByb3BlcnR5KFN0cmluZ2lmaWVyJiBzdHJpbmdpZmllciwgVVN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiB7CiAgICAgQVNTRVJUKG1faW5kZXggPD0gbV9zaXplKTsK
IApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCShyZXZpc2lv
biA2OTU2MSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJMZXhlci5oIgotI2luY2x1ZGUgIlN0cmluZ0J1
aWxkZXIuaCIKKyNpbmNsdWRlICJVU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJ
SUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHRl
bXBsYXRlIDxMaXRlcmFsUGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKIHsKICAgICArK21fcHRyOwog
ICAgIGNvbnN0IFVDaGFyKiBydW5TdGFydDsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgVVN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBkbyB7CiAgICAgICAgIHJ1blN0YXJ0ID0g
bV9wdHI7CiAgICAgICAgIHdoaWxlIChtX3B0ciA8IG1fZW5kICYmIGlzU2FmZVN0cmluZ0NoYXJh
Y3Rlcjxtb2RlPigqbV9wdHIpKQpAQCAtMjAwLDcgKzIwMCw3IEBAIHRlbXBsYXRlIDxMaXRlcmFs
UGFyc2VyOjpQYXJzZXJNb2RlIG1vZGUKICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgKm1fcHRy
ICE9ICciJykKICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogCi0gICAgdG9rZW4uc3RyaW5nVG9r
ZW4gPSBidWlsZGVyLmJ1aWxkKCk7CisgICAgdG9rZW4uc3RyaW5nVG9rZW4gPSBidWlsZGVyLnRv
VVN0cmluZygpOwogICAgIHRva2VuLnR5cGUgPSBUb2tTdHJpbmc7CiAgICAgdG9rZW4uZW5kID0g
KyttX3B0cjsKICAgICByZXR1cm4gVG9rU3RyaW5nOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEw
ICsyNSw4IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKICNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlRnVuY3Rpb24uaCIKLSNpbmNs
dWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiZHRvYS5oIgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0RlY2ltYWxOdW1iZXIuaD4KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTU2MSkKKysrIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2lmbmRlZiBTdHJpbmdCdWlsZGVyX2gKLSNkZWZpbmUgU3RyaW5nQnVpbGRlcl9oCi0KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTdHJpbmdCdWls
ZGVyIHsKLXB1YmxpYzoKLSAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciB1KQotICAgIHsKLSAg
ICAgICAgYnVmZmVyLmFwcGVuZCh1KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBj
aGFyKiBzdHIpCi0gICAgewotICAgICAgICBhcHBlbmQoc3RyLCBzdHJsZW4oc3RyKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKQotICAgIHsK
LSAgICAgICAgcmVzZXJ2ZUNhcGFjaXR5KGJ1ZmZlci5zaXplKCkgKyBsZW4pOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgYnVmZmVyLmFwcGVu
ZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXplX3QgbGVuKQotICAgIHsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZChzdHIsIGxlbik7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0
cmluZyYgc3RyKQotICAgIHsKLSAgICAgICAgYnVmZmVyLmFwcGVuZChzdHIuY2hhcmFjdGVycygp
LCBzdHIubGVuZ3RoKCkpOwotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJ1
ZmZlci5pc0VtcHR5KCk7IH0KLSAgICB2b2lkIHJlc2VydmVDYXBhY2l0eShzaXplX3QgbmV3Q2Fw
YWNpdHkpCi0gICAgewotICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPCBidWZmZXIuY2FwYWNpdHko
KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYnVmZmVyLnJlc2VydmVDYXBhY2l0eShz
dGQ6Om1heChuZXdDYXBhY2l0eSwgYnVmZmVyLmNhcGFjaXR5KCkgKyBidWZmZXIuY2FwYWNpdHko
KSAvIDQgKyAxKSk7Ci0gICAgfQotICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7IGJ1ZmZl
ci5yZXNpemUoc2l6ZSk7IH0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGJ1ZmZl
ci5zaXplKCk7IH0KLQotICAgIFVDaGFyIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0
dXJuIGJ1ZmZlci5hdChpKTsgfQotCi0gICAgVVN0cmluZyBidWlsZCgpCi0gICAgewotICAgICAg
ICBidWZmZXIuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgQVNTRVJUKGJ1ZmZlci5kYXRhKCkgfHwg
IWJ1ZmZlci5zaXplKCkpOwotICAgICAgICByZXR1cm4gVVN0cmluZzo6YWRvcHQoYnVmZmVyKTsK
LSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBWZWN0b3I8VUNoYXIsIDY0PiBidWZmZXI7Ci19Owot
Ci19Ci0KLSNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nQnVpbGRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIu
aAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZ0J1aWxkZXIu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVTdHJpbmdCdWlsZGVyX2gKKyNkZWZpbmUg
VVN0cmluZ0J1aWxkZXJfaAorCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVVN0cmluZ0J1aWxkZXIgOiBwdWJsaWMgU3RyaW5n
QnVpbGRlciB7CitwdWJsaWM6CisgICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNlIG1ldGhvZHMs
IG90aGVyd2hpc2UgYXBwZW5kKCkgaXMgYW1iaWdpb3VzLgorICAgIHZvaWQgYXBwZW5kKGNvbnN0
IFVDaGFyIHUpIHsgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKHUpOyB9CisgICAgdm9pZCBhcHBlbmQo
Y29uc3QgY2hhciogc3RyKSB7IFN0cmluZ0J1aWxkZXI6OmFwcGVuZChzdHIpOyB9CisgICAgdm9p
ZCBhcHBlbmQoY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKSB7IFN0cmluZ0J1aWxkZXI6OmFw
cGVuZChzdHIsIGxlbik7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXpl
X3QgbGVuKSB7IFN0cmluZ0J1aWxkZXI6OmFwcGVuZChzdHIsIGxlbik7IH0KKworICAgIHZvaWQg
YXBwZW5kKGNvbnN0IFVTdHJpbmcmIHN0cikKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLmFwcGVu
ZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOworICAgIH0KKworICAgIFVTdHJpbmcg
dG9VU3RyaW5nKCkKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLnNocmlua1RvRml0KCk7CisgICAg
ICAgIEFTU0VSVChtX2J1ZmZlci5kYXRhKCkgfHwgIW1fYnVmZmVyLnNpemUoKSk7CisgICAgICAg
IHJldHVybiBVU3RyaW5nOjphZG9wdChtX2J1ZmZlcik7CisgICAgfQorfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBVU3RyaW5nQnVpbGRlcl9oCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTQ2NCkJKGZyb20gSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdCdWlsZGVyLmg6Njk0NjQpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFN0cmluZ0J1aWxkZXJfaAorI2RlZmluZSBTdHJpbmdCdWlsZGVyX2gKKworI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cmluZ0J1aWxkZXIgewor
cHVibGljOgorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFVDaGFyIHUpCisgICAgeworICAgICAgICBi
dWZmZXIuYXBwZW5kKHUpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIHN0
cikKKyAgICB7CisgICAgICAgIGFwcGVuZChzdHIsIHN0cmxlbihzdHIpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBsZW4pCisgICAgeworICAgICAg
ICByZXNlcnZlQ2FwYWNpdHkoYnVmZmVyLnNpemUoKSArIGxlbik7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KHN0cltpXSkpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5k
KGNvbnN0IFVDaGFyKiBzdHIsIHNpemVfdCBsZW4pCisgICAgeworICAgICAgICBidWZmZXIuYXBw
ZW5kKHN0ciwgbGVuKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZChjb25zdCBVU3RyaW5nJiBz
dHIpCisgICAgeworICAgICAgICBidWZmZXIuYXBwZW5kKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5s
ZW5ndGgoKSk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYnVmZmVyLmlz
RW1wdHkoKTsgfQorICAgIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KHNpemVfdCBuZXdDYXBhY2l0eSkK
KyAgICB7CisgICAgICAgIGlmIChuZXdDYXBhY2l0eSA8IGJ1ZmZlci5jYXBhY2l0eSgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBidWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHN0ZDo6bWF4
KG5ld0NhcGFjaXR5LCBidWZmZXIuY2FwYWNpdHkoKSArIGJ1ZmZlci5jYXBhY2l0eSgpIC8gNCAr
IDEpKTsKKyAgICB9CisgICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUpIHsgYnVmZmVyLnJlc2l6
ZShzaXplKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gYnVmZmVyLnNpemUo
KTsgfQorCisgICAgVUNoYXIgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gYnVm
ZmVyLmF0KGkpOyB9CisKKyAgICBVU3RyaW5nIGJ1aWxkKCkKKyAgICB7CisgICAgICAgIGJ1ZmZl
ci5zaHJpbmtUb0ZpdCgpOworICAgICAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSB8fCAhYnVmZmVy
LnNpemUoKSk7CisgICAgICAgIHJldHVybiBVU3RyaW5nOjphZG9wdChidWZmZXIpOworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIFZlY3RvcjxVQ2hhciwgNjQ+IGJ1ZmZlcjsKK307CisKK30KKwor
I2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCShyZXZp
c2lvbiA2OTQ2NCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTQgKzI3LDE1IEBACiAjZGVmaW5lIFN0cmluZ0J1aWxkZXJf
aAogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCi1uYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBTdHJpbmdC
dWlsZGVyIHsKIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciB1KQogICAgIHsK
LSAgICAgICAgYnVmZmVyLmFwcGVuZCh1KTsKKyAgICAgICAgbV9idWZmZXIuYXBwZW5kKHUpOwog
ICAgIH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIHN0cikKQEAgLTQ0LDQ0ICs0NSw0
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBzdHIsIHNpemVfdCBs
ZW4pCiAgICAgewotICAgICAgICByZXNlcnZlQ2FwYWNpdHkoYnVmZmVyLnNpemUoKSArIGxlbik7
CisgICAgICAgIHJlc2VydmVDYXBhY2l0eShtX2J1ZmZlci5zaXplKCkgKyBsZW4pOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgYnVmZmVyLmFw
cGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKKyAgICAgICAgICAgIG1f
YnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzdHJbaV0pKTsKICAgICB9
CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBVQ2hhciogc3RyLCBzaXplX3QgbGVuKQogICAgIHsK
LSAgICAgICAgYnVmZmVyLmFwcGVuZChzdHIsIGxlbik7CisgICAgICAgIG1fYnVmZmVyLmFwcGVu
ZChzdHIsIGxlbik7CiAgICAgfQogCi0gICAgdm9pZCBhcHBlbmQoY29uc3QgVVN0cmluZyYgc3Ry
KQorICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgc3RyKQogICAgIHsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOworICAgICAgICBtX2J1
ZmZlci5hcHBlbmQoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpKTsKICAgICB9CiAKLSAg
ICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBidWZmZXIuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuaXNFbXB0eSgpOyB9CiAgICAgdm9pZCBy
ZXNlcnZlQ2FwYWNpdHkoc2l6ZV90IG5ld0NhcGFjaXR5KQogICAgIHsKLSAgICAgICAgaWYgKG5l
d0NhcGFjaXR5IDwgYnVmZmVyLmNhcGFjaXR5KCkpCisgICAgICAgIGlmIChuZXdDYXBhY2l0eSA8
IG1fYnVmZmVyLmNhcGFjaXR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJ1ZmZl
ci5yZXNlcnZlQ2FwYWNpdHkoc3RkOjptYXgobmV3Q2FwYWNpdHksIGJ1ZmZlci5jYXBhY2l0eSgp
ICsgYnVmZmVyLmNhcGFjaXR5KCkgLyA0ICsgMSkpOworICAgICAgICBtX2J1ZmZlci5yZXNlcnZl
Q2FwYWNpdHkoc3RkOjptYXgobmV3Q2FwYWNpdHksIG1fYnVmZmVyLmNhcGFjaXR5KCkgKyBtX2J1
ZmZlci5jYXBhY2l0eSgpIC8gNCArIDEpKTsKICAgICB9Ci0gICAgdm9pZCByZXNpemUoc2l6ZV90
IHNpemUpIHsgYnVmZmVyLnJlc2l6ZShzaXplKTsgfQotICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gYnVmZmVyLnNpemUoKTsgfQorICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKSB7
IG1fYnVmZmVyLnJlc2l6ZShzaXplKTsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9idWZmZXIuc2l6ZSgpOyB9CiAKLSAgICBVQ2hhciBvcGVyYXRvcltdKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBidWZmZXIuYXQoaSk7IH0KKyAgICBVQ2hhciBvcGVyYXRvcltdKHNpemVf
dCBpKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5hdChpKTsgfQogCi0gICAgVVN0cmluZyBidWls
ZCgpCisgICAgU3RyaW5nIHRvU3RyaW5nKCkKICAgICB7Ci0gICAgICAgIGJ1ZmZlci5zaHJpbmtU
b0ZpdCgpOwotICAgICAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSB8fCAhYnVmZmVyLnNpemUoKSk7
Ci0gICAgICAgIHJldHVybiBVU3RyaW5nOjphZG9wdChidWZmZXIpOworICAgICAgICBtX2J1ZmZl
ci5zaHJpbmtUb0ZpdCgpOworICAgICAgICBBU1NFUlQobV9idWZmZXIuZGF0YSgpIHx8ICFtX2J1
ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChtX2J1ZmZlcik7CiAg
ICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgVmVjdG9yPFVDaGFyLCA2ND4gYnVmZmVyOworICAgIFZl
Y3RvcjxVQ2hhciwgNjQ+IG1fYnVmZmVyOwogfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV1RGCiAK
LSNlbmRpZgordXNpbmcgV1RGOjpTdHJpbmdCdWlsZGVyOworCisjZW5kaWYgLy8gU3RyaW5nQnVp
bGRlcl9oCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gNjk1NzYpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEwLTEwLTEyICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVuaWZ5IEpTQzo6U3RyaW5nQnVpbGRlciAmIFdlYkNvcmU6OlN0cmluZ0J1
aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3
NTM4CisKKyAgICAgICAgSlNDOjpTdHJpbmdCdWlsZGVyIG9wZXJhdGVzIG9uIGEgVmVjdG9yPFVD
aGFyLCA2ND4gYW5kIGFsbG93cyB0byBidWlsZCBhIHN0cmluZyBiYXNlZCBvbiBhIHN0cmVhbSBv
ZiBjaGFyYWN0ZXJzIGluIGFuIGVmZmljaWVudCBtYW5uZXIuCisgICAgICAgIFdlYkNvcmU6OlN0
cmluZ0J1aWxkZXIgb3BlcmF0ZXMgb24gYSBWZWN0b3I8U3RyaW5nLCAxNj4gYW5kIGFsbG93cyB0
byBjb25jYXQgYW4gYXJiaXRhcnkgbnVtYmVyIG9mIFN0cmluZ3MuIEl0J3Mgbm90IGVmZmljaWVu
dCBpbiBoYW5kbGluZyBzaW5nbGUKKyAgICAgICAgY2hhcmFjdGVycywgYXMgYSBTdHJpbmcgd2l0
aCBsZW5ndGg9MSBoYXMgdG8gYmUgY29uc3RydWN0ZWQgZm9yIHRob3NlLiBBbiBhbmFseXNpcyBv
ZiB0aGUgY2FsbGVycyBvZiBXZWJDb3JlOjpTdHJpbmdCdWlsZGVyIHNob3dzIHRoYXQKKyAgICAg
ICAgbW9zdCBjYWxsc2l0ZXMgYWN0dWFsbHkgY29tYmluZSBTdHJpbmdzIGFuZCBzaW5nbGUgY2hh
cmFjdGVycywgc28gdXNpbmcgYSBWZWN0b3I8VUNoYXI+IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50
LiBUaG9zZSB3aG8gb25seSBjb21iaW5lIGxhcmdlCisgICAgICAgIHN0cmluZ3MgYXJlIG9ubHkg
dXNlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBzbyBpdCdzIGZpbmUgdG8gc3dpdGNoIHRoZW0g
dG8gYSBWZWN0b3I8VUNoYXI+IGFwcHJvYWNoIGFzIHdlbGwuCisKKyAgICAgICAgUmVwbGFjZSBX
ZWJDb3JlOjpTdHJpbmdCdWlsZGVyIHdpdGggSlNDOjpTdHJpbmdCdWlsZGVyLCBhbmQgbW92ZSBp
dCB0byB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggaW50byB0aGUgV1RGIG5hbWVzcGFjZS4KKyAg
ICAgICAgV2hpbGUgSSB3YXMgYXQgaXQgcmVtb3ZlIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVy
LmgsIGFzIGl0IHdhcyBvbmx5IGluY2x1ZGluZyB3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaC4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eSwgdGh1cyBubyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBBbmRyb2lkLm1rOiBSZW1vdmUgcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVy
LiogYW5kIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmguCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6IERpdHRvLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBEaXR0by4gCisgICAgICAg
ICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOiBEaXR0by4K
KyAgICAgICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9T
dHJpbmdCdWlsZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9VU3RyaW5nQnVpbGRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVy
cy93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdFN0cmluZy5oOiBEb24ndCBpbmNsdWRlIFBsYXRmb3JtU3RyaW5nLmggYnV0IHd0Zi90
ZXh0L1dURlN0cmluZy5oLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0U3RyaW5nOjpvcGVyYXRv
cis9KTogVXNlIEpTQzo6VVN0cmluZ0J1aWxkZXIgaW5zdGVhZCBvZiBKU0M6OlN0cmluZ0J1aWxk
ZXIuCisgICAgICAgICogYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwOiBVc2UgV1RGOjpTdHJpbmdC
dWlsZGVyICgrIHVzZSBhcHBlbmQoY29uc3QgVUNoYXIpIGZvciBzaW5nbGUgY2hhcmFjdGVycyku
CisgICAgICAgICogY3NzL01lZGlhUXVlcnkuY3BwOiBEaXR0by4KKyAgICAgICAgKiBjc3MvTWVk
aWFRdWVyeUV4cC5jcHA6IERpdHRvLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjphcHBlbmRUZXh0Q29udGVudCk6IE1hbnVhbGx5IHRyYWNr
IHdoZXRlciB0aGUgU3RyaW5nQnVpbGRlciBjb250ZW50IGlzIGVtcHR5IG9yIG51bGwsIHRoZSBu
ZXcgU3RyaW5nQnVpbGRlciBkb2Vzbid0IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBudWxsICYgZW1w
dHkgc3RyaW5ncy4KKyAgICAgICAgKiBkb20vTm9kZS5oOiBSZW1vdmUgYXBwZW5kVGV4dENvbnRl
bnQgZGVmaW5pdGlvbiwgaXQncyBub3QgbmVlZGVkIHRvIGJlIGV4cG9ydGVkLCByZW1vdmVzIHRo
ZSBuZWVkIGZvciBhIFN0cmluZ0J1aWxkZXIuaCBpbmNsdWRlIG9yIGZvcndhcmQgZGVjbGFyYXRp
b24uCisgICAgICAgICogaHRtbC9ET01Ub2tlbkxpc3QuY3BwOiBVc2UgV1RGOjpTdHJpbmdCdWls
ZGVyLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHA6IFJlbW92ZSB1
c2VsZXNzIFN0cmluZ0J1ZmZlci5oIGluY2x1ZGUuCisgICAgICAgICogcGxhdGZvcm0vYW5kcm9p
ZC9GaWxlU3lzdGVtQW5kcm9pZC5jcHA6IFVzZSBXVEY6OlN0cmluZ0J1aWxkZXIuCisgICAgICAg
ICogcGxhdGZvcm0vYnJldy9GaWxlU3lzdGVtQnJldy5jcHA6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcDogRGl0dG8gKCsgdXNlIGFwcGVu
ZChjb25zdCBVQ2hhcikgZm9yIHNpbmdsZSBjaGFyYWN0ZXJzKS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9ncHUvUE9ESW50ZXJ2YWwuaDogRGl0dG8gKE9ubHkgdXNlZCBhcyBkZWJ1Z2dp
bmcgaGVscGVyIGhlcmUsIGluIGRlYnVnIGJ1aWxkcykuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oOiBEaXR0byAoT25seSB1c2VkIGFzIGRlYnVnZ2lu
ZyBoZWxwZXIgaGVyZSwgaW4gZGVidWcgYnVpbGRzKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tOiBSZW1vdmUgdXNlbGVzcyBTdHJpbmdCdWlsZGVy
LmggaW5jbHVkZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHA6IFVzZSBXVEY6OlN0cmluZ0J1aWxkZXIs
IGFuZCB1c2UgYXBwZW5kKGNvbnN0IFVDaGFyKSBmb3Igc2luZ2xlIGNoYXJhY3RlcnMuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdp
bi5jcHA6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kUHJveHlTZXJ2ZXJTdHJpbmcpOiBVc2UgV1RGOjpT
dHJpbmdCdWlsZGVyLgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmg6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlLmNwcDogVXNlIFdURjo6U3RyaW5nQnVpbGRlci4K
KyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuY3BwOiBEaXR0by4KKyAgICAgICAg
KiBzdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuY3BwOiBTVkdQYXRoU3RyaW5nQnVpbGRlciB1c2Vk
IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoQ29uY2F0QWRkaW5nU3BhY2VzQmV0d2VlbkluZGl2aWR1
YWxTdHJpbmdzKSwgYWRhcHQgdG8gdGhlIGNoYW5nZSwgdGhhdCB0aGlzIG1vZGUgaXMgZ29uZSBu
b3cuCisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVpbGRlcjo6cmVzdWx0KTogSnVz
dCB1c2UgdG9TdHJpbmcoKSwgYXBwZW5kIGEgc3BhY2UgdG8gdGhlIGVuZCBvZiBlYWNoIGNvbW1h
bmQsIHdoZW4gYnVpbGRpbmcgdGhlIHN0cmluZy4gUmVtb3ZlIHRoZSBsYXN0IHRyYWlsaW5nIHNw
YWNlIGJlZm9yZSBidWlsZGluZyB0aGUgcmVzdWx0LgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0
aFN0cmluZ0J1aWxkZXI6Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5n
QnVpbGRlcjo6bGluZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWlsZGVy
OjpsaW5lVG9Ib3Jpem9udGFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWls
ZGVyOjpsaW5lVG9WZXJ0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoU3RyaW5nQnVp
bGRlcjo6Y3VydmVUb0N1YmljKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTdHJpbmdCdWls
ZGVyOjpjdXJ2ZVRvQ3ViaWNTbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmlu
Z0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0
cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmFyY1RvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhT
dHJpbmdCdWlsZGVyOjpjbG9zZVBhdGgpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU3RyaW5nQnVp
bGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsZWFudXAp
OiBTdHJpbmdCdWlsZGVyOjpjbGVhcigpIGlzIGdvbmUsIGp1c3QgY2xlYW51cCBieSBhc3NpZ25p
bmcgU3RyaW5nQnVpbGRlcigpLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDog
VXNlIFdURjo6U3RyaW5nQnVpbGRlci4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHA6IERpdHRvICgrIHVzZSBhcHBlbmQoY29uc3QgVUNoYXIpIGZvciBzaW5nbGUg
Y2hhcmFjdGVycykuCisKIDIwMTAtMTAtMDcgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6
IFdlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0FuZHJvaWQubWsJKHJl
dmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9BbmRyb2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC02
MDYsNyArNjA2LDYgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJ
cGxhdGZvcm0vdGV4dC9SZWd1bGFyRXhwcmVzc2lvbi5jcHAgXAogCXBsYXRmb3JtL3RleHQvU2Vn
bWVudGVkU3RyaW5nLmNwcCBcCiAJcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwIFwKLQlwbGF0Zm9y
bS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKIAlwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJh
dG9ySUNVLmNwcCBcCiAJcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWMuY3BwIFwKIAlwbGF0Zm9ybS90
ZXh0L1RleHRDb2RlY0lDVS5jcHAgXApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA2OTU2MSkKKysrIFdl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzNjEsNyArMTM2MSw2IEBA
IFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9u
LmNwcAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmNwcAogICAgIHBsYXRmb3Jt
L3RleHQvU3RyaW5nLmNwcAotICAgIHBsYXRmb3JtL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKICAg
ICBwbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4
dENvZGVjLmNwcAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjTGF0aW4xLmNwcApJbmRleDog
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI0NTUsOSArMjQ1NSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9uLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TZWdtZW50ZWRTdHJpbmcuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVu
dGVkU3RyaW5nLmggXAotCVdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWZmZXIuaCBcCi0J
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKLQlXZWJDb3JlL3BsYXRm
b3JtL3RleHQvU3RyaW5nQnVpbGRlci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5n
LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N1ZmZpeFRyZWUuaCBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
Z3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNjk1NjEp
CisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzE0Myw5ICszMTQz
LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vdGV4
dC9TdHJpbmdCdWZmZXIuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdHJpbmdCdWls
ZGVyLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvU3RyaW5nSGFzaC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9T
dWZmaXhUcmVlLmgnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLm9yZGVyCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL1dlYkNv
cmUub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTMzOTcsOSArMzM5Nyw2IEBAIF9fWk43V2ViQ29y
ZTE3SFRNTFNjcmlwdEVsZW1lbnQ4Y2hlY2tEVEQKIF9fWk43V2ViQ29yZTE3SFRNTFNjcmlwdEVs
ZW1lbnQxNWNoaWxkcmVuQ2hhbmdlZEViUE5TXzROb2RlRVMyX2kKIF9fWk43V2ViQ29yZTEzU2Ny
aXB0RWxlbWVudDE1Y2hpbGRyZW5DaGFuZ2VkRVJOU18xN1NjcmlwdEVsZW1lbnREYXRhRQogX19a
Tks3V2ViQ29yZTROb2RlMTF0ZXh0Q29udGVudEViCi1fX1pOSzdXZWJDb3JlNE5vZGUxN2FwcGVu
ZFRleHRDb250ZW50RWJSTlNfMTNTdHJpbmdCdWlsZGVyRQotX19aTjdXZWJDb3JlMTNTdHJpbmdC
dWlsZGVyNmFwcGVuZEVSS05TXzZTdHJpbmdFCi1fX1pOSzdXZWJDb3JlMTNTdHJpbmdCdWlsZGVy
OHRvU3RyaW5nRXYKIF9fWk4zV1RGNlZlY3RvcklON1dlYkNvcmU2U3RyaW5nRUxtMTZFRTZzaHJp
bmtFbQogX19aTjdXZWJDb3JlMTdIVE1MU2NyaXB0RWxlbWVudDIxZmluaXNoUGFyc2luZ0NoaWxk
cmVuRXYKIF9fWk43V2ViQ29yZTEzU2NyaXB0RWxlbWVudDIxZmluaXNoUGFyc2luZ0NoaWxkcmVu
RVJOU18xN1NjcmlwdEVsZW1lbnREYXRhRVJLTlNfNlN0cmluZ0UKQEAgLTIyNTk1LDcgKzIyNTky
LDYgQEAgX19aTjdXZWJDb3JlMTZKU0RPTVdpbmRvd1NoZWxsMTJsb29rdXBHZQogX19aTjdXZWJD
b3JlMTFKU0RPTVdpbmRvdzEybG9va3VwR2V0dGVyRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJ
ZGVudGlmaWVyRQogX19aTjdXZWJDb3JlMTZKU0RPTVdpbmRvd1NoZWxsMTJkZWZpbmVTZXR0ZXJF
UE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFUE5TMV84SlNPYmplY3RFagogX19a
TjdXZWJDb3JlMTFKU0RPTVdpbmRvdzEyZGVmaW5lU2V0dGVyRVBOM0pTQzlFeGVjU3RhdGVFUktO
UzFfMTBJZGVudGlmaWVyRVBOUzFfOEpTT2JqZWN0RWoKLV9fWk43V2ViQ29yZTEzU3RyaW5nQnVp
bGRlcjZhcHBlbmRFYwogX19aTjdXZWJDb3JlMzNqc0xvY2F0aW9uUHJvdG90eXBlRnVuY3Rpb25B
c3NpZ25FUE4zSlNDOUV4ZWNTdGF0ZUVQTlMwXzhKU09iamVjdEVOUzBfN0pTVmFsdWVFUktOUzBf
N0FyZ0xpc3RFCiBfX1pON1dlYkNvcmUxMEpTTG9jYXRpb242YXNzaWduRVBOM0pTQzlFeGVjU3Rh
dGVFUktOUzFfN0FyZ0xpc3RFCiBfX1pON1dlYkNvcmUzM2pzSGlzdG9yeVByb3RvdHlwZUZ1bmN0
aW9uRm9yd2FyZEVQTjNKU0M5RXhlY1N0YXRlRVBOUzBfOEpTT2JqZWN0RU5TMF83SlNWYWx1ZUVS
S05TMF83QXJnTGlzdEUKQEAgLTI1ODQwLDcgKzI1ODM2LDYgQEAgX19aTkszSlNDOEJpbmRpbmdz
MTBSb290T2JqZWN0MTJuYXRpdmVIYQogX19aTkszSlNDOEJpbmRpbmdzMTBKYXZhTWV0aG9kOG1l
dGhvZElERVA4X2pvYmplY3QKIF9fWk5LM0pTQzhCaW5kaW5nczEwSmF2YU1ldGhvZDlzaWduYXR1
cmVFdgogX19aTjNKU0M4QmluZGluZ3MyNnNpZ25hdHVyZUZyb21QcmltaXRpdmVUeXBlRTdKTklU
eXBlCi1fX1pMMTVhcHBlbmRDbGFzc05hbWVSTjdXZWJDb3JlMTNTdHJpbmdCdWlsZGVyRVBLYwog
X19aTjNKU0M4QmluZGluZ3MxMWdldE1ldGhvZElERVA4X2pvYmplY3RQS2NTNF8KIF9fWk5LM0pT
QzhCaW5kaW5nczEwSmF2YU1ldGhvZDEzSk5JUmV0dXJuVHlwZUV2CiBfX1pOM0pTQzhCaW5kaW5n
czE1ZGlzcGF0Y2hKTklDYWxsRVBOU185RXhlY1N0YXRlRVBLdlA4X2pvYmplY3RiN0pOSVR5cGVQ
MTBfam1ldGhvZElEUDZqdmFsdWVSU0FfUEtjUk5TXzdKU1ZhbHVlRQpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA2
OTU2MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTEyMDAsNyAr
MTIwMCw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5n
LmNwcCBcCiAgICAgcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4
dC9TdHJpbmcuY3BwIFwKLSAgICBwbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKICAg
ICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5jcHAgXAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENv
ZGVjTGF0aW4xLmNwcCBcCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5j
cHAgXApAQCAtMjE0MSw3ICsyMTQwLDYgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vdGV4
dC9xdC9UZXh0Q29kZWNRdC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1JlZ3VsYXJFeHByZXNzaW9u
LmggXAogICAgIHBsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggXAotICAgIHBsYXRmb3Jt
L3RleHQvU3RyaW5nQnVpbGRlci5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5oIFwK
ICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5oIFwKICAgICBwbGF0Zm9ybS90ZXh0
L1RleHRDb2RlY1VzZXJEZWZpbmVkLmggXApJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9ydW50aW1lL1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiA2OTU2MSkKKysrIFdl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9TdHJpbmdCdWlsZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMCwwIEBACi0jaWZuZGVmIFdlYkNvcmVfRldEX1N0cmluZ0J1aWxkZXJf
aAotI2RlZmluZSBXZWJDb3JlX0ZXRF9TdHJpbmdCdWlsZGVyX2gKLSNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TdHJpbmdCdWlsZGVyLmg+Ci0jZW5kaWYKSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9VU3RyaW5nQnVpbGRlci5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1VTdHJpbmdCdWlsZGVyLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9VU3RyaW5nQnVp
bGRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1VTdHJpbmdCdWlsZGVyX2gKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9VU3RyaW5nQnVpbGRlci5oPgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfU3Ry
aW5nQnVpbGRlcl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1N0cmluZ0J1aWxkZXJfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1N0cmluZ0J1aWxkZXIuaD4KKyNlbmRpZgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4NjE0LDE4
ICsyODYxNCw2IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XFN0cmluZ0J1ZmZlci5oIg0KLQkJCQkJPg0KLQkJ
CQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRl
eHRcU3RyaW5nQnVpbGRlci5jcHAiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUN
Ci0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxTdHJpbmdCdWlsZGVyLmgiDQot
CQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cdGV4dFxTdHJpbmdIYXNoLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjk1
NjEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjc0NSw3ICsyNzQ1LDYgQEAKIAkJOTM5ODg1QzQwOEI3RTNEMTAwRTcwN0M0
IC8qIEV2ZW50TmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzOTg4NUMyMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM5QjAyRUUwRUEyREJD
NDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QjAyRUMwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRl
cmF0b3IuY3BwICovOyB9OwogCQk5MzlCMDJFRjBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5
QjAyRUQwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuaCAqLzsgfTsKLQkJOTM5QjNF
NEUwRDNDMUU4NDAwQjRBOTJCIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5QjNFNEQwRDNDMUU4NDAwQjRBOTJCIC8qIFN0
cmluZ0J1ZmZlci5oICovOyB9OwogCQk5M0EzOEI0QjBEMEU1ODA4MDA2ODcyQzIgLyogRWRpdG9y
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0EzOEI0QTBEMEU1ODA4MDA2ODcyQzIgLyogRWRpdG9yQ29tbWFuZC5jcHAgKi87IH07CiAJ
CTkzQjJEODE2MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCMkQ4MTUwRjk5MjBEMjAw
NkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi87IH07CiAJCTkzQjJEODE4MEY5OTIwRUUw
MDZBRTZCMiAvKiBTdWRkZW5UZXJtaW5hdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjJEODE3MEY5OTIwRUUwMDZBRTZCMiAvKiBTdWRkZW5U
ZXJtaW5hdGlvbi5tbSAqLzsgfTsKQEAgLTUzMzMsOCArNTMzMiw2IEBACiAJCUUxODI1NjkwMEVG
MkIwMkQwMDkzMzI0MiAvKiBKU1dvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxODI1NjhFMEVGMkIwMkQwMDkzMzI0MiAvKiBKU1dv
cmtlckNvbnRleHQuaCAqLzsgfTsKIAkJRTE4MjU4QUMwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTgyNThBQjBFRjNDRDcwMDA5MzMyNDIgLyogSlNXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcCAqLzsgfTsKIAkJRTFBMTQ3MDgxMTEwMkIxNTAwRUVDMEYzIC8qIENvbnRhaW5lck5v
ZGVBbGdvcml0aG1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
aCAqLzsgfTsKLQkJRTFBMzAyQkMwREU4MzcwMzAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMwMkJCMERF
ODM3MDMwMEM1MkYyQyAvKiBTdHJpbmdCdWlsZGVyLmggKi87IH07Ci0JCUUxQTMwMkMxMERFODM3
NjkwMEM1MkYyQyAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQTMwMkMwMERFODM3NjkwMEM1MkYyQyAvKiBTdHJpbmdC
dWlsZGVyLmNwcCAqLzsgfTsKIAkJRTFBNUY5OUIwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2Fn
ZUNoYW5uZWxDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0
b20uY3BwICovOyB9OwogCQlFMUE2NDNGMjBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFBNjQzRjEwRUMwOTcyNTAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuaCAq
LzsgfTsKIAkJRTFBNjQzRkQwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFB
NjQzRkMwRUMwOTdBMDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovOyB9
OwpAQCAtODgwNCw3ICs4ODAxLDYgQEAKIAkJOTM5ODg1QzIwOEI3RTNEMTAwRTcwN0M0IC8qIEV2
ZW50TmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXZlbnROYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJOTM5QjAyRUMwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRl
cmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lkdGhJdGVy
YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOUIwMkVEMEVBMkRCQzQw
MEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdpZHRoSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTM5QjNF
NEQwRDNDMUU4NDAwQjRBOTJCIC8qIFN0cmluZ0J1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdHJpbmdCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNBMzhCNEEwRDBFNTgwODAwNjg3MkMyIC8qIEVkaXRvckNvbW1hbmQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRWRpdG9yQ29tbWFuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjJEODE1MEY5OTIwRDIwMDZBRTZCMiAvKiBTdWRkZW5U
ZXJtaW5hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWRkZW5UZXJt
aW5hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0IyRDgxNzBGOTkyMEVF
MDA2QUU2QjIgLyogU3VkZGVuVGVybWluYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTdWRkZW5UZXJtaW5hdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTExMzMxLDggKzExMzI3LDYgQEAKIAkJRTE4MjU2OEUwRUYyQjAyRDAwOTMz
MjQyIC8qIEpTV29ya2VyQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1dvcmtlckNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE4MjU4
QUIwRUYzQ0Q3MDAwOTMzMjQyIC8qIEpTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUExNDcwNzExMTAyQjE1MDBFRUMwRjMgLyog
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRTFBMzAyQkIwREU4MzcwMzAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlFMUEzMDJDMDBERTgzNzY5MDBDNTJGMkMgLyogU3RyaW5nQnVpbGRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdCdWlsZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVB
IC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxQTY0M0YxMEVDMDk3MjUwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdENv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBNjQzRkMwRUMwOTdB
MDAwNzc5NjY4IC8qIFdvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjU2MSw5ICsxNjU1NSw2IEBACiAJCQkJQjJDM0Q5RkUw
RDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5jcHAgKi8sCiAJCQkJQjJDM0Q5RkYw
RDAwNkMxRDAwRUY2RjI2IC8qIFNlZ21lbnRlZFN0cmluZy5oICovLAogCQkJCUIyQzNEQTAwMEQw
MDZDMUQwMEVGNkYyNiAvKiBTdHJpbmcuY3BwICovLAotCQkJCTkzOUIzRTREMEQzQzFFODQwMEI0
QTkyQiAvKiBTdHJpbmdCdWZmZXIuaCAqLywKLQkJCQlFMUEzMDJDMDBERTgzNzY5MDBDNTJGMkMg
LyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCi0JCQkJRTFBMzAyQkIwREU4MzcwMzAwQzUyRjJDIC8q
IFN0cmluZ0J1aWxkZXIuaCAqLywKIAkJCQk5N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3Vm
Zml4VHJlZS5oICovLAogCQkJCUIyQzNEQTA0MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Qm91bmRh
cmllcy5oICovLAogCQkJCUIyQzNEQTA2MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVy
YXRvci5oICovLApAQCAtMjA1OTAsOCArMjA1ODEsNiBAQAogCQkJCUM1MEQwRTgzMEZGNDI3Mjkw
MEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVFMzhC
RjEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCUM1MTAyRDk0MEZEOUFBMkQwMEZBRkYwNCAvKiBTdG9yYWdlU3luY01hbmFnZXIuaCBp
biBIZWFkZXJzICovLAotCQkJCTkzOUIzRTRFMEQzQzFFODQwMEI0QTkyQiAvKiBTdHJpbmdCdWZm
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxQTMwMkJDMERFODM3MDMwMEM1MkYyQyAvKiBTdHJp
bmdCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTQ4OEQ2QjBERDVBODNEMDA5RDgzQjIg
LyogU3RyaW5nU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMzU0MEYzMEQw
MDc4MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0
OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjMxOTYsNyArMjMxODUsNiBAQAogCQkJCUM1NUUzOEMwMTAwNDBENUQwMEE1NkJE
QiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5
NTBGRDlBQTJEMDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTMwMEQwMDZDMUQwMEVGNkYyNiAvKiBTdHJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJRTFBMzAyQzEwREU4Mzc2OTAwQzUyRjJDIC8qIFN0cmluZ0J1aWxkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJCMjY0NUMwRDAwQTc3RTAwMEFDQzFEIC8qIFN0cmluZ0NGLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyQjI2NDVEMEQwMEE3N0UwMDBBQ0MxRCAvKiBTdHJpbmdJ
bXBsQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJBRkZDOTUwRDAwQTVERjAwMzAwNzREIC8q
IFN0cmluZ0ltcGxNYWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdHJpbmcuaAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTAgQEAKICNkZWZpbmUgU2Ny
aXB0U3RyaW5nX2gKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nLmg+Ci0jaW5jbHVkZSA8cnVu
dGltZS9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8cnVudGltZS9VU3RyaW5nQnVpbGRlci5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsMTAgKzYxLDEwIEBAIHB1YmxpYzoK
IAogICAgIFNjcmlwdFN0cmluZyYgb3BlcmF0b3IrPShjb25zdCBTdHJpbmcmIHMpCiAgICAgewot
ICAgICAgICBKU0M6OlN0cmluZ0J1aWxkZXIgYnVmZmVyOworICAgICAgICBKU0M6OlVTdHJpbmdC
dWlsZGVyIGJ1ZmZlcjsKICAgICAgICAgYnVmZmVyLmFwcGVuZChtX3N0cik7CiAgICAgICAgIGJ1
ZmZlci5hcHBlbmQoc3RyaW5nVG9VU3RyaW5nKHMpKTsKLSAgICAgICAgbV9zdHIgPSBidWZmZXIu
YnVpbGQoKTsKKyAgICAgICAgbV9zdHIgPSBidWZmZXIudG9VU3RyaW5nKCk7CiAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwCShyZXZp
c2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvYnJpZGdlL2puaS9KTklCcmlkZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwxNCArMjksMTEgQEAKIAogI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKIAot
I2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSlNDOjpCaW5kaW5nczsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCiAKIEphdmFQYXJhbWV0ZXI6OkphdmFQYXJhbWV0ZXIoSk5JRW52KiBlbnYsIGpz
dHJpbmcgdHlwZSkKIHsKQEAgLTEzMiw3ICsxMjksNyBAQCBjb25zdCBjaGFyKiBKYXZhTWV0aG9k
OjpzaWduYXR1cmUoKSBjb25zCiAjZW5kaWYKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIHNpZ25h
dHVyZUJ1aWxkZXI7Ci0gICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCIoIik7CisgICAg
ICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbV9udW1QYXJhbWV0ZXJzOyBpKyspIHsKICAgICAgICAgICAgIEphdmFQYXJhbWV0ZXIq
IGFQYXJhbWV0ZXIgPSBwYXJhbWV0ZXJBdChpKTsKICAgICAgICAgICAgIEpOSVR5cGUgdHlwZSA9
IGFQYXJhbWV0ZXItPmdldEpOSVR5cGUoKTsKQEAgLTE0MiwxMSArMTM5LDExIEBAIGNvbnN0IGNo
YXIqIEphdmFNZXRob2Q6OnNpZ25hdHVyZSgpIGNvbnMKICAgICAgICAgICAgICAgICBzaWduYXR1
cmVCdWlsZGVyLmFwcGVuZChzaWduYXR1cmVGcm9tUHJpbWl0aXZlVHlwZSh0eXBlKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gb2JqZWN0X3R5cGUpIHsKICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kQ2xhc3NOYW1lKHNpZ25hdHVyZUJ1aWxkZXIsIGFQYXJhbWV0ZXItPnR5cGUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCI7Iik7CisgICAg
ICAgICAgICAgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCc7Jyk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHNpZ25hdHVyZUJ1aWxk
ZXIuYXBwZW5kKCIpIik7CisgICAgICAgIHNpZ25hdHVyZUJ1aWxkZXIuYXBwZW5kKCcpJyk7CiAK
ICAgICAgICAgY29uc3QgY2hhciogcmV0dXJuVHlwZSA9IG1fcmV0dXJuVHlwZS51dGY4KCk7CiAg
ICAgICAgIGlmIChtX0pOSVJldHVyblR5cGUgPT0gYXJyYXlfdHlwZSkKQEAgLTE1NSw3ICsxNTIs
NyBAQCBjb25zdCBjaGFyKiBKYXZhTWV0aG9kOjpzaWduYXR1cmUoKSBjb25zCiAgICAgICAgICAg
ICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZChzaWduYXR1cmVGcm9tUHJpbWl0aXZlVHlwZShtX0pO
SVJldHVyblR5cGUpKTsKICAgICAgICAgICAgIGlmIChtX0pOSVJldHVyblR5cGUgPT0gb2JqZWN0
X3R5cGUpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRDbGFzc05hbWUoc2lnbmF0dXJlQnVpbGRl
ciwgcmV0dXJuVHlwZSk7Ci0gICAgICAgICAgICAgICAgc2lnbmF0dXJlQnVpbGRlci5hcHBlbmQo
IjsiKTsKKyAgICAgICAgICAgICAgICBzaWduYXR1cmVCdWlsZGVyLmFwcGVuZCgnOycpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCShyZXZpc2lvbiA2OTU2
MSkKKysrIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4
ICszMCw4IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgogCiAjaW5jbHVkZSAiTWVkaWFRdWVy
eUV4cC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uQ29w
eWluZ1NvcnQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAJKHJldmlzaW9uIDY5NTYx
KQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1
aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9kb20vTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDYgQEAKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0
YXRpY05vZGVMaXN0LmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRh
Z05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRFdmVudC5oIgpA
QCAtODgsNiArODcsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKERP
TV9TVE9SQUdFKQogI2luY2x1ZGUgIlN0b3JhZ2VFdmVudC5oIgpAQCAtMTkyMyw1MiArMTkyMyw1
NCBAQCBTdHJpbmcgTm9kZTo6bG9va3VwTmFtZXNwYWNlUHJlZml4KGNvbnN0CiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi12b2lkIE5vZGU6OmFwcGVuZFRleHRDb250ZW50KGJvb2wgY29udmVy
dEJSc1RvTmV3bGluZXMsIFN0cmluZ0J1aWxkZXImIGNvbnRlbnQpIGNvbnN0CitzdGF0aWMgdm9p
ZCBhcHBlbmRUZXh0Q29udGVudChjb25zdCBOb2RlKiBub2RlLCBib29sIGNvbnZlcnRCUnNUb05l
d2xpbmVzLCBib29sJiBpc051bGxTdHJpbmcsIFN0cmluZ0J1aWxkZXImIGNvbnRlbnQpCiB7Ci0g
ICAgc3dpdGNoIChub2RlVHlwZSgpKSB7Ci0gICAgICAgIGNhc2UgVEVYVF9OT0RFOgotICAgICAg
ICBjYXNlIENEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAgICAgY2FzZSBDT01NRU5UX05PREU6Ci0g
ICAgICAgICAgICBjb250ZW50LmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBDaGFyYWN0ZXJEYXRh
Kj4odGhpcyktPmRhdGEoKSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKG5vZGUt
Pm5vZGVUeXBlKCkpIHsKKyAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKKyAgICBjYXNlIE5vZGU6
OkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKKyAgICAg
ICAgaXNOdWxsU3RyaW5nID0gZmFsc2U7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kKHN0YXRpY19j
YXN0PGNvbnN0IENoYXJhY3RlckRhdGEqPihub2RlKS0+ZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAgICAg
ICBjb250ZW50LmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24q
Pih0aGlzKS0+ZGF0YSgpKTsKKyAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05f
Tk9ERToKKyAgICAgICAgaXNOdWxsU3RyaW5nID0gZmFsc2U7CisgICAgICAgIGNvbnRlbnQuYXBw
ZW5kKHN0YXRpY19jYXN0PGNvbnN0IFByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KG5vZGUpLT5kYXRh
KCkpOworICAgICAgICBicmVhazsKKyAgICAKKyAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToK
KyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoYnJUYWcpICYmIGNvbnZlcnRCUnNUb05ld2xp
bmVzKSB7CisgICAgICAgICAgICBpc051bGxTdHJpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGNv
bnRlbnQuYXBwZW5kKCdcbicpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAg
ICBjYXNlIEVMRU1FTlRfTk9ERToKLSAgICAgICAgICAgIGlmIChoYXNUYWdOYW1lKGJyVGFnKSAm
JiBjb252ZXJ0QlJzVG9OZXdsaW5lcykgewotICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k
KCdcbicpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIC8vIEZh
bGwgdGhyb3VnaC4KLSAgICAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERToKLSAgICAgICAgY2FzZSBF
TlRJVFlfTk9ERToKLSAgICAgICAgY2FzZSBFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0gICAgICAg
IGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgICAgIGNvbnRlbnQuc2V0Tm9u
TnVsbCgpOwotCi0gICAgICAgICAgICBmb3IgKE5vZGUgKmNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgICAgIGlm
IChjaGlsZC0+bm9kZVR5cGUoKSA9PSBDT01NRU5UX05PREUgfHwgY2hpbGQtPm5vZGVUeXBlKCkg
PT0gUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNoaWxkLT5hcHBlbmRUZXh0Q29u
dGVudChjb252ZXJ0QlJzVG9OZXdsaW5lcywgY29udGVudCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAvLyBGYWxsIHRocm91Z2guCisgICAgY2FzZSBOb2RlOjpBVFRS
SUJVVEVfTk9ERToKKyAgICBjYXNlIE5vZGU6OkVOVElUWV9OT0RFOgorICAgIGNhc2UgTm9kZTo6
RU5USVRZX1JFRkVSRU5DRV9OT0RFOgorICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRf
Tk9ERToKKyAgICAgICAgaXNOdWxsU3RyaW5nID0gZmFsc2U7CisgICAgICAgIGZvciAoTm9kZSog
Y2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09N
TUVOVF9OT0RFIHx8IGNoaWxkLT5ub2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJV
Q1RJT05fTk9ERSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGFwcGVu
ZFRleHRDb250ZW50KGNoaWxkLCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgaXNOdWxsU3RyaW5nLCBj
b250ZW50KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIERPQ1VN
RU5UX05PREU6Ci0gICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOgotICAgICAgICBjYXNl
IE5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgWFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CisgICAgY2FzZSBO
b2RlOjpET0NVTUVOVF9UWVBFX05PREU6CisgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgor
ICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6CisgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIAogU3RyaW5nIE5vZGU6OnRleHRDb250ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGlu
ZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nQnVpbGRlciBjb250ZW50OwotICAgIGFwcGVuZFRleHRD
b250ZW50KGNvbnZlcnRCUnNUb05ld2xpbmVzLCBjb250ZW50KTsKLSAgICByZXR1cm4gY29udGVu
dC50b1N0cmluZygpOworICAgIGJvb2wgaXNOdWxsU3RyaW5nID0gdHJ1ZTsKKyAgICBhcHBlbmRU
ZXh0Q29udGVudCh0aGlzLCBjb252ZXJ0QlJzVG9OZXdsaW5lcywgaXNOdWxsU3RyaW5nLCBjb250
ZW50KTsKKyAgICByZXR1cm4gaXNOdWxsU3RyaW5nID8gU3RyaW5nKCkgOiBjb250ZW50LnRvU3Ry
aW5nKCk7CiB9CiAKIHZvaWQgTm9kZTo6c2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5nICZ0ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9kb20v
Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw2IEBAIGNsYXNzIFJlbmRlckJveDsK
IGNsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3Mg
UmVuZGVyU3R5bGU7Ci1jbGFzcyBTdHJpbmdCdWlsZGVyOwogY2xhc3MgVGFnTm9kZUxpc3Q7CiAK
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CkBAIC03MDYsNyArNzA1LDYgQEAgcHJpdmF0ZToK
IAogICAgIEVsZW1lbnQqIGFuY2VzdG9yRWxlbWVudCgpIGNvbnN0OwogCi0gICAgdm9pZCBhcHBl
bmRUZXh0Q29udGVudChib29sIGNvbnZlcnRCUnNUb05ld2xpbmVzLCBTdHJpbmdCdWlsZGVyJikg
Y29uc3Q7CiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCiAgICAgRG9jdW1lbnQqIG1f
ZG9jdW1lbnQ7CkluZGV4OiBXZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBX
ZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRl
ci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCShy
ZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTIgKzQ0LDEyIEBACiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkVGltaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlN0cmluZ0J1ZmZlci5oIgogI2luY2x1ZGUgIlRl
eHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgogCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2FuZHJvaWQvRmlsZVN5c3Rl
bUFuZHJvaWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9GaWxl
U3lzdGVtQW5kcm9pZC5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9h
bmRyb2lkL0ZpbGVTeXN0ZW1BbmRyb2lkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAotI2lu
Y2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKICNpbmNsdWRlICJjdXRpbHMvbG9nLmgiCiAjaW5jbHVk
ZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8ZGxmY24uaD4KQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNs
dWRlIDxmbm1hdGNoLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vYnJldy9GaWxlU3lzdGVt
QnJldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9icmV3L0ZpbGVTeXN0ZW1C
cmV3LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2JyZXcvRmlsZVN5
c3RlbUJyZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKIAogI2luY2x1ZGUg
PEFFRUFwcEdlbi5oPgogI2luY2x1ZGUgPEFFRUZpbGUuaD4KQEAgLTQxLDYgKzM5LDggQEAKICNp
bmNsdWRlIDx3dGYvYnJldy9SZWZQdHJCcmV3Lmg+CiAjaW5jbHVkZSA8d3RmL2JyZXcvU2hlbGxC
cmV3Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0NsaXBib2FyZENocm9taXVtLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
MTMgKzQxLDE0IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIu
aCIKICNpbmNsdWRlICJtYXJrdXAuaCIKIAorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjA1LDcgKzIwNiw3IEBAIHN0
YXRpYyBTdHJpbmcgaW1hZ2VUb01hcmt1cChjb25zdCBTdHJpbmcKICAgICBTdHJpbmdCdWlsZGVy
IG1hcmt1cDsKICAgICBtYXJrdXAuYXBwZW5kKCI8aW1nIHNyYz1cIiIpOwogICAgIG1hcmt1cC5h
cHBlbmQodXJsKTsKLSAgICBtYXJrdXAuYXBwZW5kKCJcIiIpOworICAgIG1hcmt1cC5hcHBlbmQo
JyInKTsKICAgICAvLyBDb3B5IG92ZXIgYXR0cmlidXRlcy4gIElmIHdlIGFyZSBkcmFnZ2luZyBh
biBpbWFnZSwgd2UgZXhwZWN0IHRoaW5ncyBsaWtlCiAgICAgLy8gdGhlIGlkIHRvIGJlIGNvcGll
ZCBhcyB3ZWxsLgogICAgIE5hbWVkTm9kZU1hcCogYXR0cnMgPSBlbGVtZW50LT5hdHRyaWJ1dGVz
KCk7CkBAIC0yMTQsMTMgKzIxNSwxMyBAQCBzdGF0aWMgU3RyaW5nIGltYWdlVG9NYXJrdXAoY29u
c3QgU3RyaW5nCiAgICAgICAgIEF0dHJpYnV0ZSogYXR0ciA9IGF0dHJzLT5hdHRyaWJ1dGVJdGVt
KGkpOwogICAgICAgICBpZiAoYXR0ci0+bG9jYWxOYW1lKCkgPT0gInNyYyIpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgbWFya3VwLmFwcGVuZCgiICIpOworICAgICAgICBtYXJrdXAu
YXBwZW5kKCcgJyk7CiAgICAgICAgIG1hcmt1cC5hcHBlbmQoYXR0ci0+bG9jYWxOYW1lKCkpOwog
ICAgICAgICBtYXJrdXAuYXBwZW5kKCI9XCIiKTsKICAgICAgICAgU3RyaW5nIGVzY2FwZWRBdHRy
ID0gYXR0ci0+dmFsdWUoKTsKICAgICAgICAgZXNjYXBlZEF0dHIucmVwbGFjZSgiXCIiLCAiJnF1
b3Q7Iik7CiAgICAgICAgIG1hcmt1cC5hcHBlbmQoZXNjYXBlZEF0dHIpOwotICAgICAgICBtYXJr
dXAuYXBwZW5kKCJcIiIpOworICAgICAgICBtYXJrdXAuYXBwZW5kKCciJyk7CiAgICAgfQogCiAg
ICAgbWFya3VwLmFwcGVuZCgiLz4iKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1BPREludGVydmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvUE9ESW50ZXJ2YWwuaAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9QT0RJbnRlcnZhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3
IEBACiAjZGVmaW5lIFBPREludGVydmFsX2gKIAogI2lmbmRlZiBOREVCVUcKLSNpbmNsdWRlICJT
dHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1BPRFJlZEJsYWNrVHJlZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OCw5ICs3OCw5IEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lmbmRlZiBOREVC
VUcKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNp
bmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNBLm1tCShyZXZpc2lv
biA2OTU2MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJD
QS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0ICJSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNp
bXBvcnQgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW1wb3J0ICJTdHJpbmdCdWlsZGVy
LmgiCiAjaW1wb3J0ICJTeXN0ZW1UaW1lLmgiCiAjaW1wb3J0ICJUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb24uaCIKICNpbXBvcnQgIldlYkxheWVyLmgiCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1
ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNvZnRM
aW5raW5nLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRpbWVSYW5n
ZXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPEFzc2VydE1hY3Jvcy5oPgpAQCAt
NTMsNiArNTIsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAgLTI0MSw3ICsyNDEsNyBA
QCBzdGF0aWMgdm9pZCBhZGRDb29raWVQYXJhbShTdHJpbmdCdWlsZGVyCiAgICAgLy8gQWRkIHBh
cmFtZXRlciBuYW1lLCBhbmQgdmFsdWUgaWYgdGhlcmUgaXMgb25lLgogICAgIGNvb2tpZUJ1aWxk
ZXIuYXBwZW5kKG5hbWUpOwogICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNv
b2tpZUJ1aWxkZXIuYXBwZW5kKCI9Iik7CisgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKCc9
Jyk7CiAgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKICAgICB9CiB9CkBAIC0y
NzUsNyArMjc1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDbwog
ICAgICAgICAgICAgYWRkQ29va2llUGFyYW0oY29va2llQnVpbGRlciwgImV4cGlyZXMiLCByZmMy
NjE2RGF0ZVN0cmluZ0Zyb21UaW1lKGNvb2tpZS5leHBpcmVzKSk7CiAgICAgICAgIGlmIChjb29r
aWUuaHR0cE9ubHkpIAogICAgICAgICAgICAgYWRkQ29va2llUGFyYW0oY29va2llQnVpbGRlciwg
Imh0dHBPbmx5IiwgU3RyaW5nKCkpOwotICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgiOyIp
OworICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgnOycpOwogCiAgICAgICAgIFN0cmluZyBj
b29raWVVUkw7CiAgICAgICAgIGlmICghY29va2llLmRvbWFpbi5pc0VtcHR5KCkpIHsKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUVRNb3ZpZVRh
c2suaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIK
LSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2lu
Y2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8V2luaW5ldC5oPgpAQCAtNDYsNiArNDUsNyBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgdm9pZCBhZGRD
b29raWVQYXJhbShTdHJpbmdCdWlsZGVyCiAgICAgLy8gQWRkIHBhcmFtZXRlciBuYW1lLCBhbmQg
dmFsdWUgaWYgdGhlcmUgaXMgb25lLgogICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKG5hbWUpOwog
ICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5k
KCI9Iik7CisgICAgICAgIGNvb2tpZUJ1aWxkZXIuYXBwZW5kKCc9Jyk7CiAgICAgICAgIGNvb2tp
ZUJ1aWxkZXIuYXBwZW5kKHZhbHVlKTsKICAgICB9CiB9CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OnNldFVwQ29va2llc0ZvcgogICAgICAgICAgICAgYWRkQ29v
a2llUGFyYW0oY29va2llQnVpbGRlciwgImV4cGlyZXMiLCByZmMyNjE2RGF0ZVN0cmluZ0Zyb21U
aW1lKGNvb2tpZS5leHBpcmVzKSk7CiAgICAgICAgIGlmIChjb29raWUuaHR0cE9ubHkpIAogICAg
ICAgICAgICAgYWRkQ29va2llUGFyYW0oY29va2llQnVpbGRlciwgImh0dHBPbmx5IiwgU3RyaW5n
KCkpOwotICAgICAgICBjb29raWVCdWlsZGVyLmFwcGVuZCgiOyIpOworICAgICAgICBjb29raWVC
dWlsZGVyLmFwcGVuZCgnOycpOwogCiAgICAgICAgIFN0cmluZyBjb29raWVVUkw7CiAgICAgICAg
IGlmICghY29va2llLmRvbWFpbi5pc0VtcHR5KCkpIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Qcm94eVNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Byb3h5U2VydmVyLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMSArMjYs
MTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0j
aW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBhcHBlbmRQcm94eVNl
cnZlclN0cmluZyhTdHJpbmdCdWlsZGVyICZidWlsZGVyLCBjb25zdCBQcm94eVNlcnZlciYgcHJv
eHlTZXJ2ZXIpCitzdGF0aWMgdm9pZCBhcHBlbmRQcm94eVNlcnZlclN0cmluZyhTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQcm94eVNlcnZlciYgcHJveHlTZXJ2ZXIpCiB7CiAgICAgc3dp
dGNoIChwcm94eVNlcnZlci50eXBlKCkpIHsKICAgICBjYXNlIFByb3h5U2VydmVyOjpEaXJlY3Q6
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0J1ZmZlci5oCShyZXZpc2lvbiA2OTU2MSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAg
ICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV2ViQ29yZVN0cmluZ0J1ZmZlcl9oCi0jZGVmaW5lIFdlYkNvcmVT
dHJpbmdCdWZmZXJfaAotCi0vLyBGSVhNRTogcmVtb3ZlIHRoaXMgaGVhZGVyLCB1c2UgdGhlIGZv
cndhcmQgZnJvbSB3dGYgZGlyZWN0bHkuCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVy
Lmg+Ci0KLSNlbmRpZiAvLyBTdHJpbmdCdWZmZXJfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9TdHJpbmdCdWlsZGVyLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L3RleHQvU3RyaW5nQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTM4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0gCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVp
bGRlci5oIgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCBjaGVja2VkQXBwZW5kKHVuc2lnbmVkJiB0b3RhbExlbmd0aCwg
dW5zaWduZWQgY2hhcmFjdGVyc1RvQXBwZW5kKQotewotICAgIGlmIChudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpIC0gY2hhcmFjdGVyc1RvQXBwZW5kIDw9IHRvdGFsTGVuZ3RoKQotICAg
ICAgICBDUkFTSCgpOwotCi0gICAgdG90YWxMZW5ndGggKz0gY2hhcmFjdGVyc1RvQXBwZW5kOwot
fQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN0cmluZykKLXsK
LSAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25l
ZCB0b3RhbExlbmd0aCA9IGxlbmd0aCgpOwotICAgIGNoZWNrZWRBcHBlbmQodG90YWxMZW5ndGgs
IHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgbV90b3RhbExlbmd0aCA9IHRvdGFsTGVuZ3RoOwotCi0g
ICAgaWYgKCFzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICBtX3N0cmluZ3MuYXBwZW5kKHN0cmlu
Zyk7Ci19Ci0KLXZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKFVDaGFyIGMpCi17Ci0gICAgdW5z
aWduZWQgdG90YWxMZW5ndGggPSBsZW5ndGgoKTsKLSAgICBjaGVja2VkQXBwZW5kKHRvdGFsTGVu
Z3RoLCAxKTsKLSAgICBtX3RvdGFsTGVuZ3RoID0gdG90YWxMZW5ndGg7Ci0KLSAgICBtX3N0cmlu
Z3MuYXBwZW5kKFN0cmluZygmYywgMSkpOwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZChjaGFyIGMpCi17Ci0gICAgdW5zaWduZWQgdG90YWxMZW5ndGggPSBsZW5ndGgoKTsKLSAgICBj
aGVja2VkQXBwZW5kKHRvdGFsTGVuZ3RoLCAxKTsKLSAgICBtX3RvdGFsTGVuZ3RoID0gdG90YWxM
ZW5ndGg7Ci0KLSAgICBtX3N0cmluZ3MuYXBwZW5kKFN0cmluZygmYywgMSkpOwotfQotCi1TdHJp
bmcgU3RyaW5nQnVpbGRlcjo6dG9TdHJpbmcoQ29uY2F0TW9kZSBtb2RlKSBjb25zdAotewotICAg
IGlmIChpc051bGwoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgdW5zaWduZWQg
Y291bnQgPSBtX3N0cmluZ3Muc2l6ZSgpOwotCi0gICAgaWYgKCFjb3VudCkKLSAgICAgICAgcmV0
dXJuIFN0cmluZyhTdHJpbmdJbXBsOjplbXB0eSgpKTsKLSAgICBpZiAoY291bnQgPT0gMSkKLSAg
ICAgICAgcmV0dXJuIG1fc3RyaW5nc1swXTsKLQotICAgIHVuc2lnbmVkIHRvdGFsTGVuZ3RoID0g
bV90b3RhbExlbmd0aDsKLSAgICBpZiAobW9kZSA9PSBDb25jYXRBZGRpbmdTcGFjZXNCZXR3ZWVu
SW5kaXZpZHVhbFN0cmluZ3MpCi0gICAgICAgIGNoZWNrZWRBcHBlbmQodG90YWxMZW5ndGgsIGNv
dW50IC0gMSk7Ci0KLSAgICBVQ2hhciogYnVmZmVyOwotICAgIFN0cmluZyByZXN1bHQgPSBTdHJp
bmc6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7Ci0KLSAgICBVQ2hh
ciogcCA9IGJ1ZmZlcjsKLQotICAgIC8vIFdlIGNvdWxkIGhhbmRsZSBib3RoIENvbmNhdCBtb2Rl
cyBpbiBhIHNpbmdsZSBmb3IgbG9vcCwgbm90IGRvaW5nIHRoYXQgZm9yIHBlcmZvcm1hbmNlIHJl
YXNvbnMuCi0gICAgaWYgKG1vZGUgPT0gQ29uY2F0VW5hbHRlcmVkKSB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmdJbXBs
KiBzdHJpbmcgPSBtX3N0cmluZ3NbaV0uaW1wbCgpOwotICAgICAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gc3RyaW5nLT5sZW5ndGgoKTsgCi0gICAgICAgICAgICBtZW1jcHkocCwgc3RyaW5nLT5j
aGFyYWN0ZXJzKCksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpOwotICAgICAgICAgICAgcCArPSBs
ZW5ndGg7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQobW9kZSA9PSBD
b25jYXRBZGRpbmdTcGFjZXNCZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3MpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgU3RyaW5nSW1w
bCogc3RyaW5nID0gbV9zdHJpbmdzW2ldLmltcGwoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHN0cmluZy0+bGVuZ3RoKCk7IAotICAgICAgICAgICAgbWVtY3B5KHAsIHN0cmluZy0+
Y2hhcmFjdGVycygpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKLSAgICAgICAgICAgIHAgKz0g
bGVuZ3RoOwotCi0gICAgICAgICAgICAvLyBBZGQgc3BhY2UgYWZ0ZXIgc3RyaW5nIGJlZm9yZSB0
aGUgc3RhcnQgb2YgdGhlIG5leHQgc3RyaW5nLCBpZiB3ZSdyZSBub3QgcHJvY2Vzc2luZyB0aGUg
bGFzdCBzdHJpbmcuCi0gICAgICAgICAgICBpZiAoaSA8IGNvdW50IC0gMSkgewotICAgICAgICAg
ICAgICAgICpwID0gJyAnOwotICAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLSAgICBBU1NFUlQocCA9PSB0b3RhbExlbmd0aCArIGJ1ZmZlcik7Ci0K
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIFN0cmluZ0J1aWxkZXI6OmNsZWFyKCkKLXsK
LSAgICBtX3RvdGFsTGVuZ3RoID0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKLSAg
ICBtX3N0cmluZ3MuY2xlYXIoKTsKLX0KLQotdW5zaWduZWQgU3RyaW5nQnVpbGRlcjo6bGVuZ3Ro
KCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiBtX3RvdGFsTGVuZ3RoOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDY5NTYxKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFN0cmluZ0J1aWxkZXJfaAotI2RlZmluZSBTdHJpbmdC
dWlsZGVyX2gKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8bGltaXRz
PgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1lbnVt
IENvbmNhdE1vZGUgewotICAgIENvbmNhdFVuYWx0ZXJlZCwKLSAgICBDb25jYXRBZGRpbmdTcGFj
ZXNCZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3MKLX07Ci0KLWNsYXNzIFN0cmluZ0J1aWxkZXIgewot
cHVibGljOgotICAgIFN0cmluZ0J1aWxkZXIoKSA6IG1fdG90YWxMZW5ndGgoc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7fQotCi0gICAgdm9pZCBzZXROb25OdWxsKCkKLSAg
ICB7Ci0gICAgICAgIGlmIChpc051bGwoKSkKLSAgICAgICAgICAgIG1fdG90YWxMZW5ndGggPSAw
OwotICAgIH0KLQotICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgYXBw
ZW5kKFVDaGFyKTsKLSAgICB2b2lkIGFwcGVuZChjaGFyKTsKLSAgICAKLSAgICB2b2lkIGNsZWFy
KCk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgdG9TdHJpbmco
Q29uY2F0TW9kZSBtb2RlID0gQ29uY2F0VW5hbHRlcmVkKSBjb25zdDsKLQotcHJpdmF0ZToKLSAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxMZW5ndGggPT0gc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOyB9Ci0KLSAgICB1bnNpZ25lZCBtX3RvdGFsTGVu
Z3RoOwotICAgIFZlY3RvcjxTdHJpbmcsIDE2PiBtX3N0cmluZ3M7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBTdHJpbmdCdWlsZGVyX2gKSW5kZXg6IFdlYkNvcmUv
cGx1Z2lucy9ET01NaW1lVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL0RP
TU1pbWVUeXBlLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3BsdWdpbnMvRE9NTWlt
ZVR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2lu
Y2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFBh
cnNlckZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJG
YWN0b3J5LmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2Vy
RmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJT
VkdQYXRoU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlNWR1BhdGhTdHJpbmdTb3VyY2UuaCIK
ICNpbmNsdWRlICJTVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgiCi0jaW5jbHVkZSAiU3Ry
aW5nQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nQnVpbGRlci5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViQ29yZS9zdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4MSArMjQsOTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitTdHJpbmcgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OnJl
c3VsdCgpCit7CisgICAgdW5zaWduZWQgc2l6ZSA9IG1fc3RyaW5nQnVpbGRlci5zaXplKCk7Cisg
ICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBSZW1vdmUg
dHJhaWxpbmcgc3BhY2UuCisgICAgbV9zdHJpbmdCdWlsZGVyLnJlc2l6ZShzaXplIC0gMSk7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nQnVpbGRlci50b1N0cmluZygpOworfQorCiB2b2lkIFNWR1BhdGhT
dHJpbmdCdWlsZGVyOjptb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIGJvb2ws
IFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29v
cmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQo
Ik0gJS42bGcgJS42bGciLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAg
ICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJNICUuNmxnICUuNmxn
ICIsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiAgICAgZWxzZQotICAgICAg
ICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJtICUuNmxnICUuNmxnIiwg
dGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgibSAlLjZsZyAlLjZsZyAiLCB0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjps
aW5lVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBt
b2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIkwgJS42bGcgJS42bGciLCB0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJMICUuNmxnICUuNmxnICIsIHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBw
ZW5kKFN0cmluZzo6Zm9ybWF0KCJsICUuNmxnICUuNmxnIiwgdGFyZ2V0UG9pbnQueCgpLCB0YXJn
ZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZv
cm1hdCgibCAlLjZsZyAlLjZsZyAiLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkp
OwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpsaW5lVG9Ib3Jpem9udGFsKGZsb2F0
IHgsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRl
Q29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3Jt
YXQoIkggJS42bGciLCB4KSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIkggJS42bGcgIiwgeCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWls
ZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiaCAlLjZsZyIsIHgpKTsKKyAgICAgICAgbV9zdHJp
bmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiaCAlLjZsZyAiLCB4KSk7CiB9CiAKIHZv
aWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmxpbmVUb1ZlcnRpY2FsKGZsb2F0IHksIFBhdGhDb29y
ZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMp
Ci0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlYgJS42bGci
LCB5KSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlYg
JS42bGcgIiwgeSkpOwogICAgIGVsc2UKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgidiAlLjZsZyIsIHkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFw
cGVuZChTdHJpbmc6OmZvcm1hdCgidiAlLjZsZyAiLCB5KSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0
cmluZ0J1aWxkZXI6OmN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiBwb2ludDEsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50MiwgY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhD
b29yZGluYXRlTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0
ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIkMgJS42
bGcgJS42bGcgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBwb2ludDEueCgpLCBwb2ludDEueSgp
LCBwb2ludDIueCgpLCBwb2ludDIueSgpLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50Lnko
KSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJDICUu
NmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnICIsIHBvaW50MS54KCksIHBvaW50MS55
KCksIHBvaW50Mi54KCksIHBvaW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQu
eSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6
Zm9ybWF0KCJjICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnIiwgcG9pbnQxLngo
KSwgcG9pbnQxLnkoKSwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0
YXJnZXRQb2ludC55KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6
OmZvcm1hdCgiYyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAiLCBwb2ludDEu
eCgpLCBwb2ludDEueSgpLCBwb2ludDIueCgpLCBwb2ludDIueSgpLCB0YXJnZXRQb2ludC54KCks
IHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjpjdXJ2
ZVRvQ3ViaWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQyLCBjb25zdCBGbG9hdFBvaW50
JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUg
PT0gQWJzb2x1dGVDb29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgiUyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIsIHBvaW50Mi54KCksIHBv
aW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1f
c3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlMgJS42bGcgJS42bGcgJS42bGcg
JS42bGcgIiwgcG9pbnQyLngoKSwgcG9pbnQyLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQ
b2ludC55KCkpKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3Ry
aW5nOjpmb3JtYXQoInMgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBwb2ludDIueCgpLCBwb2lu
dDIueSgpLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0
cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJzICUuNmxnICUuNmxnICUuNmxnICUu
NmxnICIsIHBvaW50Mi54KCksIHBvaW50Mi55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0
aWMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2lu
dCwgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gQWJzb2x1dGVD
b29yZGluYXRlcykKLSAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1h
dCgiUSAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyIsIHBvaW50MS54KCksIHBvaW50MS55KCksIHRh
cmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRl
ci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlEgJS42bGcgJS42bGcgJS42bGcgJS42bGcgIiwgcG9p
bnQxLngoKSwgcG9pbnQxLnkoKSwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55KCkpKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQo
InEgJS42bGcgJS42bGcgJS42bGcgJS42bGciLCBwb2ludDEueCgpLCBwb2ludDEueSgpLCB0YXJn
ZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIu
YXBwZW5kKFN0cmluZzo6Zm9ybWF0KCJxICUuNmxnICUuNmxnICUuNmxnICUuNmxnICIsIHBvaW50
MS54KCksIHBvaW50MS55KCksIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9pbnQueSgpKSk7CiB9
CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29u
c3QgRmxvYXRQb2ludCYgdGFyZ2V0UG9pbnQsIFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKQogewog
ICAgIGlmIChtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMpCi0gICAgICAgIG1fc3RyaW5nQnVp
bGRlci5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlQgJS42bGcgJS42bGciLCB0YXJnZXRQb2ludC54
KCksIHRhcmdldFBvaW50LnkoKSkpOworICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0
cmluZzo6Zm9ybWF0KCJUICUuNmxnICUuNmxnICIsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0cmlu
Zzo6Zm9ybWF0KCJ0ICUuNmxnICUuNmxnIiwgdGFyZ2V0UG9pbnQueCgpLCB0YXJnZXRQb2ludC55
KCkpKTsKKyAgICAgICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgidCAl
LjZsZyAlLjZsZyAiLCB0YXJnZXRQb2ludC54KCksIHRhcmdldFBvaW50LnkoKSkpOwogfQogCiB2
b2lkIFNWR1BhdGhTdHJpbmdCdWlsZGVyOjphcmNUbyhmbG9hdCByMSwgZmxvYXQgcjIsIGZsb2F0
IGFuZ2xlLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0UG9p
bnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9k
ZSA9PSBBYnNvbHV0ZUNvb3JkaW5hdGVzKQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5k
KFN0cmluZzo6Zm9ybWF0KCJBICUuNmxnICUuNmxnICUuNmxnICVkICVkICUuNmxnICUuNmxnIiwg
cjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwg
dGFyZ2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmb3JtYXQoIkEgJS42bGcgJS42bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGcgIiwgcjEsIHIy
LCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0
UG9pbnQueSgpKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmluZ0J1aWxkZXIuYXBwZW5kKFN0
cmluZzo6Zm9ybWF0KCJhICUuNmxnICUuNmxnICUuNmxnICVkICVkICUuNmxnICUuNmxnIiwgcjEs
IHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFy
Z2V0UG9pbnQueSgpKSk7CisgICAgICAgIG1fc3RyaW5nQnVpbGRlci5hcHBlbmQoU3RyaW5nOjpm
b3JtYXQoImEgJS42bGcgJS42bGcgJS42bGcgJWQgJWQgJS42bGcgJS42bGcgIiwgcjEsIHIyLCBh
bmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHRhcmdldFBvaW50LngoKSwgdGFyZ2V0UG9p
bnQueSgpKSk7CiB9CiAKIHZvaWQgU1ZHUGF0aFN0cmluZ0J1aWxkZXI6OmNsb3NlUGF0aCgpCiB7
Ci0gICAgbV9zdHJpbmdCdWlsZGVyLmFwcGVuZCgiWiIpOworICAgIG1fc3RyaW5nQnVpbGRlci5h
cHBlbmQoIlogIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BhdGhTdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
UGF0aFN0cmluZ0J1aWxkZXIuaAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3N2Zy9TVkdQ
YXRoU3RyaW5nQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTYgQEAKICNp
ZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJTVkdQYXRo
Q29uc3VtZXIuaCIKLSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR1Bh
dGhTdHJpbmdCdWlsZGVyIDogcHVibGljIFNWR1BhdGhDb25zdW1lciB7CiBwdWJsaWM6Ci0gICAg
U3RyaW5nIHJlc3VsdCgpIHsgcmV0dXJuIG1fc3RyaW5nQnVpbGRlci50b1N0cmluZyhDb25jYXRB
ZGRpbmdTcGFjZXNCZXR3ZWVuSW5kaXZpZHVhbFN0cmluZ3MpOyB9CisgICAgU3RyaW5nIHJlc3Vs
dCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3N0cmluZ0J1
aWxkZXIuY2xlYXIoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwKCkgeyBtX3N0cmluZ0J1
aWxkZXIgPSBTdHJpbmdCdWlsZGVyKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0
aFNlZ21lbnRDb3VudCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNvbnN1bWluZygp
IHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHJldmlz
aW9uIDY5NTYxKQorKysgV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDExICs0MiwxMSBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gNjk1NjEpCisrKyBXZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTdHJpbmdCdWlsZGVyLmgi
CiAKICNpbmNsdWRlIDx3dGYvTUQ1Lmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpA
QCAtNTIsNiArNTEsNyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBLVVJMJiB1cmws
IAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBidWlsZGVyLmFwcGVuZCh1cmwuaG9z
dCgpLmxvd2VyKCkpOwogICAgIGlmICh1cmwucG9ydCgpICYmICgoIXNlY3VyZSAmJiB1cmwucG9y
dCgpICE9IDgwKSB8fCAoc2VjdXJlICYmIHVybC5wb3J0KCkgIT0gNDQzKSkpIHsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoIjoiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKSkpOwogICAgIH0KICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2
OTU4NSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOCBAQAorMjAxMC0xMC0xMiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5A
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVbmlmeSBKU0M6OlN0cmluZ0J1aWxkZXIgJiBXZWJDb3JlOjpTdHJpbmdCdWlsZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzUzOAorCisgICAg
ICAgICogc3JjL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW1hZ2VU
aXRsZSk6IFVzZSBXVEY6OlN0cmluZ0J1aWxkZXIuCisgICAgICAgICogc3JjL1dlYkVudGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRW50aXRpZXM6OmNvbnZlcnRFbnRpdGllc0luU3Ry
aW5nKTogRGl0dG8uCisgICAgICAgICogc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1wbC5jcHA6IFJl
bW92ZSB1c2VsZXNzIGluY2x1ZGVzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlU2VyaWFsaXpl
ckltcGw6OmVuY29kZUFuZEZsdXNoQnVmZmVyKTogCisgICAgICAgICogc3JjL1dlYlBhZ2VTZXJp
YWxpemVySW1wbC5oOiBVc2UgV1RGOjpTdHJpbmdCdWlsZGVyLgorCiAyMDEwLTEwLTExICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRv
bnkgQ2hhbmcuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsaXplZFN0cmluZ3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxpemVkU3RyaW5ncy5jcHAJ
KHJldmlzaW9uIDY5NTYxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTQgKzMzLDE1IEBACiAKICNpbmNsdWRlICJJbnRT
aXplLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgotI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKIAogI2luY2x1ZGUgIldlYktpdC5o
IgogI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmlu
Zy5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCiB1c2luZyBXZWJL
aXQ6OldlYkxvY2FsaXplZFN0cmluZzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjIwLDcg
KzIyMSw3IEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUKICAgICBy
ZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHNpemUud2lkdGgoKSkpOwogICAgIHJlc3VsdC5h
cHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KDB4RDcpKTsgIC8vIFUrMDBENyAobXVsdGlwbGljYXRp
b24gc2lnbikKICAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHNpemUuaGVpZ2h0KCkp
KTsKLSAgICByZXN1bHQuYXBwZW5kKCIpIik7CisgICAgcmVzdWx0LmFwcGVuZCgnKScpOwogICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJFbnRpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJF
bnRpdGllcy5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJF
bnRpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE1ICszMSwxMiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkVudGl0aWVzLmgiCiAKLSNpbmNsdWRlIDxzdHJpbmcu
aD4KLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU3RyaW5nQnVpbGRl
ci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KICNpbmNsdWRlICJXZWJTdHJpbmcuaCIK
IAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBA
IC03Niw5ICs3Myw5IEBAIFN0cmluZyBXZWJFbnRpdGllczo6Y29udmVydEVudGl0aWVzSW5TdHIK
ICAgICAgICAgICAgIC8vIEFwcGVuZCBjb250ZW50IGJlZm9yZSBlbnRpdHkgY29kZS4KICAgICAg
ICAgICAgIGlmIChjdXJQb3MgPiBzdGFydFBvcykKICAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKFN0cmluZyhzdGFydFBvcywgY3VyUG9zIC0gc3RhcnRQb3MpKTsKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIiYiKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyYnKTsKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQobV9lbnRpdGllc01hcC5nZXQoKmN1clBvcykpOwotICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiOyIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnOycp
OwogICAgICAgICAgICAgc3RhcnRQb3MgPSArK2N1clBvczsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBjdXJQb3MrKzsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlh
bGl6ZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VT
ZXJpYWxpemVySW1wbC5jcHAJKHJldmlzaW9uIDY5NTYxKQorKysgV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw4ICs4OCw2
IEBACiAjaW5jbHVkZSAiSFRNTE1ldGFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVk
ZSAiU3RyaW5nQnVpbGRlci5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUg
Im1hcmt1cC5oIgogCkBAIC0yODAsMTEgKzI3OCwxMSBAQCB2b2lkIFdlYlBhZ2VTZXJpYWxpemVy
SW1wbDo6ZW5jb2RlQW5kRmx1CiAgICAgYm9vbCBmb3JjZSkKIHsKICAgICAvLyBEYXRhIGJ1ZmZl
ciBpcyBub3QgZnVsbCBub3IgZG8gd2Ugd2FudCB0byBmb3JjZSBmbHVzaC4KLSAgICBpZiAoIWZv
cmNlICYmIG1fZGF0YUJ1ZmZlci5sZW5ndGgoKSA8PSBkYXRhQnVmZmVyQ2FwYWNpdHkpCisgICAg
aWYgKCFmb3JjZSAmJiBtX2RhdGFCdWZmZXIuc2l6ZSgpIDw9IGRhdGFCdWZmZXJDYXBhY2l0eSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGNvbnRlbnQgPSBtX2RhdGFCdWZmZXIudG9T
dHJpbmcoKTsKLSAgICBtX2RhdGFCdWZmZXIuY2xlYXIoKTsKKyAgICBtX2RhdGFCdWZmZXIgPSBT
dHJpbmdCdWlsZGVyKCk7CiAKICAgICAvLyBDb252ZXJ0IHRoZSB1bmljb2RlIGNvbnRlbnQgdG8g
dGFyZ2V0IGVuY29kaW5nCiAgICAgQ1N0cmluZyBlbmNvZGVkQ29udGVudCA9IHBhcmFtLT50ZXh0
RW5jb2RpbmcuZW5jb2RlKApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFs
aXplckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJp
YWxpemVySW1wbC5oCShyZXZpc2lvbiA2OTU2MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGFnZVNlcmlhbGl6ZXJJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEyICszMSwxMiBAQAog
I2lmbmRlZiBXZWJQYWdlU2VyaWFsaXplckltcGxfaAogI2RlZmluZSBXZWJQYWdlU2VyaWFsaXpl
ckltcGxfaAogCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaW5jbHVkZSAiV2ViRW50aXRpZXMuaCIKICNpbmNsdWRl
ICJXZWJQYWdlU2VyaWFsaXplci5oIgpAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIC8v
IG9yaWdpbmFsIGxpbmsuCiAgICAgTGlua0xvY2FsUGF0aE1hcCBtX2xvY2FsTGlua3M7CiAgICAg
Ly8gRGF0YSBidWZmZXIgZm9yIHNhdmluZyByZXN1bHQgb2Ygc2VyaWFsaXplZCBET00gZGF0YS4K
LSAgICBXZWJDb3JlOjpTdHJpbmdCdWlsZGVyIG1fZGF0YUJ1ZmZlcjsKKyAgICBTdHJpbmdCdWls
ZGVyIG1fZGF0YUJ1ZmZlcjsKICAgICAvLyBQYXNzaW5nIHRydWUgdG8gcmVjdXJzaXZlX3Nlcmlh
bGl6YXRpb25fIGluZGljYXRlcyB3ZSB3aWxsIHNlcmlhbGl6ZSBub3QKICAgICAvLyBvbmx5IHRo
ZSBzcGVjaWZpZWQgZnJhbWUgYnV0IGFsc28gYWxsIHN1Yi1mcmFtZXMgaW4gdGhlIHNwZWNpZmlj
IGZyYW1lLgogICAgIC8vIE90aGVyd2lzZSB3ZSBvbmx5IHNlcmlhbGl6ZSB0aGUgc3BlY2lmaWVk
IGZyYW1lIGV4Y2x1ZGVkIGFsbCBzdWItZnJhbWVzLgo=
</data>
<flag name="review"
          id="60400"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>