<?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>81121</bug_id>
          
          <creation_ts>2012-03-14 09:08:42 -0700</creation_ts>
          <short_desc>[BlackBerry] Add WebPageCompositor class to BlackBerry WebKit API</short_desc>
          <delta_ts>2012-03-23 18:12:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>81115</dependson>
          <blocked>82104</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mlattanzio</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>578465</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-14 09:08:42 -0700</bug_when>
    <thetext>This is used to render the web page when we don&apos;t have a screen window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581140</commentid>
    <comment_count>1</comment_count>
      <attachid>132425</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-16 17:32:42 -0700</bug_when>
    <thetext>Created attachment 132425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581163</commentid>
    <comment_count>2</comment_count>
      <attachid>132425</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-16 17:54:38 -0700</bug_when>
    <thetext>Comment on attachment 132425
Patch

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

Looks good.

&gt; Source/WebKit/blackberry/Api/WebPageCompositorClient.h:27
&gt; +class WebPage;

Does not seem needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581164</commentid>
    <comment_count>3</comment_count>
      <attachid>132425</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 17:57:36 -0700</bug_when>
    <thetext>Comment on attachment 132425
Patch

Rejecting attachment 132425 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
/WebPageCompositor.h
patching file Source/WebKit/blackberry/Api/WebPageCompositorClient.h
patching file Source/WebKit/blackberry/Api/WebPageCompositor_p.h
Hunk #3 FAILED at 74.
1 out of 3 hunks FAILED -- saving rejects to file Source/WebKit/blackberry/Api/WebPageCompositor_p.h.rej
patching file Source/WebKit/blackberry/Api/WebPage_p.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Rob Buis&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/11963622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586863</commentid>
    <comment_count>4</comment_count>
      <attachid>133587</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-23 16:56:22 -0700</bug_when>
    <thetext>Created attachment 133587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586865</commentid>
    <comment_count>5</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-23 16:59:01 -0700</bug_when>
    <thetext>Alright, trying again =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586867</commentid>
    <comment_count>6</comment_count>
      <attachid>133587</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-23 17:07:45 -0700</bug_when>
    <thetext>Comment on attachment 133587
Patch

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

Looks good.

&gt; Source/WebKit/blackberry/Api/WebPageCompositor.cpp:239
&gt; +WebPageCompositor::WebPageCompositor(WebPage* page, WebPageCompositorClient* client)

You could omit the param names, as you are not using them.

&gt; Source/WebKit/blackberry/Api/WebPageCompositorClient.h:27
&gt; +class WebPage;

You are not using WebPage in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586885</commentid>
    <comment_count>7</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-23 17:22:06 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 133587 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133587&amp;action=review
&gt; 
&gt; Looks good.
&gt; 
&gt; &gt; Source/WebKit/blackberry/Api/WebPageCompositor.cpp:239
&gt; &gt; +WebPageCompositor::WebPageCompositor(WebPage* page, WebPageCompositorClient* client)
&gt; 
&gt; You could omit the param names, as you are not using them.
&gt; 
&gt; &gt; Source/WebKit/blackberry/Api/WebPageCompositorClient.h:27
&gt; &gt; +class WebPage;
&gt; 
&gt; You are not using WebPage in this file.

D&apos;oh, you already told me that the last time around =) Hang on, I can fix and put a new patch up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586887</commentid>
    <comment_count>8</comment_count>
      <attachid>133587</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-23 17:23:02 -0700</bug_when>
    <thetext>Comment on attachment 133587
Patch

Stop so Arvid can fix the forward reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586894</commentid>
    <comment_count>9</comment_count>
      <attachid>133595</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2012-03-23 17:28:47 -0700</bug_when>
    <thetext>Created attachment 133595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586899</commentid>
    <comment_count>10</comment_count>
      <attachid>133595</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-23 17:32:57 -0700</bug_when>
    <thetext>Comment on attachment 133595
Patch

Looks good, another try :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586944</commentid>
    <comment_count>11</comment_count>
      <attachid>133595</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 18:12:39 -0700</bug_when>
    <thetext>Comment on attachment 133595
Patch

Clearing flags on attachment: 133595

Committed r111959: &lt;http://trac.webkit.org/changeset/111959&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586945</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 18:12:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132425</attachid>
            <date>2012-03-16 17:32:42 -0700</date>
            <delta_ts>2012-03-23 16:56:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81121-20120317013240.patch</filename>
            <type>text/plain</type>
            <size>34451</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCBkY2YzNTliZjZlODZiZDc5N2RjN2RhY2RiMGEwY2M2YzUwZTQyZGYzLi41NzZlYmE5MmFi
