<?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>99275</bug_id>
          
          <creation_ts>2012-10-14 14:18:23 -0700</creation_ts>
          <short_desc>Make UserScript and UserStyleSheet classes into value objects that are copyable</short_desc>
          <delta_ts>2012-10-14 14:55:48 -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>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>menard</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>741598</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-14 14:18:23 -0700</bug_when>
    <thetext>Make UserScript and UserStyleSheet value objects that are copyable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741600</commentid>
    <comment_count>1</comment_count>
      <attachid>168590</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-14 14:26:25 -0700</bug_when>
    <thetext>Created attachment 168590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741602</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-14 14:29:55 -0700</bug_when>
    <thetext>Attachment 168590 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/page/PageGroup.cpp:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/page/PageGroup.cpp:280:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/page/UserStyleSheet.h:40:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp:299:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/page/UserScript.h:40:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/page/PageGroup.h:86:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/page/PageGroup.h:89:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 7 in 19 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>741605</commentid>
    <comment_count>3</comment_count>
      <attachid>168590</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-14 14:34:59 -0700</bug_when>
    <thetext>Comment on attachment 168590
Patch

Attachment 168590 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14293537</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741608</commentid>
    <comment_count>4</comment_count>
      <attachid>168592</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-14 14:38:16 -0700</bug_when>
    <thetext>Created attachment 168592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741609</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-10-14 14:40:45 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=168590&amp;action=review

r=me assuming you&apos;ve just managed to fix the build issues.

&gt; Source/WebCore/ChangeLog:34
&gt; +        (WebCore::PageGroup::addUserScriptToWorld):
&gt; +        (WebCore::PageGroup::addUserStyleSheetToWorld):
&gt; +        * page/PageGroup.h:
&gt; +        (PageGroup):
&gt; +        * page/UserContentURLPattern.cpp:
&gt; +        (WebCore::UserContentURLPattern::matchesPatterns):
&gt; +        * page/UserContentURLPattern.h:
&gt; +        (UserContentURLPattern):
&gt; +        Update to not assume whitelist and blacklist are in Vector&lt;String&gt;*.
&gt; +
&gt; +        * page/UserScript.h:
&gt; +        (UserScript):
&gt; +        (WebCore::UserScript::UserScript):
&gt; +        (WebCore::UserScript::whitelist):
&gt; +        (WebCore::UserScript::blacklist):
&gt; +        * page/UserStyleSheet.h:
&gt; +        (UserStyleSheet):
&gt; +        (WebCore::UserStyleSheet::UserStyleSheet):
&gt; +        (WebCore::UserStyleSheet::whitelist):
&gt; +        (WebCore::UserStyleSheet::blacklist):

Dan would not be happy about this lack of per-function comments.

