<?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>97397</bug_id>
          
          <creation_ts>2012-09-22 13:50:03 -0700</creation_ts>
          <short_desc>[BlackBerry] Fix assertion in NetworkJob::notifyChallengeResult.</short_desc>
          <delta_ts>2012-10-10 21:55:08 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Lyon Chen">liachen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joenotcharles</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>726171</commentid>
    <comment_count>0</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-09-22 13:50:03 -0700</bug_when>
    <thetext>Changeset 129251 for https://bugs.webkit.org/show_bug.cgi?id=97348 caused an assertion. This is due to calling to NetworkJob::updateDeferLoadingCount() is not balanced. It&apos;s called for increment only when a authentication challenge is request, but will be called for decrement no matter authentication challenge is request or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726172</commentid>
    <comment_count>1</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-09-22 14:03:00 -0700</bug_when>
    <thetext>+ Yong, Joe, and Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726173</commentid>
    <comment_count>2</comment_count>
      <attachid>165268</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-09-22 14:03:26 -0700</bug_when>
    <thetext>Created attachment 165268
patch for 97397.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726643</commentid>
    <comment_count>3</comment_count>
      <attachid>165268</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-09-24 07:33:51 -0700</bug_when>
    <thetext>Comment on attachment 165268
patch for 97397.

View in context: https://bugs.webkit.org/attachment.cgi?id=165268&amp;action=review