MWZjMGZiMDI1ZGEzMWRhY2YxN2VjZmEzOTc1NTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsNSArMSw3NSBAQAogMjAxMi0wMy0xNCAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxz
c29uQHJpbS5jb20+CiAKKyAgICAgICAgW0JsYWNrQmVycnldIEFkZCBXZWJQYWdlQ29tcG9zaXRv
ciBjbGFzcyB0byBCbGFja0JlcnJ5IFdlYktpdCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTIxCisgICAgICAgIFJJTSBQUjogMTM2Njg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGlkZWEg
aXMgZm9yIHRoZSBBUEkgY2xpZW50IHRvIHVzZSBhIFdlYlBhZ2VDb21wb3NpdG9yIG9iamVjdCB0
bworICAgICAgICByZW5kZXIgdGhlIFdlYlBhZ2Ugd2hlbiB0aGVyZSdzIG5vIHNjcmVlbiB3aW5k
b3cgYXZhaWxhYmxlLgorCisgICAgICAgIFRoZSBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUgYmVj
b21lcyByZWZlcmVuY2UgY291bnRlZCBpbiBvcmRlciB0byBiZQorICAgICAgICBrZXB0IGFsaXZl
IGVpdGhlciBiZWNhdXNlIGl0J3MgdXNlZCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbGF5
ZXJzCisgICAgICAgIG9yIHVzZWQgZm9yIHRoZSBXZWJQYWdlQ29tcG9zaXRvciBBUEkuIEl0IGNh
biBzdGlsbCB3b3JrIHN0YW5kYWxvbmUuCisKKyAgICAgICAgQ2xlYW4gdXAgc29tZSBjb2RlIC0g
bm8gbmVlZCB0byBrZWVwIHRyYWNrIG9mIGEgc2VwYXJhdGUgYm9vbGVhbgorICAgICAgICBXZWJQ
YWdlUHJpdmF0ZTo6bV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgd2hlbiB0aGUgc3Rh
dGUgb2YKKyAgICAgICAgbV9jb21wb3NpdG9yIGNhbiB0ZWxsIHlvdS4KKworICAgICAgICBBbHNv
IHJlbW92ZSBkdXBsaWNhdGVkIGNvZGUgZnJvbSBXZWJQYWdlUHJpdmF0ZSAtIGdvIGRpcmVjdGx5
IHRvIHRoZQorICAgICAgICBjb21wb3NpdG9yIG9iamVjdCBpbnN0ZWFkLCBpZiB5b3UgbmVlZCB0
byBkcmF3IHRoZSBBQyBsYXllcnMuCisKKyAgICAgICAgUmV2aWV3ZWQgaW50ZXJuYWxseSBieSBS
b2JpbiBDYW8gYW5kIHRoZSBoYXNCbGl0Sm9icy9ibGl0T25JZGxlIGNoYW5nZQorICAgICAgICBi
eSBGaWxpcCBTcGFjZWsuCisKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlOjpoYXNCbGl0Sm9icyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6YmxpdE9uSWRsZSk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50
cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmRy
YXdTdWJMYXllcnMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQ
cml2YXRlOjpkcmF3QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzdXJmYWNlU2l6ZSk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJ1ZmZlcik6
CisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpXZWJQYWdlUHJpdmF0ZTo6V2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3IpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6c2V0Um9vdExheWVyQ29tcG9z
aXRpbmdUaHJlYWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0
ZTo6Y3JlYXRlQ29tcG9zaXRvcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlOjpkZXN0cm95Q29tcG9zaXRvcik6CisgICAgICAgICogQXBpL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OldlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZTo6c2V0Q29udGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VD
b21wb3NpdG9yUHJpdmF0ZTo6aGFyZHdhcmVDb21wb3NpdGluZyk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0Um9vdExheWVyKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpyZW5k
ZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZh
dGU6OmRyYXdMYXllcnMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OmFuaW1hdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmNvbXBvc2l0b3JEZXN0cm95ZWQp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6V2ViUGFn
ZUNvbXBvc2l0b3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9z
aXRvcjo6fldlYlBhZ2VDb21wb3NpdG9yKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZUNvbXBvc2l0b3I6OmNsaWVudCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VDb21wb3NpdG9yOjpwcmVwYXJlRnJhbWUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6cmVuZGVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I6OmNsZWFudXApOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6Y29udGV4dExvc3QpOgorICAgICAgICAqIEFw
aS9XZWJQYWdlQ29tcG9zaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBv
c2l0b3JDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3Au
aDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRv
clByaXZhdGU6OmNvbnRleHQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpwYWdlKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpjbGllbnQp
OgorICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZVByaXZhdGU6OmNsaWVudCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VQcml2YXRlOjppc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6Y29tcG9zaXRvcik6CisKKzIw
MTItMDMtMTQgIEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkByaW0uY29tPgorCiAgICAgICAgIFtC
bGFja0JlcnJ5XSBSZW1vdmUgb2Jzb2xldGUgb3B0aW1pemF0aW9uIGluIFdlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODExMTUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNr
aW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUu
Y3BwCmluZGV4IGI0YTRhZGRmMTE0MWI0ZWIwZTNiZjYyYTcyMjZjNzUxMGU5MTNkZDAuLjExMGZi
ZGY4Njk4MzUyMWNiOWNmYmYxYzljNzVmMDM5Njg5NTYyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNs
dWRlICJTdXJmYWNlUG9vbC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQ
YWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZUNvbXBvc2l0b3JDbGllbnQuaCIKKyNpbmNs
dWRlICJXZWJQYWdlQ29tcG9zaXRvcl9wLmgiCiAjaW5jbHVkZSAiV2ViUGFnZV9wLmgiCiAjaW5j
bHVkZSAiV2ViU2V0dGluZ3MuaCIKIApAQCAtMTI0MCw2ICsxMjQyLDE2IEBAIHZvaWQgQmFja2lu
Z1N0b3JlUHJpdmF0ZTo6YmxpdENvbnRlbnRzKGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RS
ZWN0LAogICAgIH0KIAogICAgIGlmIChtX2RlZmVyc0JsaXQgJiYgIWZvcmNlKSB7CisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICAvLyBJZiB0aGVyZSdzIGEgV2ViUGFn
ZUNvbXBvc2l0b3JDbGllbnQsIGxldCBpdCBzY2hlZHVsZSB0aGUgYmxpdC4KKyAgICAgICAgaWYg
KFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSogY29tcG9zaXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29t
cG9zaXRvcigpKSB7CisgICAgICAgICAgICBpZiAoV2ViUGFnZUNvbXBvc2l0b3JDbGllbnQqIGNs
aWVudCA9IGNvbXBvc2l0b3ItPmNsaWVudCgpKSB7CisgICAgICAgICAgICAgICAgY2xpZW50LT5p
bnZhbGlkYXRlKGNvbXBvc2l0b3ItPmFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKCkpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisKICAg
ICAgICAgbV9oYXNCbGl0Sm9icyA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
NDQ1LDcgKzE0NTcsOCBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50cyhj
b25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKICAgICBpZiAoYmxpdHRpbmdEaXJlY3Rs
eVRvQ29tcG9zaXRpbmdXaW5kb3cpIHsKICAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnRl
bnRzUmVjdCA9IG1fd2ViUGFnZS0+ZC0+bWFwRnJvbVRyYW5zZm9ybWVkRmxvYXRSZWN0KAogICAg
ICAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0KFdlYkNvcmU6OkludFJlY3QoY29udGVudHMpKSk7
Ci0gICAgICAgIG1fd2ViUGFnZS0+ZC0+ZHJhd1N1YkxheWVycyhkc3RSZWN0LCBjb250ZW50c1Jl
Y3QpOworICAgICAgICBpZiAoV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKiBjb21wb3NpdG9yID0g
bV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCkpCisgICAgICAgICAgICBjb21wb3NpdG9yLT5kcmF3
TGF5ZXJzKGRzdFJlY3QsIGNvbnRlbnRzUmVjdCk7CiAgICAgfSBlbHNlIGlmIChjb21wb3NpdGlu
Z1N1cmZhY2UpCiAgICAgICAgIGJsZW5kQ29tcG9zaXRpbmdTdXJmYWNlKGRzdFJlY3QpOwogCkBA
IC0yNTE5LDYgKzI1MzIsOSBAQCBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OmRyYXdTdWJMYXll
cnMoKQogICAgIGlmIChtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzICYmICFpc09wZW5HTENv
bXBvc2l0aW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghbV93ZWJQYWdl
LT5kLT5jb21wb3NpdG9yKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIFBsYXRmb3Jt
OjpJbnRSZWN0IGRzdCA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPnVzZXJJbnRlcmZhY2VCbGl0dGVk
RGVzdGluYXRpb25SZWN0KCk7CiAgICAgaWYgKGRzdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTI1MjYsNyArMjU0Miw3IEBAIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6
ZHJhd1N1YkxheWVycygpCiAgICAgUGxhdGZvcm06OkludFJlY3Qgc3JjID0gbV93ZWJQYWdlLT5j
bGllbnQoKS0+dXNlckludGVyZmFjZUJsaXR0ZWRWaXNpYmxlQ29udGVudHNSZWN0KCk7CiAgICAg
V2ViQ29yZTo6RmxvYXRSZWN0IGNvbnRlbnRzUmVjdCA9IG1fd2ViUGFnZS0+ZC0+bWFwRnJvbVRy
YW5zZm9ybWVkRmxvYXRSZWN0KAogICAgICAgICBXZWJDb3JlOjpGbG9hdFJlY3QoV2ViQ29yZTo6
SW50UmVjdChzcmMpKSk7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+ZC0+ZHJhd1N1YkxheWVycyhk
c3QsIGNvbnRlbnRzUmVjdCk7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigp
LT5kcmF3TGF5ZXJzKGRzdCwgY29udGVudHNSZWN0KTsKIH0KIAogYm9vbCBCYWNraW5nU3RvcmVQ
cml2YXRlOjpkcmF3TGF5ZXJzT25Db21taXRJZk5lZWRlZCgpCkBAIC0yNTU3LDcgKzI1NzMsOCBA
QCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmRyYXdBbmRCbGVuZExheWVyc0ZvckRpcmVjdFJl
bmRlcmluZyhjb25zdCBQbGF0Zm9ybTo6SQogCiAgICAgLy8gQ2hlY2sgaWYgcmVuZGVyaW5nIGNh
dXNlZCBhIGNvbW1pdCBhbmQgd2UgbmVlZCB0byByZWRyYXcgdGhlIGxheWVycy4KICAgICBtX25l
ZWRzRHJhd0xheWVyc09uQ29tbWl0ID0gZmFsc2U7Ci0gICAgbV93ZWJQYWdlLT5kLT5kcmF3U3Vi
TGF5ZXJzKGRzdFJlY3QsIHVudHJhbnNmb3JtZWRDb250ZW50c1JlY3QpOworICAgIGlmIChXZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGUqIGNvbXBvc2l0b3IgPSBtX3dlYlBhZ2UtPmQtPmNvbXBvc2l0
b3IoKSkKKyAgICAgICAgY29tcG9zaXRvci0+ZHJhd0xheWVycyhkc3RSZWN0LCB1bnRyYW5zZm9y
bWVkQ29udGVudHNSZWN0KTsKIAogI2lmIEVOQUJMRV9DT01QT1NJVElOR19TVVJGQUNFCiAgICAg
Ly8gU2VlIGFib3ZlIGNvbW1lbnQgYWJvdXQgc3luYyBjYWxsaW5nLCB2aXNpYmxlQ29udGVudHNS
ZWN0KCkgaXMgc2FmZSBoZXJlLgpAQCAtMjcyMCw2ICsyNzM3LDEzIEBAIHZvaWQgQmFja2luZ1N0
b3JlOjpzZXREZWZlcnNCbGl0KGJvb2wgYikKIAogYm9vbCBCYWNraW5nU3RvcmU6Omhhc0JsaXRK
b2JzKCkgY29uc3QKIHsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgLy8g
SWYgdGhlcmUncyBhIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50LCBsZXQgaXQgc2NoZWR1bGUgdGhl
IGJsaXQuCisgICAgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKiBjb21wb3NpdG9yID0gZC0+bV93
ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCk7CisgICAgaWYgKGNvbXBvc2l0b3IgJiYgY29tcG9zaXRv
ci0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCiAgICAgLy8gTm9y
bWFsbHksIHRoaXMgd291bGQgYmUgY2FsbGVkIGZyb20gdGhlIGNvbXBvc2l0aW5nIHRocmVhZCwK
ICAgICAvLyBhbmQgdGhlIGZsYWcgaXMgc2V0IG9uIHRoZSBjb21wb3NpdGluZyB0aHJlYWQsIHNv
IG5vIG5lZWQgZm9yCiAgICAgLy8gc3luY2hyb25pemF0aW9uLgpAQCAtMjcyOCw2ICsyNzUyLDEz
IEBAIGJvb2wgQmFja2luZ1N0b3JlOjpoYXNCbGl0Sm9icygpIGNvbnN0CiAKIHZvaWQgQmFja2lu
Z1N0b3JlOjpibGl0T25JZGxlKCkKIHsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisgICAgLy8gSWYgdGhlcmUncyBhIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50LCBsZXQgaXQgc2No
ZWR1bGUgdGhlIGJsaXQuCisgICAgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKiBjb21wb3NpdG9y
ID0gZC0+bV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCk7CisgICAgaWYgKGNvbXBvc2l0b3IgJiYg
Y29tcG9zaXRvci0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgZC0+
YmxpdFZpc2libGVDb250ZW50cyh0cnVlIC8qZm9yY2UqLyk7CiB9CiAKQEAgLTI3MzYsNiArMjc2
NywxMSBAQCBQbGF0Zm9ybTo6SW50U2l6ZSBCYWNraW5nU3RvcmVQcml2YXRlOjpzdXJmYWNlU2l6
ZSgpIGNvbnN0CiAgICAgaWYgKFdpbmRvdyogd2luZG93ID0gbV93ZWJQYWdlLT5jbGllbnQoKS0+
d2luZG93KCkpCiAgICAgICAgIHJldHVybiB3aW5kb3ctPnN1cmZhY2VTaXplKCk7CiAKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKFdlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZSogY29tcG9zaXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKQorICAgICAgICBy
ZXR1cm4gY29tcG9zaXRvci0+Y29udGV4dCgpLT5zdXJmYWNlU2l6ZSgpOworI2VuZGlmCisKICAg
ICByZXR1cm4gUGxhdGZvcm06OkludFNpemUoKTsKIH0KIApAQCAtMjc0NCw2ICsyNzgwLDExIEBA
IFBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBCYWNraW5nU3RvcmVQcml2YXRlOjpidWZmZXIo
KSBjb25zdAogICAgIGlmIChXaW5kb3cqIHdpbmRvdyA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPndp
bmRvdygpKQogICAgICAgICByZXR1cm4gd2luZG93LT5idWZmZXIoKTsKIAorI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAoV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKiBj
b21wb3NpdG9yID0gbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCkpCisgICAgICAgIHJldHVybiBj
b21wb3NpdG9yLT5jb250ZXh0KCktPmJ1ZmZlcigpOworI2VuZGlmCisKICAgICByZXR1cm4gMDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggYjVkYTM4
YjhkMTkzOGMyZGFiM2RhODU5M2ZlOWRjZWQxNTUxMWVjNS4uYTA4MjFmZmNiMzJkOWE0YmM4NWU0
MThmNTJiZmRjZTc0M2FhYWUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuY3BwCkBAIC0zMjQsNyArMzI0LDYgQEAgV2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQcml2YXRl
KFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYlBhZ2VDbGllbnQqIGNsaWVudCwgY29uc3QgSW4KICAgICAs
IG1fZ2VvbG9jYXRpb25DbGllbnQoMCkKICAgICAsIG1faW5SZWdpb25TY3JvbGxTdGFydGluZ05v
ZGUoMCkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgLCBtX2lzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcm9vdExheWVyQ29tbWl0VGlt
ZXIoYWRvcHRQdHIobmV3IFRpbWVyPFdlYlBhZ2VQcml2YXRlPih0aGlzLCAmV2ViUGFnZVByaXZh
dGU6OnJvb3RMYXllckNvbW1pdFRpbWVyRmlyZWQpKSkKICAgICAsIG1fbmVlZHNPbmVTaG90RHJh
d2luZ1N5bmNocm9uaXphdGlvbihmYWxzZSkKICAgICAsIG1fbmVlZHNDb21taXQoZmFsc2UpCkBA
IC01MTM1LDcgKzUxMzQsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpkcmF3TGF5ZXJzT25Db21t
aXQoKQogICAgICAgICByZXR1cm47IC8vIGJsaXRWaXNpYmxlQ29udGVudHMoKSBpbmNsdWRlcyBk
cmF3U3ViTGF5ZXJzKCkgaW4gdGhpcyBjYXNlLgogICAgIH0KIAotICAgIGlmICghZHJhd1N1Ykxh
eWVycygpKQorICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmQtPmRyYXdTdWJMYXllcnMoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgd2UgdXNlIHRoZSBjb21wb3NpdGluZyBzdXJmYWNl
LCB3ZSBuZWVkIHRvIHJlLWJsaXQgdGhlCkBAIC01MTU0LDI5ICs1MTUzLDYgQEAgdm9pZCBXZWJQ
YWdlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KCkKICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+
YmxpdFZpc2libGVDb250ZW50cygpOwogfQogCi1ib29sIFdlYlBhZ2VQcml2YXRlOjpkcmF3U3Vi
TGF5ZXJzKGNvbnN0IEludFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY29udGVudHMp
Ci17Ci0gICAgQVNTRVJUKFBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVu
dCgpLT5pc0N1cnJlbnRUaHJlYWQoKSk7Ci0gICAgaWYgKCFQbGF0Zm9ybTo6dXNlckludGVyZmFj
ZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGlmIChtX2NvbXBvc2l0b3IpIHsKLSAgICAgICAgbV9jb21wb3NpdG9y
LT5zZXRCYWNraW5nU3RvcmVVc2VzT3BlbkdMKG1fYmFja2luZ1N0b3JlLT5kLT5pc09wZW5HTENv
bXBvc2l0aW5nKCkpOwotICAgICAgICByZXR1cm4gbV9jb21wb3NpdG9yLT5kcmF3TGF5ZXJzKGRz
dFJlY3QsIGNvbnRlbnRzKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
V2ViUGFnZVByaXZhdGU6OmRyYXdTdWJMYXllcnMoKQotewotICAgIEFTU0VSVChQbGF0Zm9ybTo6
dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOwot
ICAgIGlmICghUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlz
Q3VycmVudFRocmVhZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbV9i
YWNraW5nU3RvcmUtPmQtPmRyYXdTdWJMYXllcnMoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJpdmF0
ZTo6c2NoZWR1bGVSb290TGF5ZXJDb21taXQoKQogewogICAgIGlmICghbV9mcmFtZUxheWVycyB8
fCAhbV9mcmFtZUxheWVycy0+aGFzTGF5ZXIoKSkKQEAgLTUyMTEsNiArNTE4NywyNCBAQCBMYXll
clJlbmRlcmluZ1Jlc3VsdHMgV2ViUGFnZVByaXZhdGU6Omxhc3RDb21wb3NpdGluZ1Jlc3VsdHMo
KSBjb25zdAogICAgIHJldHVybiBMYXllclJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAordm9pZCBX
ZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvcihQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZT4gY29tcG9zaXRvcikKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6
UGxhdGZvcm07CisKKyAgICAvLyBUaGUgbV9jb21wb3NpdG9yIG1lbWJlciBoYXMgdG8gYmUgbW9k
aWZpZWQgZHVyaW5nIGEgc3luYyBjYWxsIGZvciB0aHJlYWQKKyAgICAvLyBzYWZlIGFjY2VzcyB0
byBtX2NvbXBvc2l0b3IgYW5kIGl0cyByZWZjb3VudC4KKyAgICBpZiAoIXVzZXJJbnRlcmZhY2VU
aHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVudFRocmVhZCgpKSB7CisgICAgICAgIHVzZXJJ
bnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoU3luY01lc3NhZ2UoY3JlYXRl
TWV0aG9kQ2FsbE1lc3NhZ2UoJldlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yLCB0aGlzLCBj
b21wb3NpdG9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbXBvc2l0b3Ig
PSBjb21wb3NpdG9yOworCisgICAgLy8gVGhlIHByZXZpb3VzIGNvbXBvc2l0b3IsIGlmIGFueSwg
aGFzIG5vdyByZWxlYXNlZCBpdCdzIE9wZW5HTCByZXNvdXJjZXMsCisgICAgLy8gc28gd2UgY2Fu
IHNhZmVseSBmcmVlIHRoZSBvd25lZCBjb250ZXh0LCBpZiBhbnkuCisgICAgbV9vd25lZENvbnRl
eHQuY2xlYXIoKTsKK30KKwogdm9pZCBXZWJQYWdlUHJpdmF0ZTo6Y29tbWl0Um9vdExheWVyKGNv
bnN0IEludFJlY3QmIGxheW91dFJlY3RGb3JDb21wb3NpdGluZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiBjb250ZW50c1NpemVGb3JDb21wb3Np
dGluZykKIHsKQEAgLTUzMTAsMjggKzUzMDQsNiBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpyb290
TGF5ZXJDb21taXRUaW1lckZpcmVkKFRpbWVyPFdlYlBhZ2VQcml2YXRlPiopCiAgICAgICAgIGRy
YXdMYXllcnNPbkNvbW1pdCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRJc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCi17Ci0gICAgLy8gQmFja2luZyBz
dG9yZSBjYW4gYmUgbnVsbCBoZXJlIGJlY2F1c2UgaXQgaGFwcGVucyBkdXJpbmcgdGVhcmRvd24u
Ci0gICAgaWYgKG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID09IGFjdGl2ZSB8fCAh
bV9iYWNraW5nU3RvcmUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1faXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlID0gYWN0aXZlOwotCi0gICAgaWYgKCFhY3RpdmUpIHsKLSAgICAgICAg
bV9jb21wb3NpdG9yLmNsZWFyKCk7Ci0gICAgICAgIHJlc2V0Q29tcG9zaXRpbmdTdXJmYWNlKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY29tcG9zaXRvcikgewotICAg
ICAgICBtX2NvbXBvc2l0b3IgPSBhZG9wdFB0cihuZXcgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
KHRoaXMpKTsKLSAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBtX2Nv
bXBvc2l0b3ItPmhhcmR3YXJlQ29tcG9zaXRpbmcoKTsKLSAgICAgICAgaWYgKCFtX2lzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSkKLSAgICAgICAgICAgIG1fY29tcG9zaXRvci5jbGVhcigp
OwotICAgIH0KLX0KLQogdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cmVzZXRDb21wb3NpdGluZ1N1cmZh
Y2UoKQogewogICAgIGlmICghUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xp
ZW50KCktPmlzQ3VycmVudFRocmVhZCgpKSB7CkBAIC01MzkwLDEyICs1MzYyLDEzIEBAIHZvaWQg
V2ViUGFnZVByaXZhdGU6OnNldFJvb3RMYXllckNvbXBvc2l0aW5nVGhyZWFkKExheWVyQ29tcG9z
aXRpbmdUaHJlYWQqIGxheWVyCiAgICAgICAgICAvLyB0aGUgcHJvY2VzcyBvZiBkZXN0cnVjdGlv
biBvZiBXZWJQYWdlIHdoZXJlIHdlIGhhdmUgYWxyZWFkeQogICAgICAgICAgLy8gY2FsbGVkIHN5
bmNEZXN0cm95Q29tcG9zaXRvck9uQ29tcG9zaXRpbmdUaHJlYWQoKSB0byBkZXN0cm95CiAgICAg
ICAgICAvLyB0aGUgY29tcG9zaXRvci4KLSAgICAgICAgIHNldElzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZShmYWxzZSk7CisgICAgICAgICBkZXN0cm95Q29tcG9zaXRvcigpOworICAgICAg
ICAgcmVzZXRDb21wb3NpdGluZ1N1cmZhY2UoKTsKICAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAoIW1fY29tcG9zaXRvcikKLSAgICAgICAgc2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKHRydWUpOworICAgICAgICBjcmVhdGVDb21wb3NpdG9yKCk7CiAKICAgICAvLyBE
b24ndCBBU1NFUlQobV9jb21wb3NpdG9yKSBoZXJlIGJlY2F1c2Ugc2V0SXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKHRydWUpCiAgICAgLy8gbWF5IG5vdCB0dXJuIGFjY2VsZXJhdGVkIGNv
bXBvc2l0aW5nIG9uIHNpbmNlIG1fYmFja2luZ1N0b3JlIGlzIDAuCkBAIC01NDAzLDkgKzUzNzYs
MzAgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0Um9vdExheWVyQ29tcG9zaXRpbmdUaHJlYWQo
TGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIKICAgICAgICAgbV9jb21wb3NpdG9yLT5zZXRS
b290TGF5ZXIobGF5ZXIpOwogfQogCitib29sIFdlYlBhZ2VQcml2YXRlOjpjcmVhdGVDb21wb3Np
dG9yKCkKK3sKKyAgICBtX293bmVkQ29udGV4dCA9IEdMRVMyQ29udGV4dDo6Y3JlYXRlKHRoaXMp
OworICAgIG1fY29tcG9zaXRvciA9IFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6Y3JlYXRlKHRo
aXMsIDApOworICAgIG1fY29tcG9zaXRvci0+c2V0Q29udGV4dChtX293bmVkQ29udGV4dC5nZXQo
KSk7CisKKyAgICBpZiAoIW1fY29tcG9zaXRvci0+aGFyZHdhcmVDb21wb3NpdGluZygpKSB7Cisg
ICAgICAgIGRlc3Ryb3lDb21wb3NpdG9yKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJQYWdlUHJpdmF0ZTo6ZGVzdHJveUNv
bXBvc2l0b3IoKQogewotICAgICBtX2NvbXBvc2l0b3IuY2xlYXIoKTsKKyAgICAvLyBXZSBzaG91
bGRuJ3QgcmVsZWFzZSB0aGUgY29tcG9zaXRvciB1bmxlc3Mgd2UgY3JlYXRlZCBhbmQgb3duIHRo
ZQorICAgIC8vIGNvbnRleHQuIElmIHRoZSBjb21wb3NpdG9yIHdhcyBjcmVhdGVkIGZyb20gdGhl
IFdlYlBhZ2VDb21wb3NpdG9yIEFQSSwKKyAgICAvLyBrZWVwIGl0IGFyb3VuZCBhbmQgcmV1c2Ug
aXQgbGF0ZXIuCisgICAgaWYgKCFtX293bmVkQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jb21wb3NpdG9yLmNsZWFyKCk7CisgICAgbV9vd25lZENvbnRleHQuY2xlYXIoKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJpdmF0ZTo6c3luY0Rlc3Ryb3lDb21wb3NpdG9yT25Db21wb3NpdGlu
Z1RocmVhZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5oCmluZGV4IGU5ZWVk
MjMwNGMwNjdjMzdkM2Y2M2NhMTBjNzllYzgyMmEzYjk4MmEuLjU3NTJmYmI4MDdjMTFkY2EyYmM4
N2U5OGMxZTNkNzc5Y2M5NmUxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNzIEJhY2tpbmdTdG9yZUNsaWVudDsKIGNsYXNzIEJh
Y2tpbmdTdG9yZVByaXZhdGU7CiBjbGFzcyBSZW5kZXJRdWV1ZTsKIGNsYXNzIFdlYlBhZ2VDbGll
bnQ7CitjbGFzcyBXZWJQYWdlQ29tcG9zaXRvcjsKIGNsYXNzIFdlYlBhZ2VHcm91cExvYWREZWZl
cnJlcjsKIGNsYXNzIFdlYlBhZ2VQcml2YXRlOwogY2xhc3MgV2ViU2V0dGluZ3M7CkBAIC0zMzMs
NiArMzM0LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpCYWNraW5nU3Rv
cmVDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTsK
ICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpSZW5kZXJRdWV1ZTsKKyAgICBmcmllbmQgY2xhc3Mg
V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjsKICAgICBmcmllbmQgY2xhc3MgV2ViS2l0OjpXZWJQ
YWdlR3JvdXBMb2FkRGVmZXJyZXI7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6V2ViUGFnZVBy
aXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudEJsYWNrQmVycnk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3Np
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3Iu
Y3BwCmluZGV4IDJmNzE3ZGY5MmZhODU4Mzk3YTJiZmQyMWRhYWRmODk0YzMyY2M1ZTUuLjJkZmJi
MThkOTc3NDczY2M1ZDVlZWFiMmRlZjJmMDJkYjRjY2VjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwCkBAIC0xOCwxMyArMTgs
MTcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAiV2ViUGFnZUNvbXBvc2l0
b3IuaCIKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJXZWJQ
YWdlQ29tcG9zaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VDb21wb3NpdG9yX3AuaCIK
IAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZV9wLmgiCiAjaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJl
YWQuaCIKICNpbmNsdWRlICJXZWJQYWdlX3AuaCIKIAorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0
Zm9ybURlYnVnTWFjcm9zLmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtRXhlY3V0YWJs
ZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZXNzYWdlLmg+CiAjaW5j
bHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTWVzc2FnZUNsaWVudC5oPgpAQCAtMzYsMTMgKzQwLDEy
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIEJsYWNrQmVycnkgewogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLVdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6V2ViUGFnZUNvbXBv
c2l0b3JQcml2YXRlKFdlYlBhZ2VQcml2YXRlKiBwYWdlKQotICAgIDogbV93ZWJQYWdlKHBhZ2Up
Ci0gICAgLCBtX2NvbnRleHQoR0xFUzJDb250ZXh0OjpjcmVhdGUocGFnZSkpCi0gICAgLCBtX2xh
eWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSkpCi0gICAg
LCBtX2JhY2tpbmdTdG9yZVVzZXNPcGVuR0woZmFsc2UpCitXZWJQYWdlQ29tcG9zaXRvclByaXZh
dGU6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZShXZWJQYWdlUHJpdmF0ZSogcGFnZSwgV2ViUGFn
ZUNvbXBvc2l0b3JDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAs
IG1fd2ViUGFnZShwYWdlKQogICAgICwgbV9hbmltYXRpb25UaW1lcih0aGlzLCAmV2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjphbmltYXRpb25UaW1lckZpcmVkKQogICAgICwgbV90aW1lckNsaWVu
dChuZXcgUGxhdGZvcm06OkdlbmVyaWNUaW1lckNsaWVudChQbGF0Zm9ybTo6dXNlckludGVyZmFj
ZVRocmVhZFRpbWVyQ2xpZW50KCkpKQorICAgICwgbV9wZW5kaW5nQW5pbWF0aW9uRnJhbWUoMC4w
KQogewogICAgIG1fYW5pbWF0aW9uVGltZXIuc2V0Q2xpZW50KG1fdGltZXJDbGllbnQpOwogfQpA
QCAtNTMsMjEgKzU2LDMyIEBAIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6fldlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZSgpCiAgICAgZGVsZXRlIG1fdGltZXJDbGllbnQ7CiB9CiAKK3ZvaWQgV2Vi
UGFnZUNvbXBvc2l0b3JQcml2YXRlOjpzZXRDb250ZXh0KFBsYXRmb3JtOjpHcmFwaGljczo6R0xF
UzJDb250ZXh0KiBjb250ZXh0KQoreworICAgIGlmIChtX2NvbnRleHQgPT0gY29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9jb250ZXh0ID0gY29udGV4dDsKKyAgICBpZiAoIW1fY29u
dGV4dCkgeworICAgICAgICBtX2xheWVyUmVuZGVyZXIuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXI6OmNyZWF0ZSht
X2NvbnRleHQpOworfQorCiBib29sIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6aGFyZHdhcmVD
b21wb3NpdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlci0+aGFyZHdh
cmVDb21wb3NpdGluZygpOworICAgIHJldHVybiBtX2xheWVyUmVuZGVyZXIgJiYgbV9sYXllclJl
bmRlcmVyLT5oYXJkd2FyZUNvbXBvc2l0aW5nKCk7CiB9CiAKIHZvaWQgV2ViUGFnZUNvbXBvc2l0
b3JQcml2YXRlOjpzZXRSb290TGF5ZXIoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogcm9vdExheWVy
KQogewogICAgIG1fcm9vdExheWVyID0gcm9vdExheWVyOwotICAgIG1fbGF5ZXJSZW5kZXJlci0+
c2V0Um9vdExheWVyKG1fcm9vdExheWVyLmdldCgpKTsKLX0KIAotdm9pZCBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6OnNldEJhY2tpbmdTdG9yZVVzZXNPcGVuR0woYm9vbCBiYWNraW5nU3RvcmVV
c2VzT3BlbkdMKQotewotICAgIG1fYmFja2luZ1N0b3JlVXNlc09wZW5HTCA9IGJhY2tpbmdTdG9y
ZVVzZXNPcGVuR0w7Ci0gICAgbV9sYXllclJlbmRlcmVyLT5zZXRDbGVhclN1cmZhY2VPbkRyYXdM
YXllcnMoIWJhY2tpbmdTdG9yZVVzZXNPcGVuR0wpOworICAgIEFTU0VSVChtX2xheWVyUmVuZGVy
ZXIpOworICAgIGlmIChtX2xheWVyUmVuZGVyZXIpCisgICAgICAgIG1fbGF5ZXJSZW5kZXJlci0+
c2V0Um9vdExheWVyKG1fcm9vdExheWVyLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6OmNvbW1pdChMYXllcldlYktpdFRocmVhZCogcm9vdExheWVyKQpAQCAtNzgs
MTUgKzkyLDQ3IEBAIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpjb21taXQoTGF5ZXJX
ZWJLaXRUaHJlYWQqIHJvb3RMYXllcikKICAgICByb290TGF5ZXItPmNvbW1pdE9uQ29tcG9zaXRp
bmdUaHJlYWQoKTsKIH0KIAordm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnJlbmRlcihj
b25zdCBJbnRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRSZWN0JiB0cmFuc2Zvcm1lZENvbnRlbnRz
KQoreworICAgIC8vIEl0J3Mgbm90IHNhZmUgdG8gY2FsbCBpbnRvIHRoZSBCYWNraW5nU3RvcmUg
aWYgdGhlIGNvbXBvc2l0b3IgaGFzbid0IGJlZW4gc2V0IHlldC4KKyAgICAvLyBGb3IgdGhyZWFk
IHNhZmV0eSwgd2UgaGF2ZSB0byBkbyBpdCB1c2luZyBhIHJvdW5kLXRyaXAgdG8gdGhlIFdlYktp
dCB0aHJlYWQsIHNvIHRoZQorICAgIC8vIGVtYmVkZGVyIG1pZ2h0IGNhbGwgdGhpcyBiZWZvcmUg
dGhlIHJvdW5kLXRyaXAgdG8gV2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3IoKSBpcworICAg
IC8vIGRvbmUuCisgICAgaWYgKG1fd2ViUGFnZS0+Y29tcG9zaXRvcigpICE9IHRoaXMpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFRoZSBCYWNraW5nU3RvcmUgaXMgdGhlIHJvb3QgbGF5ZXIK
KyAgICBpZiAoQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBtX3dlYlBhZ2UtPm1fYmFja2lu
Z1N0b3JlKQorICAgICAgICBiYWNraW5nU3RvcmUtPmQtPmJsaXRDb250ZW50cyhkc3RSZWN0LCB0
cmFuc2Zvcm1lZENvbnRlbnRzLCB0cnVlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgRmxvYXRSZWN0
IGNvbnRlbnRzID0gbV93ZWJQYWdlLT5tYXBGcm9tVHJhbnNmb3JtZWRGbG9hdFJlY3QoRmxvYXRS
ZWN0KHRyYW5zZm9ybWVkQ29udGVudHMpKTsKKyAgICAgICAgZHJhd0xheWVycyhkc3RSZWN0LCBj
b250ZW50cyk7CisgICAgfQorfQorCiBib29sIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6ZHJh
d0xheWVycyhjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNvbnRlbnRz
KQogeworICAgIGlmICghbV9sYXllclJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtX3BlbmRpbmdBbmltYXRpb25GcmFtZSA9IDAuMDsKKworICAgIGJvb2wgc2hvdWxkQ2xl
YXIgPSBmYWxzZTsKKyAgICBpZiAoQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBtX3dlYlBh
Z2UtPm1fYmFja2luZ1N0b3JlKQorICAgICAgICBzaG91bGRDbGVhciA9ICFiYWNraW5nU3RvcmUt
PmQtPmlzT3BlbkdMQ29tcG9zaXRpbmcoKTsKKyAgICBtX2xheWVyUmVuZGVyZXItPnNldENsZWFy
U3VyZmFjZU9uRHJhd0xheWVycyhzaG91bGRDbGVhcik7CisKICAgICBtX2xheWVyUmVuZGVyZXIt
PmRyYXdMYXllcnMoY29udGVudHMsIG1fbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nLCBtX2NvbnRl
bnRzU2l6ZUZvckNvbXBvc2l0aW5nLCBkc3RSZWN0KTsKICAgICBtX2xhc3RDb21wb3NpdGluZ1Jl
c3VsdHMgPSBtX2xheWVyUmVuZGVyZXItPmxhc3RSZW5kZXJpbmdSZXN1bHRzKCk7CiAKICAgICBp
ZiAobV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzLm5lZWRzQW5pbWF0aW9uRnJhbWUpIHsKICAgICAg
ICAgLy8gVXNpbmcgYSB0aW1lb3V0IG9mIDAgYWN0dWFsbHkgd29uJ3Qgc3RhcnQgYSB0aW1lciwg
aXQgd2lsbCBzZW5kIGEgbWVzc2FnZS4KLSAgICAgICAgbV9hbmltYXRpb25UaW1lci5zdGFydCgx
LjAgLyA2MC4wKTsKLSAgICAgICAgbV93ZWJQYWdlLT51cGRhdGVEZWxlZ2F0ZWRPdmVybGF5cygp
OworICAgICAgICBpZiAobV9jbGllbnQpCisgICAgICAgICAgICBtX3BlbmRpbmdBbmltYXRpb25G
cmFtZSA9IG1fY2xpZW50LT5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBtX2FuaW1hdGlvblRpbWVyLnN0YXJ0KDEuMCAvIDYwLjApOworICAgICAg
ICAgICAgbV93ZWJQYWdlLT51cGRhdGVEZWxlZ2F0ZWRPdmVybGF5cygpOworICAgICAgICB9CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC05OSwxOSArMTQ1LDEyNyBAQCB2b2lkIFdlYlBh
Z2VDb21wb3NpdG9yUHJpdmF0ZTo6cmVsZWFzZUxheWVyUmVzb3VyY2VzKCkKIAogdm9pZCBXZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQogewotICAgIGlmICht
X3dlYlBhZ2UtPm1fYmFja2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRv
dygpKSB7Ci0gICAgICAgIGlmIChtX3dlYlBhZ2UtPm1fYmFja2luZ1N0b3JlLT5kLT5pc0RpcmVj
dFJlbmRlcmluZ0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQoKSkKKyAgICBCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSA9IG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmU7CisgICAgaWYgKCFiYWNr
aW5nU3RvcmUpIHsKKyAgICAgICAgZHJhd0xheWVycyhtX3dlYlBhZ2UtPmNsaWVudCgpLT51c2Vy
SW50ZXJmYWNlQmxpdHRlZERlc3RpbmF0aW9uUmVjdCgpLAorICAgICAgICAgICAgICAgICAgIElu
dFJlY3QobV93ZWJQYWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZUJsaXR0ZWRWaXNpYmxlQ29u
dGVudHNSZWN0KCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChiYWNraW5n
U3RvcmUtPmQtPnNob3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpIHsKKyAgICAgICAgaWYg
KGJhY2tpbmdTdG9yZS0+ZC0+aXNEaXJlY3RSZW5kZXJpbmdBbmltYXRpb25NZXNzYWdlU2NoZWR1
bGVkKCkpCiAgICAgICAgICAgICByZXR1cm47IC8vIGRvbid0IHNlbmQgbmV3IG1lc3NhZ2VzIGFz
IGxvbmcgYXMgd2UgaGF2ZW4ndCByZXJlbmRlcmVkCiAKLSAgICAgICAgbV93ZWJQYWdlLT5tX2Jh
Y2tpbmdTdG9yZS0+ZC0+c2V0RGlyZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxl
ZCgpOwotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNs
aWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCi0gICAgICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgJkJhY2tpbmdTdG9y
ZVByaXZhdGU6OnJlbmRlclZpc2libGVDb250ZW50cywgbV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9y
ZS0+ZCkpOworICAgICAgICB1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm07CisK
KyAgICAgICAgYmFja2luZ1N0b3JlLT5kLT5zZXREaXJlY3RSZW5kZXJpbmdBbmltYXRpb25NZXNz
YWdlU2NoZWR1bGVkKCk7CisgICAgICAgIHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlz
cGF0Y2hNZXNzYWdlKGNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKCZCYWNraW5nU3RvcmVQcml2YXRl
OjpyZW5kZXJWaXNpYmxlQ29udGVudHMsIGJhY2tpbmdTdG9yZS0+ZCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIG1fd2ViUGFnZS0+YmxpdFZpc2libGVDb250ZW50cygpOwogfQogCit2
b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6Y29tcG9zaXRvckRlc3Ryb3llZCgpCit7Cisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+Y29tcG9zaXRvckRlc3Ryb3llZCgp
OworCisgICAgbV9jbGllbnQgPSAwOworfQorCitXZWJQYWdlQ29tcG9zaXRvcjo6V2ViUGFnZUNv
bXBvc2l0b3IoV2ViUGFnZSogcGFnZSwgV2ViUGFnZUNvbXBvc2l0b3JDbGllbnQqIGNsaWVudCkK
K3sKKyAgICB1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm07CisKKyAgICBSZWZQ
dHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPiB0bXAgPSBXZWJQYWdlQ29tcG9zaXRvclByaXZh
dGU6OmNyZWF0ZShwYWdlLT5kLCBjbGllbnQpOworCisgICAgLy8gS2VlcCBvbmUgcmVmIG91cnNl
bHZlcy4uLgorICAgIGQgPSB0bXAuZ2V0KCk7CisgICAgZC0+cmVmKCk7CisKKyAgICAvLyAuLi5B
bmQgcGFzcyBvbmUgcmVmIHRvIHRoZSB3ZWIgcGFnZS4KKyAgICAvLyBUaGlzIGVuc3VyZXMgdGhh
dCB0aGUgY29tcG9zaXRvciB3aWxsIGJlIGFyb3VuZCBmb3IgYXMgbG9uZyBhcyBpdCdzCisgICAg
Ly8gbmVlZGVkLiBVbmZvcnR1bmF0ZWx5IFJlZlB0cjxUPiBpcyBub3QgcHVibGljLCBzbyB3ZSBo
YXZlIGRlY2xhcmUgdG8KKyAgICAvLyByZXNvcnQgdG8gbWFudWFsIHJlZmNvdW50aW5nLgorICAg
IHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKGNyZWF0ZU1ldGhv
ZENhbGxNZXNzYWdlKCZXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRvciwgZC0+cGFnZSgpLCB0
bXApKTsKK30KKworV2ViUGFnZUNvbXBvc2l0b3I6On5XZWJQYWdlQ29tcG9zaXRvcigpCit7Cisg
ICAgdXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOworCisgICAgd2ViS2l0VGhy
ZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoY3JlYXRlTWV0aG9kQ2FsbE1lc3Nh
Z2UoJldlYlBhZ2VQcml2YXRlOjpzZXRDb21wb3NpdG9yLCBkLT5wYWdlKCksIFBhc3NSZWZQdHI8
V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPigwKSkpOworICAgIGQtPmNvbXBvc2l0b3JEZXN0cm95
ZWQoKTsKKyAgICBkLT5kZXJlZigpOworfQorCitXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogV2Vi
UGFnZUNvbXBvc2l0b3I6OmNsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgV2ViUGFnZUNvbXBvc2l0b3I6OnByZXBhcmVGcmFtZShQbGF0Zm9ybTo6R3JhcGhpY3M6OkdM
RVMyQ29udGV4dCogY29udGV4dCwgZG91YmxlIHRpbWVzdGFtcCkKK3sKKyAgICBkLT5zZXRDb250
ZXh0KGNvbnRleHQpOworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpyZW5kZXIoUGxhdGZv
cm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFBsYXRmb3JtOjpJbnRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgY29udGVudHMpCit7CisgICAg
ZC0+c2V0Q29udGV4dChjb250ZXh0KTsKKyAgICBkLT5yZW5kZXIoZHN0UmVjdCwgY29udGVudHMp
OworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpjbGVhbnVwKFBsYXRmb3JtOjpHcmFwaGlj
czo6R0xFUzJDb250ZXh0KiBjb250ZXh0KQoreworICAgIGQtPnNldENvbnRleHQoMCk7Cit9CisK
K3ZvaWQgV2ViUGFnZUNvbXBvc2l0b3I6OmNvbnRleHRMb3N0KCkKK3sKKyAgICAvLyBUaGlzIG1l
dGhvZCBuZWVkcyB0byBkZWxldGUgdGhlIGNvbXBvc2l0b3IgaW4gYSB3YXkgdGhhdCBub3QgdHJp
ZXMgdG8KKyAgICAvLyB1c2UgYW55IE9wZW5HTCBjYWxscyAodGhlIGNvbnRleHQgaXMgZ29uZSwg
c28gd2UgY2FuJ3QgYW5kIGRvbid0IG5lZWQgdG8KKyAgICAvLyBmcmVlIGFueSBPcGVuR0wgcmVz
b3VyY2VzLgorICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQorCisjZWxzZSAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisKK25hbWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJQYWdlQ29tcG9zaXRvcjo6V2ViUGFnZUNvbXBvc2l0b3IoV2ViUGFnZSogcGFnZSwg
V2ViUGFnZUNvbXBvc2l0b3JDbGllbnQqIGNsaWVudCkKKyAgICA6IGQoMCkKK3sKK30KKworV2Vi
UGFnZUNvbXBvc2l0b3I6On5XZWJQYWdlQ29tcG9zaXRvcigpCit7Cit9CisKK1dlYlBhZ2VDb21w
b3NpdG9yQ2xpZW50KiBXZWJQYWdlQ29tcG9zaXRvcjo6Y2xpZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKwordm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6cHJlcGFyZUZyYW1lKFBsYXRm
b3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiwgZG91YmxlIHRpbWVzdGFtcCkKK3sKK30KKwor
dm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6cmVuZGVyKFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJD
b250ZXh0KiwgY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3QsIGNvbnN0IFBsYXRmb3Jt
OjpJbnRSZWN0JiBjb250ZW50cykKK3sKK30KKwordm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6Y2xl
YW51cChQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCopCit7Cit9CisKK3ZvaWQgV2Vi
UGFnZUNvbXBvc2l0b3I6OmNvbnRleHRMb3N0KCkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiB9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMWJmMjg0MWZhOTlj
ZTZiYWU3MTIyNWJiOTZlYjMyZGE2YTA0NDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5oCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBX
ZWJQYWdlQ29tcG9zaXRvcl9oCisjZGVmaW5lIFdlYlBhZ2VDb21wb3NpdG9yX2gKKworI2luY2x1
ZGUgIkJsYWNrQmVycnlHbG9iYWwuaCIKKworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdM
RVMyQ29udGV4dC5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+Cisj
aW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtUHJpbWl0aXZlcy5oPgorCituYW1lc3BhY2UgQmxh
Y2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKK2NsYXNzIFdl
YlBhZ2VDb21wb3NpdG9yQ2xpZW50OworY2xhc3MgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOwor
CitjbGFzcyBCTEFDS0JFUlJZX0VYUE9SVCBXZWJQYWdlQ29tcG9zaXRvciB7CitwdWJsaWM6Cisg
ICAgV2ViUGFnZUNvbXBvc2l0b3IoV2ViUGFnZSosIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50Kik7
CisgICAgdmlydHVhbCB+V2ViUGFnZUNvbXBvc2l0b3IoKTsKKworICAgIFdlYlBhZ2VDb21wb3Np
dG9yQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKKworICAgIHZvaWQgcHJlcGFyZUZyYW1lKFBsYXRm
b3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiwgZG91YmxlIHRpbWVzdGFtcCk7CisKKyAgICAv
LyBGSVhNRTogZHN0UmVjdCBzaG91bGQgYmUgYSBQbGF0Zm9ybTo6VHJhbnNmb3JtYXRpb25NYXRy
aXggaW5zdGVhZC4gUFIxNDI2MjgKKyAgICB2b2lkIHJlbmRlcihQbGF0Zm9ybTo6R3JhcGhpY3M6
OkdMRVMyQ29udGV4dCosIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0JiBkc3RSZWN0LCBjb25zdCBQ
bGF0Zm9ybTo6SW50UmVjdCYgY29udGVudHMpOworCisgICAgdm9pZCBjbGVhbnVwKFBsYXRmb3Jt
OjpHcmFwaGljczo6R0xFUzJDb250ZXh0Kik7CisKKyAgICB2b2lkIGNvbnRleHRMb3N0KCk7CisK
K3ByaXZhdGU6CisgICAgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlICpkOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cit9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5CisKKyNlbmRpZiAvLyBX
ZWJQYWdlQ29tcG9zaXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2VDb21wb3NpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2VDb21wb3NpdG9yQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRkOWY5NjhjNzNhODI1
NDhmY2VhYThmZGUxNzAxNjMzZDhmNGI5ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBvc2l0b3JDbGllbnQuaApAQCAtMCwwICsxLDQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5k
ZWYgV2ViUGFnZUNvbXBvc2l0b3JDbGllbnRfaAorI2RlZmluZSBXZWJQYWdlQ29tcG9zaXRvckNs
aWVudF9oCisKKyNpbmNsdWRlICJCbGFja0JlcnJ5R2xvYmFsLmgiCisKK25hbWVzcGFjZSBCbGFj
a0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBC
TEFDS0JFUlJZX0VYUE9SVCBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViUGFnZUNvbXBvc2l0b3JDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBjb21wb3NpdG9yRGVzdHJveWVkKCkgPSAwOworCisgICAgdmlydHVhbCBkb3VibGUgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKGRvdWJs
ZSBhbmltYXRpb25GcmFtZVRpbWVzdGFtcCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
Q2xlYW51cCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3Bh
Y2UgQmxhY2tCZXJyeQorCisjZW5kaWYgLy8gV2ViUGFnZUNvbXBvc2l0b3JDbGllbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvcl9w
LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaApp
bmRleCAwMDAxYzUzOTBkYmYxY2NmZWNlOGUwMGE0MzhhY2I4YTE5NjZlNTNjLi4yY2FjOTI0NDBj
ZDVjNTc5Y2NjYThjYTljNmE0ODBiMmRhYWNkNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3AuaApAQCAtMjEsMTIgKzIxLDEzIEBA
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNpbmNsdWRlICJHTEVTMkNv
bnRleHQuaCIKICNpbmNsdWRlICJMYXllckNvbXBvc2l0aW5nVGhyZWFkLmgiCiAjaW5jbHVkZSAi
TGF5ZXJSZW5kZXJlci5oIgogCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtR0xFUzJDb250
ZXh0Lmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtVGltZXIuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDIyICszNywzMiBAQCBjbGFz
cyBMYXllcldlYktpdFRocmVhZDsKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitjbGFzcyBXZWJQYWdlQ29tcG9zaXRvckNsaWVudDsKIGNsYXNzIFdlYlBhZ2VQ
cml2YXRlOwogCi0vLyBUaGlzIGNsYXNzIG1heSBvbmx5IGJlIHVzZWQgb24gdGhlIGNvbXBvc2l0
aW5nIHRocmVhZC4KLWNsYXNzIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSB7CisvLyBUaGlzIGNs
YXNzIG1heSBvbmx5IGJlIHVzZWQgb24gdGhlIGNvbXBvc2l0aW5nIHRocmVhZC4gU28gaXQgZG9l
cyBub3QgbmVlZCB0byBiZSB0aHJlYWRzYWZlcmVmY291bnRlZC4KK2NsYXNzIFdlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0
ZT4gewogcHVibGljOgotICAgIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZShXZWJQYWdlUHJpdmF0
ZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4gY3Jl
YXRlKFdlYlBhZ2VQcml2YXRlKiBwYWdlLCBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogY2xpZW50
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQYWdlQ29tcG9zaXRvclBy
aXZhdGUocGFnZSwgY2xpZW50KSk7CisgICAgfQorCiAgICAgfldlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZSgpOwogCiAgICAgYm9vbCBoYXJkd2FyZUNvbXBvc2l0aW5nKCkgY29uc3Q7CiAKLSAgICB2
b2lkIHNldFJvb3RMYXllcihXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkKik7CisgICAg
UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRleHQ7IH0KKyAgICB2b2lkIHNldENvbnRleHQoUGxhdGZvcm06OkdyYXBoaWNzOjpH
TEVTMkNvbnRleHQqKTsKIAotICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlVXNlc09wZW5HTChib29s
KTsKKyAgICB2b2lkIHNldFJvb3RMYXllcihXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFk
Kik7CiAKICAgICB2b2lkIGNvbW1pdChXZWJDb3JlOjpMYXllcldlYktpdFRocmVhZCogcm9vdExh
eWVyUHJveHkpOwogCisgICAgLy8gVGhpcyBpcyBtYXBwZWQgZnJvbSB0aGUgcHVibGljIEFQSSwg
dGh1cyB0YWtlcyB0cmFuc2Zvcm1lZCBjb250ZW50cworICAgIHZvaWQgcmVuZGVyKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGRzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHRyYW5zZm9y
bWVkQ29udGVudHMpOworCisgICAgLy8gUmVuZGVyIGV2ZXJ5dGhpbmcgYnV0IHRoZSByb290IGxh
eWVyCiAgICAgYm9vbCBkcmF3TGF5ZXJzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGVudHMpOwogCiAgICAgV2ViQ29yZTo6SW50
UmVjdCBsYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFJl
Y3RGb3JDb21wb3NpdGluZzsgfQpAQCAtNjMsMjIgKzc0LDMxIEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpMYXllclJlbmRlcmluZ1Jlc3VsdHMgbGFzdENvbXBvc2l0aW5nUmVzdWx0cygpIGNvbnN0
IHsgcmV0dXJuIG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0czsgfQogICAgIHZvaWQgc2V0TGFzdENv
bXBvc2l0aW5nUmVzdWx0cyhjb25zdCBXZWJDb3JlOjpMYXllclJlbmRlcmluZ1Jlc3VsdHMmIHJl
c3VsdHMpIHsgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzID0gcmVzdWx0czsgfQogCisgICAgZG91
YmxlIGFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9wZW5kaW5nQW5p
bWF0aW9uRnJhbWU7IH0KKwogICAgIHZvaWQgcmVsZWFzZUxheWVyUmVzb3VyY2VzKCk7CiAKKyAg
ICBXZWJQYWdlUHJpdmF0ZSogcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZTsgfQorICAg
IFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dDsgfQorICAgIHZvaWQgY29tcG9zaXRvckRlc3Ryb3llZCgpOworCitwcm90ZWN0ZWQ6CisgICAg
V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKFdlYlBhZ2VQcml2YXRlKiwgV2ViUGFnZUNvbXBvc2l0
b3JDbGllbnQqKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsK
IAorICAgIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBXZWJQYWdlUHJp
dmF0ZSogbV93ZWJQYWdlOwotICAgIC8vIFBsZWFzZSBtYWludGFpbiB0aGlzIG9yZGVyIHNpbmNl
IG1fbGF5ZXJSZW5kZXJlciBkZXBlbmRzIG9uIG1fY29udGV4dCBpbiBpbml0aWFsaXphdGlvbiBs
aXN0LgotICAgIE93blB0cjxHTEVTMkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICBQbGF0Zm9ybTo6
R3JhcGhpY3M6OkdMRVMyQ29udGV4dCogbV9jb250ZXh0OwogICAgIE93blB0cjxXZWJDb3JlOjpM
YXllclJlbmRlcmVyPiBtX2xheWVyUmVuZGVyZXI7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkxheWVy
Q29tcG9zaXRpbmdUaHJlYWQ+IG1fcm9vdExheWVyOwogICAgIFdlYkNvcmU6OkludFJlY3QgbV9s
YXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmc7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2NvbnRlbnRz
U2l6ZUZvckNvbXBvc2l0aW5nOwogICAgIFdlYkNvcmU6OkxheWVyUmVuZGVyaW5nUmVzdWx0cyBt
X2xhc3RDb21wb3NpdGluZ1Jlc3VsdHM7Ci0gICAgYm9vbCBtX2JhY2tpbmdTdG9yZVVzZXNPcGVu
R0w7CiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRpbWVyPFdlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZT4gbV9hbmltYXRpb25UaW1lcjsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VGltZXJD
bGllbnQqIG1fdGltZXJDbGllbnQ7CisgICAgZG91YmxlIG1fcGVuZGluZ0FuaW1hdGlvbkZyYW1l
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlX3AuaAppbmRleCAwMDZhMzg0MTQ5MDZlMzk4NjNkOTAzYzhmMWExMzY4ZWUyMzY3
Y2RlLi4yOGQ0MjhhNWUwOGMxODJjNGM1YTI0ZTM3Zjk5NzRmYzZhMTQ3ZjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KyNpbmNsdWRlICJHTEVTMkNvbnRleHQuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyLmgiCiAj
ZW5kaWYKICNpbmNsdWRlICJQYWdlQ2xpZW50QmxhY2tCZXJyeS5oIgpAQCAtODIsNiArODMsOCBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgV2ViQ29yZTo6UGFnZSogY29yZShjb25zdCBXZWJQYWdl
Kik7CiAKKyAgICBXZWJQYWdlQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVu
dDsgfQorCiAgICAgdm9pZCBpbml0KGNvbnN0IFdlYlN0cmluZyYgcGFnZUdyb3VwTmFtZSk7CiAg
ICAgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCYpOwog
ICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQmKTsK
QEAgLTM2NiwxNCArMzY5LDE0IEBAIHB1YmxpYzoKICAgICAvLyBUaHJlYWQgc2FmZS4KICAgICB2
b2lkIHJlc2V0Q29tcG9zaXRpbmdTdXJmYWNlKCk7CiAgICAgdm9pZCBkcmF3TGF5ZXJzT25Db21t
aXQoKTsgLy8gSW5jbHVkaW5nIGJhY2tpbmcgc3RvcmUgYmxpdC4KLSAgICBib29sIGRyYXdTdWJM
YXllcnMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZHN0UmVjdCwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBjb250ZW50cyk7Ci0gICAgYm9vbCBkcmF3U3ViTGF5ZXJzKCk7IC8vIERyYXcgdGhl
bSBhdCBsYXN0IGtub3duIHBvc2l0aW9uLgogCiAgICAgLy8gQ29tcG9zaXRpbmcgdGhyZWFkLgog
ICAgIHZvaWQgc2V0Um9vdExheWVyQ29tcG9zaXRpbmdUaHJlYWQoV2ViQ29yZTo6TGF5ZXJDb21w
b3NpdGluZ1RocmVhZCopOwogICAgIHZvaWQgY29tbWl0Um9vdExheWVyKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Ci0gICAgdm9pZCBzZXRJc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCk7Ci0gICAgYm9vbCBpc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZTsgfQorICAgIGJvb2wgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9jb21wb3NpdG9yOyB9CisgICAgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
KiBjb21wb3NpdG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdG9yLmdldCgpOyB9CisgICAg
dm9pZCBzZXRDb21wb3NpdG9yKFBhc3NSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPik7
CisgICAgYm9vbCBjcmVhdGVDb21wb3NpdG9yKCk7CiAgICAgdm9pZCBkZXN0cm95Q29tcG9zaXRv
cigpOwogICAgIHZvaWQgc3luY0Rlc3Ryb3lDb21wb3NpdG9yT25Db21wb3NpdGluZ1RocmVhZCgp
OwogICAgIHZvaWQgZGVzdHJveUxheWVyUmVzb3VyY2VzKCk7CkBAIC00OTksNyArNTAyLDEyIEBA
IHB1YmxpYzoKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgYm9vbCBtX2lz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZTsKICAgICBPd25QdHI8RnJhbWVMYXllcnM+IG1f
ZnJhbWVMYXllcnM7IC8vIFdlYktpdCB0aHJlYWQgb25seS4KLSAgICBPd25QdHI8V2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlPiBtX2NvbXBvc2l0b3I7IC8vIENvbXBvc2l0aW5nIHRocmVhZCBvbmx5
LgorCisgICAgLy8gQ29tcG9zaXRpbmcgdGhyZWFkIG9ubHksIHVzZWQgb25seSB3aGVuIHRoZSBX
ZWJLaXQgbGF5ZXIgY3JlYXRlZCB0aGUgY29udGV4dC4KKyAgICAvLyBJZiB0aGUgQVBJIGNsaWVu
dCBjcmVhdGVkIHRoZSBjb250ZXh0LCB0aGlzIHdpbGwgYmUgbnVsbC4KKyAgICBPd25QdHI8R0xF
UzJDb250ZXh0PiBtX293bmVkQ29udGV4dDsKKworICAgIFJlZlB0cjxXZWJQYWdlQ29tcG9zaXRv
clByaXZhdGU+IG1fY29tcG9zaXRvcjsgLy8gQ29tcG9zaXRpbmcgdGhyZWFkIG9ubHkuCiAgICAg
T3duUHRyPFdlYkNvcmU6OlRpbWVyPFdlYlBhZ2VQcml2YXRlPiA+IG1fcm9vdExheWVyQ29tbWl0
VGltZXI7CiAgICAgYm9vbCBtX25lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb247CiAg
ICAgYm9vbCBtX25lZWRzQ29tbWl0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133587</attachid>
            <date>2012-03-23 16:56:22 -0700</date>
            <delta_ts>2012-03-23 17:28:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81121-20120324005620.patch</filename>
            <type>text/plain</type>
            <size>34419</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExOTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwNWU2OWYwMTcwMGJjZTkxNjBjNzEyZmU4NzNhMmYwZDFlMWMyZDFjLi44OGY4OGFmN2Zi