&gt; Source/WebCore/page/UserContentURLPattern.cpp:39
&gt; +        for (unsigned i = 0; i &lt; whitelist.size(); ++i) {

I know you&apos;re not introducing this, but should we save size aside instead of computing it every time?

&gt;&gt; Source/WebCore/page/UserScript.h:40
&gt;&gt; +               const Vector&lt;String&gt;&amp; whitelist, const Vector&lt;String&gt;&amp; blacklist,
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

Stylebot is right, why are these all lined up? That is unusual for WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741610</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-14 14:41:26 -0700</bug_when>
    <thetext>Attachment 168592 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/page/PageGroup.cpp:265:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/page/PageGroup.cpp:280:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/page/UserStyleSheet.h:40:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/efl/WebCoreSupport/DumpRenderTreeSupportEfl.cpp:299:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/page/UserScript.h:40:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/page/PageGroup.h:86:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/page/PageGroup.h:89:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 7 in 21 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>741615</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-10-14 14:55:48 -0700</bug_when>
    <thetext>Committed r131275: &lt;http://trac.webkit.org/changeset/131275&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168590</attachid>
            <date>2012-10-14 14:26:25 -0700</date>
            <delta_ts>2012-10-14 14:38:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99275-20121014142502.patch</filename>
            <type>text/plain</type>
            <size>31891</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdjM2MxNzY5ZGE4NmU4
N2NjN2YzMmNkYjJkYTIwYjc4ZTMzNDE0NC4uNDUzN2NiMzAzZDQ3NWZhYWFjMWU1NDFkYjE1YjVh
OTNjMjg3YmMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEwLTE0ICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBVc2VyU2NyaXB0IGFuZCBV
c2VyU3R5bGVTaGVldCB2YWx1ZSBvYmplY3RzIHRoYXQgYXJlIGNvcHlhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTI3NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBsaWZ5IFVzZXJTY3JpcHQg
YW5kIFVzZXJTdHlsZVNoZWV0IGFuZCBtYWtlIHRoZW0gbW9yZSBlYXNpbHkgdXNhYmxlCisgICAg
ICAgIHdpdGhvdXQgc3RpY2tpbmcgdGhlbSBpbiBhbiBPd25QdHIuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgVXBkYXRlIGV4cG9ydHMuCisKKyAgICAgICAgKiBwYWdlL1Bh
Z2VHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRU
b1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRU
b1dvcmxkKToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorICAgICAgICAoUGFnZUdyb3Vw
KToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyk6CisgICAgICAg
ICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaDoKKyAgICAgICAgKFVzZXJDb250ZW50VVJM
UGF0dGVybik6CisgICAgICAgIFVwZGF0ZSB0byBub3QgYXNzdW1lIHdoaXRlbGlzdCBhbmQgYmxh
Y2tsaXN0IGFyZSBpbiBWZWN0b3I8U3RyaW5nPiouCisKKyAgICAgICAgKiBwYWdlL1VzZXJTY3Jp
cHQuaDoKKyAgICAgICAgKFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlw
dDo6VXNlclNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0Ojp3aGl0ZWxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6YmxhY2tsaXN0KToKKyAgICAgICAgKiBw
YWdlL1VzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgIChVc2VyU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldDo6VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6VXNlclN0eWxlU2hlZXQ6OndoaXRlbGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
U3R5bGVTaGVldDo6YmxhY2tsaXN0KToKKyAgICAgICAgU3dpdGNoIE93blB0cjxWZWN0b3I8U3Ry
aW5nPiA+IHRvIFZlY3RvcjxTdHJpbmc+IGFuZCByZW1vdmUgTm9uY29weWFibGUgcmVzdHJpY3Rp
b24uCisKIDIwMTItMTAtMTQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQgc2hvdWxkIGV4cG9zZSBhIG1ldGhvZCB0byBjb250
cm9sIHRoZSBjb21wb3NpdGluZyBkZWJ1ZyBzZXR0aW5ncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggNTMyNDNjYWE1ZWUyY2MxZjBmNWY4ZTdhYTgwYmU5Mjg1NDdlNWM1Zi4uYzcxNTll
MDkyNGQ5ZGE2ODgwYzVhZWNmMzUyNTI0ODM4ZjEwZjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0xNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQgVXNlclN0eWxlU2hlZXQgdmFs
dWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojph
ZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IFBhZ2VHcm91cCBmdW5j
dGlvbiBzaWduYXR1cmVzLgorCiAyMDEyLTEwLTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgdXNlZCBmcmFtZUZvckVudGVyZWRD
b250ZXh0IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGY5NGI0Y2Q0MjMyNmMwMDQ1MmZjYWZmYzUy
Njg1YjY2ZTU3YjAxOWYuLjBiOWZjYTVhNzc0NGQ2MzFiZjYwNDI4ZjhjMWExOTVmMzAyY2YyNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0xNCAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQgVXNlclN0
eWxlU2hlZXQgdmFsdWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyNzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjphZGRV
c2VyU3R5bGVTaGVldCk6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IFBhZ2VHcm91cCBmdW5jdGlv
biBzaWduYXR1cmVzLgorCiAyMDEyLTEwLTExICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gUmVtb3ZlICJ3ZWIiIHdvcmQgaW4gd2ViIGlu
c3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDZjZmY0Y2JiYmQ1MjYyOGVlYWI0YmM2ODk5ODM1
NzJhMWRmZWQ0ZWUuLjZjZjQzMGI5ZTdiNjEwZWRjZGJlMjJkNmEwMWI2Yjg0Nzk1MmFlNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0xNCAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQgVXNlclN0eWxl
U2hlZXQgdmFsdWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyNzUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBfaW5qZWN0TWFpbFF1aXJrc1NjcmlwdF0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3
IFBhZ2VHcm91cCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCiAyMDEyLTEwLTEwICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBTd2l0Y2ggUmVzb3VyY2VMb2FkZXI6
OnJlc291cmNlRGF0YSgpIGZyb20gU2hhcmVkQnVmZmVyIHRvIFJlc291cmNlQnVmZmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggYzY3MDc3NGRkNmVlYjM3NTRkMzI0YmQxM2E2NjI5ODdiNzQ0OGRiOC4uYzE4MDEx
OGVmMWVhZjM2ZDY3OGJjNzU2YTBiYTMwN2I4MzhkZmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI3IEBACisyMDEyLTEwLTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTWFrZSBVc2VyU2NyaXB0IGFuZCBVc2VyU3R5bGVTaGVldCB2YWx1ZSBvYmplY3RzIHRoYXQg
YXJlIGNvcHlhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTI3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
dG9TdHJpbmdWZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpVc2VyQ29udGVudENvbnRhaW5lcjo6
SXRlbTo6SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVt
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvVXNlckNvbnRlbnRDb250YWluZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06OndoaXRlbGlzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpibGFja2xpc3QpOgorICAg
ICAgICBTd2l0Y2ggVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW0gdG8gc3RvcmUgVmVjdG9yPFN0
cmluZz4gaW5zdGVhZCBvZiBJbW11dGFibGVBcnJheSwgZWFzaW5nCisgICAgICAgIHRyYW5zaXRp
b24gdG8gbmV3IFBhZ2VHcm91cCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OnRvU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2Vi
UGFnZVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VXNlclNjcmlwdHMpOgor
ICAgICAgICBVcGRhdGUgZm9yIG5ldyBQYWdlR3JvdXAgZnVuY3Rpb24gc2lnbmF0dXJlcy4KKwog
MjAxMi0xMC0xMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBj
bGFzcyBleHRlbnNpb24gcmF0aGVyIHRoYW4gYSB2b2lkKiBtZW1iZXIgZm9yIG5ldyBPYmplY3Rp
dmUtQyBXZWJQcm9jZXNzUGx1Z0luIFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA0MDJlMjY1
MGY5ZmY2YzY2MGFkZmI3MDc4YWQ2NmI5NDg5NzFiZTE2Li40ZTRhZTQ1YjUyZDc3MmZmMzA1OWZi
NzExNGMwYThlYTYzNTJiNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTA0NCwxMCArMTA0
NCwxMCBAQCBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMTRhZGRWaXNpdGVkTGlua0VQS3RtCiBfX1pO
N1dlYkNvcmU5UGFnZUdyb3VwMTdjbG9zZUxvY2FsU3RvcmFnZUV2CiBfX1pON1dlYkNvcmU5UGFn
ZUdyb3VwMThhZGRWaXNpdGVkTGlua0hhc2hFeQogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE4bnVt
YmVyT2ZQYWdlR3JvdXBzRXYKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRU
b1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRU5T
M18xMFBhc3NPd25QdHJJTlMzXzZWZWN0b3JJUzRfTG0wRUVFRUVTRF9OU18yM1VzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lRU5TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0UKK19fWk43V2ViQ29y
ZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVS
S04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRUVFU0RfTlNfMjNV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZUVOU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFCiBf
X1pON1dlYkNvcmU5UGFnZUdyb3VwMjByZW1vdmVBbGxVc2VyQ29udGVudEV2CiBfX1pON1dlYkNv
cmU5UGFnZUdyb3VwMjFyZW1vdmVBbGxWaXNpdGVkTGlua3NFdgotX19aTjdXZWJDb3JlOVBhZ2VH
cm91cDI0YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04z
V1RGNlN0cmluZ0VSS05TXzRLVVJMRU5TM18xMFBhc3NPd25QdHJJTlMzXzZWZWN0b3JJUzRfTG0w
RUVFRUVTRF9OU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFTlNfMTRVc2VyU3R5bGVMZXZl
bEVOU18yMlVzZXJTdHlsZUluamVjdGlvblRpbWVFCitfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjRh
ZGRVc2VyU3R5bGVTaGVldFRvV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2U3Ry
aW5nRVJLTlNfNEtVUkxFUktOUzNfNlZlY3RvcklTNF9MbTBFRUVTRF9OU18yNVVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXNFTlNfMTRVc2VyU3R5bGVMZXZlbEVOU18yMlVzZXJTdHlsZUluamVjdGlv
blRpbWVFCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjVyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxk
RVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlOVBhZ2VHcm91
cDI2cmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19a
TjdXZWJDb3JlOVBhZ2VHcm91cDI2c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3NFYgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDcyMGRlZmY2NmQwODVhOWVmYmEwZjRhNzI0Y2VlNTQ4
NGYxYmNiNzAuLjMxNGVkMTQxOWNmNTIyZjQ4N2MxMTlkZGI4ZmUyZThhNmRkNzUwMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBTdG9yYWdlTmFtZXNw
YWNlKiBQYWdlR3JvdXA6OmxvY2FsU3RvcmFnZSgpCiB9CiAKIHZvaWQgUGFnZUdyb3VwOjphZGRV
c2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgS1VSTCYgdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB3aGl0ZWxpc3QsIFBhc3NPd25QdHI8VmVj
dG9yPFN0cmluZz4gPiBibGFja2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsYWNrbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzIGluamVjdGVkRnJhbWVzKQogewogICAgIEFTU0VSVF9BUkcod29ybGQsIHdvcmxkKTsKQEAg
LTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQoRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyYwogfQogCiB2b2lkIFBhZ2VH
cm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNv
bnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiB1cmwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB3aGl0ZWxp
c3QsIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBibGFja2xpc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxp
c3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTdHls
ZUxldmVsIGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
c2VyU3R5bGVJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
aAppbmRleCA5OGM1MWRkNTk5MGMzYWRjMDE2NWY0NDc1ZjNkZDcxMzg5YjkxZmE4Li43ZDJkZGZh
ZjE2MmFkZDJkZGZkODc3YjU5M2JiNTg3MWYwNTVjMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmgKQEAgLTgzLDEwICs4MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
aGFzTG9jYWxTdG9yYWdlKCkgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2U7IH0KIAogICAgICAgICB2
b2lkIGFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFN0cmluZyYg
c291cmNlLCBjb25zdCBLVVJMJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gd2hpdGVsaXN0LCBQYXNzT3duUHRyPFZlY3RvcjxT
dHJpbmc+ID4gYmxhY2tsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFj
a2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclNjcmlwdEluamVj
dGlvblRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwogICAgICAgICB2b2lkIGFkZFVz
ZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgS1VSTCYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB3aGl0ZWxpc3QsIFBhc3NPd25QdHI8VmVjdG9yPFN0
cmluZz4gPiBibGFja2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bGFja2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVzZXJTdHlsZUxldmVsIGxldmVsID0gVXNlclN0eWxlVXNlckxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyU3R5bGVJbmplY3Rpb25UaW1lIGluamVjdGlv
blRpbWUgPSBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCA2NzZiNjU1NzM5OGJkNzMzZmViMGZl
MTA1MjliNTIwZDA4ZWFjNTRjLi45NjUzODRkZmYwMmZhZjI3MTk5Y2YxYzNhOTIzYjkwYmE2Nzdl
NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
CkBAIC0zMCwxNCArMzAsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFVzZXJD
b250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4qIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4qIGJsYWNrbGlz
dCkKK2Jvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxhY2tsaXN0KQogewogICAgIC8vIEluIG9yZGVyIGZvciBhIFVSTCB0byBiZSBhIG1h
dGNoIGl0IGhhcyB0byBiZSBwcmVzZW50IGluIHRoZSB3aGl0ZWxpc3QgYW5kIG5vdCBwcmVzZW50
IGluIHRoZSBibGFja2xpc3QuCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gd2hpdGVsaXN0IGF0IGFs
bCwgdGhlbiBhbGwgVVJMcyBhcmUgYXNzdW1lZCB0byBiZSBpbiB0aGUgd2hpdGVsaXN0LgotICAg
IGJvb2wgbWF0Y2hlc1doaXRlbGlzdCA9ICF3aGl0ZWxpc3QgfHwgd2hpdGVsaXN0LT5pc0VtcHR5
KCk7CisgICAgYm9vbCBtYXRjaGVzV2hpdGVsaXN0ID0gd2hpdGVsaXN0LmlzRW1wdHkoKTsKICAg
ICBpZiAoIW1hdGNoZXNXaGl0ZWxpc3QpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHdoaXRlbGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFVzZXJDb250ZW50VVJM
UGF0dGVybiBjb250ZW50UGF0dGVybih3aGl0ZWxpc3QtPmF0KGkpKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHdoaXRlbGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
VXNlckNvbnRlbnRVUkxQYXR0ZXJuIGNvbnRlbnRQYXR0ZXJuKHdoaXRlbGlzdFtpXSk7CiAgICAg
ICAgICAgICBpZiAoY29udGVudFBhdHRlcm4ubWF0Y2hlcyh1cmwpKSB7CiAgICAgICAgICAgICAg
ICAgbWF0Y2hlc1doaXRlbGlzdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00
Niw5ICs0Niw5IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nCiAgICAgfQogCiAgICAgYm9vbCBt
YXRjaGVzQmxhY2tsaXN0ID0gZmFsc2U7Ci0gICAgaWYgKGJsYWNrbGlzdCkgewotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxhY2tsaXN0LT5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIGNvbnRlbnRQYXR0ZXJuKGJsYWNrbGlzdC0+YXQo
aSkpOworICAgIGlmICghYmxhY2tsaXN0LmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYmxhY2tsaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBVc2Vy
Q29udGVudFVSTFBhdHRlcm4gY29udGVudFBhdHRlcm4oYmxhY2tsaXN0W2ldKTsKICAgICAgICAg
ICAgIGlmIChjb250ZW50UGF0dGVybi5tYXRjaGVzKHVybCkpIHsKICAgICAgICAgICAgICAgICBt
YXRjaGVzQmxhY2tsaXN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCmluZGV4IDUxZDlmZWUzM2FhZjc1
NmM2NzlmODNkNzQzNzQzM2RkNDg0MzZmMjkuLjBkZTA1NWVmNTE2ZmUzOTlhMmJhMWRiNzdkNGYz
MzJkZmZlMzVmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRl
cm4uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG1hdGNoU3ViZG9tYWlu
cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF0Y2hTdWJkb21haW5zOyB9CiAgICAgCi0gICAgc3RhdGlj
IGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiog
d2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiogYmxhY2tsaXN0KTsKKyAgICBzdGF0aWMg
Ym9vbCBtYXRjaGVzUGF0dGVybnMoY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3
aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QpOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgcGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2Ny
aXB0LmgKaW5kZXggMDUxNDA5MDM4Nzk0OGE4ZWVjZmE2ZjAwMjYwZTZlOGVlYTE2YWIyMi4uOTVj
YmZlYmFjMGYzMWE4OTIyZGNlYWQ5NjQ2Nzc3ZjNjZjYxODk4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
U2NyaXB0LmgKQEAgLTI5LDE3ICsyOSwxNSBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJVc2VyQ29udGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCi0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFVzZXJTY3Jp
cHQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJTY3JpcHQpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBV
c2VyU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiB1cmwsCi0gICAgICAg
ICAgICAgICBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gd2hpdGVsaXN0LCBQYXNzT3duUHRy
PFZlY3RvcjxTdHJpbmc+ID4gYmxhY2tsaXN0LAorICAgICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwKICAg
ICAgICAgICAgICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiAgICAgICAgIDogbV9zb3VyY2Uo
c291cmNlKQogICAgICAgICAsIG1fdXJsKHVybCkKQEAgLTUyLDE2ICs1MCwxNiBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9
CiAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiogd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3Qu
Z2V0KCk7IH0KLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiogYmxhY2tsaXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ibGFja2xpc3QuZ2V0KCk7IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hp
dGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KKyAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxhY2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7IH0KICAgICBV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9p
bmplY3Rpb25UaW1lOyB9CiAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcygpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRGcmFtZXM7IH0KIAogcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9zb3VyY2U7CiAgICAgS1VSTCBtX3VybDsKLSAgICBPd25QdHI8VmVjdG9yPFN0
cmluZz4gPiBtX3doaXRlbGlzdDsKLSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBtX2JsYWNr
bGlzdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKKyAgICBWZWN0b3I8U3RyaW5n
PiBtX2JsYWNrbGlzdDsKICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlvblRp
bWU7CiAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAppbmRleCAwNjhkZjFlZjY3ZDY0Y2Y2M2Q5
YWUzNDYwNDM0NjVjZTRlN2NiZTQzLi4zMjI4Yzk3YjA1YWNkMTlmZDlhMzMwODdkZTg5NTBhZWEz
ZGQ3MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCkBAIC0yOSwxNyArMjks
MTUgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRUeXBlcy5oIgog
I2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVXNlclN0eWxlU2hlZXQgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFVzZXJTdHlsZVNoZWV0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVXNlclN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwKLSAgICAgICAgICAgICAg
ICAgICBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gd2hpdGVsaXN0LCBQYXNzT3duUHRyPFZl
Y3RvcjxTdHJpbmc+ID4gYmxhY2tsaXN0LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsCiAg
ICAgICAgICAgICAgICAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1l
cywgVXNlclN0eWxlTGV2ZWwgbGV2ZWwpCiAgICAgICAgIDogbV9zb3VyY2Uoc291cmNlKQogICAg
ICAgICAsIG1fdXJsKHVybCkKQEAgLTUyLDE2ICs1MCwxNiBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgY29uc3Qg
S1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiogd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3QuZ2V0KCk7IH0KLSAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiogYmxhY2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFj
a2xpc3QuZ2V0KCk7IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkgY29u
c3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxh
Y2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7IH0KICAgICBVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEZy
YW1lczsgfQogICAgIFVzZXJTdHlsZUxldmVsIGxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9sZXZl
bDsgfQogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3NvdXJjZTsKICAgICBLVVJMIG1fdXJsOwot
ICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IG1fd2hpdGVsaXN0OwotICAgIE93blB0cjxWZWN0
b3I8U3RyaW5nPiA+IG1fYmxhY2tsaXN0OworICAgIFZlY3RvcjxTdHJpbmc+IG1fd2hpdGVsaXN0
OworICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxhY2tsaXN0OwogICAgIFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1lczsKICAgICBVc2VyU3R5bGVMZXZlbCBtX2xldmVsOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBjMWM5
YzgyYzJkODEyMjQ4MWU1NWMwN2UwYzhlOWFiZTRlMjdlZTU1Li5kNmJmOTRiOTY3NjM5ODQ3OTc0
NmQ4YjMzMTdjMDcxOTEzODk1ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC0zNTEyLDEzICszNTEyLDEzIEBAIHZvaWQgV2ViVmlldzo6YWRkVXNl
clNjcmlwdChjb25zdCBXZWJTdHJpbmcmIHNvdXJjZUNvZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViVmlldzo6VXNlclNjcmlwdEluamVjdEF0IGluamVjdEF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYlZpZXc6OlVzZXJDb250ZW50SW5qZWN0SW4gaW5qZWN0SW4p
CiB7Ci0gICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gcGF0dGVybnMgPSBhZG9wdFB0cihuZXcg
VmVjdG9yPFN0cmluZz4pOworICAgIFZlY3RvcjxTdHJpbmc+IHBhdHRlcm5zOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcGF0dGVybnNJbi5zaXplKCk7ICsraSkKLSAgICAgICAgcGF0dGVy
bnMtPmFwcGVuZChwYXR0ZXJuc0luW2ldKTsKKyAgICAgICAgcGF0dGVybnMuYXBwZW5kKHBhdHRl
cm5zSW5baV0pOwogCiAgICAgUGFnZUdyb3VwKiBwYWdlR3JvdXAgPSBQYWdlR3JvdXA6OnBhZ2VH
cm91cChwYWdlR3JvdXBOYW1lKTsKICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZChE
T01XcmFwcGVyV29ybGQ6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRXb3JsZCgpKTsKLSAgICBwYWdlR3Jv
dXAtPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHdvcmxkLmdldCgpLCBzb3VyY2VDb2RlLCBXZWJVUkwo
KSwgcGF0dGVybnMucmVsZWFzZSgpLCBudWxscHRyLAorICAgIHBhZ2VHcm91cC0+YWRkVXNlclNj
cmlwdFRvV29ybGQod29ybGQuZ2V0KCksIHNvdXJjZUNvZGUsIFdlYlVSTCgpLCBwYXR0ZXJucywg
VmVjdG9yPFN0cmluZz4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lPihpbmplY3RBdCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzPihpbmplY3RJbikpOwogfQpAQCAtMzUyOCw5ICszNTI4LDkgQEAgdm9pZCBXZWJWaWV3
OjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBXZWJTdHJpbmcmIHNvdXJjZUNvZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlZpZXc6OlVzZXJDb250ZW50SW5qZWN0SW4gaW5q
ZWN0SW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlZpZXc6OlVzZXJTdHls
ZUluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBPd25QdHI8VmVjdG9yPFN0cmlu
Zz4gPiBwYXR0ZXJucyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8U3RyaW5nPik7CisgICAgVmVjdG9y
PFN0cmluZz4gcGF0dGVybnM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXR0ZXJuc0lu
LnNpemUoKTsgKytpKQotICAgICAgICBwYXR0ZXJucy0+YXBwZW5kKHBhdHRlcm5zSW5baV0pOwor
ICAgICAgICBwYXR0ZXJucy5hcHBlbmQocGF0dGVybnNJbltpXSk7CiAKICAgICBQYWdlR3JvdXAq
IHBhZ2VHcm91cCA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cE5hbWUpOwogICAgIFJl
ZlB0cjxET01XcmFwcGVyV29ybGQ+IHdvcmxkKERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlVW5pbml0
aWFsaXplZFdvcmxkKCkpOwpAQCAtMzUzOSw3ICszNTM5LDcgQEAgdm9pZCBXZWJWaWV3OjphZGRV
c2VyU3R5bGVTaGVldChjb25zdCBXZWJTdHJpbmcmIHNvdXJjZUNvZGUsCiAgICAgLy8gY2FsbGVy
cyBzcGVjaWZ5IHRoaXMgdGhvdWdoLCBzaW5jZSBpbiBvdGhlciBjYXNlcyB0aGUgY2FsbGVyIHdp
bGwgcHJvYmFibHkgd2FudCAidXNlciIgbGV2ZWwuCiAgICAgLy8KICAgICAvLyBGSVhNRTogSXQg
d291bGQgYmUgbmljZSB0byBwb3B1bGF0ZSB0aGUgVVJMIGNvcnJlY3RseSwgaW5zdGVhZCBvZiBw
YXNzaW5nIGFuIGVtcHR5IFVSTC4KLSAgICBwYWdlR3JvdXAtPmFkZFVzZXJTdHlsZVNoZWV0VG9X
b3JsZCh3b3JsZC5nZXQoKSwgc291cmNlQ29kZSwgV2ViVVJMKCksIHBhdHRlcm5zLnJlbGVhc2Uo
KSwgbnVsbHB0ciwKKyAgICBwYWdlR3JvdXAtPmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZCh3b3Js
ZC5nZXQoKSwgc291cmNlQ29kZSwgV2ViVVJMKCksIHBhdHRlcm5zLCBWZWN0b3I8U3RyaW5nPigp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM+KGluamVjdEluKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVc2VyU3R5bGVBdXRob3JMZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpVc2VyU3R5bGVJ
bmplY3Rpb25UaW1lPihpbmplY3Rpb25UaW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApp
bmRleCA1MjhkMmM3YjQzMTZlMGQ3OWY4OGEzZWFkM2MxNTIwZjQwN2E3NzAzLi43NDY2MDI5NDk1
NTUxN2E3YWNlNjEwOWFlYmVmN2RhMGJhZTRmZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6YWRk
VXNlclNjcmlwdChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgUwogICAgIERSVF9T
VVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwogCiAgICAgcGFnZS0+Z3Jv
dXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQo
KSwgc291cmNlQ29kZSwgV2ViQ29yZTo6S1VSTCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgcnVuQXRTdGFydCA/IFdlYkNvcmU6Oklu
amVjdEF0RG9jdW1lbnRTdGFydCA6IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPigpLCBWZWN0
b3I8U3RyaW5nPigpLCBydW5BdFN0YXJ0ID8gV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0
IDogV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudEVuZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFsbEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIDog
V2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogfQogCkBAIC0zMTEsNyArMzExLDcgQEAg
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb24KIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hl
ZXRUb1dvcmxkKFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBX
ZWJDb3JlOjpLVVJMKCksIG51bGxwdHIsIG51bGxwdHIsIGFsbEZyYW1lcyA/IFdlYkNvcmU6Oklu
amVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAgIHBh
Z2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKFdlYkNvcmU6Om1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpLVVJMKCksIFZlY3RvcjxTdHJpbmc+
KCksIFZlY3RvcjxTdHJpbmc+KCksIGFsbEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJh
bWVzIDogV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogfQogCiB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6Y2xlYXJVc2VyU3R5bGVTaGVldHMoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNzQ4NDQ3YjM4
Y2EzMWQzZTkzOTNkN2YwNWMzNTg2NjUzODU0ZjY2NS4uMmFhZTU0OGViZDU0Y2UyNWU2OGEyYWU5
ZjFlMTYyMzMwNDMyMDAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
NjgyLDcgKzY4Miw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha01haWxRdWlya3NVc2VyU2NyaXB0
Q29udGVudHMoKQogewogICAgIHN0YXRpYyBOU1N0cmluZyAqbWFpbFF1aXJrc1NjcmlwdENvbnRl
bnRzID0gbGVha01haWxRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKICAgICBjb3JlKHNlbGYp
LT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKGNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxk
XSksCi0gICAgICAgIG1haWxRdWlya3NTY3JpcHRDb250ZW50cywgS1VSTCgpLCBudWxscHRyLCBu
dWxscHRyLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcyk7CisgICAgICAg
IG1haWxRdWlya3NTY3JpcHRDb250ZW50cywgS1VSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0
b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcyk7CiB9
CiAKIHN0YXRpYyBib29sIG5lZWRzT3V0bG9va1F1aXJrc1NjcmlwdCgpCkBAIC03MDMsNyArNzAz
LDcgQEAgc3RhdGljIE5TU3RyaW5nICpsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50
cygpCiB7CiAgICAgc3RhdGljIE5TU3RyaW5nICpvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMg
PSBsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRDb250ZW50cygpOwogICAgIGNvcmUoc2VsZikt
Pmdyb3VwKCkuYWRkVXNlclNjcmlwdFRvV29ybGQoY29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRd
KSwKLSAgICAgICAgb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBLVVJMKCksIG51bGxwdHIs
IG51bGxwdHIsIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKTsKKyAgICAg
ICAgb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzLCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCks
IFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVz
KTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVT
ZXR0ZXJzKCkKQEAgLTI2MjcsMTkgKzI2MjcsMjAgQEAgc3RhdGljIGlubGluZSBJTVAgZ2V0TWV0
aG9kKGlkIG8sIFNFTCBzKQogICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPnNldEFjdGl2ZShbW3NlbGYgd2luZG93XSBfaGFzS2V5QXBwZWFyYW5jZV0pOwogfQogCi1z
dGF0aWMgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkq
IHBhdHRlcm5zKQorc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKE5TQXJyYXkq
IHBhdHRlcm5zKQogewotICAgIC8vIENvbnZlcnQgdGhlIHBhdHRlcm5zIGludG8gVmVjdG9ycy4K
KyAgICBWZWN0b3I8U3RyaW5nPiBwYXR0ZXJuc1ZlY3RvcjsKKwogICAgIE5TVUludGVnZXIgY291
bnQgPSBbcGF0dGVybnMgY291bnRdOwotICAgIGlmIChjb3VudCA9PSAwKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBwYXR0ZXJuc1ZlY3RvciA9
IGFkb3B0UHRyKG5ldyBWZWN0b3I8U3RyaW5nPik7CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAg
cmV0dXJuIHBhdHRlcm5zVmVjdG9yOworCiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgewogICAgICAgICBpZCBlbnRyeSA9IFtwYXR0ZXJucyBvYmplY3RBdEluZGV4
OmldOwogICAgICAgICBpZiAoW2VudHJ5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
Ci0gICAgICAgICAgICBwYXR0ZXJuc1ZlY3Rvci0+YXBwZW5kKFN0cmluZygoTlNTdHJpbmcqKWVu
dHJ5KSk7CisgICAgICAgICAgICBwYXR0ZXJuc1ZlY3Rvci5hcHBlbmQoU3RyaW5nKChOU1N0cmlu
ZyAqKWVudHJ5KSk7CiAgICAgfQotICAgIHJldHVybiBwYXR0ZXJuc1ZlY3Rvci5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIHBhdHRlcm5zVmVjdG9yOwogfQogCiArICh2b2lkKV9hZGRVc2VyU2NyaXB0
VG9Hcm91cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29y
bGQgc291cmNlOihOU1N0cmluZyAqKXNvdXJjZSB1cmw6KE5TVVJMICopdXJsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckNvbnRlbnRDb250YWluZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmNwcAppbmRleCBjMzQ0ZWVhNDEw
MDk5OGU4ODM2ODBhZjk1ZDU3NTkxNjcwNmJjNjI4Li41MDVlMjI1YTUwNjBmYjFlNGIyNTVhMDQw
NGE4ZjY0YmM5OTYzNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckNv
bnRlbnRDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyQ29udGVu
dENvbnRhaW5lci5jcHAKQEAgLTMyLDYgKzMyLDI2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitzdGF0aWMgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoSW1tdXRhYmxlQXJyYXkqIGFy
cmF5KQoreworICAgIFZlY3RvcjxTdHJpbmc+IHBhdHRlcm5WZWN0b3I7CisgICAgaWYgKCFhcnJh
eSkKKyAgICAgICAgcmV0dXJuIHBhdHRlcm5WZWN0b3I7CisKKyAgICBzaXplX3Qgc2l6ZSA9IGFy
cmF5LT5zaXplKCk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gcGF0dGVyblZlY3Rv
cjsKKyAgICAKKyAgICBwYXR0ZXJuVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgV2ViU3Ry
aW5nKiB3ZWJTdHJpbmcgPSBhcnJheS0+YXQ8V2ViU3RyaW5nPihpKTsKKyAgICAgICAgQVNTRVJU
KHdlYlN0cmluZyk7CisgICAgICAgIHBhdHRlcm5WZWN0b3IudW5jaGVja2VkQXBwZW5kKHdlYlN0
cmluZy0+c3RyaW5nKCkpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcGF0dGVyblZlY3RvcjsK
K30KKwogVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06Okl0ZW0oKQogewogfQpAQCAtMzksNjUg
KzU5LDMwIEBAIFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpJdGVtKCkKIFVzZXJDb250ZW50
Q29udGFpbmVyOjpJdGVtOjpJdGVtKFBhc3NSZWZQdHI8V2ViU3RyaW5nPiBzb3VyY2UsIFBhc3NS
ZWZQdHI8V2ViVVJMPiB1cmwsIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHdoaXRlbGlzdCwg
UGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gYmxhY2tsaXN0LCBJbmplY3RlZEZyYW1lcyBpbmpl
Y3RlZEZyYW1lcywgVHlwZSB0eXBlKQogICAgIDogbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV91
cmwodXJsKQotICAgICwgbV93aGl0ZWxpc3Qod2hpdGVsaXN0KQotICAgICwgbV9ibGFja2xpc3Qo
YmxhY2tsaXN0KQorICAgICwgbV93aGl0ZWxpc3QodG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0Lmdl
dCgpKSkKKyAgICAsIG1fYmxhY2tsaXN0KHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdC5nZXQoKSkp
CiAgICAgLCBtX2luamVjdGVkRnJhbWVzKGluamVjdGVkRnJhbWVzKQogICAgICwgbV90eXBlKHR5
cGUpCiB7CiAgICAgQVNTRVJUKG1fc291cmNlKTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlU3Ry
aW5nQXJyYXkoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBJbW11dGFibGVBcnJh
eSogYXJyYXkpCi17Ci0gICAgQVNTRVJUKGVuY29kZXIpOwotICAgIHVpbnQzMl90IHNpemUgPSBh
cnJheSA/IGFycmF5LT5zaXplKCkgOiAwOwotICAgIGVuY29kZXItPmVuY29kZShzaXplKTsKLSAg
ICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIFdlYlN0cmlu
Zyogd2ViU3RyaW5nID0gYXJyYXktPmF0PFdlYlN0cmluZz4oaSk7Ci0gICAgICAgIEFTU0VSVCh3
ZWJTdHJpbmcpOwotICAgICAgICBlbmNvZGVyLT5lbmNvZGUod2ViU3RyaW5nLT5zdHJpbmcoKSk7
Ci0gICAgfQotfQotCiB2b2lkIFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjplbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXItPmVu
Y29kZShtX3NvdXJjZS0+c3RyaW5nKCkpOwogICAgIGVuY29kZXItPmVuY29kZShtX3VybCA/IG1f
dXJsLT5zdHJpbmcoKSA6IFN0cmluZygpKTsKLSAgICBlbmNvZGVTdHJpbmdBcnJheShlbmNvZGVy
LCBtX3doaXRlbGlzdC5nZXQoKSk7Ci0gICAgZW5jb2RlU3RyaW5nQXJyYXkoZW5jb2RlciwgbV9i
bGFja2xpc3QuZ2V0KCkpOworICAgIGVuY29kZXItPmVuY29kZShtX3doaXRlbGlzdCk7CisgICAg
ZW5jb2Rlci0+ZW5jb2RlKG1fYmxhY2tsaXN0KTsKICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KG1faW5qZWN0ZWRGcmFtZXMpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fdHlwZSkpOwogfQogCi1zdGF0aWMgYm9vbCBkZWNvZGVT
dHJpbmdBcnJheShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFZlY3RvcjxSZWZQ
dHI8QVBJT2JqZWN0PiA+JiB2ZWN0b3IpCi17Ci0gICAgQVNTRVJUKGRlY29kZXIpOwotICAgIEFT
U0VSVCh2ZWN0b3IuaXNFbXB0eSgpKTsKLQotICAgIHVpbnQzMl90IHNpemU7Ci0gICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgh
c2l6ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzaXplKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHN0
cmluZykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHZlY3Rvci51bmNoZWNr
ZWRBcHBlbmQoV2ViU3RyaW5nOjpjcmVhdGUoc3RyaW5nKSk7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KIGJvb2wgVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06OmRlY29kZShDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVt
JiBpdGVtKQogewogICAgIEFTU0VSVCghaXRlbS5tX3NvdXJjZSk7CiAgICAgQVNTRVJUKCFpdGVt
Lm1fdXJsKTsKLSAgICBBU1NFUlQoIWl0ZW0ubV93aGl0ZWxpc3QpOwotICAgIEFTU0VSVCghaXRl
bS5tX2JsYWNrbGlzdCk7CisgICAgQVNTRVJUKGl0ZW0ubV93aGl0ZWxpc3QuaXNFbXB0eSgpKTsK
KyAgICBBU1NFUlQoaXRlbS5tX2JsYWNrbGlzdC5pc0VtcHR5KCkpOwogCiAgICAgU3RyaW5nIHNv
dXJjZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzb3VyY2UpKQpAQCAtMTA5LDE1ICs5NCwx
MCBAQCBib29sIFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBVc2VyQwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aXRlbS5tX3VybCA9IFdlYlVSTDo6Y3JlYXRlKHVybCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEFQ
SU9iamVjdD4gPiB3aGl0ZWxpc3Q7Ci0gICAgaWYgKCFkZWNvZGVTdHJpbmdBcnJheShkZWNvZGVy
LCB3aGl0ZWxpc3QpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGl0ZW0ubV93aGl0ZWxpc3Qp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaXRlbS5tX3doaXRlbGlzdCA9IEltbXV0YWJs
ZUFycmF5OjphZG9wdCh3aGl0ZWxpc3QpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+
ID4gYmxhY2tsaXN0OwotICAgIGlmICghZGVjb2RlU3RyaW5nQXJyYXkoZGVjb2RlciwgYmxhY2ts
aXN0KSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShpdGVtLm1fYmxhY2tsaXN0KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGl0ZW0ubV9ibGFja2xpc3QgPSBJbW11dGFibGVBcnJheTo6
YWRvcHQoYmxhY2tsaXN0KTsKIAogICAgIHVpbnQzMl90IGluamVjdGVkRnJhbWVzOwogICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGluamVjdGVkRnJhbWVzKSkKQEAgLTEzMiwzNiArMTEyLDYgQEAg
Ym9vbCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgVXNlckMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIFBh
c3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB0b1N0cmluZ1ZlY3RvcihJbW11dGFibGVBcnJheSog
YXJyYXkpCi17Ci0gICAgaWYgKCFhcnJheSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBzaXplX3Qgc2l6ZSA9IGFycmF5LT5zaXplKCk7Ci0gICAgaWYgKCFzaXplKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBzdHJpbmdW
ZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4oKSk7Ci0gICAgc3RyaW5nVmVjdG9y
LT5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIFdlYlN0cmluZyogd2ViU3RyaW5nID0gYXJyYXktPmF0
PFdlYlN0cmluZz4oaSk7Ci0gICAgICAgIEFTU0VSVCh3ZWJTdHJpbmcpOwotICAgICAgICBzdHJp
bmdWZWN0b3ItPnVuY2hlY2tlZEFwcGVuZCh3ZWJTdHJpbmctPnN0cmluZygpKTsKLSAgICB9Ci0g
ICAgCi0gICAgcmV0dXJuIHN0cmluZ1ZlY3Rvci5yZWxlYXNlKCk7Ci19Ci0KLVBhc3NPd25QdHI8
VmVjdG9yPFN0cmluZz4gPiBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6d2hpdGVsaXN0KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gdG9TdHJpbmdWZWN0b3IobV93aGl0ZWxpc3QuZ2V0KCkpOwot
fQotCi1QYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gVXNlckNvbnRlbnRDb250YWluZXI6Okl0
ZW06OmJsYWNrbGlzdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRvU3RyaW5nVmVjdG9yKG1fYmxh
Y2tsaXN0LmdldCgpKTsKLX0KLQogdm9pZCBVc2VyQ29udGVudENvbnRhaW5lcjo6ZW5jb2RlKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyLT5l
bmNvZGUobV91c2VyQ29udGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
VXNlckNvbnRlbnRDb250YWluZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyQ29udGVu
dENvbnRhaW5lci5oCmluZGV4IDMwYmYyMTVhMzNiZmI5MjEyMGUwYmRhNzRmNjgxYjVkNjFjYWFi
YWUuLjgwN2Y0NmNlYzE1NTE3Mjk1ZWE5OWU5MGQzNDBjYjkzOWJhNDQ5ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyQ29udGVudENvbnRhaW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Vc2VyQ29udGVudENvbnRhaW5lci5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIENv
cmVJUEMgewogY2xhc3MgQXJndW1lbnREZWNvZGVyOwpAQCAtNjEsMTYgKzYyLDE2IEBAIHB1Ymxp
YzoKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2UtPnN0cmluZygpOyB9CiAgICAgICAgIFdlYkNvcmU6OktVUkwgdXJsKCkgY29u
c3QgeyByZXR1cm4gIW1fdXJsIHx8IG1fdXJsLT5zdHJpbmcoKS5pc0VtcHR5KCkgPyBXZWJDb3Jl
OjpibGFua1VSTCgpIDogV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIG1fdXJsLT5zdHJp
bmcoKSk7IH0KLSAgICAgICAgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IHdoaXRlbGlzdCgp
IGNvbnN0OwotICAgICAgICBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gYmxhY2tsaXN0KCkg
Y29uc3Q7CisgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QoKSBjb25zdCB7
IHJldHVybiBtX3doaXRlbGlzdDsgfQorICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxh
Y2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7IH0KICAgICAgICAgSW5qZWN0ZWRG
cmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkRnJhbWVzOyB9
CiAgICAgICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUmVmUHRyPFdlYlN0cmluZz4gbV9zb3VyY2U7CiAgICAgICAgIFJlZlB0
cjxXZWJVUkw+IG1fdXJsOwotICAgICAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IG1fd2hpdGVs
aXN0OwotICAgICAgICBSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IG1fYmxhY2tsaXN0OworICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9i
bGFja2xpc3Q7CiAgICAgICAgIEluamVjdGVkRnJhbWVzIG1faW5qZWN0ZWRGcmFtZXM7CiAgICAg
ICAgIFR5cGUgbV90eXBlOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IGI5Y2Fi
ZGUxZmRkY2Q5MDZiOGExNzAyYjY1NDg5YzU2ZTI0NTFiYzYuLjQ1OGIxYzE2OWNjMWM5NzExOTIy
NmUzM2JkMzk3ZjQ1NTczMmU4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00MjYsMjMg
KzQyNiwyNCBAQCBib29sIEluamVjdGVkQnVuZGxlOjppc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
CiAgICAgcmV0dXJuIFNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwog
fQogCi1zdGF0aWMgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IHRvU3RyaW5nVmVjdG9yKElt
bXV0YWJsZUFycmF5KiBwYXR0ZXJucykKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1Zl
Y3RvcihJbW11dGFibGVBcnJheSogcGF0dGVybnMpCiB7CisgICAgVmVjdG9yPFN0cmluZz4gcGF0
dGVybnNWZWN0b3I7CisKICAgICBpZiAoIXBhdHRlcm5zKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIHBhdHRlcm5zVmVjdG9yOwogCi0gICAgc2l6ZV90IHNpemUgPSAg
cGF0dGVybnMtPnNpemUoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHBhdHRlcm5zLT5zaXplKCk7CiAg
ICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHBh
dHRlcm5zVmVjdG9yOwogCi0gICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gcGF0dGVybnNWZWN0
b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4pOwotICAgIHBhdHRlcm5zVmVjdG9yLT5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworICAgIHBhdHRlcm5zVmVjdG9yLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKICAgICAgICAgV2ViU3RyaW5nKiBlbnRyeSA9IHBhdHRlcm5zLT5hdDxXZWJTdHJpbmc+
KGkpOwogICAgICAgICBpZiAoZW50cnkpCi0gICAgICAgICAgICBwYXR0ZXJuc1ZlY3Rvci0+dW5j
aGVja2VkQXBwZW5kKGVudHJ5LT5zdHJpbmcoKSk7CisgICAgICAgICAgICBwYXR0ZXJuc1ZlY3Rv
ci51bmNoZWNrZWRBcHBlbmQoZW50cnktPnN0cmluZygpKTsKICAgICB9Ci0gICAgcmV0dXJuIHBh
dHRlcm5zVmVjdG9yLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcGF0dGVybnNWZWN0b3I7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmFkZFVzZXJTY3JpcHQoV2ViUGFnZUdyb3VwUHJveHkqIHBh
Z2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlz
dCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlclNjcmlwdEluamVjdGlv
blRpbWUgaW5qZWN0aW9uVGltZSwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBp
bmplY3RlZEZyYW1lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9xdC9XZWJQYWdlUXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L3F0L1dlYlBhZ2VRdC5jcHAKaW5kZXggNzZmYjA3NGE1OTA0ZjJkMmUzN2Q5MTQ4Mzc1NGU5NDE5
MTE4YzBhNC4uNzIxYmU0NjAzNjJkYjkxNTM2NDAxYzY0OTU0MmZmNzliNmYyYzI4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAK
QEAgLTQyMyw3ICs0MjMsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldFVzZXJTY3JpcHRzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzY3JpcHRzKQogICAgIFBhZ2VHcm91cCogcGFnZUdyb3VwID0gUGFnZUdy
b3VwOjpwYWdlR3JvdXAodGhpcy0+cGFnZUdyb3VwKCktPmlkZW50aWZpZXIoKSk7CiAgICAgcGFn
ZUdyb3VwLT5yZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQo
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNjcmlwdHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIHBhZ2VHcm91cC0+YWRkVXNlclNjcmlwdFRvV29ybGQobWFpblRocmVhZE5vcm1hbFdv
cmxkKCksIHNjcmlwdHMuYXQoaSksIEtVUkwoKSwgbnVsbHB0ciwgbnVsbHB0ciwgSW5qZWN0QXRE
b2N1bWVudEVuZCwgSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAgICAgICBwYWdlR3JvdXAtPmFk
ZFVzZXJTY3JpcHRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzY3JpcHRzLmF0KGkp
LCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9j
dW1lbnRFbmQsIEluamVjdEluVG9wRnJhbWVPbmx5KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZWxl
Y3RlZEluZGV4KGludDMyX3QgbmV3SW5kZXgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168592</attachid>
            <date>2012-10-14 14:38:16 -0700</date>
            <delta_ts>2012-10-14 14:40:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99275-20121014143654.patch</filename>
            <type>text/plain</type>
            <size>33764</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdjM2MxNzY5ZGE4NmU4
N2NjN2YzMmNkYjJkYTIwYjc4ZTMzNDE0NC4uNDUzN2NiMzAzZDQ3NWZhYWFjMWU1NDFkYjE1YjVh
OTNjMjg3YmMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEwLTE0ICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBVc2VyU2NyaXB0IGFuZCBV
c2VyU3R5bGVTaGVldCB2YWx1ZSBvYmplY3RzIHRoYXQgYXJlIGNvcHlhYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTI3NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbXBsaWZ5IFVzZXJTY3JpcHQg
YW5kIFVzZXJTdHlsZVNoZWV0IGFuZCBtYWtlIHRoZW0gbW9yZSBlYXNpbHkgdXNhYmxlCisgICAg
ICAgIHdpdGhvdXQgc3RpY2tpbmcgdGhlbSBpbiBhbiBPd25QdHIuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgVXBkYXRlIGV4cG9ydHMuCisKKyAgICAgICAgKiBwYWdlL1Bh
Z2VHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRU
b1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRU
b1dvcmxkKToKKyAgICAgICAgKiBwYWdlL1BhZ2VHcm91cC5oOgorICAgICAgICAoUGFnZUdyb3Vw
KToKKyAgICAgICAgKiBwYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyk6CisgICAgICAg
ICogcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaDoKKyAgICAgICAgKFVzZXJDb250ZW50VVJM
UGF0dGVybik6CisgICAgICAgIFVwZGF0ZSB0byBub3QgYXNzdW1lIHdoaXRlbGlzdCBhbmQgYmxh
Y2tsaXN0IGFyZSBpbiBWZWN0b3I8U3RyaW5nPiouCisKKyAgICAgICAgKiBwYWdlL1VzZXJTY3Jp
cHQuaDoKKyAgICAgICAgKFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlw
dDo6VXNlclNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VyU2NyaXB0Ojp3aGl0ZWxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6YmxhY2tsaXN0KToKKyAgICAgICAgKiBw
YWdlL1VzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgIChVc2VyU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJDb3JlOjpVc2VyU3R5bGVTaGVldDo6VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6VXNlclN0eWxlU2hlZXQ6OndoaXRlbGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpVc2Vy
U3R5bGVTaGVldDo6YmxhY2tsaXN0KToKKyAgICAgICAgU3dpdGNoIE93blB0cjxWZWN0b3I8U3Ry
aW5nPiA+IHRvIFZlY3RvcjxTdHJpbmc+IGFuZCByZW1vdmUgTm9uY29weWFibGUgcmVzdHJpY3Rp
b24uCisKIDIwMTItMTAtMTQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQgc2hvdWxkIGV4cG9zZSBhIG1ldGhvZCB0byBjb250
cm9sIHRoZSBjb21wb3NpdGluZyBkZWJ1ZyBzZXR0aW5ncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggNTMyNDNjYWE1ZWUyY2MxZjBmNWY4ZTdhYTgwYmU5Mjg1NDdlNWM1Zi4uYzcxNTll
MDkyNGQ5ZGE2ODgwYzVhZWNmMzUyNTI0ODM4ZjEwZjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0xNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQgVXNlclN0eWxlU2hlZXQgdmFs
dWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyNzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojph
ZGRVc2VyU3R5bGVTaGVldCk6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IFBhZ2VHcm91cCBmdW5j
dGlvbiBzaWduYXR1cmVzLgorCiAyMDEyLTEwLTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZW1vdmUgdXNlZCBmcmFtZUZvckVudGVyZWRD
b250ZXh0IEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGY5NGI0Y2Q0MjMyNmMwMDQ1MmZjYWZmYzUy
Njg1YjY2ZTU3YjAxOWYuLjBiOWZjYTVhNzc0NGQ2MzFiZjYwNDI4ZjhjMWExOTVmMzAyY2YyNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0xNCAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQgVXNlclN0
eWxlU2hlZXQgdmFsdWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyNzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6
OmFkZFVzZXJTY3JpcHQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjphZGRV
c2VyU3R5bGVTaGVldCk6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IFBhZ2VHcm91cCBmdW5jdGlv
biBzaWduYXR1cmVzLgorCiAyMDEyLTEwLTExICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gUmVtb3ZlICJ3ZWIiIHdvcmQgaW4gd2ViIGlu
c3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDZjZmY0Y2JiYmQ1MjYyOGVlYWI0YmM2ODk5ODM1
NzJhMWRmZWQ0ZWUuLjZjZjQzMGI5ZTdiNjEwZWRjZGJlMjJkNmEwMWI2Yjg0Nzk1MmFlNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0xNCAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQgVXNlclN0eWxl
U2hlZXQgdmFsdWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyNzUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViVmlldyBfaW5qZWN0TWFpbFF1aXJrc1NjcmlwdF0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0XSk6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3
IFBhZ2VHcm91cCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCiAyMDEyLTEwLTEwICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBTd2l0Y2ggUmVzb3VyY2VMb2FkZXI6
OnJlc291cmNlRGF0YSgpIGZyb20gU2hhcmVkQnVmZmVyIHRvIFJlc291cmNlQnVmZmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggYzY3MDc3NGRkNmVlYjM3NTRkMzI0YmQxM2E2NjI5ODdiNzQ0OGRiOC4uYzE4MDEx
OGVmMWVhZjM2ZDY3OGJjNzU2YTBiYTMwN2I4MzhkZmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI3IEBACisyMDEyLTEwLTE0ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTWFrZSBVc2VyU2NyaXB0IGFuZCBVc2VyU3R5bGVTaGVldCB2YWx1ZSBvYmplY3RzIHRoYXQg
YXJlIGNvcHlhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05OTI3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
dG9TdHJpbmdWZWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpVc2VyQ29udGVudENvbnRhaW5lcjo6
SXRlbTo6SXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVt
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvVXNlckNvbnRlbnRDb250YWluZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06OndoaXRlbGlzdCk6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpibGFja2xpc3QpOgorICAg
ICAgICBTd2l0Y2ggVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW0gdG8gc3RvcmUgVmVjdG9yPFN0
cmluZz4gaW5zdGVhZCBvZiBJbW11dGFibGVBcnJheSwgZWFzaW5nCisgICAgICAgIHRyYW5zaXRp
b24gdG8gbmV3IFBhZ2VHcm91cCBmdW5jdGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OnRvU3RyaW5nVmVjdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2Vi
UGFnZVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VXNlclNjcmlwdHMpOgor
ICAgICAgICBVcGRhdGUgZm9yIG5ldyBQYWdlR3JvdXAgZnVuY3Rpb24gc2lnbmF0dXJlcy4KKwog
MjAxMi0xMC0xMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBj
bGFzcyBleHRlbnNpb24gcmF0aGVyIHRoYW4gYSB2b2lkKiBtZW1iZXIgZm9yIG5ldyBPYmplY3Rp
dmUtQyBXZWJQcm9jZXNzUGx1Z0luIFNQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA0MDJlMjY1
MGY5ZmY2YzY2MGFkZmI3MDc4YWQ2NmI5NDg5NzFiZTE2Li40ZTRhZTQ1YjUyZDc3MmZmMzA1OWZi
NzExNGMwYThlYTYzNTJiNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTA0NCwxMCArMTA0
NCwxMCBAQCBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMTRhZGRWaXNpdGVkTGlua0VQS3RtCiBfX1pO
N1dlYkNvcmU5UGFnZUdyb3VwMTdjbG9zZUxvY2FsU3RvcmFnZUV2CiBfX1pON1dlYkNvcmU5UGFn
ZUdyb3VwMThhZGRWaXNpdGVkTGlua0hhc2hFeQogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE4bnVt
YmVyT2ZQYWdlR3JvdXBzRXYKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRU
b1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRU5T
M18xMFBhc3NPd25QdHJJTlMzXzZWZWN0b3JJUzRfTG0wRUVFRUVTRF9OU18yM1VzZXJTY3JpcHRJ
bmplY3Rpb25UaW1lRU5TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0UKK19fWk43V2ViQ29y
ZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVS
S04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRUVFU0RfTlNfMjNV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZUVOU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFCiBf
X1pON1dlYkNvcmU5UGFnZUdyb3VwMjByZW1vdmVBbGxVc2VyQ29udGVudEV2CiBfX1pON1dlYkNv
cmU5UGFnZUdyb3VwMjFyZW1vdmVBbGxWaXNpdGVkTGlua3NFdgotX19aTjdXZWJDb3JlOVBhZ2VH
cm91cDI0YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04z
V1RGNlN0cmluZ0VSS05TXzRLVVJMRU5TM18xMFBhc3NPd25QdHJJTlMzXzZWZWN0b3JJUzRfTG0w
RUVFRUVTRF9OU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFTlNfMTRVc2VyU3R5bGVMZXZl
bEVOU18yMlVzZXJTdHlsZUluamVjdGlvblRpbWVFCitfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjRh
ZGRVc2VyU3R5bGVTaGVldFRvV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2U3Ry
aW5nRVJLTlNfNEtVUkxFUktOUzNfNlZlY3RvcklTNF9MbTBFRUVTRF9OU18yNVVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXNFTlNfMTRVc2VyU3R5bGVMZXZlbEVOU18yMlVzZXJTdHlsZUluamVjdGlv
blRpbWVFCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjVyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxk
RVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlOVBhZ2VHcm91
cDI2cmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19a
TjdXZWJDb3JlOVBhZ2VHcm91cDI2c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3NFYgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDcyMGRlZmY2NmQwODVhOWVmYmEwZjRhNzI0Y2VlNTQ4
NGYxYmNiNzAuLjMxNGVkMTQxOWNmNTIyZjQ4N2MxMTlkZGI4ZmUyZThhNmRkNzUwMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBTdG9yYWdlTmFtZXNw
YWNlKiBQYWdlR3JvdXA6OmxvY2FsU3RvcmFnZSgpCiB9CiAKIHZvaWQgUGFnZUdyb3VwOjphZGRV
c2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgS1VSTCYgdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB3aGl0ZWxpc3QsIFBhc3NPd25QdHI8VmVj
dG9yPFN0cmluZz4gPiBibGFja2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsYWNrbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJh
bWVzIGluamVjdGVkRnJhbWVzKQogewogICAgIEFTU0VSVF9BUkcod29ybGQsIHdvcmxkKTsKQEAg
LTI3Nyw3ICsyNzcsNyBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQoRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyYwogfQogCiB2b2lkIFBhZ2VH
cm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNv
bnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiB1cmwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB3aGl0ZWxp
c3QsIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBibGFja2xpc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxp
c3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTdHls
ZUxldmVsIGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
c2VyU3R5bGVJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
aAppbmRleCA5OGM1MWRkNTk5MGMzYWRjMDE2NWY0NDc1ZjNkZDcxMzg5YjkxZmE4Li43ZDJkZGZh
ZjE2MmFkZDJkZGZkODc3YjU5M2JiNTg3MWYwNTVjMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmgKQEAgLTgzLDEwICs4MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
aGFzTG9jYWxTdG9yYWdlKCkgeyByZXR1cm4gbV9sb2NhbFN0b3JhZ2U7IH0KIAogICAgICAgICB2
b2lkIGFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFN0cmluZyYg
c291cmNlLCBjb25zdCBLVVJMJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gd2hpdGVsaXN0LCBQYXNzT3duUHRyPFZlY3RvcjxT
dHJpbmc+ID4gYmxhY2tsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFj
a2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclNjcmlwdEluamVj
dGlvblRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMpOwogICAgICAgICB2b2lkIGFkZFVz
ZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgS1VSTCYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB3aGl0ZWxpc3QsIFBhc3NPd25QdHI8VmVjdG9yPFN0
cmluZz4gPiBibGFja2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bGFja2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJDb250
ZW50SW5qZWN0ZWRGcmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVzZXJTdHlsZUxldmVsIGxldmVsID0gVXNlclN0eWxlVXNlckxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyU3R5bGVJbmplY3Rpb25UaW1lIGluamVjdGlv
blRpbWUgPSBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCA2NzZiNjU1NzM5OGJkNzMzZmViMGZl
MTA1MjliNTIwZDA4ZWFjNTRjLi45NjUzODRkZmYwMmZhZjI3MTk5Y2YxYzNhOTIzYjkwYmE2Nzdl
NDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
CkBAIC0zMCwxNCArMzAsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFVzZXJD
b250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4qIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4qIGJsYWNrbGlz
dCkKK2Jvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxhY2tsaXN0KQogewogICAgIC8vIEluIG9yZGVyIGZvciBhIFVSTCB0byBiZSBhIG1h
dGNoIGl0IGhhcyB0byBiZSBwcmVzZW50IGluIHRoZSB3aGl0ZWxpc3QgYW5kIG5vdCBwcmVzZW50
IGluIHRoZSBibGFja2xpc3QuCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gd2hpdGVsaXN0IGF0IGFs
bCwgdGhlbiBhbGwgVVJMcyBhcmUgYXNzdW1lZCB0byBiZSBpbiB0aGUgd2hpdGVsaXN0LgotICAg
IGJvb2wgbWF0Y2hlc1doaXRlbGlzdCA9ICF3aGl0ZWxpc3QgfHwgd2hpdGVsaXN0LT5pc0VtcHR5
KCk7CisgICAgYm9vbCBtYXRjaGVzV2hpdGVsaXN0ID0gd2hpdGVsaXN0LmlzRW1wdHkoKTsKICAg
ICBpZiAoIW1hdGNoZXNXaGl0ZWxpc3QpIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHdoaXRlbGlzdC0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFVzZXJDb250ZW50VVJM
UGF0dGVybiBjb250ZW50UGF0dGVybih3aGl0ZWxpc3QtPmF0KGkpKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHdoaXRlbGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
VXNlckNvbnRlbnRVUkxQYXR0ZXJuIGNvbnRlbnRQYXR0ZXJuKHdoaXRlbGlzdFtpXSk7CiAgICAg
ICAgICAgICBpZiAoY29udGVudFBhdHRlcm4ubWF0Y2hlcyh1cmwpKSB7CiAgICAgICAgICAgICAg
ICAgbWF0Y2hlc1doaXRlbGlzdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00
Niw5ICs0Niw5IEBAIGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nCiAgICAgfQogCiAgICAgYm9vbCBt
YXRjaGVzQmxhY2tsaXN0ID0gZmFsc2U7Ci0gICAgaWYgKGJsYWNrbGlzdCkgewotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxhY2tsaXN0LT5zaXplKCk7ICsraSkgewotICAgICAg
ICAgICAgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIGNvbnRlbnRQYXR0ZXJuKGJsYWNrbGlzdC0+YXQo
aSkpOworICAgIGlmICghYmxhY2tsaXN0LmlzRW1wdHkoKSkgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYmxhY2tsaXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBVc2Vy
Q29udGVudFVSTFBhdHRlcm4gY29udGVudFBhdHRlcm4oYmxhY2tsaXN0W2ldKTsKICAgICAgICAg
ICAgIGlmIChjb250ZW50UGF0dGVybi5tYXRjaGVzKHVybCkpIHsKICAgICAgICAgICAgICAgICBt
YXRjaGVzQmxhY2tsaXN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCmluZGV4IDUxZDlmZWUzM2FhZjc1
NmM2NzlmODNkNzQzNzQzM2RkNDg0MzZmMjkuLjBkZTA1NWVmNTE2ZmUzOTlhMmJhMWRiNzdkNGYz
MzJkZmZlMzVmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRl
cm4uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG1hdGNoU3ViZG9tYWlu
cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF0Y2hTdWJkb21haW5zOyB9CiAgICAgCi0gICAgc3RhdGlj
IGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiog
d2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiogYmxhY2tsaXN0KTsKKyAgICBzdGF0aWMg
Ym9vbCBtYXRjaGVzUGF0dGVybnMoY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3
aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QpOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgcGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2Ny
aXB0LmgKaW5kZXggMDUxNDA5MDM4Nzk0OGE4ZWVjZmE2ZjAwMjYwZTZlOGVlYTE2YWIyMi4uOTVj
YmZlYmFjMGYzMWE4OTIyZGNlYWQ5NjQ2Nzc3ZjNjZjYxODk4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
U2NyaXB0LmgKQEAgLTI5LDE3ICsyOSwxNSBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJVc2VyQ29udGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCi0jaW5j
bHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFVzZXJTY3Jp
cHQgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVzZXJTY3JpcHQpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBV
c2VyU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiB1cmwsCi0gICAgICAg
ICAgICAgICBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gd2hpdGVsaXN0LCBQYXNzT3duUHRy
PFZlY3RvcjxTdHJpbmc+ID4gYmxhY2tsaXN0LAorICAgICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwKICAg
ICAgICAgICAgICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJD
b250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMpCiAgICAgICAgIDogbV9zb3VyY2Uo
c291cmNlKQogICAgICAgICAsIG1fdXJsKHVybCkKQEAgLTUyLDE2ICs1MCwxNiBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9
CiAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiogd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3Qu
Z2V0KCk7IH0KLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiogYmxhY2tsaXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ibGFja2xpc3QuZ2V0KCk7IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hp
dGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KKyAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxhY2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7IH0KICAgICBV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9p
bmplY3Rpb25UaW1lOyB9CiAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcygpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRGcmFtZXM7IH0KIAogcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV9zb3VyY2U7CiAgICAgS1VSTCBtX3VybDsKLSAgICBPd25QdHI8VmVjdG9yPFN0
cmluZz4gPiBtX3doaXRlbGlzdDsKLSAgICBPd25QdHI8VmVjdG9yPFN0cmluZz4gPiBtX2JsYWNr
bGlzdDsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKKyAgICBWZWN0b3I8U3RyaW5n
PiBtX2JsYWNrbGlzdDsKICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlvblRp
bWU7CiAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAppbmRleCAwNjhkZjFlZjY3ZDY0Y2Y2M2Q5
YWUzNDYwNDM0NjVjZTRlN2NiZTQzLi4zMjI4Yzk3YjA1YWNkMTlmZDlhMzMwODdkZTg5NTBhZWEz
ZGQ3MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCkBAIC0yOSwxNyArMjks
MTUgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRUeXBlcy5oIgog
I2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVXNlclN0eWxlU2hlZXQgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFVzZXJTdHlsZVNoZWV0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgVXNlclN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwKLSAgICAgICAgICAgICAg
ICAgICBQYXNzT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gd2hpdGVsaXN0LCBQYXNzT3duUHRyPFZl
Y3RvcjxTdHJpbmc+ID4gYmxhY2tsaXN0LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsCiAg
ICAgICAgICAgICAgICAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1l
cywgVXNlclN0eWxlTGV2ZWwgbGV2ZWwpCiAgICAgICAgIDogbV9zb3VyY2Uoc291cmNlKQogICAg
ICAgICAsIG1fdXJsKHVybCkKQEAgLTUyLDE2ICs1MCwxNiBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgY29uc3Qg
S1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiogd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3QuZ2V0KCk7IH0KLSAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiogYmxhY2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFj
a2xpc3QuZ2V0KCk7IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkgY29u
c3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxh
Y2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7IH0KICAgICBVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEZy
YW1lczsgfQogICAgIFVzZXJTdHlsZUxldmVsIGxldmVsKCkgY29uc3QgeyByZXR1cm4gbV9sZXZl
bDsgfQogCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3NvdXJjZTsKICAgICBLVVJMIG1fdXJsOwot
ICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IG1fd2hpdGVsaXN0OwotICAgIE93blB0cjxWZWN0
b3I8U3RyaW5nPiA+IG1fYmxhY2tsaXN0OworICAgIFZlY3RvcjxTdHJpbmc+IG1fd2hpdGVsaXN0
OworICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxhY2tsaXN0OwogICAgIFVzZXJDb250ZW50SW5qZWN0
ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1lczsKICAgICBVc2VyU3R5bGVMZXZlbCBtX2xldmVsOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBjMWM5
YzgyYzJkODEyMjQ4MWU1NWMwN2UwYzhlOWFiZTRlMjdlZTU1Li5kNmJmOTRiOTY3NjM5ODQ3OTc0
NmQ4YjMzMTdjMDcxOTEzODk1ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC0zNTEyLDEzICszNTEyLDEzIEBAIHZvaWQgV2ViVmlldzo6YWRkVXNl
clNjcmlwdChjb25zdCBXZWJTdHJpbmcmIHNvdXJjZUNvZGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV2ViVmlldzo6VXNlclNjcmlwdEluamVjdEF0IGluamVjdEF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYlZpZXc6OlVzZXJDb250ZW50SW5qZWN0SW4gaW5qZWN0SW4p
CiB7Ci0gICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gcGF0dGVybnMgPSBhZG9wdFB0cihuZXcg
VmVjdG9yPFN0cmluZz4pOworICAgIFZlY3RvcjxTdHJpbmc+IHBhdHRlcm5zOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcGF0dGVybnNJbi5zaXplKCk7ICsraSkKLSAgICAgICAgcGF0dGVy
bnMtPmFwcGVuZChwYXR0ZXJuc0luW2ldKTsKKyAgICAgICAgcGF0dGVybnMuYXBwZW5kKHBhdHRl
cm5zSW5baV0pOwogCiAgICAgUGFnZUdyb3VwKiBwYWdlR3JvdXAgPSBQYWdlR3JvdXA6OnBhZ2VH
cm91cChwYWdlR3JvdXBOYW1lKTsKICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiB3b3JsZChE
T01XcmFwcGVyV29ybGQ6OmNyZWF0ZVVuaW5pdGlhbGl6ZWRXb3JsZCgpKTsKLSAgICBwYWdlR3Jv
dXAtPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHdvcmxkLmdldCgpLCBzb3VyY2VDb2RlLCBXZWJVUkwo
KSwgcGF0dGVybnMucmVsZWFzZSgpLCBudWxscHRyLAorICAgIHBhZ2VHcm91cC0+YWRkVXNlclNj
cmlwdFRvV29ybGQod29ybGQuZ2V0KCksIHNvdXJjZUNvZGUsIFdlYlVSTCgpLCBwYXR0ZXJucywg
VmVjdG9yPFN0cmluZz4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lPihpbmplY3RBdCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzPihpbmplY3RJbikpOwogfQpAQCAtMzUyOCw5ICszNTI4LDkgQEAgdm9pZCBXZWJWaWV3
OjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBXZWJTdHJpbmcmIHNvdXJjZUNvZGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlZpZXc6OlVzZXJDb250ZW50SW5qZWN0SW4gaW5q
ZWN0SW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlZpZXc6OlVzZXJTdHls
ZUluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSkKIHsKLSAgICBPd25QdHI8VmVjdG9yPFN0cmlu
Zz4gPiBwYXR0ZXJucyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8U3RyaW5nPik7CisgICAgVmVjdG9y
PFN0cmluZz4gcGF0dGVybnM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXR0ZXJuc0lu
LnNpemUoKTsgKytpKQotICAgICAgICBwYXR0ZXJucy0+YXBwZW5kKHBhdHRlcm5zSW5baV0pOwor
ICAgICAgICBwYXR0ZXJucy5hcHBlbmQocGF0dGVybnNJbltpXSk7CiAKICAgICBQYWdlR3JvdXAq
IHBhZ2VHcm91cCA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cE5hbWUpOwogICAgIFJl
ZlB0cjxET01XcmFwcGVyV29ybGQ+IHdvcmxkKERPTVdyYXBwZXJXb3JsZDo6Y3JlYXRlVW5pbml0
aWFsaXplZFdvcmxkKCkpOwpAQCAtMzUzOSw3ICszNTM5LDcgQEAgdm9pZCBXZWJWaWV3OjphZGRV
c2VyU3R5bGVTaGVldChjb25zdCBXZWJTdHJpbmcmIHNvdXJjZUNvZGUsCiAgICAgLy8gY2FsbGVy
cyBzcGVjaWZ5IHRoaXMgdGhvdWdoLCBzaW5jZSBpbiBvdGhlciBjYXNlcyB0aGUgY2FsbGVyIHdp
bGwgcHJvYmFibHkgd2FudCAidXNlciIgbGV2ZWwuCiAgICAgLy8KICAgICAvLyBGSVhNRTogSXQg
d291bGQgYmUgbmljZSB0byBwb3B1bGF0ZSB0aGUgVVJMIGNvcnJlY3RseSwgaW5zdGVhZCBvZiBw
YXNzaW5nIGFuIGVtcHR5IFVSTC4KLSAgICBwYWdlR3JvdXAtPmFkZFVzZXJTdHlsZVNoZWV0VG9X
b3JsZCh3b3JsZC5nZXQoKSwgc291cmNlQ29kZSwgV2ViVVJMKCksIHBhdHRlcm5zLnJlbGVhc2Uo
KSwgbnVsbHB0ciwKKyAgICBwYWdlR3JvdXAtPmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZCh3b3Js
ZC5nZXQoKSwgc291cmNlQ29kZSwgV2ViVVJMKCksIHBhdHRlcm5zLCBWZWN0b3I8U3RyaW5nPigp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM+KGluamVjdEluKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVc2VyU3R5bGVBdXRob3JMZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpVc2VyU3R5bGVJ
bmplY3Rpb25UaW1lPihpbmplY3Rpb25UaW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApp
bmRleCA1MjhkMmM3YjQzMTZlMGQ3OWY4OGEzZWFkM2MxNTIwZjQwN2E3NzAzLi43NDY2MDI5NDk1
NTUxN2E3YWNlNjEwOWFlYmVmN2RhMGJhZTRmZDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5j
cHAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6YWRk
VXNlclNjcmlwdChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgUwogICAgIERSVF9T
VVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwogCiAgICAgcGFnZS0+Z3Jv
dXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZChXZWJDb3JlOjptYWluVGhyZWFkTm9ybWFsV29ybGQo
KSwgc291cmNlQ29kZSwgV2ViQ29yZTo6S1VSTCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgcnVuQXRTdGFydCA/IFdlYkNvcmU6Oklu
amVjdEF0RG9jdW1lbnRTdGFydCA6IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRFbmQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPigpLCBWZWN0
b3I8U3RyaW5nPigpLCBydW5BdFN0YXJ0ID8gV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudFN0YXJ0
IDogV2ViQ29yZTo6SW5qZWN0QXREb2N1bWVudEVuZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFsbEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIDog
V2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogfQogCkBAIC0zMTEsNyArMzExLDcgQEAg
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBjb24KIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hl
ZXRUb1dvcmxkKFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBX
ZWJDb3JlOjpLVVJMKCksIG51bGxwdHIsIG51bGxwdHIsIGFsbEZyYW1lcyA/IFdlYkNvcmU6Oklu
amVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOworICAgIHBh
Z2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKFdlYkNvcmU6Om1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpLVVJMKCksIFZlY3RvcjxTdHJpbmc+
KCksIFZlY3RvcjxTdHJpbmc+KCksIGFsbEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJh
bWVzIDogV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwogfQogCiB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6Y2xlYXJVc2VyU3R5bGVTaGVldHMoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCAzYzQyM2NjZTE1ODhmODRj
NzM1ODVjYWEyNDExNTI3M2U4ZmE2YzFjLi5hMzdmODNlMTRmZjFhYmM1YWU0Nzk5OGEzNjgyMWM0
NzBmMzZhMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTIwOCw3ICsyMDgsNyBA
QCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6YWRkVXNlclN0eWxlU2hlZXQoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBjaAogCiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9
IGdldFZpZXdGcm9tRnJhbWUoZnJhbWUpOwogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHdlYlZpZXcp
OwotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5UaHJlYWRO
b3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBLVVJMKCksIG51bGxwdHIsIG51bGxwdHIsIGFsbEZy
YW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOyAKKyAgICBw
YWdlLT5ncm91cCgpLmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSwgc291cmNlQ29kZSwgS1VSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5n
PigpLCBhbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5
KTsgCiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDc0ODQ0
N2IzOGNhMzFkM2U5MzkzZDdmMDVjMzU4NjY1Mzg1NGY2NjUuLjJhYWU1NDhlYmQ1NGNlMjVlNjhh
MmFlOWYxZTE2MjMzMDQzMjAwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTY4Miw3ICs2ODIsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKmxlYWtNYWlsUXVpcmtzVXNlclNj
cmlwdENvbnRlbnRzKCkKIHsKICAgICBzdGF0aWMgTlNTdHJpbmcgKm1haWxRdWlya3NTY3JpcHRD
b250ZW50cyA9IGxlYWtNYWlsUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCk7CiAgICAgY29yZShz
ZWxmKS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZChjb3JlKFtXZWJTY3JpcHRXb3JsZCB3
b3JsZF0pLAotICAgICAgICBtYWlsUXVpcmtzU2NyaXB0Q29udGVudHMsIEtVUkwoKSwgbnVsbHB0
ciwgbnVsbHB0ciwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpOworICAg
ICAgICBtYWlsUXVpcmtzU2NyaXB0Q29udGVudHMsIEtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMp
OwogfQogCiBzdGF0aWMgYm9vbCBuZWVkc091dGxvb2tRdWlya3NTY3JpcHQoKQpAQCAtNzAzLDcg
KzcwMyw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29u
dGVudHMoKQogewogICAgIHN0YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRl
bnRzID0gbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKICAgICBjb3JlKHNl
bGYpLT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKGNvcmUoW1dlYlNjcmlwdFdvcmxkIHdv
cmxkXSksCi0gICAgICAgIG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgS1VSTCgpLCBudWxs
cHRyLCBudWxscHRyLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcyk7Cisg
ICAgICAgIG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgS1VSTCgpLCBWZWN0b3I8U3RyaW5n
PigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZy
YW1lcyk7CiB9CiAKIHN0YXRpYyBib29sIHNob3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmli
dXRlU2V0dGVycygpCkBAIC0yNjI3LDE5ICsyNjI3LDIwIEBAIHN0YXRpYyBpbmxpbmUgSU1QIGdl
dE1ldGhvZChpZCBvLCBTRUwgcykKICAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5zZXRBY3RpdmUoW1tzZWxmIHdpbmRvd10gX2hhc0tleUFwcGVhcmFuY2VdKTsKIH0K
IAotc3RhdGljIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB0b1N0cmluZ1ZlY3RvcihOU0Fy
cmF5KiBwYXR0ZXJucykKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiB0b1N0cmluZ1ZlY3RvcihOU0Fy
cmF5KiBwYXR0ZXJucykKIHsKLSAgICAvLyBDb252ZXJ0IHRoZSBwYXR0ZXJucyBpbnRvIFZlY3Rv
cnMuCisgICAgVmVjdG9yPFN0cmluZz4gcGF0dGVybnNWZWN0b3I7CisKICAgICBOU1VJbnRlZ2Vy
IGNvdW50ID0gW3BhdHRlcm5zIGNvdW50XTsKLSAgICBpZiAoY291bnQgPT0gMCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gcGF0dGVybnNWZWN0
b3IgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFN0cmluZz4pOworICAgIGlmICghY291bnQpCisgICAg
ICAgIHJldHVybiBwYXR0ZXJuc1ZlY3RvcjsKKwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgaWQgZW50cnkgPSBbcGF0dGVybnMgb2JqZWN0QXRJ
bmRleDppXTsKICAgICAgICAgaWYgKFtlbnRyeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKQotICAgICAgICAgICAgcGF0dGVybnNWZWN0b3ItPmFwcGVuZChTdHJpbmcoKE5TU3RyaW5n
KillbnRyeSkpOworICAgICAgICAgICAgcGF0dGVybnNWZWN0b3IuYXBwZW5kKFN0cmluZygoTlNT
dHJpbmcgKillbnRyeSkpOwogICAgIH0KLSAgICByZXR1cm4gcGF0dGVybnNWZWN0b3IucmVsZWFz
ZSgpOworICAgIHJldHVybiBwYXR0ZXJuc1ZlY3RvcjsKIH0KIAogKyAodm9pZClfYWRkVXNlclNj
cmlwdFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAq
KXdvcmxkIHNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UgdXJsOihOU1VSTCAqKXVybApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAppbmRleCBkMGM3YWU5Y2UwMDA4YTY2MmQ5MDA1MzYzMjZjNzVjY2QwMjJk
YzAwLi43N2E1YzI5OTQ0OWU0ZjhlYjMxODA2Zjk5YTk1ZjYyZTc5NDhjMjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcApAQCAtODM1LDcgKzgzNSw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKFFXZWJGcmFtZSogZnJhbWUsIGlu
CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmFkZFVzZXJTdHlsZVNoZWV0KFFXZWJQ
YWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBzb3VyY2VDb2RlKQogewotICAgIHBhZ2UtPmhhbmRs
ZSgpLT5wYWdlLT5ncm91cCgpLmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSwgc291cmNlQ29kZSwgUVVybCgpLCBudWxscHRyLCBudWxscHRyLCBXZWJDb3Jl
OjpJbmplY3RJbkFsbEZyYW1lcyk7CisgICAgcGFnZS0+aGFuZGxlKCktPnBhZ2UtPmdyb3VwKCku
YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VD
b2RlLCBRVXJsKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIFdlYkNvcmU6
OkluamVjdEluQWxsRnJhbWVzKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
cmVtb3ZlVXNlclN0eWxlU2hlZXRzKFFXZWJQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1VzZXJDb250ZW50Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Vc2VyQ29udGVudENvbnRhaW5lci5jcHAKaW5kZXggYzM0NGVlYTQxMDA5OThlODgz
NjgwYWY5NWQ1NzU5MTY3MDZiYzYyOC4uNTA1ZTIyNWE1MDYwZmIxZTRiMjU1YTA0MDRhOGY2NGJj
OTk2MzU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJDb250ZW50Q29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckNvbnRlbnRDb250YWlu
ZXIuY3BwCkBAIC0zMiw2ICszMiwyNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKEltbXV0YWJsZUFycmF5KiBhcnJheSkKK3sK
KyAgICBWZWN0b3I8U3RyaW5nPiBwYXR0ZXJuVmVjdG9yOworICAgIGlmICghYXJyYXkpCisgICAg
ICAgIHJldHVybiBwYXR0ZXJuVmVjdG9yOworCisgICAgc2l6ZV90IHNpemUgPSBhcnJheS0+c2l6
ZSgpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIHBhdHRlcm5WZWN0b3I7CisgICAg
CisgICAgcGF0dGVyblZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFdlYlN0cmluZyogd2Vi
U3RyaW5nID0gYXJyYXktPmF0PFdlYlN0cmluZz4oaSk7CisgICAgICAgIEFTU0VSVCh3ZWJTdHJp
bmcpOworICAgICAgICBwYXR0ZXJuVmVjdG9yLnVuY2hlY2tlZEFwcGVuZCh3ZWJTdHJpbmctPnN0
cmluZygpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHBhdHRlcm5WZWN0b3I7Cit9CisKIFVz
ZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpJdGVtKCkKIHsKIH0KQEAgLTM5LDY1ICs1OSwzMCBA
QCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6SXRlbSgpCiBVc2VyQ29udGVudENvbnRhaW5l
cjo6SXRlbTo6SXRlbShQYXNzUmVmUHRyPFdlYlN0cmluZz4gc291cmNlLCBQYXNzUmVmUHRyPFdl
YlVSTD4gdXJsLCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiB3aGl0ZWxpc3QsIFBhc3NSZWZQ
dHI8SW1tdXRhYmxlQXJyYXk+IGJsYWNrbGlzdCwgSW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFt
ZXMsIFR5cGUgdHlwZSkKICAgICA6IG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fdXJsKHVybCkK
LSAgICAsIG1fd2hpdGVsaXN0KHdoaXRlbGlzdCkKLSAgICAsIG1fYmxhY2tsaXN0KGJsYWNrbGlz
dCkKKyAgICAsIG1fd2hpdGVsaXN0KHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdC5nZXQoKSkpCisg
ICAgLCBtX2JsYWNrbGlzdCh0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QuZ2V0KCkpKQogICAgICwg
bV9pbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1lcykKICAgICAsIG1fdHlwZSh0eXBlKQogewog
ICAgIEFTU0VSVChtX3NvdXJjZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVN0cmluZ0FycmF5
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgSW1tdXRhYmxlQXJyYXkqIGFycmF5
KQotewotICAgIEFTU0VSVChlbmNvZGVyKTsKLSAgICB1aW50MzJfdCBzaXplID0gYXJyYXkgPyBh
cnJheS0+c2l6ZSgpIDogMDsKLSAgICBlbmNvZGVyLT5lbmNvZGUoc2l6ZSk7Ci0gICAgZm9yICh1
aW50MzJfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBXZWJTdHJpbmcqIHdlYlN0
cmluZyA9IGFycmF5LT5hdDxXZWJTdHJpbmc+KGkpOwotICAgICAgICBBU1NFUlQod2ViU3RyaW5n
KTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHdlYlN0cmluZy0+c3RyaW5nKCkpOwotICAgIH0K
LX0KLQogdm9pZCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyLT5lbmNvZGUobV9z
b3VyY2UtPnN0cmluZygpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobV91cmwgPyBtX3VybC0+c3Ry
aW5nKCkgOiBTdHJpbmcoKSk7Ci0gICAgZW5jb2RlU3RyaW5nQXJyYXkoZW5jb2RlciwgbV93aGl0
ZWxpc3QuZ2V0KCkpOwotICAgIGVuY29kZVN0cmluZ0FycmF5KGVuY29kZXIsIG1fYmxhY2tsaXN0
LmdldCgpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobV93aGl0ZWxpc3QpOworICAgIGVuY29kZXIt
PmVuY29kZShtX2JsYWNrbGlzdCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PHVp
bnQzMl90PihtX2luamVjdGVkRnJhbWVzKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19j
YXN0PHVpbnQzMl90PihtX3R5cGUpKTsKIH0KIAotc3RhdGljIGJvb2wgZGVjb2RlU3RyaW5nQXJy
YXkoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBWZWN0b3I8UmVmUHRyPEFQSU9i
amVjdD4gPiYgdmVjdG9yKQotewotICAgIEFTU0VSVChkZWNvZGVyKTsKLSAgICBBU1NFUlQodmVj
dG9yLmlzRW1wdHkoKSk7Ci0KLSAgICB1aW50MzJfdCBzaXplOwotICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIXNpemUpCi0g
ICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
c2l6ZSk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAg
ICBTdHJpbmcgc3RyaW5nOwotICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShzdHJpbmcpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2ZWN0b3IudW5jaGVja2VkQXBwZW5k
KFdlYlN0cmluZzo6Y3JlYXRlKHN0cmluZykpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwot
fQotCiBib29sIFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbSYgaXRlbSkK
IHsKICAgICBBU1NFUlQoIWl0ZW0ubV9zb3VyY2UpOwogICAgIEFTU0VSVCghaXRlbS5tX3VybCk7
Ci0gICAgQVNTRVJUKCFpdGVtLm1fd2hpdGVsaXN0KTsKLSAgICBBU1NFUlQoIWl0ZW0ubV9ibGFj
a2xpc3QpOworICAgIEFTU0VSVChpdGVtLm1fd2hpdGVsaXN0LmlzRW1wdHkoKSk7CisgICAgQVNT
RVJUKGl0ZW0ubV9ibGFja2xpc3QuaXNFbXB0eSgpKTsKIAogICAgIFN0cmluZyBzb3VyY2U7CiAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc291cmNlKSkKQEAgLTEwOSwxNSArOTQsMTAgQEAgYm9v
bCBVc2VyQ29udGVudENvbnRhaW5lcjo6SXRlbTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgVXNlckMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGl0ZW0ubV91
cmwgPSBXZWJVUkw6OmNyZWF0ZSh1cmwpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+
ID4gd2hpdGVsaXN0OwotICAgIGlmICghZGVjb2RlU3RyaW5nQXJyYXkoZGVjb2Rlciwgd2hpdGVs
aXN0KSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShpdGVtLm1fd2hpdGVsaXN0KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGl0ZW0ubV93aGl0ZWxpc3QgPSBJbW11dGFibGVBcnJheTo6
YWRvcHQod2hpdGVsaXN0KTsKLQotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IGJsYWNr
bGlzdDsKLSAgICBpZiAoIWRlY29kZVN0cmluZ0FycmF5KGRlY29kZXIsIGJsYWNrbGlzdCkpCisg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaXRlbS5tX2JsYWNrbGlzdCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpdGVtLm1fYmxhY2tsaXN0ID0gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGJs
YWNrbGlzdCk7CiAKICAgICB1aW50MzJfdCBpbmplY3RlZEZyYW1lczsKICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShpbmplY3RlZEZyYW1lcykpCkBAIC0xMzIsMzYgKzExMiw2IEBAIGJvb2wgVXNl
ckNvbnRlbnRDb250YWluZXI6Okl0ZW06OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIFVzZXJDCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBQYXNzT3duUHRy
PFZlY3RvcjxTdHJpbmc+ID4gdG9TdHJpbmdWZWN0b3IoSW1tdXRhYmxlQXJyYXkqIGFycmF5KQot
ewotICAgIGlmICghYXJyYXkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgc2l6ZV90
IHNpemUgPSBhcnJheS0+c2l6ZSgpOwotICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgCi0gICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gc3RyaW5nVmVjdG9yID0g
YWRvcHRQdHIobmV3IFZlY3RvcjxTdHJpbmc+KCkpOwotICAgIHN0cmluZ1ZlY3Rvci0+cmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICBXZWJTdHJpbmcqIHdlYlN0cmluZyA9IGFycmF5LT5hdDxXZWJTdHJp
bmc+KGkpOwotICAgICAgICBBU1NFUlQod2ViU3RyaW5nKTsKLSAgICAgICAgc3RyaW5nVmVjdG9y
LT51bmNoZWNrZWRBcHBlbmQod2ViU3RyaW5nLT5zdHJpbmcoKSk7Ci0gICAgfQotICAgIAotICAg
IHJldHVybiBzdHJpbmdWZWN0b3IucmVsZWFzZSgpOwotfQotCi1QYXNzT3duUHRyPFZlY3RvcjxT
dHJpbmc+ID4gVXNlckNvbnRlbnRDb250YWluZXI6Okl0ZW06OndoaXRlbGlzdCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHRvU3RyaW5nVmVjdG9yKG1fd2hpdGVsaXN0LmdldCgpKTsKLX0KLQotUGFz
c093blB0cjxWZWN0b3I8U3RyaW5nPiA+IFVzZXJDb250ZW50Q29udGFpbmVyOjpJdGVtOjpibGFj
a2xpc3QoKSBjb25zdAotewotICAgIHJldHVybiB0b1N0cmluZ1ZlY3RvcihtX2JsYWNrbGlzdC5n
ZXQoKSk7Ci19Ci0KIHZvaWQgVXNlckNvbnRlbnRDb250YWluZXI6OmVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1f
dXNlckNvbnRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJDb250
ZW50Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckNvbnRlbnRDb250YWlu
ZXIuaAppbmRleCAzMGJmMjE1YTMzYmZiOTIxMjBlMGJkYTc0ZjY4MWI1ZDYxY2FhYmFlLi44MDdm
NDZjZWMxNTUxNzI5NWVhOTllOTBkMzQwY2I5MzliYTQ0OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvVXNlckNvbnRlbnRDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvVXNlckNvbnRlbnRDb250YWluZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsK
IGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKQEAgLTYxLDE2ICs2MiwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlLT5zdHJpbmcoKTsgfQogICAgICAgICBXZWJDb3JlOjpLVVJMIHVybCgpIGNvbnN0IHsgcmV0
dXJuICFtX3VybCB8fCBtX3VybC0+c3RyaW5nKCkuaXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtV
UkwoKSA6IFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6S1VSTCgpLCBtX3VybC0+c3RyaW5nKCkpOyB9
Ci0gICAgICAgIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB3aGl0ZWxpc3QoKSBjb25zdDsK
LSAgICAgICAgUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+IGJsYWNrbGlzdCgpIGNvbnN0Owor
ICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4g
bV93aGl0ZWxpc3Q7IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fYmxhY2tsaXN0OyB9CiAgICAgICAgIEluamVjdGVkRnJhbWVzIGlu
amVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEZyYW1lczsgfQogICAgICAg
ICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIFJlZlB0cjxXZWJTdHJpbmc+IG1fc291cmNlOwogICAgICAgICBSZWZQdHI8V2ViVVJM
PiBtX3VybDsKLSAgICAgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBtX3doaXRlbGlzdDsKLSAg
ICAgICAgUmVmUHRyPEltbXV0YWJsZUFycmF5PiBtX2JsYWNrbGlzdDsKKyAgICAgICAgVmVjdG9y
PFN0cmluZz4gbV93aGl0ZWxpc3Q7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxhY2tsaXN0
OwogICAgICAgICBJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwogICAgICAgICBUeXBl
IG1fdHlwZTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBiOWNhYmRlMWZkZGNk
OTA2YjhhMTcwMmI2NTQ4OWM1NmUyNDUxYmM2Li40NThiMWMxNjljYzFjOTcxMTkyMjZlMzNiZDM5
N2Y0NTU3MzJlODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDI2LDIzICs0MjYsMjQg
QEAgYm9vbCBJbmplY3RlZEJ1bmRsZTo6aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKQogICAgIHJl
dHVybiBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKIH0KIAotc3Rh
dGljIFBhc3NPd25QdHI8VmVjdG9yPFN0cmluZz4gPiB0b1N0cmluZ1ZlY3RvcihJbW11dGFibGVB
cnJheSogcGF0dGVybnMpCitzdGF0aWMgVmVjdG9yPFN0cmluZz4gdG9TdHJpbmdWZWN0b3IoSW1t
dXRhYmxlQXJyYXkqIHBhdHRlcm5zKQogeworICAgIFZlY3RvcjxTdHJpbmc+IHBhdHRlcm5zVmVj
dG9yOworCiAgICAgaWYgKCFwYXR0ZXJucykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBwYXR0ZXJuc1ZlY3RvcjsKIAotICAgIHNpemVfdCBzaXplID0gIHBhdHRlcm5z
LT5zaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBwYXR0ZXJucy0+c2l6ZSgpOwogICAgIGlmICgh
c2l6ZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBwYXR0ZXJuc1Zl
Y3RvcjsKIAotICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IHBhdHRlcm5zVmVjdG9yID0gYWRv
cHRQdHIobmV3IFZlY3RvcjxTdHJpbmc+KTsKLSAgICBwYXR0ZXJuc1ZlY3Rvci0+cmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICBwYXR0ZXJuc1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAg
ICAgICAgIFdlYlN0cmluZyogZW50cnkgPSBwYXR0ZXJucy0+YXQ8V2ViU3RyaW5nPihpKTsKICAg
ICAgICAgaWYgKGVudHJ5KQotICAgICAgICAgICAgcGF0dGVybnNWZWN0b3ItPnVuY2hlY2tlZEFw
cGVuZChlbnRyeS0+c3RyaW5nKCkpOworICAgICAgICAgICAgcGF0dGVybnNWZWN0b3IudW5jaGVj
a2VkQXBwZW5kKGVudHJ5LT5zdHJpbmcoKSk7CiAgICAgfQotICAgIHJldHVybiBwYXR0ZXJuc1Zl
Y3Rvci5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHBhdHRlcm5zVmVjdG9yOwogfQogCiB2b2lkIElu
amVjdGVkQnVuZGxlOjphZGRVc2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAs
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiB1cmwsIEltbXV0YWJsZUFycmF5KiB3aGl0ZWxpc3QsIEltbXV0
YWJsZUFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGlu
amVjdGlvblRpbWUsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQv
V2ViUGFnZVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQ
YWdlUXQuY3BwCmluZGV4IDc2ZmIwNzRhNTkwNGYyZDJlMzdkOTE0ODM3NTRlOTQxOTExOGMwYTQu
LjcyMWJlNDYwMzYyZGI5MTUzNjQwMWM2NDk1NDJmZjc5YjZmMmMyODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwCkBAIC00MjMs
NyArNDIzLDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgc2NyaXB0cykKICAgICBQYWdlR3JvdXAqIHBhZ2VHcm91cCA9IFBhZ2VHcm91cDo6cGFn
ZUdyb3VwKHRoaXMtPnBhZ2VHcm91cCgpLT5pZGVudGlmaWVyKCkpOwogICAgIHBhZ2VHcm91cC0+
cmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzY3JpcHRzLnNpemUoKTsgKytpKQotICAgICAgICBw
YWdlR3JvdXAtPmFkZFVzZXJTY3JpcHRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBz
Y3JpcHRzLmF0KGkpLCBLVVJMKCksIG51bGxwdHIsIG51bGxwdHIsIEluamVjdEF0RG9jdW1lbnRF
bmQsIEluamVjdEluVG9wRnJhbWVPbmx5KTsKKyAgICAgICAgcGFnZUdyb3VwLT5hZGRVc2VyU2Ny
aXB0VG9Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc2NyaXB0cy5hdChpKSwgS1VSTCgp
LCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5k
LCBJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2VsZWN0ZWRJbmRl
eChpbnQzMl90IG5ld0luZGV4KQo=
</data>
<flag name="review"
          id="181613"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>