&gt; Source/WebCore/platform/network/blackberry/NetworkJob.cpp:-849
&gt; -    if (result != AuthenticationChallengeSuccess || protectionSpace.host().isEmpty() || !url.isValid()) {

What happened to the protectionSpace and url checks in the refactored code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726649</commentid>
    <comment_count>4</comment_count>
      <attachid>165268</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-09-24 07:39:19 -0700</bug_when>
    <thetext>Comment on attachment 165268
patch for 97397.

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726651</commentid>
    <comment_count>5</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-09-24 07:39:56 -0700</bug_when>
    <thetext>Oops. didn&apos;t see Joe&apos;s question. will wait for Lyon&apos;s answer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737369</commentid>
    <comment_count>6</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-10-08 20:23:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 165268 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165268&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/blackberry/NetworkJob.cpp:-849
&gt; &gt; -    if (result != AuthenticationChallengeSuccess || protectionSpace.host().isEmpty() || !url.isValid()) {
&gt; 
&gt; What happened to the protectionSpace and url checks in the refactored code?

Sorry for the late response. I think the URL and protectionSpace checking is not necessary because if they are invalid we should fail somewhere already. For example url is checked before, and a url without host (or empty host) could not possibly asking for an authentication challenge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737758</commentid>
    <comment_count>7</comment_count>
      <attachid>165268</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2012-10-09 07:07:34 -0700</bug_when>
    <thetext>Comment on attachment 165268
patch for 97397.

View in context: https://bugs.webkit.org/attachment.cgi?id=165268&amp;action=review

&gt;&gt;&gt; Source/WebCore/platform/network/blackberry/NetworkJob.cpp:-849
&gt;&gt;&gt; -    if (result != AuthenticationChallengeSuccess || protectionSpace.host().isEmpty() || !url.isValid()) {
&gt;&gt; 
&gt;&gt; What happened to the protectionSpace and url checks in the refactored code?
&gt; 
&gt; Sorry for the late response. I think the URL and protectionSpace checking is not necessary because if they are invalid we should fail somewhere already. For example url is checked before, and a url without host (or empty host) could not possibly asking for an authentication challenge.

I disagree - url and protectionSpace are passed in as parameters, so they should be checked in case the call site changes. Just from looking at the function on its own its not clear that they&apos;re always correct, and we shouldn&apos;t require people to find every call site to reason about correctness. Or at least there should be an assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738400</commentid>
    <comment_count>8</comment_count>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-10-09 18:18:57 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I disagree - url and protectionSpace are passed in as parameters, so they should be checked in case the call site changes. Just from looking at the function on its own its not clear that they&apos;re always correct, and we shouldn&apos;t require people to find every call site to reason about correctness. Or at least there should be an assert.

OK, I prefer the assertions, as these 2 values (the url here and host) are not user input, when there is a problem with url or protectionSpace host at this stage, it must be a software error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739531</commentid>
    <comment_count>9</comment_count>
      <attachid>168129</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-10-10 19:49:35 -0700</bug_when>
    <thetext>Created attachment 168129
Updated patch for 97397.

This patch also includes the original patch for bug 97348 (https://bugs.webkit.org/show_bug.cgi?id=97348), because that patch is reverted in changeset 129419 (http://trac.webkit.org/changeset/129419) due to other reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739532</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 19:51:51 -0700</bug_when>
    <thetext>Attachment 168129 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.h:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.h:54:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.h:55:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.h:56:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.h:61:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.h:62:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.h:63:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/blackberry/MediaPlayerPrivateBlackBerry.cpp:726:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/platform/network/blackberry/NetworkJob.cpp:800:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:51:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:52:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:100:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:159:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:160:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:161:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:162:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:205:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:206:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/blackberry/AuthenticationChallengeManager.cpp:207:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 22 in 13 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>739557</commentid>
    <comment_count>11</comment_count>
      <attachid>168134</attachid>
    <who name="Lyon Chen">liachen</who>
    <bug_when>2012-10-10 20:36:20 -0700</bug_when>
    <thetext>Created attachment 168134
Updated patch that conforms to new indention style requirement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739606</commentid>
    <comment_count>12</comment_count>
      <attachid>168134</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 21:55:03 -0700</bug_when>
    <thetext>Comment on attachment 168134
Updated patch that conforms to new indention style requirement.

Clearing flags on attachment: 168134

Committed r131014: &lt;http://trac.webkit.org/changeset/131014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739607</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 21:55:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165268</attachid>
            <date>2012-09-22 14:03:26 -0700</date>
            <delta_ts>2012-10-10 20:36:20 -0700</delta_ts>
            <desc>patch for 97397.</desc>
            <filename>97397.patch</filename>
            <type>text/plain</type>
            <size>2895</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNTczMjYzLi4zMDJhMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTItMDktMjIgIExpYW5naHVpIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAg
ICAgW0JsYWNrQmVycnldIEZpeCBhc3NlcnRpb24gaW4gTmV0d29ya0pvYjo6bm90aWZ5Q2hhbGxl
bmdlUmVzdWx0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTczOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbiBjaGFuZ2VzZXQgMTI5MjUxLCBOZXR3b3JrSm9iOjp1cGRhdGVEZWZlckxvYWRpbmdDb3Vu
dCgpIGlzIG5vdAorICAgICAgICBjYWxsZWQgaW4gYmFsYW5jZWQgYmFoYXZpb3VyOiBpdCdzIGNh
bGxlZCBmb3IgaW5jcmVtZW50IG9ubHkgd2hlbiBhbgorICAgICAgICBhdXRoZW50aWNhdGlvbiBj
aGFsbGVuZ2UgaXMgcmVxdWVzdCwgYnV0IHdpbGwgYmUgY2FsbGVkIGZvciBkZWNyZW1lbnQgbm8K
KyAgICAgICAgbWF0dGVyIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBpcyByZXF1ZXN0IG9yIG5v
dC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhlcmUgaXMgbm90IGJlaGF2aW91cyBjaGFu
Z2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSm9iOjpzaG91bGRSZWxlYXNlQ2xpZW50UmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0pvYjo6bm90aWZ5Q2hhbGxlbmdlUmVz
dWx0KToKKwogMjAxMi0wOS0yMiAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBBWDogTGF5b3V0IHRlc3RzIHdvdWxkIGJlIGVhc2llciB0byB3cml0ZSBp
ZiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciBjb3VsZCBmaW5kIGFuIGVsZW1lbnQgYnkgaWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3
b3JrSm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9O
ZXR3b3JrSm9iLmNwcAppbmRleCBjY2E4OWI1Li4zYjBkM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3Bw
CkBAIC01MjgsNyArNTI4LDcgQEAgdm9pZCBOZXR3b3JrSm9iOjpoYW5kbGVOb3RpZnlDbG9zZShp
bnQgc3RhdHVzKQogCiBib29sIE5ldHdvcmtKb2I6OnNob3VsZFJlbGVhc2VDbGllbnRSZXNvdXJj
ZSgpCiB7Ci0gICAgaWYgKChtX25lZWRzUmV0cnlBc0ZUUERpcmVjdG9yeSAmJiByZXRyeUFzRlRQ
RGlyZWN0b3J5KCkpIHx8IChpc1JlZGlyZWN0KG1fZXh0ZW5kZWRTdGF0dXNDb2RlKSAmJiBoYW5k
bGVSZWRpcmVjdCgpKSB8fCBtX25ld0pvYldpdGhDcmVkZW50aWFsc1N0YXJ0ZWQpCisgICAgaWYg
KChtX25lZWRzUmV0cnlBc0ZUUERpcmVjdG9yeSAmJiByZXRyeUFzRlRQRGlyZWN0b3J5KCkpIHx8
IChpc1JlZGlyZWN0KG1fZXh0ZW5kZWRTdGF0dXNDb2RlKSAmJiBoYW5kbGVSZWRpcmVjdCgpKSB8
fCBtX25ld0pvYldpdGhDcmVkZW50aWFsc1N0YXJ0ZWQgfHwgbV9pc0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTg0NCwxNiArODQ0LDE1IEBAIHZvaWQgTmV0d29ya0pvYjo6ZmlyZURlbGV0ZUpvYlRpbWVyKFRp
bWVyPE5ldHdvcmtKb2I+KikKIAogdm9pZCBOZXR3b3JrSm9iOjpub3RpZnlDaGFsbGVuZ2VSZXN1
bHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFj
ZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFs
JiBjcmVkZW50aWFsKQogewotICAgIG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5naW5nID0gZmFs
c2U7Ci0KLSAgICBpZiAocmVzdWx0ICE9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU3VjY2VzcyB8
fCBwcm90ZWN0aW9uU3BhY2UuaG9zdCgpLmlzRW1wdHkoKSB8fCAhdXJsLmlzVmFsaWQoKSkgewot
ICAgICAgICBtX25ld0pvYldpdGhDcmVkZW50aWFsc1N0YXJ0ZWQgPSBmYWxzZTsKKyAgICBpZiAo
bV9pc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdpbmcpIHsKKyAgICAgICAgbV9pc0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdpbmcgPSBmYWxzZTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVN1Y2Nlc3MpCisgICAgICAgICAgICBjYW5jZWxKb2IoKTsKICAgICAgICAg
dXBkYXRlRGVmZXJMb2FkaW5nQ291bnQoLTEpOwotICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgY2FuY2VsSm9iKCk7Ci0gICAgdXBkYXRlRGVmZXJMb2FkaW5nQ291bnQoLTEpOworICAgIGlm
IChyZXN1bHQgIT0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTdWNjZXNzKQorICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9oYW5kbGUtPmdldEludGVybmFsKCktPm1fY3VycmVudFdlYkNoYWxs
ZW5nZS5pc051bGwoKSkKICAgICAgICAgbV9oYW5kbGUtPmdldEludGVybmFsKCktPm1fY3VycmVu
dFdlYkNoYWxsZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHByb3RlY3Rpb25TcGFjZSwg
Y3JlZGVudGlhbCwgMCwgbV9yZXNwb25zZSwgUmVzb3VyY2VFcnJvcigpKTsK
</data>
<flag name="commit-queue"
          id="177272"
          type_id="3"
          status="-"
          setter="yong.li.webkit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168129</attachid>
            <date>2012-10-10 19:49:35 -0700</date>
            <delta_ts>2012-10-10 20:36:20 -0700</delta_ts>
            <desc>Updated patch for 97397.</desc>
            <filename>97397-2.patch</filename>
            <type>text/plain</type>
            <size>31783</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOGE1MDM3Li42MjU2MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIg
QEAKKzIwMTItMTAtMTAgIExpYW5naHVpIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAg
ICAgW0JsYWNrQmVycnldIEZpeCBhc3NlcnRpb24gaW4gTmV0d29ya0pvYjo6bm90aWZ5Q2hhbGxl
bmdlUmVzdWx0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTczOTcKKyAgICAgICAgSW50ZXJuYWwgUFI6IDE4NjU5Ny4KKworICAgICAgICBJbnRlcm5h
bGx5IHJldmlld2VkIGJ5IFlvbmcgTGksIEpvZSBNYXNvbi4KKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2luZ2xldG9uIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlTWFuYWdlciB0byBtYW5hZ2UgYXV0aGVudGljYXRpb24KKyAgICAgICAgY2hhbGxl
bmdlIGRpYWxvZy4gSXQgZG9lcyBmb2xsb3dpbmcgdGhpbmdzOgorICAgICAgICBSZWNvcmQgcGFn
ZSBjcmVhdGlvbi9kZWxldGlvbiwgc28gaXQga25vd3Mgd2hhdCBwYWdlIGlzIHByZXNlbnQgb3Ig
bm90LgorICAgICAgICBSZWNvcmQgcGFnZSB2aXNpYmlsaXR5IGNoYW5nZSBzbyBpdCBrbm93cyB3
aGVuIHRvIGRpc3BsYXkgYSBkaWFsb2cgb3Igbm90LgorICAgICAgICBBY2NlcHQgYXV0aGVudGlj
YXRpb24gY2hhbGxlbmdlLCBhbmQgZGVjaWRlIHdoZXRoZXIgdG8gcG9zdHBvbmUgdGhlCisgICAg
ICAgICAgICBjaGFsbGVuZ2UgZGlhbG9nIGJhc2VkIG9uIHdoZXRoZXIgdGhlcmUgaXMgYWN0aXZl
IGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZQorICAgICAgICAgICAgZGlhbG9nIGFscmVhZHkgYW5k
IHdoZXRoZXIgaXRzIHBhZ2UgaXMgdmlzaWJsZSBvciBub3QuCisgICAgICAgIFdoZW4gYSBjaGFs
bGVuZ2UgcmVzdWx0IGNvbWVzIGJhY2ssIG5vdGlmeSB0aGUgcmVzdWx0IHRvIGFsbCBjbGllbnRz
CisgICAgICAgICAgICBhdXRoZW50aWNhdGluZyBmb3IgdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFj
ZSwgYW5kIHRoZW4gc3RhcnQgdGhlIG5leHQKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uIGNo
YWxsZW5nZSBmcm9tIHRoZSBzYW1lIHBhZ2UsIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgICAgV2hl
biBhIHBhZ2UgYmVjb21lcyB2aXNpYmxlLCBzdGFydCB0aGUgZmlyc3QgYXV0aGVudGljYXRpb24g
Y2hhbGxlbmdlCisgICAgICAgICAgICBkaWFsb2cgdGhhdCBoYXMgYmVlbiBibG9ja2VkIGJlZm9y
ZS4KKyAgICAgICAgV2hlbiBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgaXMgcmVxdWVzdGVk
LCB0aGUgTmV0d29ya0pvYiB3aWxsIGJlCisgICAgICAgICAgICBkZWZlcnJlZCBzbyBpdHMgaW5p
dGlhbCByZXNwb25zZSB3aWxsIGJlIHNhdmVkIHdoaWxlIHdhaXRpbmcgZm9yCisgICAgICAgICAg
ICB1c2VyIGRlY2lzaW9uIG9uIHRoZSBjaGFsbGVuZ2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGZvciBwbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcm5hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUJsYWNrQmVycnkuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ2hhbGxlbmdlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDaGFsbGVuZ2VJ
bmZvOjpDaGFsbGVuZ2VJbmZvKToKKyAgICAgICAgKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFu
YWdlclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VN
YW5hZ2VyUHJpdmF0ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyUHJpdmF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJQcml2YXRlOjpy
ZXN1bWVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJQcml2YXRlOjpzdGFydEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlclBy
aXZhdGU6OnBhZ2VFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VNYW5hZ2VyOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjpwYWdlQ3JlYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OnBhZ2VEZWxl
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6
cGFnZVZpc2liaWxpdHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlTWFuYWdlcjo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjpjYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1h
bmFnZXI6Om5vdGlmeUNoYWxsZW5nZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Omluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6aW5pdCk6CisgICAgICAgICogcGxhdGZvcm0v
YmxhY2tiZXJyeS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0JlcnJ5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0Jl
cnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5
ZXJQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6fk1lZGlh
UGxheWVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6Om9u
QXV0aGVudGljYXRpb25OZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlOjpub3RpZnlDaGFsbGVuZ2VSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oOgorICAgICAgICAoTWVk
aWFQbGF5ZXJQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
TmV0d29ya0pvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSm9iOjpOZXR3b3JrSm9i
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtKb2I6On5OZXR3b3JrSm9iKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0pvYjo6aGFuZGxlTm90aWZ5U3Rh
dHVzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0pvYjo6aGFuZGxlTm90aWZ5
Q2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0pvYjo6c2hvdWxkUmVsZWFzZUNsaWVu
dFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtKb2I6OnNlbmRSZXF1ZXN0V2l0
aENyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtKb2I6Om5vdGlmeUNoYWxs
ZW5nZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdv
cmtKb2IuaDoKKyAgICAgICAgKE5ldHdvcmtKb2IpOgorCiAyMDEyLTEwLTEwICBBbGV4YW5kZXIg
U2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIEludmFs
aWQgdmFsdWVzIGZvciBtZWRpYSBxdWVyeSBmZWF0dXJlcyBhcmUgbm90IGhhbmRsZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBiNjA4YWU4Li45ODcyMDJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC02MSw2ICs2MSw3IEBA
IExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2NwcC9XZWJET01TdHJp
bmcuY3BwCiAgICAgYmluZGluZ3MvY3BwL1dlYkV4Y2VwdGlvbkhhbmRsZXIuY3BwCiAgICAgcGxh
dGZvcm0vYmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS9Db29raWVEYXRhYmFz
ZUJhY2tpbmdTdG9yZS5jcHAKKyAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlTWFuYWdlci5jcHAKICAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFn
ZXIuY3BwCiAgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwCiAgICAgcGxhdGZv
cm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQwYTQy
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgiCisKKyNpbmNsdWRl
ICJDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRC
bGFja0JlcnJ5LmgiCisjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCisKKyNpbmNsdWRlIDxC
bGFja0JlcnJ5UGxhdGZvcm1Bc3NlcnQuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1M
b2cuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIEhhc2hNYXA8UGFnZUNsaWVudEJs
YWNrQmVycnkqLCBib29sPiBQYWdlVmlzaWJpbGl0eU1hcDsKKworc3RydWN0IENoYWxsZW5nZUlu
Zm8geworICAgIENoYWxsZW5nZUluZm8oY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYsIGNvbnN0IENyZWRlbnRpYWwmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCosIFBh
Z2VDbGllbnRCbGFja0JlcnJ5Kik7CisKKyAgICBLVVJMIHVybDsKKyAgICBQcm90ZWN0aW9uU3Bh
Y2Ugc3BhY2U7CisgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsOworICAgIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xpZW50KiBhdXRoQ2xpZW50OworICAgIFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBw
YWdlQ2xpZW50OworICAgIGJvb2wgYmxvY2tlZDsKK307CisKK0NoYWxsZW5nZUluZm86OkNoYWxs
ZW5nZUluZm8oY29uc3QgS1VSTCYgYVVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBhU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IENyZWRlbnRpYWwmIGFDcmVkZW50aWFsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCogYW5BdXRoQ2xpZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQYWdlQ2xpZW50QmxhY2tCZXJyeSogYVBhZ2VDbGll
bnQpCisgICAgOiB1cmwoYVVybCkKKyAgICAsIHNwYWNlKGFTcGFjZSkKKyAgICAsIGNyZWRlbnRp
YWwoYUNyZWRlbnRpYWwpCisgICAgLCBhdXRoQ2xpZW50KGFuQXV0aENsaWVudCkKKyAgICAsIHBh
Z2VDbGllbnQoYVBhZ2VDbGllbnQpCisgICAgLCBibG9ja2VkKGZhbHNlKQoreworfQorCitjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJQcml2YXRlKCk7CisKKyAgICBib29sIHJlc3Vt
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBhZ2VDbGllbnRCbGFja0JlcnJ5Kik7CisgICAgdm9p
ZCBzdGFydEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENoYWxsZW5nZUluZm8qKTsKKyAgICBib29s
IHBhZ2VFeGlzdHMoUGFnZUNsaWVudEJsYWNrQmVycnkqKTsKKworICAgIENoYWxsZW5nZUluZm8q
IG1fYWN0aXZlQ2hhbGxlbmdlOworICAgIFBhZ2VWaXNpYmlsaXR5TWFwIG1fcGFnZVZpc2liaWxp
dHlNYXA7CisgICAgVmVjdG9yPE93blB0cjxDaGFsbGVuZ2VJbmZvPiA+IG1fY2hhbGxlbmdlczsK
K307CisKK0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlclByaXZhdGU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlTWFuYWdlclByaXZhdGUoKQorICAgIDogbV9hY3RpdmVDaGFsbGVuZ2UoMCkK
K3sKK30KKworYm9vbCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJQcml2YXRlOjpyZXN1
bWVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlQ2xpZW50QmxhY2tCZXJyeSogY2xpZW50KQor
eworICAgIEFTU0VSVCghbV9hY3RpdmVDaGFsbGVuZ2UpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2NoYWxsZW5nZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fY2hhbGxl
bmdlc1tpXS0+cGFnZUNsaWVudCA9PSBjbGllbnQgJiYgbV9jaGFsbGVuZ2VzW2ldLT5ibG9ja2Vk
KSB7CisgICAgICAgICAgICBzdGFydEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fY2hhbGxlbmdl
c1tpXS5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1h
bmFnZXJQcml2YXRlOjpzdGFydEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKENoYWxsZW5nZUluZm8q
IGluZm8pCit7CisgICAgbV9hY3RpdmVDaGFsbGVuZ2UgPSBpbmZvOworICAgIG1fYWN0aXZlQ2hh
bGxlbmdlLT5ibG9ja2VkID0gZmFsc2U7CisgICAgbV9hY3RpdmVDaGFsbGVuZ2UtPnBhZ2VDbGll
bnQtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fYWN0aXZlQ2hhbGxlbmdlLT51cmwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
YWN0aXZlQ2hhbGxlbmdlLT5zcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVDaGFsbGVuZ2UtPmNyZWRlbnRpYWwp
OworfQorCitib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlclByaXZhdGU6OnBhZ2VF
eGlzdHMoUGFnZUNsaWVudEJsYWNrQmVycnkqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gbV9wYWdl
VmlzaWJpbGl0eU1hcC5maW5kKGNsaWVudCkgIT0gbV9wYWdlVmlzaWJpbGl0eU1hcC5lbmQoKTsK
K30KKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZU1hbmFnZXIoKQorICAgIDogZChhZG9wdFB0cihuZXcgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VNYW5hZ2VyUHJpdmF0ZSkpCit7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VN
YW5hZ2VyOjpwYWdlQ3JlYXRlZChQYWdlQ2xpZW50QmxhY2tCZXJyeSogY2xpZW50KQoreworICAg
IGQtPm1fcGFnZVZpc2liaWxpdHlNYXAuYWRkKGNsaWVudCwgdHJ1ZSk7Cit9CisKK3ZvaWQgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjpwYWdlRGVsZXRlZChQYWdlQ2xpZW50QmxhY2tC
ZXJyeSogY2xpZW50KQoreworICAgIGQtPm1fcGFnZVZpc2liaWxpdHlNYXAucmVtb3ZlKGNsaWVu
dCk7CisKKyAgICBpZiAoZC0+bV9hY3RpdmVDaGFsbGVuZ2UgJiYgZC0+bV9hY3RpdmVDaGFsbGVu
Z2UtPnBhZ2VDbGllbnQgPT0gY2xpZW50KQorICAgICAgICBkLT5tX2FjdGl2ZUNoYWxsZW5nZSA9
IDA7CisKKyAgICBWZWN0b3I8T3duUHRyPENoYWxsZW5nZUluZm8+ID4gZXhpc3Rpbmc7CisgICAg
ZC0+bV9jaGFsbGVuZ2VzLnN3YXAoZXhpc3RpbmcpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBleGlzdGluZy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoZXhpc3RpbmdbaV0tPnBh
Z2VDbGllbnQgIT0gY2xpZW50KQorICAgICAgICAgICAgZC0+bV9jaGFsbGVuZ2VzLmFwcGVuZChl
eGlzdGluZ1tpXS5yZWxlYXNlKCkpOworICAgIH0KK30KKwordm9pZCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZU1hbmFnZXI6OnBhZ2VWaXNpYmlsaXR5Q2hhbmdlZChQYWdlQ2xpZW50QmxhY2tCZXJy
eSogY2xpZW50LCBib29sIHZpc2libGUpCit7CisgICAgUGFnZVZpc2liaWxpdHlNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSBkLT5tX3BhZ2VWaXNpYmlsaXR5TWFwLmZpbmQoY2xpZW50KTsKKworICAgIEFT
U0VSVChpdGVyICE9IGQtPm1fcGFnZVZpc2liaWxpdHlNYXAuZW5kKCkpOworICAgIGlmIChpdGVy
ID09IGQtPm1fcGFnZVZpc2liaWxpdHlNYXAuZW5kKCkpIHsKKyAgICAgICAgZC0+bV9wYWdlVmlz
aWJpbGl0eU1hcC5hZGQoY2xpZW50LCB2aXNpYmxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChpdGVyLT5zZWNvbmQgPT0gdmlzaWJsZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaXRlci0+c2Vjb25kID0gdmlzaWJsZTsKKyAgICBpZiAoIXZpc2libGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChkLT5tX2FjdGl2ZUNoYWxsZW5nZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZC0+cmVzdW1lQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2xpZW50KTsKK30KKwordm9p
ZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNvbnN0IEtVUkwmIHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHNwYWNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQqIGF1dGhDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFnZUNsaWVudEJsYWNrQmVycnkqIHBhZ2VDbGll
bnQpCit7CisgICAgQkxBQ0tCRVJSWV9BU1NFUlQoYXV0aENsaWVudCk7CisgICAgQkxBQ0tCRVJS
WV9BU1NFUlQocGFnZUNsaWVudCk7CisKKyAgICBDaGFsbGVuZ2VJbmZvKiBpbmZvID0gbmV3IENo
YWxsZW5nZUluZm8odXJsLCBzcGFjZSwgY3JlZGVudGlhbCwgYXV0aENsaWVudCwgcGFnZUNsaWVu
dCk7CisgICAgZC0+bV9jaGFsbGVuZ2VzLmFwcGVuZChhZG9wdFB0cihpbmZvKSk7CisKKyAgICBp
ZiAoZC0+bV9hY3RpdmVDaGFsbGVuZ2UgfHwgIXBhZ2VDbGllbnQtPmlzVmlzaWJsZSgpKSB7Cisg
ICAgICAgIGluZm8tPmJsb2NrZWQgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZC0+c3RhcnRBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShpbmZvKTsKK30KKwordm9pZCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KiBjbGllbnQpCit7CisgICAgQkxBQ0tCRVJS
WV9BU1NFUlQoY2xpZW50KTsKKworICAgIGlmIChkLT5tX2FjdGl2ZUNoYWxsZW5nZSAmJiBkLT5t
X2FjdGl2ZUNoYWxsZW5nZS0+YXV0aENsaWVudCA9PSBjbGllbnQpCisgICAgICAgIGQtPm1fYWN0
aXZlQ2hhbGxlbmdlID0gMDsKKworICAgIFZlY3RvcjxPd25QdHI8Q2hhbGxlbmdlSW5mbz4gPiBl
eGlzdGluZzsKKyAgICBkLT5tX2NoYWxsZW5nZXMuc3dhcChleGlzdGluZyk7CisKKyAgICBDaGFs
bGVuZ2VJbmZvKiBuZXh0ID0gMDsKKyAgICBQYWdlQ2xpZW50QmxhY2tCZXJyeSogcGFnZSA9IDA7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4aXN0aW5nLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmIChleGlzdGluZ1tpXS0+YXV0aENsaWVudCAhPSBjbGllbnQpIHsKKyAgICAgICAg
ICAgIGlmIChwYWdlICYmICFuZXh0ICYmIGV4aXN0aW5nW2ldLT5wYWdlQ2xpZW50ID09IHBhZ2Up
CisgICAgICAgICAgICAgICAgbmV4dCA9IGV4aXN0aW5nW2ldLmdldCgpOworICAgICAgICAgICAg
ZC0+bV9jaGFsbGVuZ2VzLmFwcGVuZChleGlzdGluZ1tpXS5yZWxlYXNlKCkpOworICAgICAgICB9
IGVsc2UgaWYgKGQtPm1fYWN0aXZlQ2hhbGxlbmdlID09IGV4aXN0aW5nW2ldLmdldCgpKQorICAg
ICAgICAgICAgcGFnZSA9IGV4aXN0aW5nW2ldLT5wYWdlQ2xpZW50OworICAgIH0KKworICAgIGlm
IChuZXh0KQorICAgICAgICBkLT5zdGFydEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5leHQpOwor
fQorCit2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6bm90aWZ5Q2hhbGxlbmdl
UmVzdWx0KGNvbnN0IEtVUkwmIHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBzcGFjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcmVkZW50
aWFsJiBjcmVkZW50aWFsKQoreworICAgIGQtPm1fYWN0aXZlQ2hhbGxlbmdlID0gMDsKKworICAg
IFZlY3RvcjxPd25QdHI8Q2hhbGxlbmdlSW5mbz4gPiBleGlzdGluZzsKKyAgICBkLT5tX2NoYWxs
ZW5nZXMuc3dhcChleGlzdGluZyk7CisKKyAgICBDaGFsbGVuZ2VJbmZvKiBuZXh0ID0gMDsKKyAg
ICBQYWdlQ2xpZW50QmxhY2tCZXJyeSogcGFnZSA9IDA7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGV4aXN0aW5nLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChleGlzdGluZ1tpXS0+
c3BhY2UgIT0gc3BhY2UpIHsKKyAgICAgICAgICAgIGlmIChwYWdlICYmICFuZXh0ICYmIGV4aXN0
aW5nW2ldLT5wYWdlQ2xpZW50ID09IHBhZ2UpCisgICAgICAgICAgICAgICAgbmV4dCA9IGV4aXN0
aW5nW2ldLmdldCgpOworICAgICAgICAgICAgZC0+bV9jaGFsbGVuZ2VzLmFwcGVuZChleGlzdGlu
Z1tpXS5yZWxlYXNlKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFnZSA9IGV4
aXN0aW5nW2ldLT5wYWdlQ2xpZW50OworICAgICAgICAgICAgZXhpc3RpbmdbaV0tPmF1dGhDbGll
bnQtPm5vdGlmeUNoYWxsZW5nZVJlc3VsdChleGlzdGluZ1tpXS0+dXJsLCBzcGFjZSwgcmVzdWx0
LCBjcmVkZW50aWFsKTsKKworICAgICAgICAgICAgLy8gQWZ0ZXIgY2FsbGluZyBub3RpZnlDaGFs
bGVuZ2VSZXN1bHQoKSwgcGFnZSBjb3VsZCBiZSBkZXN0cm95ZWQgb3Igc29tZXRoaW5nLgorICAg
ICAgICAgICAgaWYgKCFkLT5wYWdlRXhpc3RzKHBhZ2UpIHx8ICFwYWdlLT5pc1Zpc2libGUoKSkK
KyAgICAgICAgICAgICAgICBwYWdlID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChu
ZXh0KQorICAgICAgICBkLT5zdGFydEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5leHQpOworfQor
CisvLyBLZWVwIGZvbGxvd2luZyBjb2RlIGF0IHRoZSBlbmQgb2YgdGhpcyBmaWxlISEhCitzdGF0
aWMgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyKiBzX21hbmFnZXIgPSAwOworCitBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIqIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdl
cjo6aW5zdGFuY2UoKQoreworICAgIEFTU0VSVChzX21hbmFnZXIpOworICAgIHJldHVybiBzX21h
bmFnZXI7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjppbml0KCkK
K3sKKyAgICBBU1NFUlQoIXNfbWFuYWdlcik7CisgICAgc19tYW5hZ2VyID0gbmV3IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlTWFuYWdlcigpOworfQorCisvLyBObyBtb3JlIGNvZGUgYWZ0ZXIgdGhp
cyBsaW5lLCBhbGwgbmV3IGNvZGUgc2hvdWxkIGNvbWUgYmVmb3JlIHNfbWFuYWdlciBkZWNsYXJh
dGlvbiEhIQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZU1hbmFnZXIuaAppbmRleCA1MjIyNGY1Li4yMGU3OTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VNYW5hZ2VyLmgKQEAgLTE5LDggKzE5LDEzIEBACiAjaWZuZGVmIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlTWFuYWdlcl9oCiAjZGVmaW5lIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
TWFuYWdlcl9oCiAKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK2NsYXNzIFBhZ2VDbGllbnRC
bGFja0JlcnJ5OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlTWFuYWdlclByaXZhdGU7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgS1VSTDsK
IGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKQEAgLTM1LDYgKzQwLDM2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCwgY29uc3QgQ3JlZGVu
dGlhbCYpID0gMDsKIH07CiAKK2NsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlciB7
CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgaW5pdCgpOworICAgIHN0YXRpYyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZU1hbmFnZXIqIGluc3RhbmNlKCk7CisKKyAgICB2b2lkIHBhZ2VDcmVhdGVk
KFBhZ2VDbGllbnRCbGFja0JlcnJ5Kik7CisgICAgdm9pZCBwYWdlRGVsZXRlZChQYWdlQ2xpZW50
QmxhY2tCZXJyeSopOworICAgIHZvaWQgcGFnZVZpc2liaWxpdHlDaGFuZ2VkKFBhZ2VDbGllbnRC
bGFja0JlcnJ5KiwgYm9vbCB2aXNpYmxlKTsKKworICAgIHZvaWQgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgS1VSTCYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBQcm90ZWN0aW9uU3BhY2UmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQ3JlZGVudGlhbCYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUNsaWVudCosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYWdlQ2xpZW50QmxhY2tCZXJyeSopOworCisgICAgdm9pZCBjYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCopOworCisgICAgdm9pZCBu
b3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDcmVkZW50aWFsJik7CisKK3ByaXZhdGU6CisgICAgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyKCk7CisgICAgfkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
TWFuYWdlcigpOworCisgICAgT3duUHRyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlclBy
aXZhdGU+IGQ7Cit9OworCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0JlcnJ5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0JlcnJ5LmgKaW5kZXggYmRi
MmYxNi4uZjJjN2MwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QYWdlQ2xpZW50QmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvUGFnZUNsaWVudEJsYWNrQmVycnkuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBpbnQgc2hvd0FsZXJ0RGlhbG9nKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZUNsaWVudDo6QWxlcnRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBXZWJDb3JlOjpDcmVk
ZW50aWFsJiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQqKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBXZWJDb3JlOjpDcmVk
ZW50aWFsJikgPSAwOwogICAgIHZpcnR1YWwgU2F2ZUNyZWRlbnRpYWxUeXBlIG5vdGlmeVNob3Vs
ZFNhdmVDcmVkZW50aWFsKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Byb3h5Q3Jl
ZGVudGlhbChjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJikgPSAwOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQ
cml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCmluZGV4IDg2N2Q4MTUu
LjAxOGU4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFj
a0JlcnJ5LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2lmIEVOQUJMRShWSURFTykKICNpbmNsdWRl
ICJNZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgiCiAKKyNpbmNsdWRlICJBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZU1hbmFnZXIuaCIKICNpbmNsdWRlICJDb29raWVNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCkBAIC0x
MTQsNiArMTE1LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUoTWVk
aWFQbGF5ZXIqIHBsYXllcikKICAgICAsIG1fdXNlckRyaXZlblNlZWtUaW1lcih0aGlzLCAmTWVk
aWFQbGF5ZXJQcml2YXRlOjp1c2VyRHJpdmVuU2Vla1RpbWVyRmlyZWQpCiAgICAgLCBtX2xhc3RT
ZWVrVGltZSgwKQogICAgICwgbV9sYXN0U2Vla1RpbWVQZW5kaW5nKGZhbHNlKQorICAgICwgbV9p
c0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdpbmcoZmFsc2UpCiAgICAgLCBtX3dhaXRNZXRhZGF0YVRp
bWVyKHRoaXMsICZNZWRpYVBsYXllclByaXZhdGU6OndhaXRNZXRhZGF0YVRpbWVyRmlyZWQpCiAg
ICAgLCBtX3dhaXRNZXRhZGF0YVBvcERpYWxvZ0NvdW50ZXIoMCkKIHsKQEAgLTEyMSw2ICsxMjMs
OSBAQCBNZWRpYVBsYXllclByaXZhdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciog
cGxheWVyKQogCiBNZWRpYVBsYXllclByaXZhdGU6On5NZWRpYVBsYXllclByaXZhdGUoKQogewor
ICAgIGlmIChtX2lzQXV0aGVudGljYXRpb25DaGFsbGVuZ2luZykKKyAgICAgICAgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjppbnN0YW5jZSgpLT5jYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSh0aGlzKTsKKwogICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkgewogICAgICAgICBtX3dl
YkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRXhpdEZ1bGxzY3Jl
ZW4oKTsKICAgICB9CkBAIC03MTMsMTIgKzcxOCwyMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6b25BdXRoZW50aWNhdGlvbk5lZWRlZChNTVJBdXRoQ2hhbGxlbmdlJiBhdXRoQ2hhbGxlbmdl
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGZyYW1lVmlldygpICYmIGZyYW1l
VmlldygpLT5ob3N0V2luZG93KCkpCi0gICAgICAgIGZyYW1lVmlldygpLT5ob3N0V2luZG93KCkt
PnBsYXRmb3JtUGFnZUNsaWVudCgpLT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1cmwsIHByb3Rl
Y3Rpb25TcGFjZSwgY3JlZGVudGlhbCwgdGhpcyk7CisgICAgaWYgKCFmcmFtZVZpZXcoKSB8fCAh
ZnJhbWVWaWV3KCktPmhvc3RXaW5kb3coKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdpbmcgPSB0cnVlOworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlTWFuYWdlcjo6aW5zdGFuY2UoKS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UodXJsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvdGVjdGlvblNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlZGVudGlhbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZVZpZXcoKS0+aG9zdFdp
bmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQg
cmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogeworICAgIG1faXNBdXRoZW50
aWNhdGlvbkNoYWxsZW5naW5nID0gZmFsc2U7CisKICAgICBpZiAocmVzdWx0ICE9IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU3VjY2VzcyB8fCAhdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oCmlu
ZGV4IDI2MjllMDQuLjg1NzhjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQ
cml2YXRlQmxhY2tCZXJyeS5oCkBAIC0xNzQsNiArMTc0LDcgQEAgcHJpdmF0ZToKICAgICBUaW1l
cjxNZWRpYVBsYXllclByaXZhdGU+IG1fdXNlckRyaXZlblNlZWtUaW1lcjsKICAgICBmbG9hdCBt
X2xhc3RTZWVrVGltZTsKICAgICBib29sIG1fbGFzdFNlZWtUaW1lUGVuZGluZzsKKyAgICBib29s
IG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5naW5nOwogICAgIHZvaWQgd2FpdE1ldGFkYXRhVGlt
ZXJGaXJlZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+Kik7CiAgICAgVGltZXI8TWVkaWFQbGF5
ZXJQcml2YXRlPiBtX3dhaXRNZXRhZGF0YVRpbWVyOwogICAgIGludCBtX3dhaXRNZXRhZGF0YVBv
cERpYWxvZ0NvdW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAKaW5kZXggNGViOTJkZi4uMTBmYjQwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05l
dHdvcmtKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9OZXR3b3JrSm9iLmNwcApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtKb2IuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlTWFuYWdlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgogI2luY2x1ZGUgIkNvb2tpZU1hbmFnZXIuaCIKQEAgLTg0LDkgKzg1LDE2IEBAIE5l
dHdvcmtKb2I6Ok5ldHdvcmtKb2IoKQogICAgICwgbV9kZWZlcnJlZERhdGEoKnRoaXMpCiAgICAg
LCBtX2RlZmVyTG9hZGluZ0NvdW50KDApCiAgICAgLCBtX2ZyYW1lKDApCisgICAgLCBtX2lzQXV0
aGVudGljYXRpb25DaGFsbGVuZ2luZyhmYWxzZSkKIHsKIH0KIAorTmV0d29ya0pvYjo6fk5ldHdv
cmtKb2IoKQoreworICAgIGlmIChtX2lzQXV0aGVudGljYXRpb25DaGFsbGVuZ2luZykKKyAgICAg
ICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjppbnN0YW5jZSgpLT5jYW5jZWxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzKTsKK30KKwogYm9vbCBOZXR3b3JrSm9iOjppbml0aWFs
aXplKGludCBwbGF5ZXJJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJp
bmcmIHBhZ2VHcm91cE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VS
TCYgdXJsLApAQCAtMTk3LDEwICsyMDUsOCBAQCB2b2lkIE5ldHdvcmtKb2I6OmhhbmRsZU5vdGlm
eVN0YXR1c1JlY2VpdmVkKGludCBzdGF0dXMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogICAg
IG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQobWVzc2FnZSk7CiAKLSAgICBpZiAoaXNVbmF1
dGhvcml6ZWQobV9leHRlbmRlZFN0YXR1c0NvZGUpKSB7CisgICAgaWYgKGlzVW5hdXRob3JpemVk
KG1fZXh0ZW5kZWRTdGF0dXNDb2RlKSkKICAgICAgICAgcHVyZ2VDcmVkZW50aWFscygpOwotICAg
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dM
ZXZlbENyaXRpY2FsLCAiQXV0aGVudGljYXRpb24gZmFpbGVkLCBwdXJnZSB0aGUgc3RvcmVkIGNy
ZWRlbnRpYWxzIGZvciB0aGlzIHNpdGUuIik7Ci0gICAgfQogfQogCiB2b2lkIE5ldHdvcmtKb2I6
Om5vdGlmeUhlYWRlcnNSZWNlaXZlZChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1JlcXVl
c3Q6OkhlYWRlckxpc3QmIGhlYWRlcnMpCkBAIC00NzgsNiArNDg0LDcgQEAgdm9pZCBOZXR3b3Jr
Sm9iOjpoYW5kbGVOb3RpZnlDbG9zZShpbnQgc3RhdHVzKQogI2lmbmRlZiBOREVCVUcKICAgICBt
X2lzUnVubmluZyA9IGZhbHNlOwogI2VuZGlmCisKICAgICBpZiAoIW1fY2FuY2VsbGVkKSB7CiAg
ICAgICAgIGlmICghbV9zdGF0dXNSZWNlaXZlZCkgewogICAgICAgICAgICAgLy8gQ29ubmVjdGlv
biBmYWlsZWQgYmVmb3JlIHNlbmRpbmcgbm90aWZ5U3RhdHVzUmVjZWl2ZWQ6IHVzZSBnZW5lcmlj
IE5ldHdvcmtFcnJvci4KQEAgLTQ4OSw2ICs0OTYsNyBAQCB2b2lkIE5ldHdvcmtKb2I6OmhhbmRs
ZU5vdGlmeUNsb3NlKGludCBzdGF0dXMpCiAgICAgICAgICAgICAgICAgbV9leHRlbmRlZFN0YXR1
c0NvZGUgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RmlsdGVyU3RyZWFtOjpTdGF0dXNUb29NYW55
UmVkaXJlY3RzOwogCiAgICAgICAgICAgICBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOworCiAgICAg
ICAgICAgICBpZiAoaXNDbGllbnRBdmFpbGFibGUoKSkgewogICAgICAgICAgICAgICAgIGlmIChp
c0Vycm9yKHN0YXR1cykpCiAgICAgICAgICAgICAgICAgICAgIG1fZXh0ZW5kZWRTdGF0dXNDb2Rl
ID0gc3RhdHVzOwpAQCAtNTE0LDcgKzUyMiw3IEBAIHZvaWQgTmV0d29ya0pvYjo6aGFuZGxlTm90
aWZ5Q2xvc2UoaW50IHN0YXR1cykKIAogYm9vbCBOZXR3b3JrSm9iOjpzaG91bGRSZWxlYXNlQ2xp
ZW50UmVzb3VyY2UoKQogewotICAgIGlmICgobV9uZWVkc1JldHJ5QXNGVFBEaXJlY3RvcnkgJiYg
cmV0cnlBc0ZUUERpcmVjdG9yeSgpKSB8fCAoaXNSZWRpcmVjdChtX2V4dGVuZGVkU3RhdHVzQ29k
ZSkgJiYgaGFuZGxlUmVkaXJlY3QoKSkgfHwgbV9uZXdKb2JXaXRoQ3JlZGVudGlhbHNTdGFydGVk
KQorICAgIGlmICgobV9uZWVkc1JldHJ5QXNGVFBEaXJlY3RvcnkgJiYgcmV0cnlBc0ZUUERpcmVj
dG9yeSgpKSB8fCAoaXNSZWRpcmVjdChtX2V4dGVuZGVkU3RhdHVzQ29kZSkgJiYgaGFuZGxlUmVk
aXJlY3QoKSkgfHwgbV9uZXdKb2JXaXRoQ3JlZGVudGlhbHNTdGFydGVkIHx8IG1faXNBdXRoZW50
aWNhdGlvbkNoYWxsZW5naW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC03ODQsOCArNzkyLDE2IEBAIGJvb2wgTmV0d29ya0pvYjo6c2VuZFJlcXVlc3RX
aXRoQ3JlZGVudGlhbHMoUHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZSB0eXBlLCBQcm90CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBtX2hhbmRsZS0+Z2V0SW50
ZXJuYWwoKS0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KTsKLSAgICAgICAgICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbGF0
Zm9ybVBhZ2VDbGllbnQoKS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UobmV3VVJMLCBwcm90ZWN0
aW9uU3BhY2UsIENyZWRlbnRpYWwoKSwgdGhpcyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgICAgICAgICAgbV9pc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdpbmcgPSB0cnVlOworICAg
ICAgICAgICAgdXBkYXRlRGVmZXJMb2FkaW5nQ291bnQoMSk7CisKKyAgICAgICAgICAgIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6aW5zdGFuY2UoKS0+YXV0aGVudGljYXRpb25DaGFs
bGVuZ2UobmV3VVJMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0aW9uU3BhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENyZWRlbnRpYWwoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUo
KS0+Y2xpZW50KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKHVzZXJu
YW1lLCBwYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbik7CkBAIC04NDYs
MTYgKzg2MiwyNSBAQCB2b2lkIE5ldHdvcmtKb2I6OmZpcmVEZWxldGVKb2JUaW1lcihUaW1lcjxO
ZXR3b3JrSm9iPiopCiAKIHZvaWQgTmV0d29ya0pvYjo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0IHJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYgY3Jl
ZGVudGlhbCkKIHsKLSAgICBpZiAocmVzdWx0ICE9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU3Vj
Y2VzcyB8fCBwcm90ZWN0aW9uU3BhY2UuaG9zdCgpLmlzRW1wdHkoKSB8fCAhdXJsLmlzVmFsaWQo
KSkgewotICAgICAgICBtX25ld0pvYldpdGhDcmVkZW50aWFsc1N0YXJ0ZWQgPSBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuOworICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgpKTsKKyAgICBBU1NFUlQodXJs
ID09IG1fcmVzcG9uc2UudXJsKCkpOworICAgIEFTU0VSVCghcHJvdGVjdGlvblNwYWNlLmhvc3Qo
KS5pc0VtcHR5KCkpOworCisgICAgaWYgKG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5naW5nKSB7
CisgICAgICAgIG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5naW5nID0gZmFsc2U7CisgICAgICAg
IGlmIChyZXN1bHQgPT0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTdWNjZXNzKQorICAgICAgICAg
ICAgY2FuY2VsSm9iKCk7CisgICAgICAgIHVwZGF0ZURlZmVyTG9hZGluZ0NvdW50KC0xKTsKICAg
ICB9CiAKKyAgICBpZiAocmVzdWx0ICE9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU3VjY2VzcykK
KyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1faGFuZGxlLT5nZXRJbnRlcm5hbCgpLT5tX2N1
cnJlbnRXZWJDaGFsbGVuZ2UuaXNOdWxsKCkpCiAgICAgICAgIG1faGFuZGxlLT5nZXRJbnRlcm5h
bCgpLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShwcm90
ZWN0aW9uU3BhY2UsIGNyZWRlbnRpYWwsIDAsIG1fcmVzcG9uc2UsIFJlc291cmNlRXJyb3IoKSk7
CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IG1faGFuZGxlLT5maXJzdFJlcXVl
c3QoKTsKLSAgICBuZXdSZXF1ZXN0LnNldFVSTChtX3Jlc3BvbnNlLnVybCgpKTsKKyAgICBuZXdS
ZXF1ZXN0LnNldFVSTCh1cmwpOwogICAgIG5ld1JlcXVlc3Quc2V0TXVzdEhhbmRsZUludGVybmFs
bHkodHJ1ZSk7CiAgICAgbV9uZXdKb2JXaXRoQ3JlZGVudGlhbHNTdGFydGVkID0gc3RhcnROZXdK
b2JXaXRoUmVxdWVzdChuZXdSZXF1ZXN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oCmluZGV4IDM1MjYzNzQu
LjhiZmI0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxh
Y2tiZXJyeS9OZXR3b3JrSm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPG5l
dHdvcmsvRmlsdGVyU3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKQEAgLTQ5LDYgKzUwLDgg
QEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgTmV0d29ya0pvYiA6IHB1YmxpYyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCwgcHVibGljIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpG
aWx0ZXJTdHJlYW0gewogcHVibGljOgogICAgIE5ldHdvcmtKb2IoKTsKKyAgICB+TmV0d29ya0pv
YigpOworCiAgICAgYm9vbCBpbml0aWFsaXplKGludCBwbGF5ZXJJZCwKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLAogICAgICAgICAgICAgICAgICAgICBj
b25zdCBLVVJMJiwKQEAgLTE3MSw2ICsxNzQsOCBAQCBwcml2YXRlOgogICAgIERlZmVycmVkRGF0
YSBtX2RlZmVycmVkRGF0YTsKICAgICBpbnQgbV9kZWZlckxvYWRpbmdDb3VudDsKICAgICBjb25z
dCBGcmFtZSogbV9mcmFtZTsKKworICAgIGJvb2wgbV9pc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdp
bmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL0JsYWNrQmVycnlHbG9iYWwuY3BwIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9CbGFja0JlcnJ5R2xvYmFsLmNwcAppbmRleCBmYzljZDVhLi5kOGI1YzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JsYWNrQmVycnlHbG9i
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmxhY2tCZXJyeUdsb2Jh
bC5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJCbGFja0JlcnJ5R2xvYmFsLmgiCiAK
ICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oIgogI2luY2x1ZGUgIkNhY2hlQ2xpZW50QmxhY2tCZXJy
eS5oIgogI2luY2x1ZGUgIkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmgiCkBAIC04MCw2ICs4MSw4IEBAIHZvaWQgZ2xvYmFsSW5pdGlh
bGl6ZSgpCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNldHRpbmdzKiBzZXR0aW5ncyA9IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpTZXR0aW5nczo6aW5zdGFuY2UoKTsKIAogICAgIEltYWdlU291
cmNlOjpzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2Uoc2V0dGluZ3MtPm1heFBpeGVsc1BlckRl
Y29kZWRJbWFnZSgpKTsKKworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6aW5p
dCgpOwogfQogCiB2b2lkIGNvbGxlY3RKYXZhc2NyaXB0R2FyYmFnZU5vdygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCAzMjI4NjhmLi5iNjkyZWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTQzNCw2ICs0MzQsOCBA
QCBXZWJQYWdlUHJpdmF0ZTo6V2ViUGFnZVByaXZhdGUoV2ViUGFnZSogd2ViUGFnZSwgV2ViUGFn
ZUNsaWVudCogY2xpZW50LCBjb25zdCBJbgogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
RGV2aWNlSW5mbzo6aW5zdGFuY2UoKTsKICAgICAgICAgZGVmYXVsdFVzZXJBZ2VudCgpOwogICAg
IH0KKworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6aW5zdGFuY2UoKS0+cGFn
ZUNyZWF0ZWQodGhpcyk7CiB9CiAKIFdlYlBhZ2U6OldlYlBhZ2UoV2ViUGFnZUNsaWVudCogY2xp
ZW50LCBjb25zdCBXZWJTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFBsYXRmb3JtOjpJbnRS
ZWN0JiByZWN0KQpAQCAtNDQ1LDYgKzQ0Nyw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoV2ViUGFnZUNs
aWVudCogY2xpZW50LCBjb25zdCBXZWJTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFBsCiAK
IFdlYlBhZ2VQcml2YXRlOjp+V2ViUGFnZVByaXZhdGUoKQogeworICAgIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlTWFuYWdlcjo6aW5zdGFuY2UoKS0+cGFnZURlbGV0ZWQodGhpcyk7CiAgICAgLy8g
SGFuZCB0aGUgYmFja2luZ3N0b3JlIGJhY2sgdG8gYW5vdGhlciBvd25lciBpZiBuZWNlc3Nhcnku
CiAgICAgbV93ZWJQYWdlLT5zZXRWaXNpYmxlKGZhbHNlKTsKICAgICBpZiAoQmFja2luZ1N0b3Jl
UHJpdmF0ZTo6Y3VycmVudEJhY2tpbmdTdG9yZU93bmVyKCkgPT0gbV93ZWJQYWdlKQpAQCAtMjE4
NSwxOCArMjE4OCwxOSBAQCBib29sIFdlYlBhZ2VQcml2YXRlOjppc0FjdGl2ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY2xpZW50LT5pc0FjdGl2ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcml2YXRl
OjphdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBpbnB1dENyZWRlbnRp
YWwsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KiBjbGllbnQpCit2b2lkIFdlYlBhZ2VQ
cml2YXRlOjphdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFBy
b3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBpbnB1dENy
ZWRlbnRpYWwpCiB7CiAgICAgV2ViU3RyaW5nIHVzZXJuYW1lOwogICAgIFdlYlN0cmluZyBwYXNz
d29yZDsKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIqIGF1dGhtZ3IgPSBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Omluc3RhbmNlKCk7CiAKICNpZiAhZGVmaW5lZChQ
VUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKICAgICBpZiAobV9kdW1wUmVuZGVyVHJlZSkg
ewogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwoaW5wdXRDcmVkZW50aWFsLCBpbnB1dENy
ZWRlbnRpYWwucGVyc2lzdGVuY2UoKSk7CiAgICAgICAgIGlmIChtX2R1bXBSZW5kZXJUcmVlLT5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY3JlZGVudGlhbCkpCi0gICAgICAgICAg
ICBjbGllbnQtPm5vdGlmeUNoYWxsZW5nZVJlc3VsdCh1cmwsIHByb3RlY3Rpb25TcGFjZSwgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTdWNjZXNzLCBjcmVkZW50aWFsKTsKKyAgICAgICAgICAgIGF1
dGhtZ3ItPm5vdGlmeUNoYWxsZW5nZVJlc3VsdCh1cmwsIHByb3RlY3Rpb25TcGFjZSwgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTdWNjZXNzLCBjcmVkZW50aWFsKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY2xpZW50LT5ub3RpZnlDaGFsbGVuZ2VSZXN1bHQodXJsLCBwcm90ZWN0aW9uU3Bh
Y2UsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FuY2VsbGVkLCBpbnB1dENyZWRlbnRpYWwpOwor
ICAgICAgICAgICAgYXV0aG1nci0+bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KHVybCwgcHJvdGVjdGlv
blNwYWNlLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbmNlbGxlZCwgaW5wdXRDcmVkZW50aWFs
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMjIxNyw5ICsyMjIxLDkgQEAg
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBQcm90ZWN0aW9uU3AKICNlbmRpZgogCiAgICAgaWYgKGlzQ29uZmlybWVkKQot
ICAgICAgICBjbGllbnQtPm5vdGlmeUNoYWxsZW5nZVJlc3VsdCh1cmwsIHByb3RlY3Rpb25TcGFj
ZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTdWNjZXNzLCBjcmVkZW50aWFsKTsKKyAgICAgICAg
YXV0aG1nci0+bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KHVybCwgcHJvdGVjdGlvblNwYWNlLCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVN1Y2Nlc3MsIGNyZWRlbnRpYWwpOwogICAgIGVsc2UKLSAgICAg
ICAgY2xpZW50LT5ub3RpZnlDaGFsbGVuZ2VSZXN1bHQodXJsLCBwcm90ZWN0aW9uU3BhY2UsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FuY2VsbGVkLCBpbnB1dENyZWRlbnRpYWwpOworICAgICAg
ICBhdXRobWdyLT5ub3RpZnlDaGFsbGVuZ2VSZXN1bHQodXJsLCBwcm90ZWN0aW9uU3BhY2UsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FuY2VsbGVkLCBpbnB1dENyZWRlbnRpYWwpOwogfQogCiBQ
YWdlQ2xpZW50QmxhY2tCZXJyeTo6U2F2ZUNyZWRlbnRpYWxUeXBlIFdlYlBhZ2VQcml2YXRlOjpu
b3RpZnlTaG91bGRTYXZlQ3JlZGVudGlhbChib29sIGlzTmV3KQpAQCAtMzIyNCw2ICszMjI4LDcg
QEAgdm9pZCBXZWJQYWdlOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgZC0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZU1hbmFnZXI6Omluc3RhbmNlKCktPnBhZ2VWaXNpYmlsaXR5Q2hhbmdlZChkLCB2aXNpYmxl
KTsKIAogICAgIGlmICghdmlzaWJsZSkgewogICAgICAgICBkLT5zdXNwZW5kQmFja2luZ1N0b3Jl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5o
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAppbmRleCAwZDk3Njhm
Li42NTlkYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKQEAg
LTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2hvd0FsZXJ0RGlhbG9n
KFdlYlBhZ2VDbGllbnQ6OkFsZXJ0VHlwZSBhdHlwZSk7CiAgICAgdmlydHVhbCBib29sIGlzQWN0
aXZlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlzaWJsZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiwgY29u
c3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q2xpZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJik7CiAgICAgdmlydHVhbCBTYXZlQ3JlZGVudGlhbFR5cGUgbm90
aWZ5U2hvdWxkU2F2ZUNyZWRlbnRpYWwoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNQcm94
eUNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZwppbmRleCBhYmY2ZjE3Li45ZDhiZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMC0xMCAgTGlhbmdodWkgQ2hlbiAg
PGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRml4IGFzc2VydGlvbiBp
biBOZXR3b3JrSm9iOjpub3RpZnlDaGFsbGVuZ2VSZXN1bHQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM5NworICAgICAgICBJbnRlcm5hbCBQUjog
MTg2NTk3LgorCisgICAgICAgIEludGVybmFsbHkgcmV2aWV3ZWQgYnkgWW9uZyBMaSwgSm9lIE1h
c29uLgorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgV2ViUGFnZSB0byB1c2UgbmV3IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci4KKyAg
ICAgICAgUmVnaXN0ZXIgcGFnZSBjcmVhdGlvbi9kZWxldGlvbiBhbmQgdmlzaWJpbGl0eSBjaGFu
Z2UgdG8gdGhlIG5ldworICAgICAgICAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2Vy
LgorICAgICAgICBJbml0aWFsaXplIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlciBpbiBH
bG9iYWxJbml0aWFsaXplKCkgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBcGkvQmxhY2tCZXJyeUds
b2JhbC5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Omdsb2JhbEluaXRpYWxpemUp
OgorICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZVByaXZhdGU6On5XZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjphdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnNldFZpc2libGUpOgorICAg
ICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKFdlYlBhZ2VQcml2YXRlKToKKwogMjAx
Mi0xMC0xMCAgQW5kcmV3IExvICA8YW5sb0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5
XSBEbyBub3QgcGVyZm9ybSBiYWNraW5nIHN0b3JlIGJsaXQgZm9yIGFuaW1hdGlvbnMgZHVyaW5n
IG9uZS1zaG90IGRyYXdpbmcgc3luY2hyb25pemF0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168134</attachid>
            <date>2012-10-10 20:36:20 -0700</date>
            <delta_ts>2012-10-10 21:55:03 -0700</delta_ts>
            <desc>Updated patch that conforms to new indention style requirement.</desc>
            <filename>97397-3.patch</filename>
            <type>text/plain</type>
            <size>30304</size>
            <attacher name="Lyon Chen">liachen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhOGE1MDM3Li42MjU2MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIg
QEAKKzIwMTItMTAtMTAgIExpYW5naHVpIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CisKKyAgICAg
ICAgW0JsYWNrQmVycnldIEZpeCBhc3NlcnRpb24gaW4gTmV0d29ya0pvYjo6bm90aWZ5Q2hhbGxl
bmdlUmVzdWx0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTczOTcKKyAgICAgICAgSW50ZXJuYWwgUFI6IDE4NjU5Ny4KKworICAgICAgICBJbnRlcm5h
bGx5IHJldmlld2VkIGJ5IFlvbmcgTGksIEpvZSBNYXNvbi4KKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgc2luZ2xldG9uIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlTWFuYWdlciB0byBtYW5hZ2UgYXV0aGVudGljYXRpb24KKyAgICAgICAgY2hhbGxl
bmdlIGRpYWxvZy4gSXQgZG9lcyBmb2xsb3dpbmcgdGhpbmdzOgorICAgICAgICBSZWNvcmQgcGFn
ZSBjcmVhdGlvbi9kZWxldGlvbiwgc28gaXQga25vd3Mgd2hhdCBwYWdlIGlzIHByZXNlbnQgb3Ig
bm90LgorICAgICAgICBSZWNvcmQgcGFnZSB2aXNpYmlsaXR5IGNoYW5nZSBzbyBpdCBrbm93cyB3
aGVuIHRvIGRpc3BsYXkgYSBkaWFsb2cgb3Igbm90LgorICAgICAgICBBY2NlcHQgYXV0aGVudGlj
YXRpb24gY2hhbGxlbmdlLCBhbmQgZGVjaWRlIHdoZXRoZXIgdG8gcG9zdHBvbmUgdGhlCisgICAg
ICAgICAgICBjaGFsbGVuZ2UgZGlhbG9nIGJhc2VkIG9uIHdoZXRoZXIgdGhlcmUgaXMgYWN0aXZl
IGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZQorICAgICAgICAgICAgZGlhbG9nIGFscmVhZHkgYW5k
IHdoZXRoZXIgaXRzIHBhZ2UgaXMgdmlzaWJsZSBvciBub3QuCisgICAgICAgIFdoZW4gYSBjaGFs
bGVuZ2UgcmVzdWx0IGNvbWVzIGJhY2ssIG5vdGlmeSB0aGUgcmVzdWx0IHRvIGFsbCBjbGllbnRz
CisgICAgICAgICAgICBhdXRoZW50aWNhdGluZyBmb3IgdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFj
ZSwgYW5kIHRoZW4gc3RhcnQgdGhlIG5leHQKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0aW9uIGNo
YWxsZW5nZSBmcm9tIHRoZSBzYW1lIHBhZ2UsIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgICAgV2hl
biBhIHBhZ2UgYmVjb21lcyB2aXNpYmxlLCBzdGFydCB0aGUgZmlyc3QgYXV0aGVudGljYXRpb24g
Y2hhbGxlbmdlCisgICAgICAgICAgICBkaWFsb2cgdGhhdCBoYXMgYmVlbiBibG9ja2VkIGJlZm9y
ZS4KKyAgICAgICAgV2hlbiBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgaXMgcmVxdWVzdGVk
LCB0aGUgTmV0d29ya0pvYiB3aWxsIGJlCisgICAgICAgICAgICBkZWZlcnJlZCBzbyBpdHMgaW5p
dGlhbCByZXNwb25zZSB3aWxsIGJlIHNhdmVkIHdoaWxlIHdhaXRpbmcgZm9yCisgICAgICAgICAg
ICB1c2VyIGRlY2lzaW9uIG9uIHRoZSBjaGFsbGVuZ2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGZvciBwbGF0Zm9ybSBzcGVjaWZpYyBpbnRlcm5hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUJsYWNrQmVycnkuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ2hhbGxlbmdlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDaGFsbGVuZ2VJ
bmZvOjpDaGFsbGVuZ2VJbmZvKToKKyAgICAgICAgKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFu
YWdlclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VN
YW5hZ2VyUHJpdmF0ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyUHJpdmF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJQcml2YXRlOjpy
ZXN1bWVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJQcml2YXRlOjpzdGFydEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlclBy
aXZhdGU6OnBhZ2VFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VNYW5hZ2VyOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjpwYWdlQ3JlYXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OnBhZ2VEZWxl
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6
cGFnZVZpc2liaWxpdHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlTWFuYWdlcjo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjpjYW5jZWxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1h
bmFnZXI6Om5vdGlmeUNoYWxsZW5nZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Omluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6aW5pdCk6CisgICAgICAgICogcGxhdGZvcm0v
YmxhY2tiZXJyeS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0JlcnJ5Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0Jl
cnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5
ZXJQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6fk1lZGlh
UGxheWVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6Om9u
QXV0aGVudGljYXRpb25OZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlOjpub3RpZnlDaGFsbGVuZ2VSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oOgorICAgICAgICAoTWVk
aWFQbGF5ZXJQcml2YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
TmV0d29ya0pvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSm9iOjpOZXR3b3JrSm9i
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtKb2I6On5OZXR3b3JrSm9iKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0pvYjo6aGFuZGxlTm90aWZ5U3Rh
dHVzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0pvYjo6aGFuZGxlTm90aWZ5
Q2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0pvYjo6c2hvdWxkUmVsZWFzZUNsaWVu
dFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtKb2I6OnNlbmRSZXF1ZXN0V2l0
aENyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtKb2I6Om5vdGlmeUNoYWxs
ZW5nZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdv
cmtKb2IuaDoKKyAgICAgICAgKE5ldHdvcmtKb2IpOgorCiAyMDEyLTEwLTEwICBBbGV4YW5kZXIg
U2hhbGFtb3YgIDxhbGV4YW5kZXIuc2hhbGFtb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIEludmFs
aWQgdmFsdWVzIGZvciBtZWRpYSBxdWVyeSBmZWF0dXJlcyBhcmUgbm90IGhhbmRsZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCBiNjA4YWU4Li45ODcyMDJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCkBAIC02MSw2ICs2MSw3IEBA
IExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2NwcC9XZWJET01TdHJp
bmcuY3BwCiAgICAgYmluZGluZ3MvY3BwL1dlYkV4Y2VwdGlvbkhhbmRsZXIuY3BwCiAgICAgcGxh
dGZvcm0vYmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS9Db29raWVEYXRhYmFz
ZUJhY2tpbmdTdG9yZS5jcHAKKyAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlTWFuYWdlci5jcHAKICAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFn
ZXIuY3BwCiAgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwCiAgICAgcGxhdGZv
cm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdlOGZk
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDI0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgiCisKKyNpbmNsdWRl
ICJDcmVkZW50aWFsLmgiCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnRC
bGFja0JlcnJ5LmgiCisjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCisKKyNpbmNsdWRlIDxC
bGFja0JlcnJ5UGxhdGZvcm1Bc3NlcnQuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1M
b2cuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIEhhc2hNYXA8UGFnZUNsaWVudEJs
YWNrQmVycnkqLCBib29sPiBQYWdlVmlzaWJpbGl0eU1hcDsKKworc3RydWN0IENoYWxsZW5nZUlu
Zm8geworICAgIENoYWxsZW5nZUluZm8oY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYsIGNvbnN0IENyZWRlbnRpYWwmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCosIFBh
Z2VDbGllbnRCbGFja0JlcnJ5Kik7CisKKyAgICBLVVJMIHVybDsKKyAgICBQcm90ZWN0aW9uU3Bh
Y2Ugc3BhY2U7CisgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsOworICAgIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xpZW50KiBhdXRoQ2xpZW50OworICAgIFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBw
YWdlQ2xpZW50OworICAgIGJvb2wgYmxvY2tlZDsKK307CisKK0NoYWxsZW5nZUluZm86OkNoYWxs
ZW5nZUluZm8oY29uc3QgS1VSTCYgYVVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhU3BhY2Us
IGNvbnN0IENyZWRlbnRpYWwmIGFDcmVkZW50aWFsLAorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50KiBhbkF1dGhDbGllbnQsIFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBhUGFnZUNsaWVu
dCkKKyAgICA6IHVybChhVXJsKQorICAgICwgc3BhY2UoYVNwYWNlKQorICAgICwgY3JlZGVudGlh
bChhQ3JlZGVudGlhbCkKKyAgICAsIGF1dGhDbGllbnQoYW5BdXRoQ2xpZW50KQorICAgICwgcGFn
ZUNsaWVudChhUGFnZUNsaWVudCkKKyAgICAsIGJsb2NrZWQoZmFsc2UpCit7Cit9CisKK2NsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlclByaXZhdGUgeworcHVibGljOgorICAgIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlclByaXZhdGUoKTsKKworICAgIGJvb2wgcmVzdW1l
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGFnZUNsaWVudEJsYWNrQmVycnkqKTsKKyAgICB2b2lk
IHN0YXJ0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ2hhbGxlbmdlSW5mbyopOworICAgIGJvb2wg
cGFnZUV4aXN0cyhQYWdlQ2xpZW50QmxhY2tCZXJyeSopOworCisgICAgQ2hhbGxlbmdlSW5mbyog
bV9hY3RpdmVDaGFsbGVuZ2U7CisgICAgUGFnZVZpc2liaWxpdHlNYXAgbV9wYWdlVmlzaWJpbGl0
eU1hcDsKKyAgICBWZWN0b3I8T3duUHRyPENoYWxsZW5nZUluZm8+ID4gbV9jaGFsbGVuZ2VzOwor
fTsKKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyUHJpdmF0ZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VNYW5hZ2VyUHJpdmF0ZSgpCisgICAgOiBtX2FjdGl2ZUNoYWxsZW5nZSgwKQor
eworfQorCitib29sIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlclByaXZhdGU6OnJlc3Vt
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBjbGllbnQpCit7
CisgICAgQVNTRVJUKCFtX2FjdGl2ZUNoYWxsZW5nZSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fY2hhbGxlbmdlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9jaGFsbGVu
Z2VzW2ldLT5wYWdlQ2xpZW50ID09IGNsaWVudCAmJiBtX2NoYWxsZW5nZXNbaV0tPmJsb2NrZWQp
IHsKKyAgICAgICAgICAgIHN0YXJ0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9jaGFsbGVuZ2Vz
W2ldLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFu
YWdlclByaXZhdGU6OnN0YXJ0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQ2hhbGxlbmdlSW5mbyog
aW5mbykKK3sKKyAgICBtX2FjdGl2ZUNoYWxsZW5nZSA9IGluZm87CisgICAgbV9hY3RpdmVDaGFs
bGVuZ2UtPmJsb2NrZWQgPSBmYWxzZTsKKyAgICBtX2FjdGl2ZUNoYWxsZW5nZS0+cGFnZUNsaWVu
dC0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9hY3RpdmVDaGFsbGVuZ2UtPnVybCwgbV9hY3Rp
dmVDaGFsbGVuZ2UtPnNwYWNlLCBtX2FjdGl2ZUNoYWxsZW5nZS0+Y3JlZGVudGlhbCk7Cit9CisK
K2Jvb2wgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyUHJpdmF0ZTo6cGFnZUV4aXN0cyhQ
YWdlQ2xpZW50QmxhY2tCZXJyeSogY2xpZW50KQoreworICAgIHJldHVybiBtX3BhZ2VWaXNpYmls
aXR5TWFwLmZpbmQoY2xpZW50KSAhPSBtX3BhZ2VWaXNpYmlsaXR5TWFwLmVuZCgpOworfQorCitB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFu
YWdlcigpCisgICAgOiBkKGFkb3B0UHRyKG5ldyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFn
ZXJQcml2YXRlKSkKK3sKK30KKwordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6
OnBhZ2VDcmVhdGVkKFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBjbGllbnQpCit7CisgICAgZC0+bV9w
YWdlVmlzaWJpbGl0eU1hcC5hZGQoY2xpZW50LCB0cnVlKTsKK30KKwordm9pZCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZU1hbmFnZXI6OnBhZ2VEZWxldGVkKFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBj
bGllbnQpCit7CisgICAgZC0+bV9wYWdlVmlzaWJpbGl0eU1hcC5yZW1vdmUoY2xpZW50KTsKKwor
ICAgIGlmIChkLT5tX2FjdGl2ZUNoYWxsZW5nZSAmJiBkLT5tX2FjdGl2ZUNoYWxsZW5nZS0+cGFn
ZUNsaWVudCA9PSBjbGllbnQpCisgICAgICAgIGQtPm1fYWN0aXZlQ2hhbGxlbmdlID0gMDsKKwor
ICAgIFZlY3RvcjxPd25QdHI8Q2hhbGxlbmdlSW5mbz4gPiBleGlzdGluZzsKKyAgICBkLT5tX2No
YWxsZW5nZXMuc3dhcChleGlzdGluZyk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4
aXN0aW5nLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChleGlzdGluZ1tpXS0+cGFnZUNsaWVu
dCAhPSBjbGllbnQpCisgICAgICAgICAgICBkLT5tX2NoYWxsZW5nZXMuYXBwZW5kKGV4aXN0aW5n
W2ldLnJlbGVhc2UoKSk7CisgICAgfQorfQorCit2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
TWFuYWdlcjo6cGFnZVZpc2liaWxpdHlDaGFuZ2VkKFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBjbGll
bnQsIGJvb2wgdmlzaWJsZSkKK3sKKyAgICBQYWdlVmlzaWJpbGl0eU1hcDo6aXRlcmF0b3IgaXRl
ciA9IGQtPm1fcGFnZVZpc2liaWxpdHlNYXAuZmluZChjbGllbnQpOworCisgICAgQVNTRVJUKGl0
ZXIgIT0gZC0+bV9wYWdlVmlzaWJpbGl0eU1hcC5lbmQoKSk7CisgICAgaWYgKGl0ZXIgPT0gZC0+
bV9wYWdlVmlzaWJpbGl0eU1hcC5lbmQoKSkgeworICAgICAgICBkLT5tX3BhZ2VWaXNpYmlsaXR5
TWFwLmFkZChjbGllbnQsIHZpc2libGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKGl0ZXItPnNlY29uZCA9PSB2aXNpYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVy
LT5zZWNvbmQgPSB2aXNpYmxlOworICAgIGlmICghdmlzaWJsZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGQtPm1fYWN0aXZlQ2hhbGxlbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBk
LT5yZXN1bWVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjbGllbnQpOworfQorCit2b2lkIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHNwYWNlLAorICAgIGNvbnN0IENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KiBhdXRoQ2xp
ZW50LCBQYWdlQ2xpZW50QmxhY2tCZXJyeSogcGFnZUNsaWVudCkKK3sKKyAgICBCTEFDS0JFUlJZ
X0FTU0VSVChhdXRoQ2xpZW50KTsKKyAgICBCTEFDS0JFUlJZX0FTU0VSVChwYWdlQ2xpZW50KTsK
KworICAgIENoYWxsZW5nZUluZm8qIGluZm8gPSBuZXcgQ2hhbGxlbmdlSW5mbyh1cmwsIHNwYWNl
LCBjcmVkZW50aWFsLCBhdXRoQ2xpZW50LCBwYWdlQ2xpZW50KTsKKyAgICBkLT5tX2NoYWxsZW5n
ZXMuYXBwZW5kKGFkb3B0UHRyKGluZm8pKTsKKworICAgIGlmIChkLT5tX2FjdGl2ZUNoYWxsZW5n
ZSB8fCAhcGFnZUNsaWVudC0+aXNWaXNpYmxlKCkpIHsKKyAgICAgICAgaW5mby0+YmxvY2tlZCA9
IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkLT5zdGFydEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGluZm8pOworfQorCit2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFu
YWdlcjo6Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQqIGNsaWVudCkKK3sKKyAgICBCTEFDS0JFUlJZX0FTU0VSVChjbGllbnQpOworCisg
ICAgaWYgKGQtPm1fYWN0aXZlQ2hhbGxlbmdlICYmIGQtPm1fYWN0aXZlQ2hhbGxlbmdlLT5hdXRo
Q2xpZW50ID09IGNsaWVudCkKKyAgICAgICAgZC0+bV9hY3RpdmVDaGFsbGVuZ2UgPSAwOworCisg
ICAgVmVjdG9yPE93blB0cjxDaGFsbGVuZ2VJbmZvPiA+IGV4aXN0aW5nOworICAgIGQtPm1fY2hh
bGxlbmdlcy5zd2FwKGV4aXN0aW5nKTsKKworICAgIENoYWxsZW5nZUluZm8qIG5leHQgPSAwOwor
ICAgIFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBwYWdlID0gMDsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZXhpc3Rpbmcuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGV4aXN0aW5nW2ld
LT5hdXRoQ2xpZW50ICE9IGNsaWVudCkgeworICAgICAgICAgICAgaWYgKHBhZ2UgJiYgIW5leHQg
JiYgZXhpc3RpbmdbaV0tPnBhZ2VDbGllbnQgPT0gcGFnZSkKKyAgICAgICAgICAgICAgICBuZXh0
ID0gZXhpc3RpbmdbaV0uZ2V0KCk7CisgICAgICAgICAgICBkLT5tX2NoYWxsZW5nZXMuYXBwZW5k
KGV4aXN0aW5nW2ldLnJlbGVhc2UoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoZC0+bV9hY3RpdmVD
aGFsbGVuZ2UgPT0gZXhpc3RpbmdbaV0uZ2V0KCkpCisgICAgICAgICAgICBwYWdlID0gZXhpc3Rp
bmdbaV0tPnBhZ2VDbGllbnQ7CisgICAgfQorCisgICAgaWYgKG5leHQpCisgICAgICAgIGQtPnN0
YXJ0QXV0aGVudGljYXRpb25DaGFsbGVuZ2UobmV4dCk7Cit9CisKK3ZvaWQgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VNYW5hZ2VyOjpub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHNwYWNlLAorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUmVzdWx0IHJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3sKKyAgICBk
LT5tX2FjdGl2ZUNoYWxsZW5nZSA9IDA7CisKKyAgICBWZWN0b3I8T3duUHRyPENoYWxsZW5nZUlu
Zm8+ID4gZXhpc3Rpbmc7CisgICAgZC0+bV9jaGFsbGVuZ2VzLnN3YXAoZXhpc3RpbmcpOworCisg
ICAgQ2hhbGxlbmdlSW5mbyogbmV4dCA9IDA7CisgICAgUGFnZUNsaWVudEJsYWNrQmVycnkqIHBh
Z2UgPSAwOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGlzdGluZy5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAoZXhpc3RpbmdbaV0tPnNwYWNlICE9IHNwYWNlKSB7CisgICAgICAg
ICAgICBpZiAocGFnZSAmJiAhbmV4dCAmJiBleGlzdGluZ1tpXS0+cGFnZUNsaWVudCA9PSBwYWdl
KQorICAgICAgICAgICAgICAgIG5leHQgPSBleGlzdGluZ1tpXS5nZXQoKTsKKyAgICAgICAgICAg
IGQtPm1fY2hhbGxlbmdlcy5hcHBlbmQoZXhpc3RpbmdbaV0ucmVsZWFzZSgpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHBhZ2UgPSBleGlzdGluZ1tpXS0+cGFnZUNsaWVudDsKKyAg
ICAgICAgICAgIGV4aXN0aW5nW2ldLT5hdXRoQ2xpZW50LT5ub3RpZnlDaGFsbGVuZ2VSZXN1bHQo
ZXhpc3RpbmdbaV0tPnVybCwgc3BhY2UsIHJlc3VsdCwgY3JlZGVudGlhbCk7CisKKyAgICAgICAg
ICAgIC8vIEFmdGVyIGNhbGxpbmcgbm90aWZ5Q2hhbGxlbmdlUmVzdWx0KCksIHBhZ2UgY291bGQg
YmUgZGVzdHJveWVkIG9yIHNvbWV0aGluZy4KKyAgICAgICAgICAgIGlmICghZC0+cGFnZUV4aXN0
cyhwYWdlKSB8fCAhcGFnZS0+aXNWaXNpYmxlKCkpCisgICAgICAgICAgICAgICAgcGFnZSA9IDA7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobmV4dCkKKyAgICAgICAgZC0+c3RhcnRBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShuZXh0KTsKK30KKworLy8gS2VlcCBmb2xsb3dpbmcgY29kZSBh
dCB0aGUgZW5kIG9mIHRoaXMgZmlsZSEhIQorc3RhdGljIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
TWFuYWdlciogc19tYW5hZ2VyID0gMDsKKworQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2Vy
KiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Omluc3RhbmNlKCkKK3sKKyAgICBBU1NF
UlQoc19tYW5hZ2VyKTsKKyAgICByZXR1cm4gc19tYW5hZ2VyOworfQorCit2b2lkIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6aW5pdCgpCit7CisgICAgQVNTRVJUKCFzX21hbmFnZXIp
OworICAgIHNfbWFuYWdlciA9IG5ldyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIoKTsK
K30KKworLy8gTm8gbW9yZSBjb2RlIGFmdGVyIHRoaXMgbGluZSwgYWxsIG5ldyBjb2RlIHNob3Vs
ZCBjb21lIGJlZm9yZSBzX21hbmFnZXIgZGVjbGFyYXRpb24hISEKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgKaW5kZXggNTIyMjRm
NS4uYTVkNTFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oCkBAIC0x
OSw4ICsxOSwxMyBAQAogI2lmbmRlZiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJfaAog
I2RlZmluZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJfaAogCisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorCitjbGFzcyBQYWdlQ2xpZW50QmxhY2tCZXJyeTsKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJQcml2YXRlOwog
Y2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEtVUkw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CkBA
IC0zNSw2ICs0MCwyNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5n
ZVJlc3VsdChjb25zdCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKSA9IDA7CiB9OwogCitjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lk
IGluaXQoKTsKKyAgICBzdGF0aWMgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyKiBpbnN0
YW5jZSgpOworCisgICAgdm9pZCBwYWdlQ3JlYXRlZChQYWdlQ2xpZW50QmxhY2tCZXJyeSopOwor
ICAgIHZvaWQgcGFnZURlbGV0ZWQoUGFnZUNsaWVudEJsYWNrQmVycnkqKTsKKyAgICB2b2lkIHBh
Z2VWaXNpYmlsaXR5Q2hhbmdlZChQYWdlQ2xpZW50QmxhY2tCZXJyeSosIGJvb2wgdmlzaWJsZSk7
CisKKyAgICB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEtVUkwmLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJiwgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQqLCBQYWdlQ2xpZW50QmxhY2tCZXJyeSopOworICAgIHZvaWQgY2FuY2VsQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQqKTsKKyAgICB2
b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNw
YWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKTsK
KworcHJpdmF0ZToKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIoKTsKKyAgICB+
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyKCk7CisKKyAgICBPd25QdHI8QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VNYW5hZ2VyUHJpdmF0ZT4gZDsKK307CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFnZUNsaWVudEJs
YWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFnZUNsaWVu
dEJsYWNrQmVycnkuaAppbmRleCBiZGIyZjE2Li5mMmM3YzBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0JlcnJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYWdlQ2xpZW50QmxhY2tCZXJyeS5o
CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzaG93QWxlcnREaWFs
b2coQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ2xpZW50OjpBbGVydFR5cGUpID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlz
VmlzaWJsZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZUNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKSA9IDA7CiAgICAgdmlydHVhbCBTYXZlQ3Jl
ZGVudGlhbFR5cGUgbm90aWZ5U2hvdWxkU2F2ZUNyZWRlbnRpYWwoYm9vbCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzeW5jUHJveHlDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
KSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tC
ZXJyeS5jcHAKaW5kZXggODY3ZDgxNS4uYWZmNWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0Jl
cnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaWYg
RU5BQkxFKFZJREVPKQogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuaCIK
IAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oIgogI2luY2x1ZGUg
IkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiQ3Jl
ZGVudGlhbFN0b3JhZ2UuaCIKQEAgLTExNCw2ICsxMTUsNyBAQCBNZWRpYVBsYXllclByaXZhdGU6
Ok1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciogcGxheWVyKQogICAgICwgbV91c2VyRHJp
dmVuU2Vla1RpbWVyKHRoaXMsICZNZWRpYVBsYXllclByaXZhdGU6OnVzZXJEcml2ZW5TZWVrVGlt
ZXJGaXJlZCkKICAgICAsIG1fbGFzdFNlZWtUaW1lKDApCiAgICAgLCBtX2xhc3RTZWVrVGltZVBl
bmRpbmcoZmFsc2UpCisgICAgLCBtX2lzQXV0aGVudGljYXRpb25DaGFsbGVuZ2luZyhmYWxzZSkK
ICAgICAsIG1fd2FpdE1ldGFkYXRhVGltZXIodGhpcywgJk1lZGlhUGxheWVyUHJpdmF0ZTo6d2Fp
dE1ldGFkYXRhVGltZXJGaXJlZCkKICAgICAsIG1fd2FpdE1ldGFkYXRhUG9wRGlhbG9nQ291bnRl
cigwKQogewpAQCAtMTIxLDYgKzEyMyw5IEBAIE1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5
ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAKIE1lZGlhUGxheWVyUHJpdmF0ZTo6fk1l
ZGlhUGxheWVyUHJpdmF0ZSgpCiB7CisgICAgaWYgKG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5n
aW5nKQorICAgICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Omluc3RhbmNlKCkt
PmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRoaXMpOworCiAgICAgaWYgKGlzRnVsbHNj
cmVlbigpKSB7CiAgICAgICAgIG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+
bWVkaWFQbGF5ZXJFeGl0RnVsbHNjcmVlbigpOwogICAgIH0KQEAgLTcxMywxMiArNzE4LDE4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvbkF1dGhlbnRpY2F0aW9uTmVlZGVkKE1NUkF1dGhD
aGFsbGVuZ2UmIGF1dGhDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoZnJhbWVWaWV3KCkgJiYgZnJhbWVWaWV3KCktPmhvc3RXaW5kb3coKSkKLSAgICAgICAgZnJh
bWVWaWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPmF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKHVybCwgcHJvdGVjdGlvblNwYWNlLCBjcmVkZW50aWFsLCB0aGlzKTsKKyAg
ICBpZiAoIWZyYW1lVmlldygpIHx8ICFmcmFtZVZpZXcoKS0+aG9zdFdpbmRvdygpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2lzQXV0aGVudGljYXRpb25DaGFsbGVuZ2luZyA9IHRydWU7Cisg
ICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjppbnN0YW5jZSgpLT5hdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSh1cmwsIHByb3RlY3Rpb25TcGFjZSwgY3JlZGVudGlhbCwKKyAgICAgICAg
dGhpcywgZnJhbWVWaWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0IHJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVu
dGlhbCkKIHsKKyAgICBtX2lzQXV0aGVudGljYXRpb25DaGFsbGVuZ2luZyA9IGZhbHNlOworCiAg
ICAgaWYgKHJlc3VsdCAhPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVN1Y2Nlc3MgfHwgIXVybC5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxh
eWVyUHJpdmF0ZUJsYWNrQmVycnkuaAppbmRleCAyNjI5ZTA0Li44NTc4Y2MwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVy
UHJpdmF0ZUJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuaApAQCAtMTc0LDYgKzE3
NCw3IEBAIHByaXZhdGU6CiAgICAgVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlPiBtX3VzZXJEcml2
ZW5TZWVrVGltZXI7CiAgICAgZmxvYXQgbV9sYXN0U2Vla1RpbWU7CiAgICAgYm9vbCBtX2xhc3RT
ZWVrVGltZVBlbmRpbmc7CisgICAgYm9vbCBtX2lzQXV0aGVudGljYXRpb25DaGFsbGVuZ2luZzsK
ICAgICB2b2lkIHdhaXRNZXRhZGF0YVRpbWVyRmlyZWQoVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRl
PiopOwogICAgIFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4gbV93YWl0TWV0YWRhdGFUaW1lcjsK
ICAgICBpbnQgbV93YWl0TWV0YWRhdGFQb3BEaWFsb2dDb3VudGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3Bw
CmluZGV4IDRlYjkyZGYuLjQ2NTVlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAKQEAgLTE5LDYgKzE5
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrSm9iLmgiCiAKKyNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaCIKICNpbmNsdWRlICJDaHJv
bWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb29raWVNYW5hZ2Vy
LmgiCkBAIC04NCw5ICs4NSwxNiBAQCBOZXR3b3JrSm9iOjpOZXR3b3JrSm9iKCkKICAgICAsIG1f
ZGVmZXJyZWREYXRhKCp0aGlzKQogICAgICwgbV9kZWZlckxvYWRpbmdDb3VudCgwKQogICAgICwg
bV9mcmFtZSgwKQorICAgICwgbV9pc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdpbmcoZmFsc2UpCiB7
CiB9CiAKK05ldHdvcmtKb2I6On5OZXR3b3JrSm9iKCkKK3sKKyAgICBpZiAobV9pc0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdpbmcpCisgICAgICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdl
cjo6aW5zdGFuY2UoKS0+Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodGhpcyk7Cit9CisK
IGJvb2wgTmV0d29ya0pvYjo6aW5pdGlhbGl6ZShpbnQgcGxheWVySWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEtVUkwmIHVybCwKQEAgLTE5NywxMCArMjA1LDggQEAgdm9p
ZCBOZXR3b3JrSm9iOjpoYW5kbGVOb3RpZnlTdGF0dXNSZWNlaXZlZChpbnQgc3RhdHVzLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiAKICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KG1l
c3NhZ2UpOwogCi0gICAgaWYgKGlzVW5hdXRob3JpemVkKG1fZXh0ZW5kZWRTdGF0dXNDb2RlKSkg
eworICAgIGlmIChpc1VuYXV0aG9yaXplZChtX2V4dGVuZGVkU3RhdHVzQ29kZSkpCiAgICAgICAg
IHB1cmdlQ3JlZGVudGlhbHMoKTsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZyhC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwgIkF1dGhlbnRpY2F0aW9uIGZh
aWxlZCwgcHVyZ2UgdGhlIHN0b3JlZCBjcmVkZW50aWFscyBmb3IgdGhpcyBzaXRlLiIpOwotICAg
IH0KIH0KIAogdm9pZCBOZXR3b3JrSm9iOjpub3RpZnlIZWFkZXJzUmVjZWl2ZWQoQmxhY2tCZXJy
eTo6UGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpIZWFkZXJMaXN0JiBoZWFkZXJzKQpAQCAtNDc4
LDYgKzQ4NCw3IEBAIHZvaWQgTmV0d29ya0pvYjo6aGFuZGxlTm90aWZ5Q2xvc2UoaW50IHN0YXR1
cykKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9pc1J1bm5pbmcgPSBmYWxzZTsKICNlbmRpZgorCiAg
ICAgaWYgKCFtX2NhbmNlbGxlZCkgewogICAgICAgICBpZiAoIW1fc3RhdHVzUmVjZWl2ZWQpIHsK
ICAgICAgICAgICAgIC8vIENvbm5lY3Rpb24gZmFpbGVkIGJlZm9yZSBzZW5kaW5nIG5vdGlmeVN0
YXR1c1JlY2VpdmVkOiB1c2UgZ2VuZXJpYyBOZXR3b3JrRXJyb3IuCkBAIC00ODksNiArNDk2LDcg
QEAgdm9pZCBOZXR3b3JrSm9iOjpoYW5kbGVOb3RpZnlDbG9zZShpbnQgc3RhdHVzKQogICAgICAg
ICAgICAgICAgIG1fZXh0ZW5kZWRTdGF0dXNDb2RlID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZp
bHRlclN0cmVhbTo6U3RhdHVzVG9vTWFueVJlZGlyZWN0czsKIAogICAgICAgICAgICAgc2VuZFJl
c3BvbnNlSWZOZWVkZWQoKTsKKwogICAgICAgICAgICAgaWYgKGlzQ2xpZW50QXZhaWxhYmxlKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoaXNFcnJvcihzdGF0dXMpKQogICAgICAgICAgICAgICAg
ICAgICBtX2V4dGVuZGVkU3RhdHVzQ29kZSA9IHN0YXR1czsKQEAgLTUxNCw3ICs1MjIsNyBAQCB2
b2lkIE5ldHdvcmtKb2I6OmhhbmRsZU5vdGlmeUNsb3NlKGludCBzdGF0dXMpCiAKIGJvb2wgTmV0
d29ya0pvYjo6c2hvdWxkUmVsZWFzZUNsaWVudFJlc291cmNlKCkKIHsKLSAgICBpZiAoKG1fbmVl
ZHNSZXRyeUFzRlRQRGlyZWN0b3J5ICYmIHJldHJ5QXNGVFBEaXJlY3RvcnkoKSkgfHwgKGlzUmVk
aXJlY3QobV9leHRlbmRlZFN0YXR1c0NvZGUpICYmIGhhbmRsZVJlZGlyZWN0KCkpIHx8IG1fbmV3
Sm9iV2l0aENyZWRlbnRpYWxzU3RhcnRlZCkKKyAgICBpZiAoKG1fbmVlZHNSZXRyeUFzRlRQRGly
ZWN0b3J5ICYmIHJldHJ5QXNGVFBEaXJlY3RvcnkoKSkgfHwgKGlzUmVkaXJlY3QobV9leHRlbmRl
ZFN0YXR1c0NvZGUpICYmIGhhbmRsZVJlZGlyZWN0KCkpIHx8IG1fbmV3Sm9iV2l0aENyZWRlbnRp
YWxzU3RhcnRlZCB8fCBtX2lzQXV0aGVudGljYXRpb25DaGFsbGVuZ2luZykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNzg0LDggKzc5MiwxMyBAQCBib29s
IE5ldHdvcmtKb2I6OnNlbmRSZXF1ZXN0V2l0aENyZWRlbnRpYWxzKFByb3RlY3Rpb25TcGFjZVNl
cnZlclR5cGUgdHlwZSwgUHJvdAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
ICAgICAgICAgbV9oYW5kbGUtPmdldEludGVybmFsKCktPm1fY3VycmVudFdlYkNoYWxsZW5nZSA9
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5wYWdlKCkt
PmNocm9tZSgpLT5jbGllbnQoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPmF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKG5ld1VSTCwgcHJvdGVjdGlvblNwYWNlLCBDcmVkZW50aWFsKCksIHRoaXMpOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIG1faXNBdXRoZW50aWNhdGlv
bkNoYWxsZW5naW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIHVwZGF0ZURlZmVyTG9hZGluZ0NvdW50
KDEpOworCisgICAgICAgICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Omluc3Rh
bmNlKCktPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5ld1VSTCwgcHJvdGVjdGlvblNwYWNlLAor
ICAgICAgICAgICAgICAgIENyZWRlbnRpYWwoKSwgdGhpcywgbV9mcmFtZS0+cGFnZSgpLT5jaHJv
bWUoKS0+Y2xpZW50KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsKHVz
ZXJuYW1lLCBwYXNzd29yZCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbik7CkBAIC04
NDYsMTYgKzg1OSwyNSBAQCB2b2lkIE5ldHdvcmtKb2I6OmZpcmVEZWxldGVKb2JUaW1lcihUaW1l
cjxOZXR3b3JrSm9iPiopCiAKIHZvaWQgTmV0d29ya0pvYjo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2Us
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0IHJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYg
Y3JlZGVudGlhbCkKIHsKLSAgICBpZiAocmVzdWx0ICE9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U3VjY2VzcyB8fCBwcm90ZWN0aW9uU3BhY2UuaG9zdCgpLmlzRW1wdHkoKSB8fCAhdXJsLmlzVmFs
aWQoKSkgewotICAgICAgICBtX25ld0pvYldpdGhDcmVkZW50aWFsc1N0YXJ0ZWQgPSBmYWxzZTsK
LSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgpKTsKKyAgICBBU1NFUlQo
dXJsID09IG1fcmVzcG9uc2UudXJsKCkpOworICAgIEFTU0VSVCghcHJvdGVjdGlvblNwYWNlLmhv
c3QoKS5pc0VtcHR5KCkpOworCisgICAgaWYgKG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5naW5n
KSB7CisgICAgICAgIG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5naW5nID0gZmFsc2U7CisgICAg
ICAgIGlmIChyZXN1bHQgPT0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTdWNjZXNzKQorICAgICAg
ICAgICAgY2FuY2VsSm9iKCk7CisgICAgICAgIHVwZGF0ZURlZmVyTG9hZGluZ0NvdW50KC0xKTsK
ICAgICB9CiAKKyAgICBpZiAocmVzdWx0ICE9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU3VjY2Vz
cykKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1faGFuZGxlLT5nZXRJbnRlcm5hbCgpLT5t
X2N1cnJlbnRXZWJDaGFsbGVuZ2UuaXNOdWxsKCkpCiAgICAgICAgIG1faGFuZGxlLT5nZXRJbnRl
cm5hbCgpLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShw
cm90ZWN0aW9uU3BhY2UsIGNyZWRlbnRpYWwsIDAsIG1fcmVzcG9uc2UsIFJlc291cmNlRXJyb3Io
KSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IG1faGFuZGxlLT5maXJzdFJl
cXVlc3QoKTsKLSAgICBuZXdSZXF1ZXN0LnNldFVSTChtX3Jlc3BvbnNlLnVybCgpKTsKKyAgICBu
ZXdSZXF1ZXN0LnNldFVSTCh1cmwpOwogICAgIG5ld1JlcXVlc3Quc2V0TXVzdEhhbmRsZUludGVy
bmFsbHkodHJ1ZSk7CiAgICAgbV9uZXdKb2JXaXRoQ3JlZGVudGlhbHNTdGFydGVkID0gc3RhcnRO
ZXdKb2JXaXRoUmVxdWVzdChuZXdSZXF1ZXN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oCmluZGV4IDM1MjYz
NzQuLjhiZmI0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9OZXR3b3JrSm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
PG5ldHdvcmsvRmlsdGVyU3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKQEAgLTQ5LDYgKzUw
LDggQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgTmV0d29ya0pvYiA6IHB1YmxpYyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCwgcHVibGljIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpGaWx0ZXJTdHJlYW0gewogcHVibGljOgogICAgIE5ldHdvcmtKb2IoKTsKKyAgICB+TmV0d29y
a0pvYigpOworCiAgICAgYm9vbCBpbml0aWFsaXplKGludCBwbGF5ZXJJZCwKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLAogICAgICAgICAgICAgICAgICAg
ICBjb25zdCBLVVJMJiwKQEAgLTE3MSw2ICsxNzQsOCBAQCBwcml2YXRlOgogICAgIERlZmVycmVk
RGF0YSBtX2RlZmVycmVkRGF0YTsKICAgICBpbnQgbV9kZWZlckxvYWRpbmdDb3VudDsKICAgICBj
b25zdCBGcmFtZSogbV9mcmFtZTsKKworICAgIGJvb2wgbV9pc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL0JsYWNrQmVycnlHbG9iYWwuY3BwIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9CbGFja0JlcnJ5R2xvYmFsLmNwcAppbmRleCBmYzljZDVhLi5kOGI1
YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JsYWNrQmVycnlH
bG9iYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmxhY2tCZXJyeUds
b2JhbC5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJCbGFja0JlcnJ5R2xvYmFsLmgi
CiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oIgogI2luY2x1ZGUgIkNhY2hlQ2xpZW50QmxhY2tC
ZXJyeS5oIgogI2luY2x1ZGUgIkNvb2tpZU1hbmFnZXIuaCIKICNpbmNsdWRlICJDcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlLmgiCkBAIC04MCw2ICs4MSw4IEBAIHZvaWQgZ2xvYmFsSW5p
dGlhbGl6ZSgpCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNldHRpbmdzKiBzZXR0aW5ncyA9
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTZXR0aW5nczo6aW5zdGFuY2UoKTsKIAogICAgIEltYWdl
U291cmNlOjpzZXRNYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2Uoc2V0dGluZ3MtPm1heFBpeGVsc1Bl
ckRlY29kZWRJbWFnZSgpKTsKKworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6
aW5pdCgpOwogfQogCiB2b2lkIGNvbGxlY3RKYXZhc2NyaXB0R2FyYmFnZU5vdygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCAzMjI4NjhmLi5iNjkyZWQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTQzNCw2ICs0MzQs
OCBAQCBXZWJQYWdlUHJpdmF0ZTo6V2ViUGFnZVByaXZhdGUoV2ViUGFnZSogd2ViUGFnZSwgV2Vi
UGFnZUNsaWVudCogY2xpZW50LCBjb25zdCBJbgogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6RGV2aWNlSW5mbzo6aW5zdGFuY2UoKTsKICAgICAgICAgZGVmYXVsdFVzZXJBZ2VudCgpOwog
ICAgIH0KKworICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6aW5zdGFuY2UoKS0+
cGFnZUNyZWF0ZWQodGhpcyk7CiB9CiAKIFdlYlBhZ2U6OldlYlBhZ2UoV2ViUGFnZUNsaWVudCog
Y2xpZW50LCBjb25zdCBXZWJTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFBsYXRmb3JtOjpJ
bnRSZWN0JiByZWN0KQpAQCAtNDQ1LDYgKzQ0Nyw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoV2ViUGFn
ZUNsaWVudCogY2xpZW50LCBjb25zdCBXZWJTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIGNvbnN0IFBs
CiAKIFdlYlBhZ2VQcml2YXRlOjp+V2ViUGFnZVByaXZhdGUoKQogeworICAgIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlTWFuYWdlcjo6aW5zdGFuY2UoKS0+cGFnZURlbGV0ZWQodGhpcyk7CiAgICAg
Ly8gSGFuZCB0aGUgYmFja2luZ3N0b3JlIGJhY2sgdG8gYW5vdGhlciBvd25lciBpZiBuZWNlc3Nh
cnkuCiAgICAgbV93ZWJQYWdlLT5zZXRWaXNpYmxlKGZhbHNlKTsKICAgICBpZiAoQmFja2luZ1N0
b3JlUHJpdmF0ZTo6Y3VycmVudEJhY2tpbmdTdG9yZU93bmVyKCkgPT0gbV93ZWJQYWdlKQpAQCAt
MjE4NSwxOCArMjE4OCwxOSBAQCBib29sIFdlYlBhZ2VQcml2YXRlOjppc0FjdGl2ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fY2xpZW50LT5pc0FjdGl2ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcml2
YXRlOjphdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBpbnB1dENyZWRl
bnRpYWwsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KiBjbGllbnQpCit2b2lkIFdlYlBh
Z2VQcml2YXRlOjphdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBpbnB1
dENyZWRlbnRpYWwpCiB7CiAgICAgV2ViU3RyaW5nIHVzZXJuYW1lOwogICAgIFdlYlN0cmluZyBw
YXNzd29yZDsKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIqIGF1dGhtZ3IgPSBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Omluc3RhbmNlKCk7CiAKICNpZiAhZGVmaW5l
ZChQVUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKICAgICBpZiAobV9kdW1wUmVuZGVyVHJl
ZSkgewogICAgICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwoaW5wdXRDcmVkZW50aWFsLCBpbnB1
dENyZWRlbnRpYWwucGVyc2lzdGVuY2UoKSk7CiAgICAgICAgIGlmIChtX2R1bXBSZW5kZXJUcmVl
LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY3JlZGVudGlhbCkpCi0gICAgICAg
ICAgICBjbGllbnQtPm5vdGlmeUNoYWxsZW5nZVJlc3VsdCh1cmwsIHByb3RlY3Rpb25TcGFjZSwg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTdWNjZXNzLCBjcmVkZW50aWFsKTsKKyAgICAgICAgICAg
IGF1dGhtZ3ItPm5vdGlmeUNoYWxsZW5nZVJlc3VsdCh1cmwsIHByb3RlY3Rpb25TcGFjZSwgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTdWNjZXNzLCBjcmVkZW50aWFsKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY2xpZW50LT5ub3RpZnlDaGFsbGVuZ2VSZXN1bHQodXJsLCBwcm90ZWN0aW9u
U3BhY2UsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FuY2VsbGVkLCBpbnB1dENyZWRlbnRpYWwp
OworICAgICAgICAgICAgYXV0aG1nci0+bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KHVybCwgcHJvdGVj
dGlvblNwYWNlLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbmNlbGxlZCwgaW5wdXRDcmVkZW50
aWFsKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtMjIxNyw5ICsyMjIxLDkg
QEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3AKICNlbmRpZgogCiAgICAgaWYgKGlzQ29uZmlybWVk
KQotICAgICAgICBjbGllbnQtPm5vdGlmeUNoYWxsZW5nZVJlc3VsdCh1cmwsIHByb3RlY3Rpb25T
cGFjZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTdWNjZXNzLCBjcmVkZW50aWFsKTsKKyAgICAg
ICAgYXV0aG1nci0+bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KHVybCwgcHJvdGVjdGlvblNwYWNlLCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVN1Y2Nlc3MsIGNyZWRlbnRpYWwpOwogICAgIGVsc2UKLSAg
ICAgICAgY2xpZW50LT5ub3RpZnlDaGFsbGVuZ2VSZXN1bHQodXJsLCBwcm90ZWN0aW9uU3BhY2Us
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FuY2VsbGVkLCBpbnB1dENyZWRlbnRpYWwpOworICAg
ICAgICBhdXRobWdyLT5ub3RpZnlDaGFsbGVuZ2VSZXN1bHQodXJsLCBwcm90ZWN0aW9uU3BhY2Us
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FuY2VsbGVkLCBpbnB1dENyZWRlbnRpYWwpOwogfQog
CiBQYWdlQ2xpZW50QmxhY2tCZXJyeTo6U2F2ZUNyZWRlbnRpYWxUeXBlIFdlYlBhZ2VQcml2YXRl
Ojpub3RpZnlTaG91bGRTYXZlQ3JlZGVudGlhbChib29sIGlzTmV3KQpAQCAtMzIyNCw2ICszMjI4
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgZC0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKKyAgICBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZU1hbmFnZXI6Omluc3RhbmNlKCktPnBhZ2VWaXNpYmlsaXR5Q2hhbmdlZChkLCB2aXNp
YmxlKTsKIAogICAgIGlmICghdmlzaWJsZSkgewogICAgICAgICBkLT5zdXNwZW5kQmFja2luZ1N0
b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2Vf
cC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAppbmRleCAwZDk3
NjhmLi42NTlkYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlBhZ2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgK
QEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2hvd0FsZXJ0RGlh
bG9nKFdlYlBhZ2VDbGllbnQ6OkFsZXJ0VHlwZSBhdHlwZSk7CiAgICAgdmlydHVhbCBib29sIGlz
QWN0aXZlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlzaWJsZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiwg
Y29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAgICAgdmlydHVhbCBTYXZlQ3JlZGVudGlhbFR5cGUg
bm90aWZ5U2hvdWxkU2F2ZUNyZWRlbnRpYWwoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNQ
cm94eUNyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZwppbmRleCBhYmY2ZjE3Li45ZDhiZmZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMC0xMCAgTGlhbmdodWkgQ2hl
biAgPGxpYWNoZW5AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gRml4IGFzc2VydGlv
biBpbiBOZXR3b3JrSm9iOjpub3RpZnlDaGFsbGVuZ2VSZXN1bHQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM5NworICAgICAgICBJbnRlcm5hbCBQ
UjogMTg2NTk3LgorCisgICAgICAgIEludGVybmFsbHkgcmV2aWV3ZWQgYnkgWW9uZyBMaSwgSm9l
IE1hc29uLgorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgV2ViUGFnZSB0byB1c2UgbmV3IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci4K
KyAgICAgICAgUmVnaXN0ZXIgcGFnZSBjcmVhdGlvbi9kZWxldGlvbiBhbmQgdmlzaWJpbGl0eSBj
aGFuZ2UgdG8gdGhlIG5ldworICAgICAgICAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5h
Z2VyLgorICAgICAgICBJbml0aWFsaXplIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlciBp
biBHbG9iYWxJbml0aWFsaXplKCkgZnVuY3Rpb24uCisKKyAgICAgICAgKiBBcGkvQmxhY2tCZXJy
eUdsb2JhbC5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Omdsb2JhbEluaXRpYWxp
emUpOgorICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6V2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6On5XZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjphdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OnNldFZpc2libGUpOgor
ICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKFdlYlBhZ2VQcml2YXRlKToKKwog
MjAxMi0xMC0xMCAgQW5kcmV3IExvICA8YW5sb0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0Jl
cnJ5XSBEbyBub3QgcGVyZm9ybSBiYWNraW5nIHN0b3JlIGJsaXQgZm9yIGFuaW1hdGlvbnMgZHVy
aW5nIG9uZS1zaG90IGRyYXdpbmcgc3luY2hyb25pemF0aW9uCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>