MDU2MmMwNzdlZTJlYTM3YjE3NGM5NWIwMDFlZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxMi0wMy0yMyAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxz
c29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEFkZCBXZWJQYWdlQ29tcG9zaXRv
ciBjbGFzcyB0byBCbGFja0JlcnJ5IFdlYktpdCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTIxCisgICAgICAgIFJJTSBQUjogMTM2Njg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGlkZWEg
aXMgZm9yIHRoZSBBUEkgY2xpZW50IHRvIHVzZSBhIFdlYlBhZ2VDb21wb3NpdG9yIG9iamVjdCB0
bworICAgICAgICByZW5kZXIgdGhlIFdlYlBhZ2Ugd2hlbiB0aGVyZSdzIG5vIHNjcmVlbiB3aW5k
b3cgYXZhaWxhYmxlLgorCisgICAgICAgIFRoZSBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUgYmVj
b21lcyByZWZlcmVuY2UgY291bnRlZCBpbiBvcmRlciB0byBiZQorICAgICAgICBrZXB0IGFsaXZl
IGVpdGhlciBiZWNhdXNlIGl0J3MgdXNlZCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbGF5
ZXJzCisgICAgICAgIG9yIHVzZWQgZm9yIHRoZSBXZWJQYWdlQ29tcG9zaXRvciBBUEkuIEl0IGNh
biBzdGlsbCB3b3JrIHN0YW5kYWxvbmUuCisKKyAgICAgICAgQ2xlYW4gdXAgc29tZSBjb2RlIC0g
bm8gbmVlZCB0byBrZWVwIHRyYWNrIG9mIGEgc2VwYXJhdGUgYm9vbGVhbgorICAgICAgICBXZWJQ
YWdlUHJpdmF0ZTo6bV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgd2hlbiB0aGUgc3Rh
dGUgb2YKKyAgICAgICAgbV9jb21wb3NpdG9yIGNhbiB0ZWxsIHlvdS4KKworICAgICAgICBBbHNv
IHJlbW92ZSBkdXBsaWNhdGVkIGNvZGUgZnJvbSBXZWJQYWdlUHJpdmF0ZSAtIGdvIGRpcmVjdGx5
IHRvIHRoZQorICAgICAgICBjb21wb3NpdG9yIG9iamVjdCBpbnN0ZWFkLCBpZiB5b3UgbmVlZCB0
byBkcmF3IHRoZSBBQyBsYXllcnMuCisKKyAgICAgICAgUmV2aWV3ZWQgaW50ZXJuYWxseSBieSBS
b2JpbiBDYW8gYW5kIHRoZSBoYXNCbGl0Sm9icy9ibGl0T25JZGxlIGNoYW5nZQorICAgICAgICBi
eSBGaWxpcCBTcGFjZWsuCisKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlOjpoYXNCbGl0Sm9icyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6YmxpdE9uSWRsZSk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50
cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmRy
YXdTdWJMYXllcnMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQ
cml2YXRlOjpkcmF3QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzdXJmYWNlU2l6ZSk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJ1ZmZlcik6
CisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpXZWJQYWdlUHJpdmF0ZTo6V2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3IpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6c2V0Um9vdExheWVyQ29tcG9z
aXRpbmdUaHJlYWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0
ZTo6Y3JlYXRlQ29tcG9zaXRvcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlOjpkZXN0cm95Q29tcG9zaXRvcik6CisgICAgICAgICogQXBpL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OldlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZTo6c2V0Q29udGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VD
b21wb3NpdG9yUHJpdmF0ZTo6aGFyZHdhcmVDb21wb3NpdGluZyk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0Um9vdExheWVyKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpyZW5k
ZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZh
dGU6OmRyYXdMYXllcnMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OmFuaW1hdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmNvbXBvc2l0b3JEZXN0cm95ZWQp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6V2ViUGFn
ZUNvbXBvc2l0b3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9z
aXRvcjo6fldlYlBhZ2VDb21wb3NpdG9yKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZUNvbXBvc2l0b3I6OmNsaWVudCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VDb21wb3NpdG9yOjpwcmVwYXJlRnJhbWUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6cmVuZGVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I6OmNsZWFudXApOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6Y29udGV4dExvc3QpOgorICAgICAgICAqIEFw
aS9XZWJQYWdlQ29tcG9zaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBv
c2l0b3JDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3Au
aDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRv
clByaXZhdGU6OmNvbnRleHQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpwYWdlKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpjbGllbnQp
OgorICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZVByaXZhdGU6OmNsaWVudCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VQcml2YXRlOjppc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6Y29tcG9zaXRvcik6CisKIDIw
MTItMDMtMjIgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29tLmNuPgog
CiAgICAgICAgIFtCbGFja0JlcnJ5XSBOZWVkIHRvIHN0b3JlIHRoZSBtZXRhIGluZm8gb2YgYSBw
YWdlIGluIHRoZSBWaWV3U3RhdGUgb2YgdGhlIGhpc3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcAppbmRleCBlNTgwNmIzYWE3MzAyZDU2OGQ4N2M5
MGFhMmQxODAwYTI4MWQzZDI5Li45YzMyMWVkMjY1Mjg4YjdhODQzYzM3ODFiOWQwZGYxMGVkMWI2
MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3Bw
CkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiU3VyZmFjZVBvb2wuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlBhZ2VD
b21wb3NpdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZUNvbXBvc2l0b3JfcC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VfcC5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAKQEAgLTEyNDAs
NiArMTI0MiwxNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50cyhjb25z
dCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKICAgICB9CiAKICAgICBpZiAobV9kZWZlcnNC
bGl0ICYmICFmb3JjZSkgeworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAg
ICAgLy8gSWYgdGhlcmUncyBhIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50LCBsZXQgaXQgc2NoZWR1
bGUgdGhlIGJsaXQuCisgICAgICAgIGlmIChXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUqIGNvbXBv
c2l0b3IgPSBtX3dlYlBhZ2UtPmQtPmNvbXBvc2l0b3IoKSkgeworICAgICAgICAgICAgaWYgKFdl
YlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBjbGllbnQgPSBjb21wb3NpdG9yLT5jbGllbnQoKSkgewor
ICAgICAgICAgICAgICAgIGNsaWVudC0+aW52YWxpZGF0ZShjb21wb3NpdG9yLT5hbmltYXRpb25G
cmFtZVRpbWVzdGFtcCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIG1faGFzQmxpdEpvYnMgPSB0cnVlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ0NSw3ICsxNDU3LDggQEAgdm9pZCBCYWNraW5nU3Rv
cmVQcml2YXRlOjpibGl0Q29udGVudHMoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3Qs
CiAgICAgaWYgKGJsaXR0aW5nRGlyZWN0bHlUb0NvbXBvc2l0aW5nV2luZG93KSB7CiAgICAgICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCBjb250ZW50c1JlY3QgPSBtX3dlYlBhZ2UtPmQtPm1hcEZyb21U
cmFuc2Zvcm1lZEZsb2F0UmVjdCgKICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdChXZWJD
b3JlOjpJbnRSZWN0KGNvbnRlbnRzKSkpOwotICAgICAgICBtX3dlYlBhZ2UtPmQtPmRyYXdTdWJM
YXllcnMoZHN0UmVjdCwgY29udGVudHNSZWN0KTsKKyAgICAgICAgaWYgKFdlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZSogY29tcG9zaXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKQorICAg
ICAgICAgICAgY29tcG9zaXRvci0+ZHJhd0xheWVycyhkc3RSZWN0LCBjb250ZW50c1JlY3QpOwog
ICAgIH0gZWxzZSBpZiAoY29tcG9zaXRpbmdTdXJmYWNlKQogICAgICAgICBibGVuZENvbXBvc2l0
aW5nU3VyZmFjZShkc3RSZWN0KTsKIApAQCAtMjUxOSw2ICsyNTMyLDkgQEAgYm9vbCBCYWNraW5n
U3RvcmVQcml2YXRlOjpkcmF3U3ViTGF5ZXJzKCkKICAgICBpZiAobV9zdXNwZW5kQmFja2luZ1N0
b3JlVXBkYXRlcyAmJiAhaXNPcGVuR0xDb21wb3NpdGluZygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBpZiAoIW1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICBQbGF0Zm9ybTo6SW50UmVjdCBkc3QgPSBtX3dlYlBhZ2UtPmNsaWVu
dCgpLT51c2VySW50ZXJmYWNlQmxpdHRlZERlc3RpbmF0aW9uUmVjdCgpOwogICAgIGlmIChkc3Qu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTI2LDcgKzI1NDIsNyBAQCBi
b29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OmRyYXdTdWJMYXllcnMoKQogICAgIFBsYXRmb3JtOjpJ
bnRSZWN0IHNyYyA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPnVzZXJJbnRlcmZhY2VCbGl0dGVkVmlz
aWJsZUNvbnRlbnRzUmVjdCgpOwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb250ZW50c1JlY3Qg
PSBtX3dlYlBhZ2UtPmQtPm1hcEZyb21UcmFuc2Zvcm1lZEZsb2F0UmVjdCgKICAgICAgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0KFdlYkNvcmU6OkludFJlY3Qoc3JjKSkpOwotICAgIHJldHVybiBtX3dl
YlBhZ2UtPmQtPmRyYXdTdWJMYXllcnMoZHN0LCBjb250ZW50c1JlY3QpOworICAgIHJldHVybiBt
X3dlYlBhZ2UtPmQtPmNvbXBvc2l0b3IoKS0+ZHJhd0xheWVycyhkc3QsIGNvbnRlbnRzUmVjdCk7
CiB9CiAKIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0SWZOZWVk
ZWQoKQpAQCAtMjU1Nyw3ICsyNTczLDggQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpkcmF3
QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcoY29uc3QgUGxhdGZvcm06OkkKIAogICAg
IC8vIENoZWNrIGlmIHJlbmRlcmluZyBjYXVzZWQgYSBjb21taXQgYW5kIHdlIG5lZWQgdG8gcmVk
cmF3IHRoZSBsYXllcnMuCiAgICAgbV9uZWVkc0RyYXdMYXllcnNPbkNvbW1pdCA9IGZhbHNlOwot
ICAgIG1fd2ViUGFnZS0+ZC0+ZHJhd1N1YkxheWVycyhkc3RSZWN0LCB1bnRyYW5zZm9ybWVkQ29u
dGVudHNSZWN0KTsKKyAgICBpZiAoV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKiBjb21wb3NpdG9y
ID0gbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCkpCisgICAgICAgIGNvbXBvc2l0b3ItPmRyYXdM
YXllcnMoZHN0UmVjdCwgdW50cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCk7CiAKICNpZiBFTkFCTEVf
Q09NUE9TSVRJTkdfU1VSRkFDRQogICAgIC8vIFNlZSBhYm92ZSBjb21tZW50IGFib3V0IHN5bmMg
Y2FsbGluZywgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGlzIHNhZmUgaGVyZS4KQEAgLTI2ODAsNiAr
MjY5NywxMyBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6c2V0RGVmZXJzQmxpdChib29sIGIpCiAKIGJv
b2wgQmFja2luZ1N0b3JlOjpoYXNCbGl0Sm9icygpIGNvbnN0CiB7CisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorICAgIC8vIElmIHRoZXJlJ3MgYSBXZWJQYWdlQ29tcG9zaXRvckNs
aWVudCwgbGV0IGl0IHNjaGVkdWxlIHRoZSBibGl0LgorICAgIFdlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZSogY29tcG9zaXRvciA9IGQtPm1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpOworICAgIGlm
IChjb21wb3NpdG9yICYmIGNvbXBvc2l0b3ItPmNsaWVudCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKKwogICAgIC8vIE5vcm1hbGx5LCB0aGlzIHdvdWxkIGJlIGNhbGxlZCBmcm9t
IHRoZSBjb21wb3NpdGluZyB0aHJlYWQsCiAgICAgLy8gYW5kIHRoZSBmbGFnIGlzIHNldCBvbiB0
aGUgY29tcG9zaXRpbmcgdGhyZWFkLCBzbyBubyBuZWVkIGZvcgogICAgIC8vIHN5bmNocm9uaXph
dGlvbi4KQEAgLTI2ODgsNiArMjcxMiwxMyBAQCBib29sIEJhY2tpbmdTdG9yZTo6aGFzQmxpdEpv
YnMoKSBjb25zdAogCiB2b2lkIEJhY2tpbmdTdG9yZTo6YmxpdE9uSWRsZSgpCiB7CisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIC8vIElmIHRoZXJlJ3MgYSBXZWJQYWdlQ29t
cG9zaXRvckNsaWVudCwgbGV0IGl0IHNjaGVkdWxlIHRoZSBibGl0LgorICAgIFdlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZSogY29tcG9zaXRvciA9IGQtPm1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigp
OworICAgIGlmIChjb21wb3NpdG9yICYmIGNvbXBvc2l0b3ItPmNsaWVudCgpKQorICAgICAgICBy
ZXR1cm47CisjZW5kaWYKKwogICAgIGQtPmJsaXRWaXNpYmxlQ29udGVudHModHJ1ZSAvKmZvcmNl
Ki8pOwogfQogCkBAIC0yNjk2LDYgKzI3MjcsMTEgQEAgUGxhdGZvcm06OkludFNpemUgQmFja2lu
Z1N0b3JlUHJpdmF0ZTo6c3VyZmFjZVNpemUoKSBjb25zdAogICAgIGlmIChXaW5kb3cqIHdpbmRv
dyA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPndpbmRvdygpKQogICAgICAgICByZXR1cm4gd2luZG93
LT5zdXJmYWNlU2l6ZSgpOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAg
IGlmIChXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUqIGNvbXBvc2l0b3IgPSBtX3dlYlBhZ2UtPmQt
PmNvbXBvc2l0b3IoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2l0b3ItPmNvbnRleHQoKS0+c3Vy
ZmFjZVNpemUoKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIFBsYXRmb3JtOjpJbnRTaXplKCk7CiB9
CiAKQEAgLTI3MDQsNiArMjc0MCwxMSBAQCBQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6YnVmZmVyKCkgY29uc3QKICAgICBpZiAoV2luZG93KiB3aW5kb3cg
PSBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKSkKICAgICAgICAgcmV0dXJuIHdpbmRvdy0+
YnVmZmVyKCk7CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKFdl
YlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSogY29tcG9zaXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9z
aXRvcigpKQorICAgICAgICByZXR1cm4gY29tcG9zaXRvci0+Y29udGV4dCgpLT5idWZmZXIoKTsK
KyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuY3BwCmluZGV4IGUxNjg5NDM5ZDk1MGEyMTBiNTBhNjFjYmI1ZjExZTNjNzI0NWQ1
ODkuLjRmMmJlNjJjYTAxZjEwODI1YTIzZjliYWY2ZDExYzc2ZDAwOTE2OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMzI4LDcgKzMyOCw2IEBAIFdlYlBh
Z2VQcml2YXRlOjpXZWJQYWdlUHJpdmF0ZShXZWJQYWdlKiB3ZWJQYWdlLCBXZWJQYWdlQ2xpZW50
KiBjbGllbnQsIGNvbnN0IEluCiAgICAgLCBtX2dlb2xvY2F0aW9uQ2xpZW50KDApCiAgICAgLCBt
X2luUmVnaW9uU2Nyb2xsU3RhcnRpbmdOb2RlKDApCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQotICAgICwgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoZmFsc2UpCiAg
ICAgLCBtX3Jvb3RMYXllckNvbW1pdFRpbWVyKGFkb3B0UHRyKG5ldyBUaW1lcjxXZWJQYWdlUHJp
dmF0ZT4odGhpcywgJldlYlBhZ2VQcml2YXRlOjpyb290TGF5ZXJDb21taXRUaW1lckZpcmVkKSkp
CiAgICAgLCBtX25lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oZmFsc2UpCiAgICAg
LCBtX25lZWRzQ29tbWl0KGZhbHNlKQpAQCAtNTE5NCw3ICs1MTkzLDcgQEAgdm9pZCBXZWJQYWdl
UHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KCkKICAgICAgICAgcmV0dXJuOyAvLyBibGl0Vmlz
aWJsZUNvbnRlbnRzKCkgaW5jbHVkZXMgZHJhd1N1YkxheWVycygpIGluIHRoaXMgY2FzZS4KICAg
ICB9CiAKLSAgICBpZiAoIWRyYXdTdWJMYXllcnMoKSkKKyAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
LT5kLT5kcmF3U3ViTGF5ZXJzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHdlIHVz
ZSB0aGUgY29tcG9zaXRpbmcgc3VyZmFjZSwgd2UgbmVlZCB0byByZS1ibGl0IHRoZQpAQCAtNTIx
MywyOSArNTIxMiw2IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmRyYXdMYXllcnNPbkNvbW1pdCgp
CiAgICAgbV9iYWNraW5nU3RvcmUtPmQtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsKIH0KIAotYm9v
bCBXZWJQYWdlUHJpdmF0ZTo6ZHJhd1N1YkxheWVycyhjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGNvbnRlbnRzKQotewotICAgIEFTU0VSVChQbGF0Zm9ybTo6dXNlcklu
dGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOwotICAgIGlm
ICghUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVu
dFRocmVhZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9jb21wb3NpdG9y
KSB7Ci0gICAgICAgIG1fY29tcG9zaXRvci0+c2V0QmFja2luZ1N0b3JlVXNlc09wZW5HTChtX2Jh
Y2tpbmdTdG9yZS0+ZC0+aXNPcGVuR0xDb21wb3NpdGluZygpKTsKLSAgICAgICAgcmV0dXJuIG1f
Y29tcG9zaXRvci0+ZHJhd0xheWVycyhkc3RSZWN0LCBjb250ZW50cyk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFdlYlBhZ2VQcml2YXRlOjpkcmF3U3ViTGF5ZXJzKCkK
LXsKLSAgICBBU1NFUlQoUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50
KCktPmlzQ3VycmVudFRocmVhZCgpKTsKLSAgICBpZiAoIVBsYXRmb3JtOjp1c2VySW50ZXJmYWNl
VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5kLT5kcmF3U3ViTGF5ZXJzKCk7
Ci19Ci0KIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNjaGVkdWxlUm9vdExheWVyQ29tbWl0KCkKIHsK
ICAgICBpZiAoIW1fZnJhbWVMYXllcnMgfHwgIW1fZnJhbWVMYXllcnMtPmhhc0xheWVyKCkpCkBA
IC01MjcwLDYgKzUyNDYsMjQgQEAgTGF5ZXJSZW5kZXJpbmdSZXN1bHRzIFdlYlBhZ2VQcml2YXRl
OjpsYXN0Q29tcG9zaXRpbmdSZXN1bHRzKCkgY29uc3QKICAgICByZXR1cm4gTGF5ZXJSZW5kZXJp
bmdSZXN1bHRzKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3IoUGFz
c1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IGNvbXBvc2l0b3IpCit7CisgICAgdXNp
bmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOworCisgICAgLy8gVGhlIG1fY29tcG9z
aXRvciBtZW1iZXIgaGFzIHRvIGJlIG1vZGlmaWVkIGR1cmluZyBhIHN5bmMgY2FsbCBmb3IgdGhy
ZWFkCisgICAgLy8gc2FmZSBhY2Nlc3MgdG8gbV9jb21wb3NpdG9yIGFuZCBpdHMgcmVmY291bnQu
CisgICAgaWYgKCF1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRU
aHJlYWQoKSkgeworICAgICAgICB1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5k
aXNwYXRjaFN5bmNNZXNzYWdlKGNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKCZXZWJQYWdlUHJpdmF0
ZTo6c2V0Q29tcG9zaXRvciwgdGhpcywgY29tcG9zaXRvcikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9jb21wb3NpdG9yID0gY29tcG9zaXRvcjsKKworICAgIC8vIFRoZSBwcmV2
aW91cyBjb21wb3NpdG9yLCBpZiBhbnksIGhhcyBub3cgcmVsZWFzZWQgaXQncyBPcGVuR0wgcmVz
b3VyY2VzLAorICAgIC8vIHNvIHdlIGNhbiBzYWZlbHkgZnJlZSB0aGUgb3duZWQgY29udGV4dCwg
aWYgYW55LgorICAgIG1fb3duZWRDb250ZXh0LmNsZWFyKCk7Cit9CisKIHZvaWQgV2ViUGFnZVBy
aXZhdGU6OmNvbW1pdFJvb3RMYXllcihjb25zdCBJbnRSZWN0JiBsYXlvdXRSZWN0Rm9yQ29tcG9z
aXRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50U2l6
ZSYgY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcpCiB7CkBAIC01MzY5LDI4ICs1MzYzLDYgQEAg
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6cm9vdExheWVyQ29tbWl0VGltZXJGaXJlZChUaW1lcjxXZWJQ
YWdlUHJpdmF0ZT4qKQogICAgICAgICBkcmF3TGF5ZXJzT25Db21taXQoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJpdmF0ZTo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0
aXZlKQotewotICAgIC8vIEJhY2tpbmcgc3RvcmUgY2FuIGJlIG51bGwgaGVyZSBiZWNhdXNlIGl0
IGhhcHBlbnMgZHVyaW5nIHRlYXJkb3duLgotICAgIGlmIChtX2lzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSA9PSBhY3RpdmUgfHwgIW1fYmFja2luZ1N0b3JlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IGFjdGl2ZTsKLQotICAg
IGlmICghYWN0aXZlKSB7Ci0gICAgICAgIG1fY29tcG9zaXRvci5jbGVhcigpOwotICAgICAgICBy
ZXNldENvbXBvc2l0aW5nU3VyZmFjZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKCFtX2NvbXBvc2l0b3IpIHsKLSAgICAgICAgbV9jb21wb3NpdG9yID0gYWRvcHRQdHIobmV3
IFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSh0aGlzKSk7Ci0gICAgICAgIG1faXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQWN0aXZlID0gbV9jb21wb3NpdG9yLT5oYXJkd2FyZUNvbXBvc2l0aW5nKCk7
Ci0gICAgICAgIGlmICghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpCi0gICAgICAg
ICAgICBtX2NvbXBvc2l0b3IuY2xlYXIoKTsKLSAgICB9Ci19Ci0KIHZvaWQgV2ViUGFnZVByaXZh
dGU6OnJlc2V0Q29tcG9zaXRpbmdTdXJmYWNlKCkKIHsKICAgICBpZiAoIVBsYXRmb3JtOjp1c2Vy
SW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSkgewpAQCAt
NTQ0OSwxMiArNTQyMSwxMyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRSb290TGF5ZXJDb21w
b3NpdGluZ1RocmVhZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllcgogICAgICAgICAgLy8g
dGhlIHByb2Nlc3Mgb2YgZGVzdHJ1Y3Rpb24gb2YgV2ViUGFnZSB3aGVyZSB3ZSBoYXZlIGFscmVh
ZHkKICAgICAgICAgIC8vIGNhbGxlZCBzeW5jRGVzdHJveUNvbXBvc2l0b3JPbkNvbXBvc2l0aW5n
VGhyZWFkKCkgdG8gZGVzdHJveQogICAgICAgICAgLy8gdGhlIGNvbXBvc2l0b3IuCi0gICAgICAg
ICBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoZmFsc2UpOworICAgICAgICAgZGVz
dHJveUNvbXBvc2l0b3IoKTsKKyAgICAgICAgIHJlc2V0Q29tcG9zaXRpbmdTdXJmYWNlKCk7CiAg
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX2NvbXBvc2l0b3IpCi0gICAgICAg
IHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSh0cnVlKTsKKyAgICAgICAgY3JlYXRl
Q29tcG9zaXRvcigpOwogCiAgICAgLy8gRG9uJ3QgQVNTRVJUKG1fY29tcG9zaXRvcikgaGVyZSBi
ZWNhdXNlIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSh0cnVlKQogICAgIC8vIG1h
eSBub3QgdHVybiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBvbiBzaW5jZSBtX2JhY2tpbmdTdG9y
ZSBpcyAwLgpAQCAtNTQ2Miw5ICs1NDM1LDMwIEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNldFJv
b3RMYXllckNvbXBvc2l0aW5nVGhyZWFkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyCiAg
ICAgICAgIG1fY29tcG9zaXRvci0+c2V0Um9vdExheWVyKGxheWVyKTsKIH0KIAorYm9vbCBXZWJQ
YWdlUHJpdmF0ZTo6Y3JlYXRlQ29tcG9zaXRvcigpCit7CisgICAgbV9vd25lZENvbnRleHQgPSBH
TEVTMkNvbnRleHQ6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX2NvbXBvc2l0b3IgPSBXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OmNyZWF0ZSh0aGlzLCAwKTsKKyAgICBtX2NvbXBvc2l0b3ItPnNldENv
bnRleHQobV9vd25lZENvbnRleHQuZ2V0KCkpOworCisgICAgaWYgKCFtX2NvbXBvc2l0b3ItPmhh
cmR3YXJlQ29tcG9zaXRpbmcoKSkgeworICAgICAgICBkZXN0cm95Q29tcG9zaXRvcigpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQg
V2ViUGFnZVByaXZhdGU6OmRlc3Ryb3lDb21wb3NpdG9yKCkKIHsKLSAgICAgbV9jb21wb3NpdG9y
LmNsZWFyKCk7CisgICAgLy8gV2Ugc2hvdWxkbid0IHJlbGVhc2UgdGhlIGNvbXBvc2l0b3IgdW5s
ZXNzIHdlIGNyZWF0ZWQgYW5kIG93biB0aGUKKyAgICAvLyBjb250ZXh0LiBJZiB0aGUgY29tcG9z
aXRvciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBXZWJQYWdlQ29tcG9zaXRvciBBUEksCisgICAgLy8g
a2VlcCBpdCBhcm91bmQgYW5kIHJldXNlIGl0IGxhdGVyLgorICAgIGlmICghbV9vd25lZENvbnRl
eHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tcG9zaXRvci5jbGVhcigpOworICAgIG1f
b3duZWRDb250ZXh0LmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByaXZhdGU6OnN5bmNEZXN0
cm95Q29tcG9zaXRvck9uQ29tcG9zaXRpbmdUaHJlYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuaAppbmRleCA1ZTMxMDVjMDU0MzlmMGE5MjcyOGQxNmU4ZGViODdhZWFlOGJk
YjkzLi4zY2Q3ZGFjYzdjZmJhZGIzOTQwODZiMzY1NTU1ZThlMTYxYTQ1ZmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaApAQCAtNjIsNiArNjIsNyBAQCBjbGFzcyBCYWNr
aW5nU3RvcmVDbGllbnQ7CiBjbGFzcyBCYWNraW5nU3RvcmVQcml2YXRlOwogY2xhc3MgUmVuZGVy
UXVldWU7CiBjbGFzcyBXZWJQYWdlQ2xpZW50OworY2xhc3MgV2ViUGFnZUNvbXBvc2l0b3I7CiBj
bGFzcyBXZWJQYWdlR3JvdXBMb2FkRGVmZXJyZXI7CiBjbGFzcyBXZWJQYWdlUHJpdmF0ZTsKIGNs
YXNzIFdlYlNldHRpbmdzOwpAQCAtMzM1LDYgKzMzNiw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFdlYktpdDo6QmFja2luZ1N0b3JlQ2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBXZWJL
aXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UmVuZGVy
UXVldWU7CisgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I7CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYktpdDo6V2ViUGFnZUdyb3VwTG9hZERlZmVycmVyOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3Jl
OjpDaHJvbWVDbGllbnRCbGFja0JlcnJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcAppbmRleCAyZjcxN2RmOTJmYTg1ODM5N2EyYmZk
MjFkYWFkZjg5NGMzMmNjNWU1Li4yZGZiYjE4ZDk3NzQ3M2NjNWQ1ZWVhYjJkZWYyZjAyZGI0Y2Nl
YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21w
b3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21w
b3NpdG9yLmNwcApAQCAtMTgsMTMgKzE4LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAor
I2luY2x1ZGUgIldlYlBhZ2VDb21wb3NpdG9yLmgiCisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisjaW5jbHVkZSAiV2ViUGFnZUNvbXBvc2l0b3JDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJQYWdlQ29tcG9zaXRvcl9wLmgiCiAKICNpbmNsdWRlICJCYWNraW5nU3RvcmVfcC5oIgog
I2luY2x1ZGUgIkxheWVyV2ViS2l0VGhyZWFkLmgiCiAjaW5jbHVkZSAiV2ViUGFnZV9wLmgiCiAK
KyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1EZWJ1Z01hY3Jvcy5oPgogI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybUV4ZWN1dGFibGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJy
eVBsYXRmb3JtTWVzc2FnZS5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1lc3NhZ2VD
bGllbnQuaD4KQEAgLTM2LDEzICs0MCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5h
bWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZShXZWJQYWdlUHJpdmF0ZSogcGFn
ZSkKLSAgICA6IG1fd2ViUGFnZShwYWdlKQotICAgICwgbV9jb250ZXh0KEdMRVMyQ29udGV4dDo6
Y3JlYXRlKHBhZ2UpKQotICAgICwgbV9sYXllclJlbmRlcmVyKExheWVyUmVuZGVyZXI6OmNyZWF0
ZShtX2NvbnRleHQuZ2V0KCkpKQotICAgICwgbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMKGZhbHNl
KQorV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUoV2Vi
UGFnZVByaXZhdGUqIHBhZ2UsIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBjbGllbnQpCisgICAg
OiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3dlYlBhZ2UocGFnZSkKICAgICAsIG1fYW5pbWF0
aW9uVGltZXIodGhpcywgJldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6YW5pbWF0aW9uVGltZXJG
aXJlZCkKICAgICAsIG1fdGltZXJDbGllbnQobmV3IFBsYXRmb3JtOjpHZW5lcmljVGltZXJDbGll
bnQoUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRUaW1lckNsaWVudCgpKSkKKyAgICAsIG1f
cGVuZGluZ0FuaW1hdGlvbkZyYW1lKDAuMCkKIHsKICAgICBtX2FuaW1hdGlvblRpbWVyLnNldENs
aWVudChtX3RpbWVyQ2xpZW50KTsKIH0KQEAgLTUzLDIxICs1NiwzMiBAQCBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6On5XZWJQYWdlQ29tcG9zaXRvclByaXZhdGUoKQogICAgIGRlbGV0ZSBtX3Rp
bWVyQ2xpZW50OwogfQogCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0Q29udGV4
dChQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAo
bV9jb250ZXh0ID09IGNvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dCA9
IGNvbnRleHQ7CisgICAgaWYgKCFtX2NvbnRleHQpIHsKKyAgICAgICAgbV9sYXllclJlbmRlcmVy
LmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xheWVyUmVuZGVyZXIg
PSBMYXllclJlbmRlcmVyOjpjcmVhdGUobV9jb250ZXh0KTsKK30KKwogYm9vbCBXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OmhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdAogewotICAgIHJldHVy
biBtX2xheWVyUmVuZGVyZXItPmhhcmR3YXJlQ29tcG9zaXRpbmcoKTsKKyAgICByZXR1cm4gbV9s
YXllclJlbmRlcmVyICYmIG1fbGF5ZXJSZW5kZXJlci0+aGFyZHdhcmVDb21wb3NpdGluZygpOwog
fQogCiB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0Um9vdExheWVyKExheWVyQ29t
cG9zaXRpbmdUaHJlYWQqIHJvb3RMYXllcikKIHsKICAgICBtX3Jvb3RMYXllciA9IHJvb3RMYXll
cjsKLSAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RMYXllcihtX3Jvb3RMYXllci5nZXQoKSk7
Ci19CiAKLXZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpzZXRCYWNraW5nU3RvcmVVc2Vz
T3BlbkdMKGJvb2wgYmFja2luZ1N0b3JlVXNlc09wZW5HTCkKLXsKLSAgICBtX2JhY2tpbmdTdG9y
ZVVzZXNPcGVuR0wgPSBiYWNraW5nU3RvcmVVc2VzT3BlbkdMOwotICAgIG1fbGF5ZXJSZW5kZXJl
ci0+c2V0Q2xlYXJTdXJmYWNlT25EcmF3TGF5ZXJzKCFiYWNraW5nU3RvcmVVc2VzT3BlbkdMKTsK
KyAgICBBU1NFUlQobV9sYXllclJlbmRlcmVyKTsKKyAgICBpZiAobV9sYXllclJlbmRlcmVyKQor
ICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RMYXllcihtX3Jvb3RMYXllci5nZXQoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpjb21taXQoTGF5ZXJXZWJLaXRU
aHJlYWQqIHJvb3RMYXllcikKQEAgLTc4LDE1ICs5Miw0NyBAQCB2b2lkIFdlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZTo6Y29tbWl0KExheWVyV2ViS2l0VGhyZWFkKiByb290TGF5ZXIpCiAgICAgcm9v
dExheWVyLT5jb21taXRPbkNvbXBvc2l0aW5nVGhyZWFkKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpyZW5kZXIoY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50
UmVjdCYgdHJhbnNmb3JtZWRDb250ZW50cykKK3sKKyAgICAvLyBJdCdzIG5vdCBzYWZlIHRvIGNh
bGwgaW50byB0aGUgQmFja2luZ1N0b3JlIGlmIHRoZSBjb21wb3NpdG9yIGhhc24ndCBiZWVuIHNl
dCB5ZXQuCisgICAgLy8gRm9yIHRocmVhZCBzYWZldHksIHdlIGhhdmUgdG8gZG8gaXQgdXNpbmcg
YSByb3VuZC10cmlwIHRvIHRoZSBXZWJLaXQgdGhyZWFkLCBzbyB0aGUKKyAgICAvLyBlbWJlZGRl
ciBtaWdodCBjYWxsIHRoaXMgYmVmb3JlIHRoZSByb3VuZC10cmlwIHRvIFdlYlBhZ2VQcml2YXRl
OjpzZXRDb21wb3NpdG9yKCkgaXMKKyAgICAvLyBkb25lLgorICAgIGlmIChtX3dlYlBhZ2UtPmNv
bXBvc2l0b3IoKSAhPSB0aGlzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgQmFja2lu
Z1N0b3JlIGlzIHRoZSByb290IGxheWVyCisgICAgaWYgKEJhY2tpbmdTdG9yZSogYmFja2luZ1N0
b3JlID0gbV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgYmFja2luZ1N0b3JlLT5k
LT5ibGl0Q29udGVudHMoZHN0UmVjdCwgdHJhbnNmb3JtZWRDb250ZW50cywgdHJ1ZSk7CisgICAg
ZWxzZSB7CisgICAgICAgIEZsb2F0UmVjdCBjb250ZW50cyA9IG1fd2ViUGFnZS0+bWFwRnJvbVRy
YW5zZm9ybWVkRmxvYXRSZWN0KEZsb2F0UmVjdCh0cmFuc2Zvcm1lZENvbnRlbnRzKSk7CisgICAg
ICAgIGRyYXdMYXllcnMoZHN0UmVjdCwgY29udGVudHMpOworICAgIH0KK30KKwogYm9vbCBXZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGU6OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBjb250ZW50cykKIHsKKyAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSAw
LjA7CisKKyAgICBib29sIHNob3VsZENsZWFyID0gZmFsc2U7CisgICAgaWYgKEJhY2tpbmdTdG9y
ZSogYmFja2luZ1N0b3JlID0gbV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgc2hv
dWxkQ2xlYXIgPSAhYmFja2luZ1N0b3JlLT5kLT5pc09wZW5HTENvbXBvc2l0aW5nKCk7CisgICAg
bV9sYXllclJlbmRlcmVyLT5zZXRDbGVhclN1cmZhY2VPbkRyYXdMYXllcnMoc2hvdWxkQ2xlYXIp
OworCiAgICAgbV9sYXllclJlbmRlcmVyLT5kcmF3TGF5ZXJzKGNvbnRlbnRzLCBtX2xheW91dFJl
Y3RGb3JDb21wb3NpdGluZywgbV9jb250ZW50c1NpemVGb3JDb21wb3NpdGluZywgZHN0UmVjdCk7
CiAgICAgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzID0gbV9sYXllclJlbmRlcmVyLT5sYXN0UmVu
ZGVyaW5nUmVzdWx0cygpOwogCiAgICAgaWYgKG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0cy5uZWVk
c0FuaW1hdGlvbkZyYW1lKSB7CiAgICAgICAgIC8vIFVzaW5nIGEgdGltZW91dCBvZiAwIGFjdHVh
bGx5IHdvbid0IHN0YXJ0IGEgdGltZXIsIGl0IHdpbGwgc2VuZCBhIG1lc3NhZ2UuCi0gICAgICAg
IG1fYW5pbWF0aW9uVGltZXIuc3RhcnQoMS4wIC8gNjAuMCk7Ci0gICAgICAgIG1fd2ViUGFnZS0+
dXBkYXRlRGVsZWdhdGVkT3ZlcmxheXMoKTsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAg
ICAgICAgbV9wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSBtX2NsaWVudC0+cmVxdWVzdEFuaW1hdGlv
bkZyYW1lKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9hbmltYXRpb25UaW1lci5z
dGFydCgxLjAgLyA2MC4wKTsKKyAgICAgICAgICAgIG1fd2ViUGFnZS0+dXBkYXRlRGVsZWdhdGVk
T3ZlcmxheXMoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtOTks
MTkgKzE0NSwxMjcgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnJlbGVhc2VMYXll
clJlc291cmNlcygpCiAKIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjphbmltYXRpb25U
aW1lckZpcmVkKCkKIHsKLSAgICBpZiAobV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZS0+ZC0+c2hv
dWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewotICAgICAgICBpZiAobV93ZWJQYWdlLT5t
X2JhY2tpbmdTdG9yZS0+ZC0+aXNEaXJlY3RSZW5kZXJpbmdBbmltYXRpb25NZXNzYWdlU2NoZWR1
bGVkKCkpCisgICAgQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBtX3dlYlBhZ2UtPm1fYmFj
a2luZ1N0b3JlOworICAgIGlmICghYmFja2luZ1N0b3JlKSB7CisgICAgICAgIGRyYXdMYXllcnMo
bV93ZWJQYWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZUJsaXR0ZWREZXN0aW5hdGlvblJlY3Qo
KSwKKyAgICAgICAgICAgICAgICAgICBJbnRSZWN0KG1fd2ViUGFnZS0+Y2xpZW50KCktPnVzZXJJ
bnRlcmZhY2VCbGl0dGVkVmlzaWJsZUNvbnRlbnRzUmVjdCgpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoYmFja2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5kZXJpbmdU
b1dpbmRvdygpKSB7CisgICAgICAgIGlmIChiYWNraW5nU3RvcmUtPmQtPmlzRGlyZWN0UmVuZGVy
aW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOyAvLyBk
b24ndCBzZW5kIG5ldyBtZXNzYWdlcyBhcyBsb25nIGFzIHdlIGhhdmVuJ3QgcmVyZW5kZXJlZAog
Ci0gICAgICAgIG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQtPnNldERpcmVjdFJlbmRlcmlu
Z0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQoKTsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKAotICAgICAg
ICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAotICAg
ICAgICAgICAgICAgICZCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJWaXNpYmxlQ29udGVudHMs
IG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQpKTsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNl
IEJsYWNrQmVycnk6OlBsYXRmb3JtOworCisgICAgICAgIGJhY2tpbmdTdG9yZS0+ZC0+c2V0RGly
ZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCgpOworICAgICAgICB3ZWJLaXRU
aHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoTWVzc2FnZShjcmVhdGVNZXRob2RDYWxsTWVz
c2FnZSgmQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyVmlzaWJsZUNvbnRlbnRzLCBiYWNraW5n
U3RvcmUtPmQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3dlYlBhZ2UtPmJsaXRW
aXNpYmxlQ29udGVudHMoKTsKIH0KIAordm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmNv
bXBvc2l0b3JEZXN0cm95ZWQoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGll
bnQtPmNvbXBvc2l0b3JEZXN0cm95ZWQoKTsKKworICAgIG1fY2xpZW50ID0gMDsKK30KKworV2Vi
UGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VDb21wb3NpdG9yKFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2VD
b21wb3NpdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOworCisgICAgUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4gdG1w
ID0gV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpjcmVhdGUocGFnZS0+ZCwgY2xpZW50KTsKKwor
ICAgIC8vIEtlZXAgb25lIHJlZiBvdXJzZWx2ZXMuLi4KKyAgICBkID0gdG1wLmdldCgpOworICAg
IGQtPnJlZigpOworCisgICAgLy8gLi4uQW5kIHBhc3Mgb25lIHJlZiB0byB0aGUgd2ViIHBhZ2Uu
CisgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGNvbXBvc2l0b3Igd2lsbCBiZSBhcm91bmQg
Zm9yIGFzIGxvbmcgYXMgaXQncworICAgIC8vIG5lZWRlZC4gVW5mb3J0dW5hdGVseSBSZWZQdHI8
VD4gaXMgbm90IHB1YmxpYywgc28gd2UgaGF2ZSBkZWNsYXJlIHRvCisgICAgLy8gcmVzb3J0IHRv
IG1hbnVhbCByZWZjb3VudGluZy4KKyAgICB3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRp
c3BhdGNoTWVzc2FnZShjcmVhdGVNZXRob2RDYWxsTWVzc2FnZSgmV2ViUGFnZVByaXZhdGU6OnNl
dENvbXBvc2l0b3IsIGQtPnBhZ2UoKSwgdG1wKSk7Cit9CisKK1dlYlBhZ2VDb21wb3NpdG9yOjp+
V2ViUGFnZUNvbXBvc2l0b3IoKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTsKKworICAgIHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNz
YWdlKGNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKCZXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRv
ciwgZC0+cGFnZSgpLCBQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4oMCkpKTsK
KyAgICBkLT5jb21wb3NpdG9yRGVzdHJveWVkKCk7CisgICAgZC0+ZGVyZWYoKTsKK30KKworV2Vi
UGFnZUNvbXBvc2l0b3JDbGllbnQqIFdlYlBhZ2VDb21wb3NpdG9yOjpjbGllbnQoKSBjb25zdAor
eworICAgIHJldHVybiAwOworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpwcmVwYXJlRnJh
bWUoUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIGNvbnRleHQsIGRvdWJsZSB0aW1l
c3RhbXApCit7CisgICAgZC0+c2V0Q29udGV4dChjb250ZXh0KTsKK30KKwordm9pZCBXZWJQYWdl
Q29tcG9zaXRvcjo6cmVuZGVyKFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwgY29uc3QgUGxhdGZvcm06Oklu
dFJlY3QmIGNvbnRlbnRzKQoreworICAgIGQtPnNldENvbnRleHQoY29udGV4dCk7CisgICAgZC0+
cmVuZGVyKGRzdFJlY3QsIGNvbnRlbnRzKTsKK30KKwordm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6
Y2xlYW51cChQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCogY29udGV4dCkKK3sKKyAg
ICBkLT5zZXRDb250ZXh0KDApOworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpjb250ZXh0
TG9zdCgpCit7CisgICAgLy8gVGhpcyBtZXRob2QgbmVlZHMgdG8gZGVsZXRlIHRoZSBjb21wb3Np
dG9yIGluIGEgd2F5IHRoYXQgbm90IHRyaWVzIHRvCisgICAgLy8gdXNlIGFueSBPcGVuR0wgY2Fs
bHMgKHRoZSBjb250ZXh0IGlzIGdvbmUsIHNvIHdlIGNhbid0IGFuZCBkb24ndCBuZWVkIHRvCisg
ICAgLy8gZnJlZSBhbnkgT3BlbkdMIHJlc291cmNlcy4KKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKKwor
I2Vsc2UgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCituYW1lc3BhY2UgQmxhY2tC
ZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VD
b21wb3NpdG9yKFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBjbGllbnQp
CisgICAgOiBkKDApCit7Cit9CisKK1dlYlBhZ2VDb21wb3NpdG9yOjp+V2ViUGFnZUNvbXBvc2l0
b3IoKQoreworfQorCitXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogV2ViUGFnZUNvbXBvc2l0b3I6
OmNsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViUGFnZUNvbXBv
c2l0b3I6OnByZXBhcmVGcmFtZShQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCosIGRv
dWJsZSB0aW1lc3RhbXApCit7Cit9CisKK3ZvaWQgV2ViUGFnZUNvbXBvc2l0b3I6OnJlbmRlcihQ
bGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCosIGNvbnN0IFBsYXRmb3JtOjpJbnRSZWN0
JiBkc3RSZWN0LCBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgY29udGVudHMpCit7Cit9CisKK3Zv
aWQgV2ViUGFnZUNvbXBvc2l0b3I6OmNsZWFudXAoUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNv
bnRleHQqKQoreworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpjb250ZXh0TG9zdCgpCit7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3Np
dG9yLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTFiZjI4NDFmYTk5Y2U2YmFlNzEyMjViYjk2ZWIzMmRhNmEwNDQ5MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZUNvbXBv
c2l0b3IuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQorICovCisKKyNpZm5kZWYgV2ViUGFnZUNvbXBvc2l0b3JfaAorI2RlZmluZSBXZWJQ
YWdlQ29tcG9zaXRvcl9oCisKKyNpbmNsdWRlICJCbGFja0JlcnJ5R2xvYmFsLmgiCisKKyNpbmNs
dWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HTEVTMkNvbnRleHQuaD4KKyNpbmNsdWRlIDxCbGFja0Jl
cnJ5UGxhdGZvcm1HcmFwaGljcy5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVByaW1p
dGl2ZXMuaD4KKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2U7CitjbGFzcyBXZWJQYWdlQ29tcG9zaXRvckNsaWVudDsKK2NsYXNzIFdl
YlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTsKKworY2xhc3MgQkxBQ0tCRVJSWV9FWFBPUlQgV2ViUGFn
ZUNvbXBvc2l0b3IgeworcHVibGljOgorICAgIFdlYlBhZ2VDb21wb3NpdG9yKFdlYlBhZ2UqLCBX
ZWJQYWdlQ29tcG9zaXRvckNsaWVudCopOworICAgIHZpcnR1YWwgfldlYlBhZ2VDb21wb3NpdG9y
KCk7CisKKyAgICBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogY2xpZW50KCkgY29uc3Q7CisKKyAg
ICB2b2lkIHByZXBhcmVGcmFtZShQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCosIGRv
dWJsZSB0aW1lc3RhbXApOworCisgICAgLy8gRklYTUU6IGRzdFJlY3Qgc2hvdWxkIGJlIGEgUGxh
dGZvcm06OlRyYW5zZm9ybWF0aW9uTWF0cml4IGluc3RlYWQuIFBSMTQyNjI4CisgICAgdm9pZCBy
ZW5kZXIoUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqLCBjb25zdCBQbGF0Zm9ybTo6
SW50UmVjdCYgZHN0UmVjdCwgY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGNvbnRlbnRzKTsKKwor
ICAgIHZvaWQgY2xlYW51cChQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCopOworCisg
ICAgdm9pZCBjb250ZXh0TG9zdCgpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2VDb21wb3NpdG9y
UHJpdmF0ZSAqZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2Ug
QmxhY2tCZXJyeQorCisjZW5kaWYgLy8gV2ViUGFnZUNvbXBvc2l0b3JfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvckNsaWVudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY0ZDlmOTY4YzczYTgyNTQ4ZmNlYWE4ZmRlMTcwMTYzM2Q4ZjRiOWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21wb3Np
dG9yQ2xpZW50LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50X2gKKyNk
ZWZpbmUgV2ViUGFnZUNvbXBvc2l0b3JDbGllbnRfaAorCisjaW5jbHVkZSAiQmxhY2tCZXJyeUds
b2JhbC5oIgorCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViUGFnZTsKKworY2xhc3MgQkxBQ0tCRVJSWV9FWFBPUlQgV2ViUGFnZUNvbXBvc2l0
b3JDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlBhZ2VDb21wb3NpdG9yQ2xpZW50
KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tcG9zaXRvckRlc3Ryb3llZCgpID0gMDsKKwor
ICAgIHZpcnR1YWwgZG91YmxlIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZShkb3VibGUgYW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENsZWFudXAoKSA9IDA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKKworI2VuZGlmIC8vIFdlYlBh
Z2VDb21wb3NpdG9yQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZUNvbXBvc2l0b3JfcC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlQ29tcG9zaXRvcl9wLmgKaW5kZXggMDAwMWM1MzkwZGJmMWNjZmVjZThlMDBhNDM4
YWNiOGExOTY2ZTUzYy4uMmNhYzkyNDQwY2Q1YzU3OWNjY2E4Y2E5YzZhNDgwYjJkYWFjZDVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRv
cl9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRv
cl9wLmgKQEAgLTIxLDEyICsyMSwxMyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogCi0jaW5jbHVkZSAiR0xFUzJDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5ZXJDb21wb3Np
dGluZ1RocmVhZC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXIuaCIKIAorI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybUdMRVMyQ29udGV4dC5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0
Zm9ybVRpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zNiwyMiArMzcsMzIgQEAgY2xhc3MgTGF5ZXJXZWJLaXRUaHJlYWQ7CiBuYW1lc3BhY2Ug
QmxhY2tCZXJyeSB7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViUGFnZUNvbXBvc2l0
b3JDbGllbnQ7CiBjbGFzcyBXZWJQYWdlUHJpdmF0ZTsKIAotLy8gVGhpcyBjbGFzcyBtYXkgb25s
eSBiZSB1c2VkIG9uIHRoZSBjb21wb3NpdGluZyB0aHJlYWQuCi1jbGFzcyBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGUgeworLy8gVGhpcyBjbGFzcyBtYXkgb25seSBiZSB1c2VkIG9uIHRoZSBjb21w
b3NpdGluZyB0aHJlYWQuIFNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgdGhyZWFkc2FmZXJlZmNv
dW50ZWQuCitjbGFzcyBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IHsKIHB1YmxpYzoKLSAgICBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGUoV2ViUGFnZVByaXZhdGUqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGU+IGNyZWF0ZShXZWJQYWdlUHJpdmF0ZSogcGFnZSwgV2ViUGFn
ZUNvbXBvc2l0b3JDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKHBhZ2UsIGNsaWVudCkpOworICAgIH0KKwog
ICAgIH5XZWJQYWdlQ29tcG9zaXRvclByaXZhdGUoKTsKIAogICAgIGJvb2wgaGFyZHdhcmVDb21w
b3NpdGluZygpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRSb290TGF5ZXIoV2ViQ29yZTo6TGF5ZXJD
b21wb3NpdGluZ1RocmVhZCopOworICAgIFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0
KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisgICAgdm9pZCBzZXRDb250
ZXh0KFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0Kik7CiAKLSAgICB2b2lkIHNldEJh
Y2tpbmdTdG9yZVVzZXNPcGVuR0woYm9vbCk7CisgICAgdm9pZCBzZXRSb290TGF5ZXIoV2ViQ29y
ZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZCopOwogCiAgICAgdm9pZCBjb21taXQoV2ViQ29yZTo6
TGF5ZXJXZWJLaXRUaHJlYWQqIHJvb3RMYXllclByb3h5KTsKIAorICAgIC8vIFRoaXMgaXMgbWFw
cGVkIGZyb20gdGhlIHB1YmxpYyBBUEksIHRodXMgdGFrZXMgdHJhbnNmb3JtZWQgY29udGVudHMK
KyAgICB2b2lkIHJlbmRlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkc3RSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiB0cmFuc2Zvcm1lZENvbnRlbnRzKTsKKworICAgIC8vIFJlbmRlciBl
dmVyeXRoaW5nIGJ1dCB0aGUgcm9vdCBsYXllcgogICAgIGJvb2wgZHJhd0xheWVycyhjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBkc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNvbnRl
bnRzKTsKIAogICAgIFdlYkNvcmU6OkludFJlY3QgbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmc7IH0KQEAgLTYzLDIyICs3
NCwzMSBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6TGF5ZXJSZW5kZXJpbmdSZXN1bHRzIGxhc3RD
b21wb3NpdGluZ1Jlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDb21wb3NpdGluZ1Jlc3Vs
dHM7IH0KICAgICB2b2lkIHNldExhc3RDb21wb3NpdGluZ1Jlc3VsdHMoY29uc3QgV2ViQ29yZTo6
TGF5ZXJSZW5kZXJpbmdSZXN1bHRzJiByZXN1bHRzKSB7IG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0
cyA9IHJlc3VsdHM7IH0KIAorICAgIGRvdWJsZSBhbmltYXRpb25GcmFtZVRpbWVzdGFtcCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGVuZGluZ0FuaW1hdGlvbkZyYW1lOyB9CisKICAgICB2b2lkIHJlbGVh
c2VMYXllclJlc291cmNlcygpOwogCisgICAgV2ViUGFnZVByaXZhdGUqIHBhZ2UoKSBjb25zdCB7
IHJldHVybiBtX3dlYlBhZ2U7IH0KKyAgICBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICB2b2lkIGNvbXBvc2l0b3JEZXN0cm95
ZWQoKTsKKworcHJvdGVjdGVkOgorICAgIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZShXZWJQYWdl
UHJpdmF0ZSosIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50Kik7CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAKKyAgICBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCog
bV9jbGllbnQ7CiAgICAgV2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZTsKLSAgICAvLyBQbGVhc2Ug
bWFpbnRhaW4gdGhpcyBvcmRlciBzaW5jZSBtX2xheWVyUmVuZGVyZXIgZGVwZW5kcyBvbiBtX2Nv
bnRleHQgaW4gaW5pdGlhbGl6YXRpb24gbGlzdC4KLSAgICBPd25QdHI8R0xFUzJDb250ZXh0PiBt
X2NvbnRleHQ7CisgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIG1fY29udGV4
dDsKICAgICBPd25QdHI8V2ViQ29yZTo6TGF5ZXJSZW5kZXJlcj4gbV9sYXllclJlbmRlcmVyOwog
ICAgIFJlZlB0cjxXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkPiBtX3Jvb3RMYXllcjsK
ICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nOwogICAgIFdl
YkNvcmU6OkludFNpemUgbV9jb250ZW50c1NpemVGb3JDb21wb3NpdGluZzsKICAgICBXZWJDb3Jl
OjpMYXllclJlbmRlcmluZ1Jlc3VsdHMgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzOwotICAgIGJv
b2wgbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpU
aW1lcjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IG1fYW5pbWF0aW9uVGltZXI7CiAgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlRpbWVyQ2xpZW50KiBtX3RpbWVyQ2xpZW50OworICAgIGRvdWJs
ZSBtX3BlbmRpbmdBbmltYXRpb25GcmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggZWI1MGIwNjY3YzY2
NTE5YjEzZTNjYmQ3YjI1NmNmYmE5ODI3ZjAxOS4uNjk2NjQ1MWEzODBjODllYTA2NWMwMGUwZGJj
N2U3YTZhMmEyYjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5o
CkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSAiR0xFUzJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlci5oIgogI2VuZGlmCiAjaW5jbHVkZSAiUGFnZUNsaWVudEJsYWNr
QmVycnkuaCIKQEAgLTgyLDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdlYkNvcmU6
OlBhZ2UqIGNvcmUoY29uc3QgV2ViUGFnZSopOwogCisgICAgV2ViUGFnZUNsaWVudCogY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKwogICAgIHZvaWQgaW5pdChjb25zdCBXZWJT
dHJpbmcmIHBhZ2VHcm91cE5hbWUpOwogICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChXZWJDb3Jl
OjpQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50Jik7CkBAIC0zNjgsMTQgKzM3MSwxNCBAQCBwdWJsaWM6CiAg
ICAgLy8gVGhyZWFkIHNhZmUuCiAgICAgdm9pZCByZXNldENvbXBvc2l0aW5nU3VyZmFjZSgpOwog
ICAgIHZvaWQgZHJhd0xheWVyc09uQ29tbWl0KCk7IC8vIEluY2x1ZGluZyBiYWNraW5nIHN0b3Jl
IGJsaXQuCi0gICAgYm9vbCBkcmF3U3ViTGF5ZXJzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRz
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGVudHMpOwotICAgIGJvb2wgZHJh
d1N1YkxheWVycygpOyAvLyBEcmF3IHRoZW0gYXQgbGFzdCBrbm93biBwb3NpdGlvbi4KIAogICAg
IC8vIENvbXBvc2l0aW5nIHRocmVhZC4KICAgICB2b2lkIHNldFJvb3RMYXllckNvbXBvc2l0aW5n
VGhyZWFkKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsKICAgICB2b2lkIGNvbW1p
dFJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpOwotICAgIHZvaWQgc2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wpOwot
ICAgIGJvb2wgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3QgeyByZXR1cm4g
bV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7IH0KKyAgICBib29sIGlzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRvcjsgfQorICAg
IFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSogY29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tcG9zaXRvci5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q29tcG9zaXRvcihQYXNzUmVmUHRyPFdl
YlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4pOworICAgIGJvb2wgY3JlYXRlQ29tcG9zaXRvcigpOwog
ICAgIHZvaWQgZGVzdHJveUNvbXBvc2l0b3IoKTsKICAgICB2b2lkIHN5bmNEZXN0cm95Q29tcG9z
aXRvck9uQ29tcG9zaXRpbmdUaHJlYWQoKTsKICAgICB2b2lkIGRlc3Ryb3lMYXllclJlc291cmNl
cygpOwpAQCAtNTAyLDcgKzUwNSwxMiBAQCBwdWJsaWM6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CiAg
ICAgT3duUHRyPEZyYW1lTGF5ZXJzPiBtX2ZyYW1lTGF5ZXJzOyAvLyBXZWJLaXQgdGhyZWFkIG9u
bHkuCi0gICAgT3duUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4gbV9jb21wb3NpdG9yOyAv
LyBDb21wb3NpdGluZyB0aHJlYWQgb25seS4KKworICAgIC8vIENvbXBvc2l0aW5nIHRocmVhZCBv
bmx5LCB1c2VkIG9ubHkgd2hlbiB0aGUgV2ViS2l0IGxheWVyIGNyZWF0ZWQgdGhlIGNvbnRleHQu
CisgICAgLy8gSWYgdGhlIEFQSSBjbGllbnQgY3JlYXRlZCB0aGUgY29udGV4dCwgdGhpcyB3aWxs
IGJlIG51bGwuCisgICAgT3duUHRyPEdMRVMyQ29udGV4dD4gbV9vd25lZENvbnRleHQ7CisKKyAg
ICBSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPiBtX2NvbXBvc2l0b3I7IC8vIENvbXBv
c2l0aW5nIHRocmVhZCBvbmx5LgogICAgIE93blB0cjxXZWJDb3JlOjpUaW1lcjxXZWJQYWdlUHJp
dmF0ZT4gPiBtX3Jvb3RMYXllckNvbW1pdFRpbWVyOwogICAgIGJvb2wgbV9uZWVkc09uZVNob3RE
cmF3aW5nU3luY2hyb25pemF0aW9uOwogICAgIGJvb2wgbV9uZWVkc0NvbW1pdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133595</attachid>
            <date>2012-03-23 17:28:47 -0700</date>
            <delta_ts>2012-03-23 18:12:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81121-20120324012845.patch</filename>
            <type>text/plain</type>
            <size>34362</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExOTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwNWU2OWYwMTcwMGJjZTkxNjBjNzEyZmU4NzNhMmYwZDFlMWMyZDFjLi44OGY4OGFmN2Zi
MDU2MmMwNzdlZTJlYTM3YjE3NGM5NWIwMDFlZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAxMi0wMy0yMyAgQXJ2aWQgTmlsc3NvbiAgPGFuaWxz
c29uQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIEFkZCBXZWJQYWdlQ29tcG9zaXRv
ciBjbGFzcyB0byBCbGFja0JlcnJ5IFdlYktpdCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMTIxCisgICAgICAgIFJJTSBQUjogMTM2Njg3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGlkZWEg
aXMgZm9yIHRoZSBBUEkgY2xpZW50IHRvIHVzZSBhIFdlYlBhZ2VDb21wb3NpdG9yIG9iamVjdCB0
bworICAgICAgICByZW5kZXIgdGhlIFdlYlBhZ2Ugd2hlbiB0aGVyZSdzIG5vIHNjcmVlbiB3aW5k
b3cgYXZhaWxhYmxlLgorCisgICAgICAgIFRoZSBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUgYmVj
b21lcyByZWZlcmVuY2UgY291bnRlZCBpbiBvcmRlciB0byBiZQorICAgICAgICBrZXB0IGFsaXZl
IGVpdGhlciBiZWNhdXNlIGl0J3MgdXNlZCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgbGF5
ZXJzCisgICAgICAgIG9yIHVzZWQgZm9yIHRoZSBXZWJQYWdlQ29tcG9zaXRvciBBUEkuIEl0IGNh
biBzdGlsbCB3b3JrIHN0YW5kYWxvbmUuCisKKyAgICAgICAgQ2xlYW4gdXAgc29tZSBjb2RlIC0g
bm8gbmVlZCB0byBrZWVwIHRyYWNrIG9mIGEgc2VwYXJhdGUgYm9vbGVhbgorICAgICAgICBXZWJQ
YWdlUHJpdmF0ZTo6bV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgd2hlbiB0aGUgc3Rh
dGUgb2YKKyAgICAgICAgbV9jb21wb3NpdG9yIGNhbiB0ZWxsIHlvdS4KKworICAgICAgICBBbHNv
IHJlbW92ZSBkdXBsaWNhdGVkIGNvZGUgZnJvbSBXZWJQYWdlUHJpdmF0ZSAtIGdvIGRpcmVjdGx5
IHRvIHRoZQorICAgICAgICBjb21wb3NpdG9yIG9iamVjdCBpbnN0ZWFkLCBpZiB5b3UgbmVlZCB0
byBkcmF3IHRoZSBBQyBsYXllcnMuCisKKyAgICAgICAgUmV2aWV3ZWQgaW50ZXJuYWxseSBieSBS
b2JpbiBDYW8gYW5kIHRoZSBoYXNCbGl0Sm9icy9ibGl0T25JZGxlIGNoYW5nZQorICAgICAgICBi
eSBGaWxpcCBTcGFjZWsuCisKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6QmFja2luZ1N0b3JlOjpoYXNCbGl0Sm9icyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZTo6YmxpdE9uSWRsZSk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50
cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmRy
YXdTdWJMYXllcnMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQ
cml2YXRlOjpkcmF3QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzdXJmYWNlU2l6ZSk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OmJ1ZmZlcik6
CisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpXZWJQYWdlUHJpdmF0ZTo6V2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3IpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6c2V0Um9vdExheWVyQ29tcG9z
aXRpbmdUaHJlYWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0
ZTo6Y3JlYXRlQ29tcG9zaXRvcik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlOjpkZXN0cm95Q29tcG9zaXRvcik6CisgICAgICAgICogQXBpL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OldlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZTo6c2V0Q29udGV4dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VD
b21wb3NpdG9yUHJpdmF0ZTo6aGFyZHdhcmVDb21wb3NpdGluZyk6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0Um9vdExheWVyKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpyZW5k
ZXIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZh
dGU6OmRyYXdMYXllcnMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OmFuaW1hdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmNvbXBvc2l0b3JEZXN0cm95ZWQp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6V2ViUGFn
ZUNvbXBvc2l0b3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9z
aXRvcjo6fldlYlBhZ2VDb21wb3NpdG9yKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZUNvbXBvc2l0b3I6OmNsaWVudCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VDb21wb3NpdG9yOjpwcmVwYXJlRnJhbWUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6cmVuZGVyKToKKyAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I6OmNsZWFudXApOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRvcjo6Y29udGV4dExvc3QpOgorICAgICAgICAqIEFw
aS9XZWJQYWdlQ29tcG9zaXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBBcGkvV2ViUGFnZUNvbXBv
c2l0b3JDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogQXBpL1dlYlBhZ2VDb21wb3NpdG9yX3Au
aDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ29tcG9zaXRv
clByaXZhdGU6OmNvbnRleHQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
Q29tcG9zaXRvclByaXZhdGU6OmFuaW1hdGlvbkZyYW1lVGltZXN0YW1wKToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpwYWdlKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpjbGllbnQp
OgorICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6V2ViUGFnZVByaXZhdGU6OmNsaWVudCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VQcml2YXRlOjppc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6Y29tcG9zaXRvcik6CisKIDIw
MTItMDMtMjIgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUuY29tLmNuPgog
CiAgICAgICAgIFtCbGFja0JlcnJ5XSBOZWVkIHRvIHN0b3JlIHRoZSBtZXRhIGluZm8gb2YgYSBw
YWdlIGluIHRoZSBWaWV3U3RhdGUgb2YgdGhlIGhpc3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcAppbmRleCBlNTgwNmIzYWE3MzAyZDU2OGQ4N2M5
MGFhMmQxODAwYTI4MWQzZDI5Li45YzMyMWVkMjY1Mjg4YjdhODQzYzM3ODFiOWQwZGYxMGVkMWI2
MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3Bw
CkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiU3VyZmFjZVBvb2wuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlBhZ2VD
b21wb3NpdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZUNvbXBvc2l0b3JfcC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VfcC5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAKQEAgLTEyNDAs
NiArMTI0MiwxNiBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRDb250ZW50cyhjb25z
dCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwKICAgICB9CiAKICAgICBpZiAobV9kZWZlcnNC
bGl0ICYmICFmb3JjZSkgeworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAg
ICAgLy8gSWYgdGhlcmUncyBhIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50LCBsZXQgaXQgc2NoZWR1
bGUgdGhlIGJsaXQuCisgICAgICAgIGlmIChXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUqIGNvbXBv
c2l0b3IgPSBtX3dlYlBhZ2UtPmQtPmNvbXBvc2l0b3IoKSkgeworICAgICAgICAgICAgaWYgKFdl
YlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBjbGllbnQgPSBjb21wb3NpdG9yLT5jbGllbnQoKSkgewor
ICAgICAgICAgICAgICAgIGNsaWVudC0+aW52YWxpZGF0ZShjb21wb3NpdG9yLT5hbmltYXRpb25G
cmFtZVRpbWVzdGFtcCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIG1faGFzQmxpdEpvYnMgPSB0cnVlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ0NSw3ICsxNDU3LDggQEAgdm9pZCBCYWNraW5nU3Rv
cmVQcml2YXRlOjpibGl0Q29udGVudHMoY29uc3QgUGxhdGZvcm06OkludFJlY3QmIGRzdFJlY3Qs
CiAgICAgaWYgKGJsaXR0aW5nRGlyZWN0bHlUb0NvbXBvc2l0aW5nV2luZG93KSB7CiAgICAgICAg
IFdlYkNvcmU6OkZsb2F0UmVjdCBjb250ZW50c1JlY3QgPSBtX3dlYlBhZ2UtPmQtPm1hcEZyb21U
cmFuc2Zvcm1lZEZsb2F0UmVjdCgKICAgICAgICAgICAgIFdlYkNvcmU6OkZsb2F0UmVjdChXZWJD
b3JlOjpJbnRSZWN0KGNvbnRlbnRzKSkpOwotICAgICAgICBtX3dlYlBhZ2UtPmQtPmRyYXdTdWJM
YXllcnMoZHN0UmVjdCwgY29udGVudHNSZWN0KTsKKyAgICAgICAgaWYgKFdlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZSogY29tcG9zaXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKQorICAg
ICAgICAgICAgY29tcG9zaXRvci0+ZHJhd0xheWVycyhkc3RSZWN0LCBjb250ZW50c1JlY3QpOwog
ICAgIH0gZWxzZSBpZiAoY29tcG9zaXRpbmdTdXJmYWNlKQogICAgICAgICBibGVuZENvbXBvc2l0
aW5nU3VyZmFjZShkc3RSZWN0KTsKIApAQCAtMjUxOSw2ICsyNTMyLDkgQEAgYm9vbCBCYWNraW5n
U3RvcmVQcml2YXRlOjpkcmF3U3ViTGF5ZXJzKCkKICAgICBpZiAobV9zdXNwZW5kQmFja2luZ1N0
b3JlVXBkYXRlcyAmJiAhaXNPcGVuR0xDb21wb3NpdGluZygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBpZiAoIW1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICBQbGF0Zm9ybTo6SW50UmVjdCBkc3QgPSBtX3dlYlBhZ2UtPmNsaWVu
dCgpLT51c2VySW50ZXJmYWNlQmxpdHRlZERlc3RpbmF0aW9uUmVjdCgpOwogICAgIGlmIChkc3Qu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTI2LDcgKzI1NDIsNyBAQCBi
b29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OmRyYXdTdWJMYXllcnMoKQogICAgIFBsYXRmb3JtOjpJ
bnRSZWN0IHNyYyA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPnVzZXJJbnRlcmZhY2VCbGl0dGVkVmlz
aWJsZUNvbnRlbnRzUmVjdCgpOwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb250ZW50c1JlY3Qg
PSBtX3dlYlBhZ2UtPmQtPm1hcEZyb21UcmFuc2Zvcm1lZEZsb2F0UmVjdCgKICAgICAgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0KFdlYkNvcmU6OkludFJlY3Qoc3JjKSkpOwotICAgIHJldHVybiBtX3dl
YlBhZ2UtPmQtPmRyYXdTdWJMYXllcnMoZHN0LCBjb250ZW50c1JlY3QpOworICAgIHJldHVybiBt
X3dlYlBhZ2UtPmQtPmNvbXBvc2l0b3IoKS0+ZHJhd0xheWVycyhkc3QsIGNvbnRlbnRzUmVjdCk7
CiB9CiAKIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0SWZOZWVk
ZWQoKQpAQCAtMjU1Nyw3ICsyNTczLDggQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpkcmF3
QW5kQmxlbmRMYXllcnNGb3JEaXJlY3RSZW5kZXJpbmcoY29uc3QgUGxhdGZvcm06OkkKIAogICAg
IC8vIENoZWNrIGlmIHJlbmRlcmluZyBjYXVzZWQgYSBjb21taXQgYW5kIHdlIG5lZWQgdG8gcmVk
cmF3IHRoZSBsYXllcnMuCiAgICAgbV9uZWVkc0RyYXdMYXllcnNPbkNvbW1pdCA9IGZhbHNlOwot
ICAgIG1fd2ViUGFnZS0+ZC0+ZHJhd1N1YkxheWVycyhkc3RSZWN0LCB1bnRyYW5zZm9ybWVkQ29u
dGVudHNSZWN0KTsKKyAgICBpZiAoV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKiBjb21wb3NpdG9y
ID0gbV93ZWJQYWdlLT5kLT5jb21wb3NpdG9yKCkpCisgICAgICAgIGNvbXBvc2l0b3ItPmRyYXdM
YXllcnMoZHN0UmVjdCwgdW50cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCk7CiAKICNpZiBFTkFCTEVf
Q09NUE9TSVRJTkdfU1VSRkFDRQogICAgIC8vIFNlZSBhYm92ZSBjb21tZW50IGFib3V0IHN5bmMg
Y2FsbGluZywgdmlzaWJsZUNvbnRlbnRzUmVjdCgpIGlzIHNhZmUgaGVyZS4KQEAgLTI2ODAsNiAr
MjY5NywxMyBAQCB2b2lkIEJhY2tpbmdTdG9yZTo6c2V0RGVmZXJzQmxpdChib29sIGIpCiAKIGJv
b2wgQmFja2luZ1N0b3JlOjpoYXNCbGl0Sm9icygpIGNvbnN0CiB7CisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorICAgIC8vIElmIHRoZXJlJ3MgYSBXZWJQYWdlQ29tcG9zaXRvckNs
aWVudCwgbGV0IGl0IHNjaGVkdWxlIHRoZSBibGl0LgorICAgIFdlYlBhZ2VDb21wb3NpdG9yUHJp
dmF0ZSogY29tcG9zaXRvciA9IGQtPm1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigpOworICAgIGlm
IChjb21wb3NpdG9yICYmIGNvbXBvc2l0b3ItPmNsaWVudCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKKwogICAgIC8vIE5vcm1hbGx5LCB0aGlzIHdvdWxkIGJlIGNhbGxlZCBmcm9t
IHRoZSBjb21wb3NpdGluZyB0aHJlYWQsCiAgICAgLy8gYW5kIHRoZSBmbGFnIGlzIHNldCBvbiB0
aGUgY29tcG9zaXRpbmcgdGhyZWFkLCBzbyBubyBuZWVkIGZvcgogICAgIC8vIHN5bmNocm9uaXph
dGlvbi4KQEAgLTI2ODgsNiArMjcxMiwxMyBAQCBib29sIEJhY2tpbmdTdG9yZTo6aGFzQmxpdEpv
YnMoKSBjb25zdAogCiB2b2lkIEJhY2tpbmdTdG9yZTo6YmxpdE9uSWRsZSgpCiB7CisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIC8vIElmIHRoZXJlJ3MgYSBXZWJQYWdlQ29t
cG9zaXRvckNsaWVudCwgbGV0IGl0IHNjaGVkdWxlIHRoZSBibGl0LgorICAgIFdlYlBhZ2VDb21w
b3NpdG9yUHJpdmF0ZSogY29tcG9zaXRvciA9IGQtPm1fd2ViUGFnZS0+ZC0+Y29tcG9zaXRvcigp
OworICAgIGlmIChjb21wb3NpdG9yICYmIGNvbXBvc2l0b3ItPmNsaWVudCgpKQorICAgICAgICBy
ZXR1cm47CisjZW5kaWYKKwogICAgIGQtPmJsaXRWaXNpYmxlQ29udGVudHModHJ1ZSAvKmZvcmNl
Ki8pOwogfQogCkBAIC0yNjk2LDYgKzI3MjcsMTEgQEAgUGxhdGZvcm06OkludFNpemUgQmFja2lu
Z1N0b3JlUHJpdmF0ZTo6c3VyZmFjZVNpemUoKSBjb25zdAogICAgIGlmIChXaW5kb3cqIHdpbmRv
dyA9IG1fd2ViUGFnZS0+Y2xpZW50KCktPndpbmRvdygpKQogICAgICAgICByZXR1cm4gd2luZG93
LT5zdXJmYWNlU2l6ZSgpOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAg
IGlmIChXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUqIGNvbXBvc2l0b3IgPSBtX3dlYlBhZ2UtPmQt
PmNvbXBvc2l0b3IoKSkKKyAgICAgICAgcmV0dXJuIGNvbXBvc2l0b3ItPmNvbnRleHQoKS0+c3Vy
ZmFjZVNpemUoKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIFBsYXRmb3JtOjpJbnRTaXplKCk7CiB9
CiAKQEAgLTI3MDQsNiArMjc0MCwxMSBAQCBQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogQmFj
a2luZ1N0b3JlUHJpdmF0ZTo6YnVmZmVyKCkgY29uc3QKICAgICBpZiAoV2luZG93KiB3aW5kb3cg
PSBtX3dlYlBhZ2UtPmNsaWVudCgpLT53aW5kb3coKSkKICAgICAgICAgcmV0dXJuIHdpbmRvdy0+
YnVmZmVyKCk7CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKFdl
YlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSogY29tcG9zaXRvciA9IG1fd2ViUGFnZS0+ZC0+Y29tcG9z
aXRvcigpKQorICAgICAgICByZXR1cm4gY29tcG9zaXRvci0+Y29udGV4dCgpLT5idWZmZXIoKTsK
KyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuY3BwCmluZGV4IGUxNjg5NDM5ZDk1MGEyMTBiNTBhNjFjYmI1ZjExZTNjNzI0NWQ1
ODkuLjRmMmJlNjJjYTAxZjEwODI1YTIzZjliYWY2ZDExYzc2ZDAwOTE2OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMzI4LDcgKzMyOCw2IEBAIFdlYlBh
Z2VQcml2YXRlOjpXZWJQYWdlUHJpdmF0ZShXZWJQYWdlKiB3ZWJQYWdlLCBXZWJQYWdlQ2xpZW50
KiBjbGllbnQsIGNvbnN0IEluCiAgICAgLCBtX2dlb2xvY2F0aW9uQ2xpZW50KDApCiAgICAgLCBt
X2luUmVnaW9uU2Nyb2xsU3RhcnRpbmdOb2RlKDApCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQotICAgICwgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoZmFsc2UpCiAg
ICAgLCBtX3Jvb3RMYXllckNvbW1pdFRpbWVyKGFkb3B0UHRyKG5ldyBUaW1lcjxXZWJQYWdlUHJp
dmF0ZT4odGhpcywgJldlYlBhZ2VQcml2YXRlOjpyb290TGF5ZXJDb21taXRUaW1lckZpcmVkKSkp
CiAgICAgLCBtX25lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oZmFsc2UpCiAgICAg
LCBtX25lZWRzQ29tbWl0KGZhbHNlKQpAQCAtNTE5NCw3ICs1MTkzLDcgQEAgdm9pZCBXZWJQYWdl
UHJpdmF0ZTo6ZHJhd0xheWVyc09uQ29tbWl0KCkKICAgICAgICAgcmV0dXJuOyAvLyBibGl0Vmlz
aWJsZUNvbnRlbnRzKCkgaW5jbHVkZXMgZHJhd1N1YkxheWVycygpIGluIHRoaXMgY2FzZS4KICAg
ICB9CiAKLSAgICBpZiAoIWRyYXdTdWJMYXllcnMoKSkKKyAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
LT5kLT5kcmF3U3ViTGF5ZXJzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHdlIHVz
ZSB0aGUgY29tcG9zaXRpbmcgc3VyZmFjZSwgd2UgbmVlZCB0byByZS1ibGl0IHRoZQpAQCAtNTIx
MywyOSArNTIxMiw2IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmRyYXdMYXllcnNPbkNvbW1pdCgp
CiAgICAgbV9iYWNraW5nU3RvcmUtPmQtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsKIH0KIAotYm9v
bCBXZWJQYWdlUHJpdmF0ZTo6ZHJhd1N1YkxheWVycyhjb25zdCBJbnRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGNvbnRlbnRzKQotewotICAgIEFTU0VSVChQbGF0Zm9ybTo6dXNlcklu
dGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+aXNDdXJyZW50VGhyZWFkKCkpOwotICAgIGlm
ICghUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmlzQ3VycmVu
dFRocmVhZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9jb21wb3NpdG9y
KSB7Ci0gICAgICAgIG1fY29tcG9zaXRvci0+c2V0QmFja2luZ1N0b3JlVXNlc09wZW5HTChtX2Jh
Y2tpbmdTdG9yZS0+ZC0+aXNPcGVuR0xDb21wb3NpdGluZygpKTsKLSAgICAgICAgcmV0dXJuIG1f
Y29tcG9zaXRvci0+ZHJhd0xheWVycyhkc3RSZWN0LCBjb250ZW50cyk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFdlYlBhZ2VQcml2YXRlOjpkcmF3U3ViTGF5ZXJzKCkK
LXsKLSAgICBBU1NFUlQoUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50
KCktPmlzQ3VycmVudFRocmVhZCgpKTsKLSAgICBpZiAoIVBsYXRmb3JtOjp1c2VySW50ZXJmYWNl
VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5kLT5kcmF3U3ViTGF5ZXJzKCk7
Ci19Ci0KIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNjaGVkdWxlUm9vdExheWVyQ29tbWl0KCkKIHsK
ICAgICBpZiAoIW1fZnJhbWVMYXllcnMgfHwgIW1fZnJhbWVMYXllcnMtPmhhc0xheWVyKCkpCkBA
IC01MjcwLDYgKzUyNDYsMjQgQEAgTGF5ZXJSZW5kZXJpbmdSZXN1bHRzIFdlYlBhZ2VQcml2YXRl
OjpsYXN0Q29tcG9zaXRpbmdSZXN1bHRzKCkgY29uc3QKICAgICByZXR1cm4gTGF5ZXJSZW5kZXJp
bmdSZXN1bHRzKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByaXZhdGU6OnNldENvbXBvc2l0b3IoUGFz
c1JlZlB0cjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IGNvbXBvc2l0b3IpCit7CisgICAgdXNp
bmcgbmFtZXNwYWNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOworCisgICAgLy8gVGhlIG1fY29tcG9z
aXRvciBtZW1iZXIgaGFzIHRvIGJlIG1vZGlmaWVkIGR1cmluZyBhIHN5bmMgY2FsbCBmb3IgdGhy
ZWFkCisgICAgLy8gc2FmZSBhY2Nlc3MgdG8gbV9jb21wb3NpdG9yIGFuZCBpdHMgcmVmY291bnQu
CisgICAgaWYgKCF1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRU
aHJlYWQoKSkgeworICAgICAgICB1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5k
aXNwYXRjaFN5bmNNZXNzYWdlKGNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKCZXZWJQYWdlUHJpdmF0
ZTo6c2V0Q29tcG9zaXRvciwgdGhpcywgY29tcG9zaXRvcikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9jb21wb3NpdG9yID0gY29tcG9zaXRvcjsKKworICAgIC8vIFRoZSBwcmV2
aW91cyBjb21wb3NpdG9yLCBpZiBhbnksIGhhcyBub3cgcmVsZWFzZWQgaXQncyBPcGVuR0wgcmVz
b3VyY2VzLAorICAgIC8vIHNvIHdlIGNhbiBzYWZlbHkgZnJlZSB0aGUgb3duZWQgY29udGV4dCwg
aWYgYW55LgorICAgIG1fb3duZWRDb250ZXh0LmNsZWFyKCk7Cit9CisKIHZvaWQgV2ViUGFnZVBy
aXZhdGU6OmNvbW1pdFJvb3RMYXllcihjb25zdCBJbnRSZWN0JiBsYXlvdXRSZWN0Rm9yQ29tcG9z
aXRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50U2l6
ZSYgY29udGVudHNTaXplRm9yQ29tcG9zaXRpbmcpCiB7CkBAIC01MzY5LDI4ICs1MzYzLDYgQEAg
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6cm9vdExheWVyQ29tbWl0VGltZXJGaXJlZChUaW1lcjxXZWJQ
YWdlUHJpdmF0ZT4qKQogICAgICAgICBkcmF3TGF5ZXJzT25Db21taXQoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJpdmF0ZTo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0
aXZlKQotewotICAgIC8vIEJhY2tpbmcgc3RvcmUgY2FuIGJlIG51bGwgaGVyZSBiZWNhdXNlIGl0
IGhhcHBlbnMgZHVyaW5nIHRlYXJkb3duLgotICAgIGlmIChtX2lzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSA9PSBhY3RpdmUgfHwgIW1fYmFja2luZ1N0b3JlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IGFjdGl2ZTsKLQotICAg
IGlmICghYWN0aXZlKSB7Ci0gICAgICAgIG1fY29tcG9zaXRvci5jbGVhcigpOwotICAgICAgICBy
ZXNldENvbXBvc2l0aW5nU3VyZmFjZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKCFtX2NvbXBvc2l0b3IpIHsKLSAgICAgICAgbV9jb21wb3NpdG9yID0gYWRvcHRQdHIobmV3
IFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSh0aGlzKSk7Ci0gICAgICAgIG1faXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQWN0aXZlID0gbV9jb21wb3NpdG9yLT5oYXJkd2FyZUNvbXBvc2l0aW5nKCk7
Ci0gICAgICAgIGlmICghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpCi0gICAgICAg
ICAgICBtX2NvbXBvc2l0b3IuY2xlYXIoKTsKLSAgICB9Ci19Ci0KIHZvaWQgV2ViUGFnZVByaXZh
dGU6OnJlc2V0Q29tcG9zaXRpbmdTdXJmYWNlKCkKIHsKICAgICBpZiAoIVBsYXRmb3JtOjp1c2Vy
SW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgpLT5pc0N1cnJlbnRUaHJlYWQoKSkgewpAQCAt
NTQ0OSwxMiArNTQyMSwxMyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpzZXRSb290TGF5ZXJDb21w
b3NpdGluZ1RocmVhZChMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllcgogICAgICAgICAgLy8g
dGhlIHByb2Nlc3Mgb2YgZGVzdHJ1Y3Rpb24gb2YgV2ViUGFnZSB3aGVyZSB3ZSBoYXZlIGFscmVh
ZHkKICAgICAgICAgIC8vIGNhbGxlZCBzeW5jRGVzdHJveUNvbXBvc2l0b3JPbkNvbXBvc2l0aW5n
VGhyZWFkKCkgdG8gZGVzdHJveQogICAgICAgICAgLy8gdGhlIGNvbXBvc2l0b3IuCi0gICAgICAg
ICBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoZmFsc2UpOworICAgICAgICAgZGVz
dHJveUNvbXBvc2l0b3IoKTsKKyAgICAgICAgIHJlc2V0Q29tcG9zaXRpbmdTdXJmYWNlKCk7CiAg
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFtX2NvbXBvc2l0b3IpCi0gICAgICAg
IHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSh0cnVlKTsKKyAgICAgICAgY3JlYXRl
Q29tcG9zaXRvcigpOwogCiAgICAgLy8gRG9uJ3QgQVNTRVJUKG1fY29tcG9zaXRvcikgaGVyZSBi
ZWNhdXNlIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSh0cnVlKQogICAgIC8vIG1h
eSBub3QgdHVybiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBvbiBzaW5jZSBtX2JhY2tpbmdTdG9y
ZSBpcyAwLgpAQCAtNTQ2Miw5ICs1NDM1LDMwIEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNldFJv
b3RMYXllckNvbXBvc2l0aW5nVGhyZWFkKExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyCiAg
ICAgICAgIG1fY29tcG9zaXRvci0+c2V0Um9vdExheWVyKGxheWVyKTsKIH0KIAorYm9vbCBXZWJQ
YWdlUHJpdmF0ZTo6Y3JlYXRlQ29tcG9zaXRvcigpCit7CisgICAgbV9vd25lZENvbnRleHQgPSBH
TEVTMkNvbnRleHQ6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX2NvbXBvc2l0b3IgPSBXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OmNyZWF0ZSh0aGlzLCAwKTsKKyAgICBtX2NvbXBvc2l0b3ItPnNldENv
bnRleHQobV9vd25lZENvbnRleHQuZ2V0KCkpOworCisgICAgaWYgKCFtX2NvbXBvc2l0b3ItPmhh
cmR3YXJlQ29tcG9zaXRpbmcoKSkgeworICAgICAgICBkZXN0cm95Q29tcG9zaXRvcigpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQg
V2ViUGFnZVByaXZhdGU6OmRlc3Ryb3lDb21wb3NpdG9yKCkKIHsKLSAgICAgbV9jb21wb3NpdG9y
LmNsZWFyKCk7CisgICAgLy8gV2Ugc2hvdWxkbid0IHJlbGVhc2UgdGhlIGNvbXBvc2l0b3IgdW5s
ZXNzIHdlIGNyZWF0ZWQgYW5kIG93biB0aGUKKyAgICAvLyBjb250ZXh0LiBJZiB0aGUgY29tcG9z
aXRvciB3YXMgY3JlYXRlZCBmcm9tIHRoZSBXZWJQYWdlQ29tcG9zaXRvciBBUEksCisgICAgLy8g
a2VlcCBpdCBhcm91bmQgYW5kIHJldXNlIGl0IGxhdGVyLgorICAgIGlmICghbV9vd25lZENvbnRl
eHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tcG9zaXRvci5jbGVhcigpOworICAgIG1f
b3duZWRDb250ZXh0LmNsZWFyKCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByaXZhdGU6OnN5bmNEZXN0
cm95Q29tcG9zaXRvck9uQ29tcG9zaXRpbmdUaHJlYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuaAppbmRleCA1ZTMxMDVjMDU0MzlmMGE5MjcyOGQxNmU4ZGViODdhZWFlOGJk
YjkzLi4zY2Q3ZGFjYzdjZmJhZGIzOTQwODZiMzY1NTU1ZThlMTYxYTQ1ZmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuaApAQCAtNjIsNiArNjIsNyBAQCBjbGFzcyBCYWNr
aW5nU3RvcmVDbGllbnQ7CiBjbGFzcyBCYWNraW5nU3RvcmVQcml2YXRlOwogY2xhc3MgUmVuZGVy
UXVldWU7CiBjbGFzcyBXZWJQYWdlQ2xpZW50OworY2xhc3MgV2ViUGFnZUNvbXBvc2l0b3I7CiBj
bGFzcyBXZWJQYWdlR3JvdXBMb2FkRGVmZXJyZXI7CiBjbGFzcyBXZWJQYWdlUHJpdmF0ZTsKIGNs
YXNzIFdlYlNldHRpbmdzOwpAQCAtMzM1LDYgKzMzNiw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFdlYktpdDo6QmFja2luZ1N0b3JlQ2xpZW50OwogICAgIGZyaWVuZCBjbGFzcyBXZWJL
aXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6UmVuZGVy
UXVldWU7CisgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6V2ViUGFnZUNvbXBvc2l0b3I7CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYktpdDo6V2ViUGFnZUdyb3VwTG9hZERlZmVycmVyOwogICAgIGZyaWVu
ZCBjbGFzcyBXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3Jl
OjpDaHJvbWVDbGllbnRCbGFja0JlcnJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2VDb21wb3NpdG9yLmNwcAppbmRleCAyZjcxN2RmOTJmYTg1ODM5N2EyYmZk
MjFkYWFkZjg5NGMzMmNjNWU1Li5lZmY2YWU2YzNjYmQ4OTQ4Yzg3OTBmOTNkNGEzMzQ1MDcxY2Fi
Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21w
b3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VDb21w
b3NpdG9yLmNwcApAQCAtMTgsMTMgKzE4LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAor
I2luY2x1ZGUgIldlYlBhZ2VDb21wb3NpdG9yLmgiCisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisjaW5jbHVkZSAiV2ViUGFnZUNvbXBvc2l0b3JDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJQYWdlQ29tcG9zaXRvcl9wLmgiCiAKICNpbmNsdWRlICJCYWNraW5nU3RvcmVfcC5oIgog
I2luY2x1ZGUgIkxheWVyV2ViS2l0VGhyZWFkLmgiCiAjaW5jbHVkZSAiV2ViUGFnZV9wLmgiCiAK
KyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1EZWJ1Z01hY3Jvcy5oPgogI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybUV4ZWN1dGFibGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJy
eVBsYXRmb3JtTWVzc2FnZS5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1lc3NhZ2VD
bGllbnQuaD4KQEAgLTM2LDEzICs0MCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5h
bWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6OldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZShXZWJQYWdlUHJpdmF0ZSogcGFn
ZSkKLSAgICA6IG1fd2ViUGFnZShwYWdlKQotICAgICwgbV9jb250ZXh0KEdMRVMyQ29udGV4dDo6
Y3JlYXRlKHBhZ2UpKQotICAgICwgbV9sYXllclJlbmRlcmVyKExheWVyUmVuZGVyZXI6OmNyZWF0
ZShtX2NvbnRleHQuZ2V0KCkpKQotICAgICwgbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMKGZhbHNl
KQorV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUoV2Vi
UGFnZVByaXZhdGUqIHBhZ2UsIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50KiBjbGllbnQpCisgICAg
OiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3dlYlBhZ2UocGFnZSkKICAgICAsIG1fYW5pbWF0
aW9uVGltZXIodGhpcywgJldlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6YW5pbWF0aW9uVGltZXJG
aXJlZCkKICAgICAsIG1fdGltZXJDbGllbnQobmV3IFBsYXRmb3JtOjpHZW5lcmljVGltZXJDbGll
bnQoUGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRUaW1lckNsaWVudCgpKSkKKyAgICAsIG1f
cGVuZGluZ0FuaW1hdGlvbkZyYW1lKDAuMCkKIHsKICAgICBtX2FuaW1hdGlvblRpbWVyLnNldENs
aWVudChtX3RpbWVyQ2xpZW50KTsKIH0KQEAgLTUzLDIxICs1NiwzMiBAQCBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGU6On5XZWJQYWdlQ29tcG9zaXRvclByaXZhdGUoKQogICAgIGRlbGV0ZSBtX3Rp
bWVyQ2xpZW50OwogfQogCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0Q29udGV4
dChQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAo
bV9jb250ZXh0ID09IGNvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dCA9
IGNvbnRleHQ7CisgICAgaWYgKCFtX2NvbnRleHQpIHsKKyAgICAgICAgbV9sYXllclJlbmRlcmVy
LmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xheWVyUmVuZGVyZXIg
PSBMYXllclJlbmRlcmVyOjpjcmVhdGUobV9jb250ZXh0KTsKK30KKwogYm9vbCBXZWJQYWdlQ29t
cG9zaXRvclByaXZhdGU6OmhhcmR3YXJlQ29tcG9zaXRpbmcoKSBjb25zdAogewotICAgIHJldHVy
biBtX2xheWVyUmVuZGVyZXItPmhhcmR3YXJlQ29tcG9zaXRpbmcoKTsKKyAgICByZXR1cm4gbV9s
YXllclJlbmRlcmVyICYmIG1fbGF5ZXJSZW5kZXJlci0+aGFyZHdhcmVDb21wb3NpdGluZygpOwog
fQogCiB2b2lkIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTo6c2V0Um9vdExheWVyKExheWVyQ29t
cG9zaXRpbmdUaHJlYWQqIHJvb3RMYXllcikKIHsKICAgICBtX3Jvb3RMYXllciA9IHJvb3RMYXll
cjsKLSAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RMYXllcihtX3Jvb3RMYXllci5nZXQoKSk7
Ci19CiAKLXZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpzZXRCYWNraW5nU3RvcmVVc2Vz
T3BlbkdMKGJvb2wgYmFja2luZ1N0b3JlVXNlc09wZW5HTCkKLXsKLSAgICBtX2JhY2tpbmdTdG9y
ZVVzZXNPcGVuR0wgPSBiYWNraW5nU3RvcmVVc2VzT3BlbkdMOwotICAgIG1fbGF5ZXJSZW5kZXJl
ci0+c2V0Q2xlYXJTdXJmYWNlT25EcmF3TGF5ZXJzKCFiYWNraW5nU3RvcmVVc2VzT3BlbkdMKTsK
KyAgICBBU1NFUlQobV9sYXllclJlbmRlcmVyKTsKKyAgICBpZiAobV9sYXllclJlbmRlcmVyKQor
ICAgICAgICBtX2xheWVyUmVuZGVyZXItPnNldFJvb3RMYXllcihtX3Jvb3RMYXllci5nZXQoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpjb21taXQoTGF5ZXJXZWJLaXRU
aHJlYWQqIHJvb3RMYXllcikKQEAgLTc4LDE1ICs5Miw0NyBAQCB2b2lkIFdlYlBhZ2VDb21wb3Np
dG9yUHJpdmF0ZTo6Y29tbWl0KExheWVyV2ViS2l0VGhyZWFkKiByb290TGF5ZXIpCiAgICAgcm9v
dExheWVyLT5jb21taXRPbkNvbXBvc2l0aW5nVGhyZWFkKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZUNv
bXBvc2l0b3JQcml2YXRlOjpyZW5kZXIoY29uc3QgSW50UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50
UmVjdCYgdHJhbnNmb3JtZWRDb250ZW50cykKK3sKKyAgICAvLyBJdCdzIG5vdCBzYWZlIHRvIGNh
bGwgaW50byB0aGUgQmFja2luZ1N0b3JlIGlmIHRoZSBjb21wb3NpdG9yIGhhc24ndCBiZWVuIHNl
dCB5ZXQuCisgICAgLy8gRm9yIHRocmVhZCBzYWZldHksIHdlIGhhdmUgdG8gZG8gaXQgdXNpbmcg
YSByb3VuZC10cmlwIHRvIHRoZSBXZWJLaXQgdGhyZWFkLCBzbyB0aGUKKyAgICAvLyBlbWJlZGRl
ciBtaWdodCBjYWxsIHRoaXMgYmVmb3JlIHRoZSByb3VuZC10cmlwIHRvIFdlYlBhZ2VQcml2YXRl
OjpzZXRDb21wb3NpdG9yKCkgaXMKKyAgICAvLyBkb25lLgorICAgIGlmIChtX3dlYlBhZ2UtPmNv
bXBvc2l0b3IoKSAhPSB0aGlzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgQmFja2lu
Z1N0b3JlIGlzIHRoZSByb290IGxheWVyCisgICAgaWYgKEJhY2tpbmdTdG9yZSogYmFja2luZ1N0
b3JlID0gbV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgYmFja2luZ1N0b3JlLT5k
LT5ibGl0Q29udGVudHMoZHN0UmVjdCwgdHJhbnNmb3JtZWRDb250ZW50cywgdHJ1ZSk7CisgICAg
ZWxzZSB7CisgICAgICAgIEZsb2F0UmVjdCBjb250ZW50cyA9IG1fd2ViUGFnZS0+bWFwRnJvbVRy
YW5zZm9ybWVkRmxvYXRSZWN0KEZsb2F0UmVjdCh0cmFuc2Zvcm1lZENvbnRlbnRzKSk7CisgICAg
ICAgIGRyYXdMYXllcnMoZHN0UmVjdCwgY29udGVudHMpOworICAgIH0KK30KKwogYm9vbCBXZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGU6OmRyYXdMYXllcnMoY29uc3QgSW50UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBjb250ZW50cykKIHsKKyAgICBpZiAoIW1fbGF5ZXJSZW5kZXJlcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSAw
LjA7CisKKyAgICBib29sIHNob3VsZENsZWFyID0gZmFsc2U7CisgICAgaWYgKEJhY2tpbmdTdG9y
ZSogYmFja2luZ1N0b3JlID0gbV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgc2hv
dWxkQ2xlYXIgPSAhYmFja2luZ1N0b3JlLT5kLT5pc09wZW5HTENvbXBvc2l0aW5nKCk7CisgICAg
bV9sYXllclJlbmRlcmVyLT5zZXRDbGVhclN1cmZhY2VPbkRyYXdMYXllcnMoc2hvdWxkQ2xlYXIp
OworCiAgICAgbV9sYXllclJlbmRlcmVyLT5kcmF3TGF5ZXJzKGNvbnRlbnRzLCBtX2xheW91dFJl
Y3RGb3JDb21wb3NpdGluZywgbV9jb250ZW50c1NpemVGb3JDb21wb3NpdGluZywgZHN0UmVjdCk7
CiAgICAgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzID0gbV9sYXllclJlbmRlcmVyLT5sYXN0UmVu
ZGVyaW5nUmVzdWx0cygpOwogCiAgICAgaWYgKG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0cy5uZWVk
c0FuaW1hdGlvbkZyYW1lKSB7CiAgICAgICAgIC8vIFVzaW5nIGEgdGltZW91dCBvZiAwIGFjdHVh
bGx5IHdvbid0IHN0YXJ0IGEgdGltZXIsIGl0IHdpbGwgc2VuZCBhIG1lc3NhZ2UuCi0gICAgICAg
IG1fYW5pbWF0aW9uVGltZXIuc3RhcnQoMS4wIC8gNjAuMCk7Ci0gICAgICAgIG1fd2ViUGFnZS0+
dXBkYXRlRGVsZWdhdGVkT3ZlcmxheXMoKTsKKyAgICAgICAgaWYgKG1fY2xpZW50KQorICAgICAg
ICAgICAgbV9wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSBtX2NsaWVudC0+cmVxdWVzdEFuaW1hdGlv
bkZyYW1lKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV9hbmltYXRpb25UaW1lci5z
dGFydCgxLjAgLyA2MC4wKTsKKyAgICAgICAgICAgIG1fd2ViUGFnZS0+dXBkYXRlRGVsZWdhdGVk
T3ZlcmxheXMoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtOTks
MTkgKzE0NSwxMjcgQEAgdm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OnJlbGVhc2VMYXll
clJlc291cmNlcygpCiAKIHZvaWQgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjphbmltYXRpb25U
aW1lckZpcmVkKCkKIHsKLSAgICBpZiAobV93ZWJQYWdlLT5tX2JhY2tpbmdTdG9yZS0+ZC0+c2hv
dWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkgewotICAgICAgICBpZiAobV93ZWJQYWdlLT5t
X2JhY2tpbmdTdG9yZS0+ZC0+aXNEaXJlY3RSZW5kZXJpbmdBbmltYXRpb25NZXNzYWdlU2NoZWR1
bGVkKCkpCisgICAgQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBtX3dlYlBhZ2UtPm1fYmFj
a2luZ1N0b3JlOworICAgIGlmICghYmFja2luZ1N0b3JlKSB7CisgICAgICAgIGRyYXdMYXllcnMo
bV93ZWJQYWdlLT5jbGllbnQoKS0+dXNlckludGVyZmFjZUJsaXR0ZWREZXN0aW5hdGlvblJlY3Qo
KSwKKyAgICAgICAgICAgICAgICAgICBJbnRSZWN0KG1fd2ViUGFnZS0+Y2xpZW50KCktPnVzZXJJ
bnRlcmZhY2VCbGl0dGVkVmlzaWJsZUNvbnRlbnRzUmVjdCgpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoYmFja2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5kZXJpbmdU
b1dpbmRvdygpKSB7CisgICAgICAgIGlmIChiYWNraW5nU3RvcmUtPmQtPmlzRGlyZWN0UmVuZGVy
aW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOyAvLyBk
b24ndCBzZW5kIG5ldyBtZXNzYWdlcyBhcyBsb25nIGFzIHdlIGhhdmVuJ3QgcmVyZW5kZXJlZAog
Ci0gICAgICAgIG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQtPnNldERpcmVjdFJlbmRlcmlu
Z0FuaW1hdGlvbk1lc3NhZ2VTY2hlZHVsZWQoKTsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNzYWdlKAotICAgICAg
ICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKAotICAg
ICAgICAgICAgICAgICZCYWNraW5nU3RvcmVQcml2YXRlOjpyZW5kZXJWaXNpYmxlQ29udGVudHMs
IG1fd2ViUGFnZS0+bV9iYWNraW5nU3RvcmUtPmQpKTsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNl
IEJsYWNrQmVycnk6OlBsYXRmb3JtOworCisgICAgICAgIGJhY2tpbmdTdG9yZS0+ZC0+c2V0RGly
ZWN0UmVuZGVyaW5nQW5pbWF0aW9uTWVzc2FnZVNjaGVkdWxlZCgpOworICAgICAgICB3ZWJLaXRU
aHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoTWVzc2FnZShjcmVhdGVNZXRob2RDYWxsTWVz
c2FnZSgmQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVuZGVyVmlzaWJsZUNvbnRlbnRzLCBiYWNraW5n
U3RvcmUtPmQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3dlYlBhZ2UtPmJsaXRW
aXNpYmxlQ29udGVudHMoKTsKIH0KIAordm9pZCBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU6OmNv
bXBvc2l0b3JEZXN0cm95ZWQoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGll
bnQtPmNvbXBvc2l0b3JEZXN0cm95ZWQoKTsKKworICAgIG1fY2xpZW50ID0gMDsKK30KKworV2Vi
UGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VDb21wb3NpdG9yKFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2VD
b21wb3NpdG9yQ2xpZW50KiBjbGllbnQpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOworCisgICAgUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4gdG1w
ID0gV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlOjpjcmVhdGUocGFnZS0+ZCwgY2xpZW50KTsKKwor
ICAgIC8vIEtlZXAgb25lIHJlZiBvdXJzZWx2ZXMuLi4KKyAgICBkID0gdG1wLmdldCgpOworICAg
IGQtPnJlZigpOworCisgICAgLy8gLi4uQW5kIHBhc3Mgb25lIHJlZiB0byB0aGUgd2ViIHBhZ2Uu
CisgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGNvbXBvc2l0b3Igd2lsbCBiZSBhcm91bmQg
Zm9yIGFzIGxvbmcgYXMgaXQncworICAgIC8vIG5lZWRlZC4gVW5mb3J0dW5hdGVseSBSZWZQdHI8
VD4gaXMgbm90IHB1YmxpYywgc28gd2UgaGF2ZSBkZWNsYXJlIHRvCisgICAgLy8gcmVzb3J0IHRv
IG1hbnVhbCByZWZjb3VudGluZy4KKyAgICB3ZWJLaXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRp
c3BhdGNoTWVzc2FnZShjcmVhdGVNZXRob2RDYWxsTWVzc2FnZSgmV2ViUGFnZVByaXZhdGU6OnNl
dENvbXBvc2l0b3IsIGQtPnBhZ2UoKSwgdG1wKSk7Cit9CisKK1dlYlBhZ2VDb21wb3NpdG9yOjp+
V2ViUGFnZUNvbXBvc2l0b3IoKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTsKKworICAgIHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKS0+ZGlzcGF0Y2hNZXNz
YWdlKGNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlKCZXZWJQYWdlUHJpdmF0ZTo6c2V0Q29tcG9zaXRv
ciwgZC0+cGFnZSgpLCBQYXNzUmVmUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4oMCkpKTsK
KyAgICBkLT5jb21wb3NpdG9yRGVzdHJveWVkKCk7CisgICAgZC0+ZGVyZWYoKTsKK30KKworV2Vi
UGFnZUNvbXBvc2l0b3JDbGllbnQqIFdlYlBhZ2VDb21wb3NpdG9yOjpjbGllbnQoKSBjb25zdAor
eworICAgIHJldHVybiAwOworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpwcmVwYXJlRnJh
bWUoUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIGNvbnRleHQsIGRvdWJsZSB0aW1l
c3RhbXApCit7CisgICAgZC0+c2V0Q29udGV4dChjb250ZXh0KTsKK30KKwordm9pZCBXZWJQYWdl
Q29tcG9zaXRvcjo6cmVuZGVyKFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwgY29uc3QgUGxhdGZvcm06Oklu
dFJlY3QmIGNvbnRlbnRzKQoreworICAgIGQtPnNldENvbnRleHQoY29udGV4dCk7CisgICAgZC0+
cmVuZGVyKGRzdFJlY3QsIGNvbnRlbnRzKTsKK30KKwordm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6
Y2xlYW51cChQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCogY29udGV4dCkKK3sKKyAg
ICBkLT5zZXRDb250ZXh0KDApOworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9yOjpjb250ZXh0
TG9zdCgpCit7CisgICAgLy8gVGhpcyBtZXRob2QgbmVlZHMgdG8gZGVsZXRlIHRoZSBjb21wb3Np
dG9yIGluIGEgd2F5IHRoYXQgbm90IHRyaWVzIHRvCisgICAgLy8gdXNlIGFueSBPcGVuR0wgY2Fs
bHMgKHRoZSBjb250ZXh0IGlzIGdvbmUsIHNvIHdlIGNhbid0IGFuZCBkb24ndCBuZWVkIHRvCisg
ICAgLy8gZnJlZSBhbnkgT3BlbkdMIHJlc291cmNlcy4KKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKKwor
I2Vsc2UgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCituYW1lc3BhY2UgQmxhY2tC
ZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViUGFnZUNvbXBvc2l0b3I6OldlYlBhZ2VD
b21wb3NpdG9yKFdlYlBhZ2UqLCBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCopCisgICAgOiBkKDAp
Cit7Cit9CisKK1dlYlBhZ2VDb21wb3NpdG9yOjp+V2ViUGFnZUNvbXBvc2l0b3IoKQoreworfQor
CitXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogV2ViUGFnZUNvbXBvc2l0b3I6OmNsaWVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViUGFnZUNvbXBvc2l0b3I6OnByZXBh
cmVGcmFtZShQbGF0Zm9ybTo6R3JhcGhpY3M6OkdMRVMyQ29udGV4dCosIGRvdWJsZSkKK3sKK30K
Kwordm9pZCBXZWJQYWdlQ29tcG9zaXRvcjo6cmVuZGVyKFBsYXRmb3JtOjpHcmFwaGljczo6R0xF
UzJDb250ZXh0KiwgY29uc3QgUGxhdGZvcm06OkludFJlY3QmLCBjb25zdCBQbGF0Zm9ybTo6SW50
UmVjdCYpCit7Cit9CisKK3ZvaWQgV2ViUGFnZUNvbXBvc2l0b3I6OmNsZWFudXAoUGxhdGZvcm06
OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqKQoreworfQorCit2b2lkIFdlYlBhZ2VDb21wb3NpdG9y
Ojpjb250ZXh0TG9zdCgpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogfSAvLyBuYW1l
c3BhY2UgQmxhY2tCZXJyeQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2VDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlBhZ2VDb21wb3NpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFiZjI4NDFmYTk5Y2U2YmFlNzEyMjViYjk2
ZWIzMmRhNmEwNDQ5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZUNvbXBvc2l0b3IuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgV2ViUGFnZUNvbXBvc2l0
b3JfaAorI2RlZmluZSBXZWJQYWdlQ29tcG9zaXRvcl9oCisKKyNpbmNsdWRlICJCbGFja0JlcnJ5
R2xvYmFsLmgiCisKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HTEVTMkNvbnRleHQuaD4K
KyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljcy5oPgorI2luY2x1ZGUgPEJsYWNr
QmVycnlQbGF0Zm9ybVByaW1pdGl2ZXMuaD4KKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CitjbGFzcyBXZWJQYWdlQ29tcG9zaXRv
ckNsaWVudDsKK2NsYXNzIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZTsKKworY2xhc3MgQkxBQ0tC
RVJSWV9FWFBPUlQgV2ViUGFnZUNvbXBvc2l0b3IgeworcHVibGljOgorICAgIFdlYlBhZ2VDb21w
b3NpdG9yKFdlYlBhZ2UqLCBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCopOworICAgIHZpcnR1YWwg
fldlYlBhZ2VDb21wb3NpdG9yKCk7CisKKyAgICBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogY2xp
ZW50KCkgY29uc3Q7CisKKyAgICB2b2lkIHByZXBhcmVGcmFtZShQbGF0Zm9ybTo6R3JhcGhpY3M6
OkdMRVMyQ29udGV4dCosIGRvdWJsZSB0aW1lc3RhbXApOworCisgICAgLy8gRklYTUU6IGRzdFJl
Y3Qgc2hvdWxkIGJlIGEgUGxhdGZvcm06OlRyYW5zZm9ybWF0aW9uTWF0cml4IGluc3RlYWQuIFBS
MTQyNjI4CisgICAgdm9pZCByZW5kZXIoUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQq
LCBjb25zdCBQbGF0Zm9ybTo6SW50UmVjdCYgZHN0UmVjdCwgY29uc3QgUGxhdGZvcm06OkludFJl
Y3QmIGNvbnRlbnRzKTsKKworICAgIHZvaWQgY2xlYW51cChQbGF0Zm9ybTo6R3JhcGhpY3M6OkdM
RVMyQ29udGV4dCopOworCisgICAgdm9pZCBjb250ZXh0TG9zdCgpOworCitwcml2YXRlOgorICAg
IFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSAqZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQorCisjZW5kaWYgLy8gV2ViUGFnZUNvbXBvc2l0
b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29t
cG9zaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29t
cG9zaXRvckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwNDk3ZWU4YWEwOTI4MmM3Njk5ZjYxMTgwOTNl
YWNiZTFmN2E2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2VDb21wb3NpdG9yQ2xpZW50LmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIFdlYlBhZ2VDb21w
b3NpdG9yQ2xpZW50X2gKKyNkZWZpbmUgV2ViUGFnZUNvbXBvc2l0b3JDbGllbnRfaAorCisjaW5j
bHVkZSAiQmxhY2tCZXJyeUdsb2JhbC5oIgorCituYW1lc3BhY2UgQmxhY2tCZXJyeSB7CituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQkxBQ0tCRVJSWV9FWFBPUlQgV2ViUGFnZUNvbXBvc2l0
b3JDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlBhZ2VDb21wb3NpdG9yQ2xpZW50
KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tcG9zaXRvckRlc3Ryb3llZCgpID0gMDsKKwor
ICAgIHZpcnR1YWwgZG91YmxlIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZShkb3VibGUgYW5pbWF0aW9uRnJhbWVUaW1lc3RhbXApID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENsZWFudXAoKSA9IDA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKKworI2VuZGlmIC8vIFdlYlBh
Z2VDb21wb3NpdG9yQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZUNvbXBvc2l0b3JfcC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9XZWJQYWdlQ29tcG9zaXRvcl9wLmgKaW5kZXggMDAwMWM1MzkwZGJmMWNjZmVjZThlMDBhNDM4
YWNiOGExOTY2ZTUzYy4uMmNhYzkyNDQwY2Q1YzU3OWNjY2E4Y2E5YzZhNDgwYjJkYWFjZDVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRv
cl9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlQ29tcG9zaXRv
cl9wLmgKQEAgLTIxLDEyICsyMSwxMyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogCi0jaW5jbHVkZSAiR0xFUzJDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5ZXJDb21wb3Np
dGluZ1RocmVhZC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXIuaCIKIAorI2luY2x1ZGUgPEJs
YWNrQmVycnlQbGF0Zm9ybUdMRVMyQ29udGV4dC5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0
Zm9ybVRpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zNiwyMiArMzcsMzIgQEAgY2xhc3MgTGF5ZXJXZWJLaXRUaHJlYWQ7CiBuYW1lc3BhY2Ug
QmxhY2tCZXJyeSB7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViUGFnZUNvbXBvc2l0
b3JDbGllbnQ7CiBjbGFzcyBXZWJQYWdlUHJpdmF0ZTsKIAotLy8gVGhpcyBjbGFzcyBtYXkgb25s
eSBiZSB1c2VkIG9uIHRoZSBjb21wb3NpdGluZyB0aHJlYWQuCi1jbGFzcyBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGUgeworLy8gVGhpcyBjbGFzcyBtYXkgb25seSBiZSB1c2VkIG9uIHRoZSBjb21w
b3NpdGluZyB0aHJlYWQuIFNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgdGhyZWFkc2FmZXJlZmNv
dW50ZWQuCitjbGFzcyBXZWJQYWdlQ29tcG9zaXRvclByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IHsKIHB1YmxpYzoKLSAgICBXZWJQYWdlQ29tcG9z
aXRvclByaXZhdGUoV2ViUGFnZVByaXZhdGUqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQ
YWdlQ29tcG9zaXRvclByaXZhdGU+IGNyZWF0ZShXZWJQYWdlUHJpdmF0ZSogcGFnZSwgV2ViUGFn
ZUNvbXBvc2l0b3JDbGllbnQqIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlKHBhZ2UsIGNsaWVudCkpOworICAgIH0KKwog
ICAgIH5XZWJQYWdlQ29tcG9zaXRvclByaXZhdGUoKTsKIAogICAgIGJvb2wgaGFyZHdhcmVDb21w
b3NpdGluZygpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRSb290TGF5ZXIoV2ViQ29yZTo6TGF5ZXJD
b21wb3NpdGluZ1RocmVhZCopOworICAgIFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0
KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisgICAgdm9pZCBzZXRDb250
ZXh0KFBsYXRmb3JtOjpHcmFwaGljczo6R0xFUzJDb250ZXh0Kik7CiAKLSAgICB2b2lkIHNldEJh
Y2tpbmdTdG9yZVVzZXNPcGVuR0woYm9vbCk7CisgICAgdm9pZCBzZXRSb290TGF5ZXIoV2ViQ29y
ZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZCopOwogCiAgICAgdm9pZCBjb21taXQoV2ViQ29yZTo6
TGF5ZXJXZWJLaXRUaHJlYWQqIHJvb3RMYXllclByb3h5KTsKIAorICAgIC8vIFRoaXMgaXMgbWFw
cGVkIGZyb20gdGhlIHB1YmxpYyBBUEksIHRodXMgdGFrZXMgdHJhbnNmb3JtZWQgY29udGVudHMK
KyAgICB2b2lkIHJlbmRlcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkc3RSZWN0LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiB0cmFuc2Zvcm1lZENvbnRlbnRzKTsKKworICAgIC8vIFJlbmRlciBl
dmVyeXRoaW5nIGJ1dCB0aGUgcm9vdCBsYXllcgogICAgIGJvb2wgZHJhd0xheWVycyhjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBkc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGNvbnRl
bnRzKTsKIAogICAgIFdlYkNvcmU6OkludFJlY3QgbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXlvdXRSZWN0Rm9yQ29tcG9zaXRpbmc7IH0KQEAgLTYzLDIyICs3
NCwzMSBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6TGF5ZXJSZW5kZXJpbmdSZXN1bHRzIGxhc3RD
b21wb3NpdGluZ1Jlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDb21wb3NpdGluZ1Jlc3Vs
dHM7IH0KICAgICB2b2lkIHNldExhc3RDb21wb3NpdGluZ1Jlc3VsdHMoY29uc3QgV2ViQ29yZTo6
TGF5ZXJSZW5kZXJpbmdSZXN1bHRzJiByZXN1bHRzKSB7IG1fbGFzdENvbXBvc2l0aW5nUmVzdWx0
cyA9IHJlc3VsdHM7IH0KIAorICAgIGRvdWJsZSBhbmltYXRpb25GcmFtZVRpbWVzdGFtcCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGVuZGluZ0FuaW1hdGlvbkZyYW1lOyB9CisKICAgICB2b2lkIHJlbGVh
c2VMYXllclJlc291cmNlcygpOwogCisgICAgV2ViUGFnZVByaXZhdGUqIHBhZ2UoKSBjb25zdCB7
IHJldHVybiBtX3dlYlBhZ2U7IH0KKyAgICBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCogY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICB2b2lkIGNvbXBvc2l0b3JEZXN0cm95
ZWQoKTsKKworcHJvdGVjdGVkOgorICAgIFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZShXZWJQYWdl
UHJpdmF0ZSosIFdlYlBhZ2VDb21wb3NpdG9yQ2xpZW50Kik7CisKIHByaXZhdGU6CiAgICAgdm9p
ZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAKKyAgICBXZWJQYWdlQ29tcG9zaXRvckNsaWVudCog
bV9jbGllbnQ7CiAgICAgV2ViUGFnZVByaXZhdGUqIG1fd2ViUGFnZTsKLSAgICAvLyBQbGVhc2Ug
bWFpbnRhaW4gdGhpcyBvcmRlciBzaW5jZSBtX2xheWVyUmVuZGVyZXIgZGVwZW5kcyBvbiBtX2Nv
bnRleHQgaW4gaW5pdGlhbGl6YXRpb24gbGlzdC4KLSAgICBPd25QdHI8R0xFUzJDb250ZXh0PiBt
X2NvbnRleHQ7CisgICAgUGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIG1fY29udGV4
dDsKICAgICBPd25QdHI8V2ViQ29yZTo6TGF5ZXJSZW5kZXJlcj4gbV9sYXllclJlbmRlcmVyOwog
ICAgIFJlZlB0cjxXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkPiBtX3Jvb3RMYXllcjsK
ICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fbGF5b3V0UmVjdEZvckNvbXBvc2l0aW5nOwogICAgIFdl
YkNvcmU6OkludFNpemUgbV9jb250ZW50c1NpemVGb3JDb21wb3NpdGluZzsKICAgICBXZWJDb3Jl
OjpMYXllclJlbmRlcmluZ1Jlc3VsdHMgbV9sYXN0Q29tcG9zaXRpbmdSZXN1bHRzOwotICAgIGJv
b2wgbV9iYWNraW5nU3RvcmVVc2VzT3BlbkdMOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpU
aW1lcjxXZWJQYWdlQ29tcG9zaXRvclByaXZhdGU+IG1fYW5pbWF0aW9uVGltZXI7CiAgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlRpbWVyQ2xpZW50KiBtX3RpbWVyQ2xpZW50OworICAgIGRvdWJs
ZSBtX3BlbmRpbmdBbmltYXRpb25GcmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggZWI1MGIwNjY3YzY2
NTE5YjEzZTNjYmQ3YjI1NmNmYmE5ODI3ZjAxOS4uNjk2NjQ1MWEzODBjODllYTA2NWMwMGUwZGJj
N2U3YTZhMmEyYjRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9X
ZWJQYWdlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5o
CkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSAiR0xFUzJDb250ZXh0LmgiCiAjaW5j
bHVkZSAiTGF5ZXJSZW5kZXJlci5oIgogI2VuZGlmCiAjaW5jbHVkZSAiUGFnZUNsaWVudEJsYWNr
QmVycnkuaCIKQEAgLTgyLDYgKzgzLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdlYkNvcmU6
OlBhZ2UqIGNvcmUoY29uc3QgV2ViUGFnZSopOwogCisgICAgV2ViUGFnZUNsaWVudCogY2xpZW50
KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KKwogICAgIHZvaWQgaW5pdChjb25zdCBXZWJT
dHJpbmcmIHBhZ2VHcm91cE5hbWUpOwogICAgIGJvb2wgaGFuZGxlTW91c2VFdmVudChXZWJDb3Jl
OjpQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoV2ViQ29y
ZTo6UGxhdGZvcm1XaGVlbEV2ZW50Jik7CkBAIC0zNjgsMTQgKzM3MSwxNCBAQCBwdWJsaWM6CiAg
ICAgLy8gVGhyZWFkIHNhZmUuCiAgICAgdm9pZCByZXNldENvbXBvc2l0aW5nU3VyZmFjZSgpOwog
ICAgIHZvaWQgZHJhd0xheWVyc09uQ29tbWl0KCk7IC8vIEluY2x1ZGluZyBiYWNraW5nIHN0b3Jl
IGJsaXQuCi0gICAgYm9vbCBkcmF3U3ViTGF5ZXJzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRz
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY29udGVudHMpOwotICAgIGJvb2wgZHJh
d1N1YkxheWVycygpOyAvLyBEcmF3IHRoZW0gYXQgbGFzdCBrbm93biBwb3NpdGlvbi4KIAogICAg
IC8vIENvbXBvc2l0aW5nIHRocmVhZC4KICAgICB2b2lkIHNldFJvb3RMYXllckNvbXBvc2l0aW5n
VGhyZWFkKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQqKTsKICAgICB2b2lkIGNvbW1p
dFJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpOwotICAgIHZvaWQgc2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wpOwot
ICAgIGJvb2wgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3QgeyByZXR1cm4g
bV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7IH0KKyAgICBib29sIGlzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRvcjsgfQorICAg
IFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZSogY29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tcG9zaXRvci5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q29tcG9zaXRvcihQYXNzUmVmUHRyPFdl
YlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4pOworICAgIGJvb2wgY3JlYXRlQ29tcG9zaXRvcigpOwog
ICAgIHZvaWQgZGVzdHJveUNvbXBvc2l0b3IoKTsKICAgICB2b2lkIHN5bmNEZXN0cm95Q29tcG9z
aXRvck9uQ29tcG9zaXRpbmdUaHJlYWQoKTsKICAgICB2b2lkIGRlc3Ryb3lMYXllclJlc291cmNl
cygpOwpAQCAtNTAyLDcgKzUwNSwxMiBAQCBwdWJsaWM6CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CiAg
ICAgT3duUHRyPEZyYW1lTGF5ZXJzPiBtX2ZyYW1lTGF5ZXJzOyAvLyBXZWJLaXQgdGhyZWFkIG9u
bHkuCi0gICAgT3duUHRyPFdlYlBhZ2VDb21wb3NpdG9yUHJpdmF0ZT4gbV9jb21wb3NpdG9yOyAv
LyBDb21wb3NpdGluZyB0aHJlYWQgb25seS4KKworICAgIC8vIENvbXBvc2l0aW5nIHRocmVhZCBv
bmx5LCB1c2VkIG9ubHkgd2hlbiB0aGUgV2ViS2l0IGxheWVyIGNyZWF0ZWQgdGhlIGNvbnRleHQu
CisgICAgLy8gSWYgdGhlIEFQSSBjbGllbnQgY3JlYXRlZCB0aGUgY29udGV4dCwgdGhpcyB3aWxs
IGJlIG51bGwuCisgICAgT3duUHRyPEdMRVMyQ29udGV4dD4gbV9vd25lZENvbnRleHQ7CisKKyAg
ICBSZWZQdHI8V2ViUGFnZUNvbXBvc2l0b3JQcml2YXRlPiBtX2NvbXBvc2l0b3I7IC8vIENvbXBv
c2l0aW5nIHRocmVhZCBvbmx5LgogICAgIE93blB0cjxXZWJDb3JlOjpUaW1lcjxXZWJQYWdlUHJp
dmF0ZT4gPiBtX3Jvb3RMYXllckNvbW1pdFRpbWVyOwogICAgIGJvb2wgbV9uZWVkc09uZVNob3RE
cmF3aW5nU3luY2hyb25pemF0aW9uOwogICAgIGJvb2wgbV9uZWVkc0NvbW1pdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>