<?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>191913</bug_id>
          
          <creation_ts>2018-11-22 12:09:07 -0800</creation_ts>
          <short_desc>Address post-review feedback after r238438</short_desc>
          <delta_ts>2018-11-22 19:11:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1481005</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-22 12:09:07 -0800</bug_when>
    <thetext>• Make Editor::setSelectedRange take enum classes instead of bools.
• Make Editor::replaceSelectionWithText take enum classes instead of bools.
• Don&apos;t pass in Vector&amp;&amp;s for a few functions that don&apos;t take ownership of the Vector.
• ...and a couple of other small items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481010</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-22 12:36:41 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #0)
&gt; • Make Editor::setSelectedRange take enum classes instead of bools.

I meant to write `FrameSelection::setSelectedRange`.

&gt; • Make Editor::replaceSelectionWithText take enum classes instead of bools.
&gt; • Don&apos;t pass in Vector&amp;&amp;s for a few functions that don&apos;t take ownership of
&gt; the Vector.
&gt; • ...and a couple of other small items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481041</commentid>
    <comment_count>2</comment_count>
      <attachid>355491</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-22 16:24:14 -0800</bug_when>
    <thetext>Created attachment 355491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481046</commentid>
    <comment_count>3</comment_count>
      <attachid>355494</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-22 17:22:19 -0800</bug_when>
    <thetext>Created attachment 355494
Try to fix Win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481052</commentid>
    <comment_count>4</comment_count>
      <attachid>355494</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-22 19:10:41 -0800</bug_when>
    <thetext>Comment on attachment 355494
Try to fix Win build

Clearing flags on attachment: 355494

Committed r238454: &lt;https://trac.webkit.org/changeset/238454&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481053</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-22 19:11:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/46216836&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355491</attachid>
            <date>2018-11-22 16:24:14 -0800</date>
            <delta_ts>2018-11-22 16:45:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191913-20181122162413.patch</filename>
            <type>text/plain</type>
            <size>41473</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWIxY2E4NThkOWIxNmUx
OGEzOTc3MDZmYTVhODg0MTk4NzQ3MjZlZi4uYjQ2ZjhiNzg1OWMzMGUzYjI2NTEzYmFmYmUxOWY1
YzVkNDc2NjM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTExLTIyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZHJlc3MgcG9z
dC1yZXZpZXcgZmVlZGJhY2sgYWZ0ZXIgcjIzODQzOAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBgYm9vbGAgYXJndW1lbnRzIHRvIGBGcmFt
ZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZWAsIGBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoVGV4dGAsIGFuZAorICAgICAgICBgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdt
ZW50YCB3aXRoIGBlbnVtIGNsYXNzYGVzIGluc3RlYWQuIEluIHBhcnRpY3VsYXIsIGludHJvZHVj
ZSB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5
cGluZyB7IE5vLCBZZXMgfQorICAgICAgICBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50IHsgTm8s
IFllcyB9CisgICAgICAgIEVkaXRvcjo6U21hcnRSZXBsYWNlIHsgTm8sIFllcyB9CisgICAgICAg
IEVkaXRvcjo6TWF0Y2hTdHlsZSB7IE5vLCBZZXMgfQorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnNlbGVjdFRleHQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aGFuZGxlVGV4dEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Ojp0cmFuc3Bvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50
KToKKworICAgICAgICBBdCB2YXJpb3VzIGNhbGwgc2l0ZXMsIHJlcGxhY2UgYm9vbGVhbiBhcmd1
bWVudHMgd2l0aCBuYW1lZCBlbnVtcy4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURl
bGV0ZVRvTWFyayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0VG9NYXJrKToKKyAg
ICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlcGxhY2VSYW5nZXMpOgorCisgICAgICAgIEF2b2lkIGEgYml0IG9mIHJlZi1jb3VudCBjaHVy
biwgYW5kIGFkanVzdCBhIGZldyBmdW5jdGlvbnMgdG8gdGFrZSBgY29uc3QgVmVjdG9yJmBzIGlu
c3RlYWQgb2YgYFZlY3RvciYmYHMuCisKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlcGxhY2VS
YW5nZXNXaXRoVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorCiAyMDE4LTExLTIyICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgV2ViR1BVUXVldWUg
YW5kIGRldmljZS5nZXRRdWV1ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE4Nzc5MzQ1NDNlMmFkYzEyNWQ3ZGI4
NDEyMWE4YTUyMGQ3ZGJlYTcuLmY1ZTA5YjQ2ZDM5YzNjOGE0YmYyMGJhNjAyZmVkYjgzZGRlZGZh
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTgtMTEtMjIgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkcmVzcyBwb3N0LXJldmlldyBm
ZWVkYmFjayBhZnRlciByMjM4NDM4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTE5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlIGJvb2xlYW4gYXJndW1lbnRzIHRvIHNldFNlbGVjdGVkUmFu
Z2UsIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCBhbmQgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFn
bWVudCB3aXRoCisgICAgICAgIGVudW0gZmxhZ3MsIGFuZCB0d2VhayBhIGNvdXBsZSBvZiBmdW5j
dGlvbnMgdG8gdGFrZSBgY29uc3QgVmVjdG9yJmAgaW5zdGVhZCBvZiBgVmVjdG9yJiZgLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3Bw
OgorICAgICAgICAoV0tCdW5kbGVQYWdlUmVwbGFjZVN0cmluZ01hdGNoZXMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZpbmRDb250cm9sbGVyOjpyZXBsYWNlTWF0Y2hlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXBsYWNlU3RyaW5nTWF0Y2hl
c0Zyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VN
YXRjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVwbGFjZVNlbGVjdGlvbldpdGhU
ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1
cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
bGVjdFdpdGhUd29Ub3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXh0ZW5kU2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0V29yZEJhY2t3YXJkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW92ZVNlbGVjdGlvbkJ5T2Zmc2V0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFRleHRXaXRoR3JhbnVsYXJp
dHlBdFBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50QW5kQm91bmRhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
ZXBsYWNlU2VsZWN0ZWRUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVwbGFjZURp
Y3RhdGVkVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN5bmNBcHBseUF1dG9jb3Jy
ZWN0aW9uKToKKwogMjAxOC0xMS0yMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUm9sbG91dCByMjM4NDMyOiBCcmVha3MgaW50ZXJuYWwgTWFjIGJ1aWxkcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA2MWYwMGQzZjY1NjljZDdlOWY1MjZhNjhmYWZi
ZDM1MGIyZGM1ZmI3Li4zYzQ2MGI4MjI3M2Y3NzQxNTY0OWIyYjgwOWJhODdjMjQ2MTgyMTdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMTEtMjIg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkcmVz
cyBwb3N0LXJldmlldyBmZWVkYmFjayBhZnRlciByMjM4NDM4CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE5MTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAg
ICAgICgtW1dlYkZyYW1lIHNldFNlbGVjdGVkRE9NUmFuZ2U6YWZmaW5pdHk6Y2xvc2VUeXBpbmc6
XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9yZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OnNl
bGVjdFJlcGxhY2VtZW50OnNtYXJ0UmVwbGFjZTptYXRjaFN0eWxlOl0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRTZWxlY3RlZERPTVJhbmdl
OmFmZmluaXR5Ol0pOgorCiAyMDE4LTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogIlJlbG9hZCBXZWIgSW5zcGVjdG9y
IiBidXR0b24gbm8gbG9uZ2VyIHBhcnRpYWxseSB3b3JrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggN2JjNDUyY2Qw
NGZhMmM2MzAzOTQ5MTE3YjA0MzdmMTNhZGNlMzQxOC4uZGYxMzMxZGFjMDdiM2ZkOGU3MTM0ZmVk
YjMzM2E1NzZhZmI5MmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC04MzgsNyArODM4LDcgQEAgU3RyaW5nIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQoQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0
ZXJpYSogY3JpdGVyaWEKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBjbG9zZXN0U3RyaW5nID0g
Y2xvc2VzdFN0cmluZ1JhbmdlLT50ZXh0KCk7CiAgICAgICAgIGJvb2wgcmVwbGFjZVNlbGVjdGlv
biA9IGZhbHNlOwotICAgICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFu
Z2UoY2xvc2VzdFN0cmluZ1JhbmdlLmdldCgpLCBET1dOU1RSRUFNLCB0cnVlKSkgeworICAgICAg
ICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY2xvc2VzdFN0cmluZ1Jh
bmdlLmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
OlllcykpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYWN0aXZpdHkpIHsKICAgICAgICAgICAgIGNh
c2UgQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZENhcGl0YWxpemU6CiAg
ICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBjYXBpdGFsaXplKGNsb3Nlc3RTdHJp
bmcsICcgJyk7IC8vIEZJWE1FOiBOZWVkcyB0byB0YWtlIGxvY2FsZSBpbnRvIGFjY291bnQgdG8g
d29yayBjb3JyZWN0bHkuCkBAIC04NzEsNyArODcxLDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OnNlbGVjdFRleHQoQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSogY3JpdGVy
aWEKICAgICAgICAgICAgIC8vIEEgYml0IG9idmlvdXMsIGJ1dCB3b3J0aCBub3RpbmcgdGhlIEFQ
SSBjb250cmFjdCBmb3IgdGhpcyBtZXRob2QgaXMgdGhhdCB3ZSBzaG91bGQKICAgICAgICAgICAg
IC8vIHJldHVybiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nIHdoZW4gcmVwbGFjaW5nLCBidXQgdGhl
IHNlbGVjdGVkIHN0cmluZyBpZiBub3QuCiAgICAgICAgICAgICBpZiAocmVwbGFjZVNlbGVjdGlv
bikgewotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0
aFRleHQocmVwbGFjZW1lbnRTdHJpbmcsIHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZW1lbnRTdHJpbmcs
IEVkaXRvcjo6U2VsZWN0UmVwbGFjZW1lbnQ6OlllcywgRWRpdG9yOjpTbWFydFJlcGxhY2U6Olll
cyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50U3RyaW5nOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMmI2NWJk
ZDA4YmM1ZTIwNTI4MDNiNmMxNDYzNzFjMDAyNzBhYTQzYS4uMGIwY2RhZjZiMDI3NGRkYTAzYTgw
ZDhiMDJkYjYyYzliZDU5OWM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzEw
LDkgKzMxMCw5IEBAIGJvb2wgRWRpdG9yOjpoYW5kbGVUZXh0RXZlbnQoVGV4dEV2ZW50JiBldmVu
dCkKICAgICAgICAgICAgIGlmIChjbGllbnQoKS0+cGVyZm9ybXNUd29TdGVwUGFzdGUoZXZlbnQu
cGFzdGluZ0ZyYWdtZW50KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlm
Ci0gICAgICAgICAgICByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KCpldmVudC5wYXN0aW5n
RnJhZ21lbnQoKSwgZmFsc2UsIGV2ZW50LnNob3VsZFNtYXJ0UmVwbGFjZSgpLCBldmVudC5zaG91
bGRNYXRjaFN0eWxlKCksIEVkaXRBY3Rpb246OlBhc3RlLCBldmVudC5tYWlsQmxvY2txdW90ZUhh
bmRsaW5nKCkpOworICAgICAgICAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCgqZXZl
bnQucGFzdGluZ0ZyYWdtZW50KCksIFNlbGVjdFJlcGxhY2VtZW50OjpObywgZXZlbnQuc2hvdWxk
U21hcnRSZXBsYWNlKCkgPyBTbWFydFJlcGxhY2U6OlllcyA6IFNtYXJ0UmVwbGFjZTo6Tm8sIGV2
ZW50LnNob3VsZE1hdGNoU3R5bGUoKSA/IE1hdGNoU3R5bGU6OlllcyA6IE1hdGNoU3R5bGU6Ok5v
LCBFZGl0QWN0aW9uOjpQYXN0ZSwgZXZlbnQubWFpbEJsb2NrcXVvdGVIYW5kbGluZygpKTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoZXZlbnQu
ZGF0YSgpLCBmYWxzZSwgZXZlbnQuc2hvdWxkU21hcnRSZXBsYWNlKCksIEVkaXRBY3Rpb246OlBh
c3RlKTsKKyAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChldmVudC5kYXRhKCks
IFNlbGVjdFJlcGxhY2VtZW50OjpObywgZXZlbnQuc2hvdWxkU21hcnRSZXBsYWNlKCkgPyBTbWFy
dFJlcGxhY2U6OlllcyA6IFNtYXJ0UmVwbGFjZTo6Tm8sIEVkaXRBY3Rpb246OlBhc3RlKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC02MzksNyArNjM5LDcgQEAgYm9vbCBFZGl0
b3I6OnNob3VsZEluc2VydEZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBSYW5n
ZSogcmVwbGFjaW5nRE8KICAgICByZXR1cm4gY2xpZW50KCktPnNob3VsZEluc2VydE5vZGUoJmZy
YWdtZW50LCByZXBsYWNpbmdET01SYW5nZSwgZ2l2ZW5BY3Rpb24pOwogfQogCi12b2lkIEVkaXRv
cjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVu
dCwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hT
dHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpCit2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhG
cmFnbWVudChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgU2VsZWN0UmVwbGFjZW1lbnQgc2Vs
ZWN0UmVwbGFjZW1lbnQsIFNtYXJ0UmVwbGFjZSBzbWFydFJlcGxhY2UsIE1hdGNoU3R5bGUgbWF0
Y2hTdHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5n
IG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCiB7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb24u
aXNOb25lKCkgfHwgIXNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpKQpAQCAtNjUwLDExICs2
NTAsMTEgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoRG9jdW1l
bnRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgc2VsZWMKICAgICAgICAgcmVwbGFjZWRUZXh0ID0g
QWNjZXNzaWJpbGl0eVJlcGxhY2VkVGV4dChzZWxlY3Rpb24pOwogCiAgICAgT3B0aW9uU2V0PFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
U2FuaXRpemVGcmFnbWVudCB9OwotICAgIGlmIChzZWxlY3RSZXBsYWNlbWVudCkKKyAgICBpZiAo
c2VsZWN0UmVwbGFjZW1lbnQgPT0gU2VsZWN0UmVwbGFjZW1lbnQ6OlllcykKICAgICAgICAgb3B0
aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50KTsKLSAg
ICBpZiAoc21hcnRSZXBsYWNlKQorICAgIGlmIChzbWFydFJlcGxhY2UgPT0gU21hcnRSZXBsYWNl
OjpZZXMpCiAgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTbWFy
dFJlcGxhY2UpOwotICAgIGlmIChtYXRjaFN0eWxlKQorICAgIGlmIChtYXRjaFN0eWxlID09IE1h
dGNoU3R5bGU6OlllcykKICAgICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6Ok1hdGNoU3R5bGUpOwogICAgIGlmIChtYWlsQmxvY2txdW90ZUhhbmRsaW5nID09IE1haWxC
bG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpCiAgICAgICAgIG9wdGlvbnMuYWRk
KFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpJZ25vcmVNYWlsQmxvY2txdW90ZSk7CkBAIC02ODUs
MTMgKzY4NSwxMyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChE
b2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgYm9vbCBzZWxlYwogICAgICAgICBtX3NwZWxsQ2hl
Y2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAK
LXZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgRWRpdEFjdGlvbiBl
ZGl0aW5nQWN0aW9uKQordm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIFNlbGVjdFJlcGxhY2VtZW50IHNlbGVjdFJlcGxhY2VtZW50LCBTbWFy
dFJlcGxhY2Ugc21hcnRSZXBsYWNlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24pCiB7CiAgICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsKICAgICBpZiAoIXJhbmdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbVRleHQoKnJhbmdlLCB0ZXh0KSwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0
UmVwbGFjZSwgdHJ1ZSwgZWRpdGluZ0FjdGlvbik7CisgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhG
cmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21UZXh0KCpyYW5nZSwgdGV4dCksIHNlbGVjdFJlcGxh
Y2VtZW50LCBzbWFydFJlcGxhY2UsIE1hdGNoU3R5bGU6OlllcywgZWRpdGluZ0FjdGlvbik7CiB9
CiAKIFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpzZWxlY3RlZFJhbmdlKCkKQEAgLTIwMjMsNyArMjAy
Myw3IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFy
dCA9IHN0ZDo6bWluKGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25TdGFydCwgZXh0ZW50T2Zmc2V0KTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6bWluKHN0ZDo6bWF4KHN0YXJ0LCBiYXNl
T2Zmc2V0ICsgc2VsZWN0aW9uRW5kKSwgZXh0ZW50T2Zmc2V0KTsKICAgICAgICAgICAgIFJlZlB0
cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5vZGUtPmRvY3VtZW50
KCksIGJhc2VOb2RlLCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7Ci0gICAgICAgICAgICBtX2ZyYW1l
LnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5nZXQoKSwgRE9XTlNU
UkVBTSwgZmFsc2UpOworICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rl
ZFJhbmdlKHNlbGVjdGVkUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpT
aG91bGRDbG9zZVR5cGluZzo6Tm8pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTE3LDcgKzI1
MTcsNyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNv
bnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogCiAgICAgICAgIGlmICghbV9mcmFtZS5l
ZGl0b3IoKS5zaG91bGRJbnNlcnRUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIG1pc3NwZWxsaW5n
UmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6VHlwZWQpKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBtX2ZyYW1lLmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChh
dXRvY29ycmVjdGVkU3RyaW5nLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rpb246Okluc2VydCk7Cisg
ICAgICAgIG1fZnJhbWUuZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGF1dG9jb3Jy
ZWN0ZWRTdHJpbmcsIFNlbGVjdFJlcGxhY2VtZW50OjpObywgU21hcnRSZXBsYWNlOjpObywgRWRp
dEFjdGlvbjo6SW5zZXJ0KTsKIAogICAgICAgICAvLyBSZXNldCB0aGUgY2hhcmV0IG9uZSBjaGFy
YWN0ZXIgZnVydGhlci4KICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5tb3ZlVG8obV9mcmFt
ZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CkBAIC0yODc1LDcgKzI4NzUsNyBAQCB2
b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBs
YWNlZFN0cmluZykKICAgICAKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZTo6UmV2ZXJ0ZWQs
IHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCkpOwogICAgIFRleHRDaGVja2luZ1BhcmFn
cmFwaCBwYXJhZ3JhcGgoKnNlbGVjdGlvbik7Ci0gICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0
KHJlcGxhY2VkU3RyaW5nLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rpb246Okluc2VydCk7CisgICAg
cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VkU3RyaW5nLCBTZWxlY3RSZXBsYWNlbWVu
dDo6Tm8sIFNtYXJ0UmVwbGFjZTo6Tm8sIEVkaXRBY3Rpb246Okluc2VydCk7CiAgICAgYXV0byBj
aGFuZ2VkUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocGFyYWdyYXBoLmNoZWNraW5nU3RhcnQo
KSwgcmVwbGFjZWRTdHJpbmcubGVuZ3RoKCkpOwogICAgIGNoYW5nZWRSYW5nZS0+c3RhcnRDb250
YWluZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoY2hhbmdlZFJhbmdlLnB0cigp
LCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIFN0cmluZygpKTsKICAgICBtX2FsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXItPm1hcmtSZXZlcnNlZChjaGFuZ2VkUmFuZ2UpOwpAQCAtMzEyMSw3
ICszMTIxLDcgQEAgdm9pZCBFZGl0b3I6OnRyYW5zcG9zZSgpCiAgICAgLy8gSW5zZXJ0IHRoZSB0
cmFuc3Bvc2VkIGNoYXJhY3RlcnMuCiAgICAgaWYgKCFzaG91bGRJbnNlcnRUZXh0KHRyYW5zcG9z
ZWQsIHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb246OlR5cGVkKSkKICAgICAgICAgcmV0
dXJuOwotICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0cmFuc3Bvc2VkLCBmYWxzZSwgZmFs
c2UsIEVkaXRBY3Rpb246Okluc2VydCk7CisgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRy
YW5zcG9zZWQsIFNlbGVjdFJlcGxhY2VtZW50OjpObywgU21hcnRSZXBsYWNlOjpObywgRWRpdEFj
dGlvbjo6SW5zZXJ0KTsKIH0KIAogdm9pZCBFZGl0b3I6OmFkZFJhbmdlVG9LaWxsUmluZyhjb25z
dCBSYW5nZSYgcmFuZ2UsIEtpbGxSaW5nSW5zZXJ0aW9uTW9kZSBtb2RlKQpAQCAtNDA5OCw3ICs0
MDk4LDcgQEAgdm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYKICAgICBhdXRvIGZyYWdtZW50VG9JbnNl
cnQgPSBkb2N1bWVudCgpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBmcmFnbWVudFRv
SW5zZXJ0LT5hcHBlbmRDaGlsZChhdHRhY2htZW50LmdldCgpKTsKIAotICAgIHJlcGxhY2VTZWxl
Y3Rpb25XaXRoRnJhZ21lbnQoZnJhZ21lbnRUb0luc2VydC5nZXQoKSwgZmFsc2UsIGZhbHNlLCB0
cnVlKTsKKyAgICByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KGZyYWdtZW50VG9JbnNlcnQu
Z2V0KCksIFNlbGVjdFJlcGxhY2VtZW50OjpObywgU21hcnRSZXBsYWNlOjpObywgTWF0Y2hTdHls
ZTo6WWVzKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAppbmRleCBlOGZmY2M4ZjExOWI1OGM0NTE4ZGQ3ZjlhMzZmOWE1MGZl
ODMwNmQzLi43YTE0ZWRjMGMxNDE5NzE4ZDU2MTQ3M2QwYmI5NTMzMzRhZjRhY2FiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgKQEAgLTQzOCw4ICs0MzgsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
dGV4dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIFdy
aXRpbmdEaXJlY3Rpb24gYmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpIGNv
bnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdt
ZW50KERvY3VtZW50RnJhZ21lbnQmLCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0
UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6SW5zZXJ0
LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVj
dEJsb2NrcXVvdGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRS
ZXBsYWNlLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6SW5zZXJ0KTsKKyAgICBlbnVtIGNsYXNz
IFNlbGVjdFJlcGxhY2VtZW50IDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBlbnVtIGNsYXNzIFNt
YXJ0UmVwbGFjZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgZW51bSBjbGFzcyBNYXRjaFN0eWxl
IDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxl
Y3Rpb25XaXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYsIFNlbGVjdFJlcGxhY2VtZW50LCBT
bWFydFJlcGxhY2UsIE1hdGNoU3R5bGUsIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uOjpJbnNlcnQs
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0
QmxvY2txdW90ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0
aFRleHQoY29uc3QgU3RyaW5nJiwgU2VsZWN0UmVwbGFjZW1lbnQsIFNtYXJ0UmVwbGFjZSwgRWRp
dEFjdGlvbiA9IEVkaXRBY3Rpb246Okluc2VydCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
ZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgaW50
IGZyb20sIGludCBsZW5ndGgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlTWFya2Vyc0ZvcldvcmRz
QWZmZWN0ZWRCeUVkaXRpbmcoYm9vbCBvbmx5SGFuZGxlV29yZHNDb250YWluaW5nU2VsZWN0aW9u
KTsKICAgICB2b2lkIGRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24oY29uc3QgUG9zaXRp
b24mLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDg2ZjljY2M0ZjYyNzQyZTY0OWQ3MmI5YTRhYTgxOTI0
OGYwNDRiYWQuLmNhNmRmMTA5YTg5Y2VkMmJlYzdmYWNiNjRiMmI4NzE5NmQyZWQxNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBA
IHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoRnJhbWUmIGZyYW1lLCBU
ZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgRUFmZmluaXR5IGFmZmluaXR5ID0gc2VsZWN0
aW9uLmFmZmluaXR5KCk7CiAgICAgaWYgKCFmcmFtZS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxk
Q2hhbmdlU2VsZWN0ZWRSYW5nZShvbGRSYW5nZS5nZXQoKSwgbmV3UmFuZ2UuZ2V0KCksIGFmZmlu
aXR5LCBmYWxzZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmcmFtZS5zZWxlY3Rpb24o
KS5zZXRTZWxlY3RlZFJhbmdlKG5ld1JhbmdlLmdldCgpLCBhZmZpbml0eSwgdHJ1ZSk7CisgICAg
ZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShuZXdSYW5nZS5nZXQoKSwgYWZmaW5p
dHksIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVU
b01hcmsoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0CiAg
ICAgUmVmUHRyPFJhbmdlPiBtYXJrID0gZnJhbWUuZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXpl
ZFJhbmdlKCk7CiAgICAgRnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlv
bigpOwogICAgIGlmIChtYXJrICYmIGZyYW1lLmVkaXRvcigpLnNlbGVjdGVkUmFuZ2UoKSkgewot
ICAgICAgICBib29sIHNlbGVjdGVkID0gc2VsZWN0aW9uLnNldFNlbGVjdGVkUmFuZ2UodW5pb25E
T01SYW5nZXMoKm1hcmssICpmcmFtZS5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCkpLmdldCgpLCBE
T1dOU1RSRUFNLCB0cnVlKTsKKyAgICAgICAgYm9vbCBzZWxlY3RlZCA9IHNlbGVjdGlvbi5zZXRT
ZWxlY3RlZFJhbmdlKHVuaW9uRE9NUmFuZ2VzKCptYXJrLCAqZnJhbWUuZWRpdG9yKCkuc2VsZWN0
ZWRSYW5nZSgpKS5nZXQoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3Nl
VHlwaW5nOjpZZXMpOwogICAgICAgICBBU1NFUlQoc2VsZWN0ZWQpOwogICAgICAgICBpZiAoIXNl
bGVjdGVkKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRvTWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRp
dG9yQ29tbWFuZFNvdXJjZSwgY29uc3QKICAgICAgICAgUEFMOjpzeXN0ZW1CZWVwKCk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
ZWRSYW5nZSh1bmlvbkRPTVJhbmdlcygqbWFyaywgKnNlbGVjdGlvbikuZ2V0KCksIERPV05TVFJF
QU0sIHRydWUpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UodW5pb25E
T01SYW5nZXMoKm1hcmssICpzZWxlY3Rpb24pLmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVj
dGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYjJjN2M1ZTIzMjBi
ZWQzZDNmMDQxNzQ3N2ZjNmExZjk5OTk0YjhkOS4uNDI0ZTMyZTlhZTk3MGVmYTcxZDk1NmE0YzRj
ODk4MzkyNzM0MTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5j
cHAKQEAgLTE5NzksNyArMTk3OSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCgp
CiAgICAgfQogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKFJhbmdl
KiByYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIGNsb3NlVHlwaW5nLCBFVXNlclRyaWdn
ZXJlZCB1c2VyVHJpZ2dlcmVkKQorYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5n
ZShSYW5nZSogcmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgU2hvdWxkQ2xvc2VUeXBpbmcgY2xv
c2VUeXBpbmcsIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgaWYgKCFyYW5n
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk5NCw3ICsxOTk0LDcgQEAgYm9vbCBGcmFt
ZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShSYW5nZSogcmFuZ2UsIEVBZmZpbml0eSBhZmZp
bml0eSwgYm9vbCBjbG8KICNlbmRpZgogCiAgICAgT3B0aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlv
bj4gc2VsZWN0aW9uT3B0aW9ucyB7ICBDbGVhclR5cGluZ1N0eWxlIH07Ci0gICAgaWYgKGNsb3Nl
VHlwaW5nKQorICAgIGlmIChjbG9zZVR5cGluZyA9PSBTaG91bGRDbG9zZVR5cGluZzo6WWVzKQog
ICAgICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChDbG9zZVR5cGluZyk7CiAKICAgICBpZiAodXNl
clRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmgKaW5kZXggZDE5ZjM2NWQyOWYxYzVjMTQ1ZGI3Y2M1NzNjYjg0OTUxNGMzY2Zh
ZC4uNmQ3NTJkZjExOTMyOTA3ZDIzMDhlMTkxM2RlMDgxOGEzYzc4YzExMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaApAQCAtMTUwLDcgKzE1MCw5IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2VsZWN0aW9uOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb24oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+ID0gZGVm
YXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgPSBBWFRl
eHRTdGF0ZUNoYW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25DdXJzb3JP
blNjcm9sbElmTmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRTZWxlY3RlZFJhbmdlKFJhbmdlKiwgRUFmZmlu
aXR5LCBib29sIGNsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQp
OworCisgICAgZW51bSBjbGFzcyBTaG91bGRDbG9zZVR5cGluZyA6IGJvb2wgeyBObywgWWVzIH07
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRTZWxlY3RlZFJhbmdlKFJhbmdlKiwgRUFmZmlu
aXR5LCBTaG91bGRDbG9zZVR5cGluZywgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVk
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVjdEFsbCgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggYzlhNjBlNTU5Y2U2ZmI2Njk5ZDU5OTExZTVhYjQ0NzEyYWYwNDRj
OS4uYzQ5MzY5NzRkYzgzN2E0MGQ4YTZhMDFlOGEzZGIxNzNlOThiMzA4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC03NzIsNyArNzcyLDcgQEAgc3RydWN0IEZpbmRSZXBsYWNlbWVudFJhbmdlIHsK
ICAgICBzaXplX3QgbGVuZ3RoIHsgMCB9OwogfTsKIAotc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdl
cyhQYWdlJiBwYWdlLCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiYgcmFuZ2VzLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCkKK3N0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFn
ZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzLCBjb25z
dCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCkKIHsKICAgICBIYXNoTWFwPFJlZlB0cjxDb250YWlu
ZXJOb2RlPiwgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPj4gcmFuZ2VzQnlDb250YWluZXJO
b2RlOwogICAgIGZvciAoYXV0byYgcmFuZ2UgOiByYW5nZXMpIHsKQEAgLTgxOSw3ICs4MTksNyBA
QCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIFZlY3RvcjxGaW5kUmVwbGFj
ZW1lbnRSYW5nZT4mJiByYW5nZXMsIGNvbgogICAgICAgICByZXR1cm4gZnJhbWVUb1RyYXZlcnNh
bEluZGV4TWFwLmdldChmaXJzdEZyYW1lKSA+IGZyYW1lVG9UcmF2ZXJzYWxJbmRleE1hcC5nZXQo
c2Vjb25kRnJhbWUpOwogICAgIH0pOwogCi0gICAgZm9yIChhdXRvIGNvbnRhaW5lciA6IGNvbnRh
aW5lck5vZGVzSW5PcmRlck9mUmVwbGFjZW1lbnQpIHsKKyAgICBmb3IgKGF1dG8mIGNvbnRhaW5l
ciA6IGNvbnRhaW5lck5vZGVzSW5PcmRlck9mUmVwbGFjZW1lbnQpIHsKICAgICAgICAgYXV0byBm
cmFtZSA9IG1ha2VSZWZQdHIoY29udGFpbmVyLT5kb2N1bWVudCgpLmZyYW1lKCkpOwogICAgICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgY29udGludWU7CkBAIC04MzEsMTMgKzgzMSwxMyBA
QCBzdGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIFZlY3RvcjxGaW5kUmVwbGFj
ZW1lbnRSYW5nZT4mJiByYW5nZXMsIGNvbgogICAgICAgICAgICAgaWYgKCFyYW5nZSB8fCByYW5n
ZS0+Y29sbGFwc2VkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBET1dOU1RS
RUFNLCB0cnVlKTsKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQocmVwbGFjZW1lbnRUZXh0LCB0cnVlLCBmYWxzZSwgRWRpdEFjdGlvbjo6SW5zZXJ0
UmVwbGFjZW1lbnQpOworICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVk
UmFuZ2UocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6WWVzKTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0
aW9uV2l0aFRleHQocmVwbGFjZW1lbnRUZXh0LCBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpZ
ZXMsIEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObywgRWRpdEFjdGlvbjo6SW5zZXJ0UmVwbGFjZW1l
bnQpOwogICAgICAgICB9CiAgICAgfQogfQogCi11aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFuZ2Vz
V2l0aFRleHQoVmVjdG9yPFJlZjxSYW5nZT4+JiYgcmFuZ2VzVG9SZXBsYWNlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5KQordWludDMyX3QgUGFnZTo6
cmVwbGFjZVJhbmdlc1dpdGhUZXh0KGNvbnN0IFZlY3RvcjxSZWY8UmFuZ2U+PiYgcmFuZ2VzVG9S
ZXBsYWNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5
KQogewogICAgIC8vIEZJWE1FOiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgcmVzcGVjdCB0aGUg
YHNlbGVjdGlvbk9ubHlgIGZsYWcgYnkgY2hlY2tpbmcgd2hldGhlciBlYWNoIHJhbmdlIGJlaW5n
IHJlcGxhY2VkIGlzCiAgICAgLy8gY29udGFpbmVkIHdpdGhpbiBpdHMgZnJhbWUncyBzZWxlY3Rp
b24uCkBAIC04NjYsNyArODY2LDcgQEAgdWludDMyX3QgUGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhU
ZXh0KFZlY3RvcjxSZWY8UmFuZ2U+PiYmIHJhbmdlc1RvUmVwbGFjZSwgY29uc3QKICAgICAgICAg
cmVwbGFjZW1lbnRSYW5nZXMuYXBwZW5kKHsgV1RGTW92ZShoaWdoZXN0Um9vdCksIHJlcGxhY2Vt
ZW50TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoIH0pOwogICAgIH0KIAotICAgIHJlcGxhY2VS
YW5nZXMoKnRoaXMsIFdURk1vdmUocmVwbGFjZW1lbnRSYW5nZXMpLCByZXBsYWNlbWVudFRleHQp
OworICAgIHJlcGxhY2VSYW5nZXMoKnRoaXMsIHJlcGxhY2VtZW50UmFuZ2VzLCByZXBsYWNlbWVu
dFRleHQpOwogICAgIHJldHVybiByYW5nZXNUb1JlcGxhY2Uuc2l6ZSgpOwogfQogCkBAIC04Nzgs
NyArODc4LDcgQEAgdWludDMyX3QgUGFnZTo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGF1dG8g
ZWRpdEFjdGlvbiA9IHNlbGVjdGlvbi5pc1JhbmdlKCkgPyBFZGl0QWN0aW9uOjpJbnNlcnRSZXBs
YWNlbWVudCA6IEVkaXRBY3Rpb246Okluc2VydDsKLSAgICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFj
ZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VtZW50VGV4dCwgdHJ1ZSwgZmFsc2UsIGVkaXRBY3Rp
b24pOworICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFj
ZW1lbnRUZXh0LCBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpZZXMsIEVkaXRvcjo6U21hcnRS
ZXBsYWNlOjpObywgZWRpdEFjdGlvbik7CiAgICAgcmV0dXJuIDE7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggZjg0MGQxMTZiM2E2MDYxZmI2NTBlODk0YTkzZGFhNzg2ZTBiOTBlNC4uZjg0NjVhYThl
MjU4NjVkNGIwNWViZTZmY2FjNzZiOWYyMzdjODc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI3OCw3
ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMo
KSBjb25zdCB7IHJldHVybiBtX3RhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50czsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
LCBEaWRXcmFwKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHJlcGxh
Y2VSYW5nZXNXaXRoVGV4dChWZWN0b3I8UmVmPFJhbmdlPj4mJiByYW5nZXNUb1JlcGxhY2UsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHkpOworICAgIFdF
QkNPUkVfRVhQT1JUIHVpbnQzMl90IHJlcGxhY2VSYW5nZXNXaXRoVGV4dChjb25zdCBWZWN0b3I8
UmVmPFJhbmdlPj4mIHJhbmdlc1RvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRl
eHQsIGJvb2wgc2VsZWN0aW9uT25seSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdWludDMyX3QgcmVw
bGFjZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0KTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gcmFuZ2VPZlN0cmluZyhjb25zdCBTdHJp
bmcmLCBSYW5nZSosIEZpbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5k
ZXggOGJmODZhZWMyY2EzYWI3N2RhMTY5YTRjZmJjMzZkODY3NmU5M2Y5NC4uNzk5MzA1NzM3ZGNh
OTUxYmEwYjFmNDhmOWU1NWIxNGM3MjEwOGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAKQEAgLTQ2MSwxMSArNDYxLDEyIEBAIHZvaWQgV0tCdW5kbGVQYWdlUmVwbGFjZVN0cmluZ01h
dGNoZXMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQXJyYXlSZWYgbWF0Y2hJCiAgICAgVmVj
dG9yPHVpbnQzMl90PiBpbmRpY2VzOwogICAgIGluZGljZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShtYXRjaEluZGljZXMtPnNpemUoKSk7CiAKLSAgICBmb3IgKHNpemVfdCBhcnJheUluZGV4ID0g
MDsgYXJyYXlJbmRleCA8IG1hdGNoSW5kaWNlcy0+c2l6ZSgpOyArK2FycmF5SW5kZXgpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIGluZGV4QXNPYmplY3QgPSBtYXRjaEluZGljZXMtPmF0PEFQSTo6VUlu
dDY0PihhcnJheUluZGV4KSkKKyAgICBhdXRvIG51bWJlck9mTWF0Y2hJbmRpY2VzID0gbWF0Y2hJ
bmRpY2VzLT5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZk1hdGNo
SW5kaWNlczsgKytpKSB7CisgICAgICAgIGlmIChhdXRvKiBpbmRleEFzT2JqZWN0ID0gbWF0Y2hJ
bmRpY2VzLT5hdDxBUEk6OlVJbnQ2ND4oaSkpCiAgICAgICAgICAgICBpbmRpY2VzLnVuY2hlY2tl
ZEFwcGVuZChpbmRleEFzT2JqZWN0LT52YWx1ZSgpKTsKICAgICB9Ci0gICAgdG9JbXBsKHBhZ2VS
ZWYpLT5yZXBsYWNlU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRsZShXVEZNb3ZlKGluZGlj
ZXMpLCB0b1dURlN0cmluZyhyZXBsYWNlbWVudFRleHQpLCBzZWxlY3Rpb25Pbmx5KTsKKyAgICB0
b0ltcGwocGFnZVJlZiktPnJlcGxhY2VTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGlu
ZGljZXMsIHRvV1RGU3RyaW5nKHJlcGxhY2VtZW50VGV4dCksIHNlbGVjdGlvbk9ubHkpOwogfQog
CiBXS0ltYWdlUmVmIFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLUmVjdCByZWN0LCBXS1NuYXBzaG90T3B0aW9ucyBvcHRpb25z
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuY3BwCmluZGV4IGQ3OTdjMmVmZGU5NDNjNzUxNjAxOWM2ZDhiYzQ3YTIzNTk5NDhiYzguLjlm
ZWZkYmNhMTJjZjU5ZTZlMzI1Y2M5YzI0ZWJlNGYzMDkyOWQxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTk5LDcg
Kzk5LDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb24KICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgbWF0Y2hD
b3VudCkpOwogfQogCi11aW50MzJfdCBGaW5kQ29udHJvbGxlcjo6cmVwbGFjZU1hdGNoZXMoVmVj
dG9yPHVpbnQzMl90PiYmIG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRl
eHQsIGJvb2wgc2VsZWN0aW9uT25seSkKK3VpbnQzMl90IEZpbmRDb250cm9sbGVyOjpyZXBsYWNl
TWF0Y2hlcyhjb25zdCBWZWN0b3I8dWludDMyX3Q+JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHkpCiB7CiAgICAgaWYgKG1hdGNo
SW5kaWNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlbWVudFRleHQpOwpAQCAtMTE3LDcgKzEx
Nyw3IEBAIHVpbnQzMl90IEZpbmRDb250cm9sbGVyOjpyZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWlu
dDMyX3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTCiAgICAgICAgIGlmIChyYW5nZXNUb1JlcGxh
Y2Uuc2l6ZSgpID49IG1heGltdW1OdW1iZXJPZk1hdGNoZXNUb1JlcGxhY2UpCiAgICAgICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cmVwbGFj
ZVJhbmdlc1dpdGhUZXh0KFdURk1vdmUocmFuZ2VzVG9SZXBsYWNlKSwgcmVwbGFjZW1lbnRUZXh0
LCBzZWxlY3Rpb25Pbmx5KTsKKyAgICByZXR1cm4gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5yZXBs
YWNlUmFuZ2VzV2l0aFRleHQocmFuZ2VzVG9SZXBsYWNlLCByZXBsYWNlbWVudFRleHQsIHNlbGVj
dGlvbk9ubHkpOwogfQogCiBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBw
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmgKaW5kZXggOGFlZjIwNWVkOWE1MmRlMzZhYjY4MWM5ZjJiNjE3YzJmOGNlNjNkZS4uZTJm
NGExMTBkMDJhYzNhNDUzMTgyODk2NzVkNmEwMDk4ZmJjMDFhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCkBAIC02MSw3ICs2MSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4
KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKICAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhj
b25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7Ci0gICAg
dWludDMyX3QgcmVwbGFjZU1hdGNoZXMoVmVjdG9yPHVpbnQzMl90PiYmIG1hdGNoSW5kaWNlcywg
Y29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQsIGJvb2wgc2VsZWN0aW9uT25seSk7CisgICAg
dWludDMyX3QgcmVwbGFjZU1hdGNoZXMoY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJbmRp
Y2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5KTsK
ICAgICAKICAgICB2b2lkIGhpZGVGaW5kSW5kaWNhdG9yKCk7CiAgICAgdm9pZCBzaG93RmluZElu
ZGljYXRvckluU2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDc0YjA2ZGMyOWZjOTJiYWNiOTRiMWJjNDg0YWZmNThlNTU3OWM1
NWQuLjRhYWUxNGYxNzM4NzAwMzBhMjczNDNiOTBiZDMxYTA4MzFhMTIxYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNzk2LDkgKzM3OTYs
OSBAQCB2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aQogICAgIGZpbmRDb250cm9sbGVyKCkuZmluZFN0
cmluZ01hdGNoZXModGFyZ2V0LCBvcHRpb25zLCAwKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXBs
YWNlU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRsZShWZWN0b3I8dWludDMyX3Q+JiYgbWF0
Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25P
bmx5KQordm9pZCBXZWJQYWdlOjpyZXBsYWNlU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRs
ZShjb25zdCBWZWN0b3I8dWludDMyX3Q+JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHkpCiB7Ci0gICAgZmluZENvbnRyb2xsZXIo
KS5yZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwg
c2VsZWN0aW9uT25seSk7CisgICAgZmluZENvbnRyb2xsZXIoKS5yZXBsYWNlTWF0Y2hlcyhtYXRj
aEluZGljZXMsIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3Qgb3B0aW9ucywg
dWludDMyX3QgbWF4TWF0Y2hDb3VudCkKQEAgLTM4MzEsOSArMzgzMSw5IEBAIHZvaWQgV2ViUGFn
ZTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRp
b25zLCB1aW50MzJfCiAgICAgZmluZENvbnRyb2xsZXIoKS5jb3VudFN0cmluZ01hdGNoZXMoc3Ry
aW5nLCBzdGF0aWNfY2FzdDxGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRj
aEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9u
bHksIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cmVwbGFjZU1hdGNoZXMo
Y29uc3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
Ci0gICAgYXV0byBudW1iZXJPZlJlcGxhY2VtZW50cyA9IGZpbmRDb250cm9sbGVyKCkucmVwbGFj
ZU1hdGNoZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlv
bk9ubHkpOworICAgIGF1dG8gbnVtYmVyT2ZSZXBsYWNlbWVudHMgPSBmaW5kQ29udHJvbGxlcigp
LnJlcGxhY2VNYXRjaGVzKG1hdGNoSW5kaWNlcywgcmVwbGFjZW1lbnRUZXh0LCBzZWxlY3Rpb25P
bmx5KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2so
bnVtYmVyT2ZSZXBsYWNlbWVudHMsIGNhbGxiYWNrSUQpKTsKIH0KIApAQCAtNDAzNiw5ICs0MDM2
LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGNv
bnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGkKIAogdm9pZCBXZWJQYWdlOjpyZXBsYWNlU2Vs
ZWN0aW9uV2l0aFRleHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAg
Ym9vbCBzZWxlY3RSZXBsYWNlbWVudCA9IHRydWU7Ci0gICAgYm9vbCBzbWFydFJlcGxhY2UgPSBm
YWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4
dCh0ZXh0LCBzZWxlY3RSZXBsYWNlbWVudCwgc21hcnRSZXBsYWNlKTsKKyAgICByZXR1cm4gZnJh
bWUtPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0ZXh0LCBXZWJDb3JlOjpFZGl0
b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpZZXMsIFdlYkNvcmU6OkVkaXRvcjo6U21hcnRSZXBsYWNl
OjpObyk7CiB9CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5MTFhMmY4NzQ4NDBjNmRhNmE0NjExNmJk
MGQ0Y2JjZGM1NjZhZDI5Li41NzUzMjk4NDg5NTkwMzk0NDBmYTFhYjE3ZmI3MTA2NTU4M2U4N2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00MDks
NyArNDA5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBmaW5kU3RyaW5nRnJvbUluamVjdGVkQnVu
ZGxlKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKICAgICB2b2lkIGZpbmRTdHJpbmdNYXRj
aGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKLSAgICB2
b2lkIHJlcGxhY2VTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKFZlY3Rvcjx1aW50MzJf
dD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNl
bGVjdGlvbk9ubHkpOworICAgIHZvaWQgcmVwbGFjZVN0cmluZ01hdGNoZXNGcm9tSW5qZWN0ZWRC
dW5kbGUoY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5KTsKIAogICAgIFdlYkZyYW1lKiBt
YWluV2ViRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZS5nZXQoKTsgfQogCkBAIC0x
MzA2LDcgKzEzMDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKHVpbnQz
Ml90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgaGlkZUZpbmRVSSgpOwogICAgIHZvaWQgY291bnRT
dHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJf
dCBtYXhNYXRjaENvdW50KTsKLSAgICB2b2lkIHJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJf
dD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNl
bGVjdGlvbk9ubHksIENhbGxiYWNrSUQpOworICAgIHZvaWQgcmVwbGFjZU1hdGNoZXMoY29uc3Qg
VmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBDYWxsYmFja0lEKTsKIAogI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKICAgICB2b2lkIHNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKGNv
bnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGVlMDgyYzRhOWY0YTQ0
M2UzMGIyNmRlNmZkMDY0YjJmYWJkMWU1NjcuLjU3ODA3YzY1Mzk1NGVhNmY4NjZkNjc1YzhiNmY0
MzAyMTg3NzExMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNl
bGVjdFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKHJhbmdlKQotICAgICAgICBm
cmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBwb3NpdGlvbi5h
ZmZpbml0eSgpLCB0cnVlLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9u
KCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2Vy
ZWQpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2so
cG9pbnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIHN0YXRpY19jYXN0PHVpbnQzMl90Pihm
bGFncyksIGNhbGxiYWNrSUQpKTsKIH0KQEAgLTEzNjQsNyArMTM2NCw3IEBAIHZvaWQgV2ViUGFn
ZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50
MzJfdCB0b3VjaGVzCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAocmFuZ2UpCi0gICAg
ICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIHBvc2l0
aW9uLmFmZmluaXR5KCksIHRydWUsIFVzZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBwb3NpdGlvbi5hZmZpbml0eSgp
LCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRy
aWdnZXJlZCk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoZXNDYWxs
YmFjayhwb2ludCwgdG91Y2hlcywgZmxhZ3MsIGNhbGxiYWNrSUQpKTsKIH0KQEAgLTEzODAsNyAr
MTM4MCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6CiAgICAgICAgICAgICByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGZyb21Qb3NpdGlvbiwgdG9Qb3NpdGlvbik7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUu
ZG9jdW1lbnQoKSwgdG9Qb3NpdGlvbiwgZnJvbVBvc2l0aW9uKTsKLSAgICAgICAgZnJhbWUuc2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgZnJvbVBvc2l0aW9uLmFmZmlu
aXR5KCksIHRydWUsIFVzZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBmcm9tUG9zaXRpb24uYWZmaW5pdHkoKSwgV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2Vy
ZWQpOwogICAgIH0KIAogICAgIC8vIFdlIGNhbiB1c2UgdGhlIHNhbWUgY2FsbGJhY2sgZm9yIHRo
ZSBnZXN0dXJlcyB3aXRoIG9uZSBwb2ludC4KQEAgLTEzOTUsNyArMTM5NSw3IEBAIHZvaWQgV2Vi
UGFnZTo6ZXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5KQogICAgICAgICByZXR1
cm47CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5zdGFydCgpOwotICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFu
Z2Uod29yZFJhbmdlRnJvbVBvc2l0aW9uKHBvc2l0aW9uKS5nZXQoKSwgcG9zaXRpb24uYWZmaW5p
dHkoKSwgdHJ1ZSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0ZWRSYW5nZSh3b3JkUmFuZ2VGcm9tUG9zaXRpb24ocG9zaXRpb24pLmdldCgpLCBwb3NpdGlv
bi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6
OlllcywgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2VsZWN0V29yZEJhY2t3
YXJkKCkKQEAgLTE0MDcsNyArMTQwNyw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V29yZEJhY2t3
YXJkKCkKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5zdGFydCgpOwogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0g
cG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxh
cml0eSwgRGlyZWN0aW9uQmFja3dhcmQpOwogICAgIGlmIChzdGFydFBvc2l0aW9uLmlzTm90TnVs
bCgpICYmIHN0YXJ0UG9zaXRpb24gIT0gcG9zaXRpb24pCi0gICAgICAgIGZyYW1lLnNlbGVjdGlv
bigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgc3Rh
cnRQb3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCB0cnVlLCBV
c2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5n
ZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBzdGFydFBvc2l0aW9uLCBwb3NpdGlv
bikucHRyKCksIHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpT
aG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAogdm9pZCBXZWJQYWdl
Ojptb3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKQEAgLTE0MjUsNyArMTQyNSw3IEBAIHZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkJ5
T2Zmc2V0KGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpICYmIHN0YXJ0UG9z
aXRpb24gIT0gcG9zaXRpb24pCi0gICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVk
UmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9u
KS5wdHIoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgdHJ1ZSwgVXNlclRyaWdnZXJlZCk7CisgICAg
ICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJh
bWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgcG9zaXRpb24uYWZmaW5p
dHkoKSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVz
ZXJUcmlnZ2VyZWQpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxi
YWNrKGNhbGxiYWNrSUQpKTsKIH0KICAgICAKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgV2Vi
UGFnZTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2lu
dCwgYm9vbCBpc0ludGVyCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBv
c2l0aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dp
dGhBc3Npc3RlZE5vZGUpOwogICAgIAogICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkKLSAg
ICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShSYW5nZTo6Y3JlYXRlKCpm
cmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5hZmZp
bml0eSgpLCB0cnVlLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCku
c2V0U2VsZWN0ZWRSYW5nZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlv
biwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNl
bGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQog
CkBAIC0xNTU3LDcgKzE1NTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3Vu
ZGFyeVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaQogICAgIGlmIChw
b3NpdGlvbi5pc05vdE51bGwoKSkgewogICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0
Qm91bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0
R3JhbnVsYXJpdHk+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8U2VsZWN0aW9uRGlyZWN0aW9u
PihkaXJlY3Rpb24pKTsKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKQotICAgICAg
ICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShSYW5nZTo6Y3JlYXRlKCpm
cmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBVUFNUUkVBTSwgdHJ1
ZSwgVXNlclRyaWdnZXJlZCk7CisgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBwb3Np
dGlvbikucHRyKCksIFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xv
c2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAgICAgfQogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KQEAgLTE1NzEsNyAr
MTU3MSw3IEBAIHZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfCiAgICAgICAgIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbiA9IChpc0ZvcndhcmQpID8gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
dmlzaWJsZUVuZCgpIDogZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0
KCk7CiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJp
dHkocG9zaXRpb24sIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRHcmFudWxhcml0eT4oZ3JhbnVs
YXJpdHkpLCBzdGF0aWNfY2FzdDxTZWxlY3Rpb25EaXJlY3Rpb24+KGRpcmVjdGlvbikpOwogICAg
ICAgICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpCi0gICAgICAgICAgICBmcmFtZS5zZWxlY3Rp
b24oKS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBv
c2l0aW9uLCBwb3NpdGlvbikucHRyKCksIGlzRm9yd2FyZD8gVVBTVFJFQU0gOiBET1dOU1RSRUFN
LCB0cnVlLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24s
IHBvc2l0aW9uKS5wdHIoKSwgaXNGb3J3YXJkPyBVUFNUUkVBTSA6IERPV05TVFJFQU0sIFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVk
KTsKICAgICB9CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2so
Y2FsbGJhY2tJRCkpOwogfQpAQCAtMTYyOCw3ICsxNjI4LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxl
Y3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9p
bnQsIHUKICAgICB9CiAKICAgICBpZiAocmFuZ2UpCi0gICAgICAgIGZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIFVQU1RSRUFNLCB0cnVlLCBVc2VyVHJpZ2dl
cmVkKTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5n
ZXQoKSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGlu
Zzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICBtX2luaXRpYWxTZWxlY3Rpb24gPSByYW5nZTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lE
KSk7CiB9CkBAIC0xNjYzLDcgKzE2NjMsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlv
bldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JgogICAg
ICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHNlbGVjdGlvblN0
YXJ0LCBzZWxlY3Rpb25FbmQpOwogICAgIAogICAgIGlmIChyYW5nZSkKLSAgICAgICAgZnJhbWUu
c2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgVVBTVFJFQU0sIHRydWUs
IFVzZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJh
bmdlKHJhbmdlLmdldCgpLCBVUFNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3Vs
ZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogICAgIAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhzZWxlY3Rpb25TdGFydCA9PSBtX2lu
aXRpYWxTZWxlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMTcw
Niw3ICsxNzA2LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib28KICAgICAgICAgcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9u
RW5kKTsKIAogICAgIGlmIChyYW5nZSkKLSAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgVVBTVFJFQU0sIHRydWUsIFVzZXJUcmlnZ2VyZWQpOwor
ICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBV
UFNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMs
IFVzZXJUcmlnZ2VyZWQpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbnNp
Z25lZENhbGxiYWNrKG1fc2VsZWN0aW9uQW5jaG9yID09IFN0YXJ0LCBjYWxsYmFja0lEKSk7CiB9
CkBAIC0xNzY5LDcgKzE3NjksNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3RlZFRleHQo
Y29uc3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2Vz
KHRydWUpOwotICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uod29yZFJhbmdl
LmdldCgpLCBVUFNUUkVBTSwgdHJ1ZSk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
ZWRSYW5nZSh3b3JkUmFuZ2UuZ2V0KCksIFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
bjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4
dChuZXdUZXh0LCAwKTsKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFu
Z2VzKGZhbHNlKTsKIH0KQEAgLTE3OTYsNyArMTc5Niw3IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFj
ZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4
dCkKIAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbm90aWZ5IHRoZSBjbGllbnQgdGhhdCB0aGUg
c2VsZWN0aW9uIGhhcyBjaGFuZ2VkIHVudGlsIHdlIGFyZSBkb25lIGluc2VydGluZyB0aGUgbmV3
IHRleHQuCiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVl
KTsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBV
UFNUUkVBTSwgdHJ1ZSk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShy
YW5nZS5nZXQoKSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6WWVzKTsKICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRUZXh0KG5ld1RleHQsIDAp
OwogICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2UpOwog
fQpAQCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jQXBwbHlBdXRvY29ycmVj
dGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3IKICAgICBpZiAo
cmFuZ2UgJiYgcmFuZ2UtPmNvbGxhcHNlZCgpKQogICAgICAgICBhZmZpbml0eSA9IFZpc2libGVQ
b3NpdGlvbihyYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBVUFNUUkVBTSkuYWZmaW5pdHkoKTsKICAg
ICAKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBh
ZmZpbml0eSwgdHJ1ZSk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShy
YW5nZS5nZXQoKSwgYWZmaW5pdHksIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9z
ZVR5cGluZzo6WWVzKTsKICAgICBpZiAoY29ycmVjdGlvbi5sZW5ndGgoKSkKICAgICAgICAgZnJh
bWUuZWRpdG9yKCkuaW5zZXJ0VGV4dChjb3JyZWN0aW9uLCAwLCBvcmlnaW5hbFRleHQuaXNFbXB0
eSgpID8gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCA6IFRleHRFdmVudElucHV0QXV0b2NvbXBsZXRp
b24pOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCmluZGV4IDU0MWU3NDBmNzM3YzIyMjBkNmJkNmJmMjk2M2IzNzY1MjJkMDM3MWEuLmMxNDQw
Mjk4YTg4ZTA2OWE0ZDE2MjFhYzgxZTI4M2MyOWQ5NTgyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTQ4Miw3ICsxNDgyLDcgQEAgLSAodm9p
ZClzZXRTZWxlY3RlZERPTVJhbmdlOihET01SYW5nZSAqKXJhbmdlIGFmZmluaXR5OihOU1NlbGVj
dGlvbkFmZmluaXR5KWFmZmkKICAgICAgICAgfQogICAgIH0KIAotICAgIGZyYW1lLT5zZWxlY3Rp
b24oKS5zZXRTZWxlY3RlZFJhbmdlKGNvcmUocmFuZ2UpLCAoRUFmZmluaXR5KWFmZmluaXR5LCBj
bG9zZVR5cGluZyk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY29y
ZShyYW5nZSksIChFQWZmaW5pdHkpYWZmaW5pdHksIGNsb3NlVHlwaW5nID8gRnJhbWVTZWxlY3Rp
b246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMgOiBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VU
eXBpbmc6Ok5vKTsKICAgICBpZiAoIWNsb3NlVHlwaW5nKQogICAgICAgICBmcmFtZS0+ZWRpdG9y
KCkuZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VycmVudFNlbGVjdGlvbklmT3BlbkZvck1vcmVU
eXBpbmcoKTsKIH0KQEAgLTE5NTIsNyArMTk1Miw3IEBAIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBs
CiB7CiAgICAgaWYgKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8
ICFmcmFnbWVudCkKICAgICAgICAgcmV0dXJuOwotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVk
aXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoKmNvcmUoZnJhZ21lbnQpLCBzZWxl
Y3RSZXBsYWNlbWVudCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKTsKKyAgICBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KCpjb3JlKGZy
YWdtZW50KSwgc2VsZWN0UmVwbGFjZW1lbnQgPyBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpZ
ZXMgOiBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpObywgc21hcnRSZXBsYWNlID8gRWRpdG9y
OjpTbWFydFJlcGxhY2U6OlllcyA6IEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObywgbWF0Y2hTdHls
ZSA/IEVkaXRvcjo6TWF0Y2hTdHlsZTo6WWVzIDogRWRpdG9yOjpNYXRjaFN0eWxlOjpObyk7CiB9
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCmluZGV4IGU3OGE4YmQ2ZWYwNTJhODMwYTRmMDhlZDU2MDEwZDM2NTFh
MjZkZTEuLjg5M2ZhMDhjY2Y5MDY1OGI0NDdiYjY1YmMzOWJmYTM1OWI3YmUwMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTgzNTEsNyArODM1MSw3
IEBAIC0gKHZvaWQpc2V0U2VsZWN0ZWRET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZSBhZmZpbml0
eTooTlNTZWxlY3Rpb25BZmZpbml0eSlzZWxlCiAgICAgICAgIGlmICghY29yZUZyYW1lKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0ZWRSYW5nZShjb3JlKHJhbmdlKSwgY29yZShzZWxlY3Rpb25BZmZpbml0eSksIHRydWUpOwor
ICAgICAgICBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY29yZShyYW5n
ZSksIGNvcmUoc2VsZWN0aW9uQWZmaW5pdHkpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hv
dWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="372580"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355494</attachid>
            <date>2018-11-22 17:22:19 -0800</date>
            <delta_ts>2018-11-22 19:10:41 -0800</delta_ts>
            <desc>Try to fix Win build</desc>
            <filename>bug-191913-20181122172217.patch</filename>
            <type>text/plain</type>
            <size>42815</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWIxY2E4NThkOWIxNmUx
OGEzOTc3MDZmYTVhODg0MTk4NzQ3MjZlZi4uYWU5MzhmNmU1ODUyN2I4YzMxZjNlZTUxM2VlNTMw
ZGZlMDgzZDBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTExLTIyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZHJlc3MgcG9z
dC1yZXZpZXcgZmVlZGJhY2sgYWZ0ZXIgcjIzODQzOAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlv
c3VrZSBOaXdhLgorCisgICAgICAgIFJlcGxhY2UgYGJvb2xgIGFyZ3VtZW50cyB0byBgRnJhbWVT
ZWxlY3Rpb246OnNldFNlbGVjdGVkUmFuZ2VgLCBgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aFRleHRgLCBhbmQKKyAgICAgICAgYEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVu
dGAgd2l0aCBgZW51bSBjbGFzc2BlcyBpbnN0ZWFkLiBJbiBwYXJ0aWN1bGFyLCBpbnRyb2R1Y2Ug
dGhlIGZvbGxvd2luZzoKKworICAgICAgICBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBp
bmcgeyBObywgWWVzIH0KKyAgICAgICAgRWRpdG9yOjpTZWxlY3RSZXBsYWNlbWVudCB7IE5vLCBZ
ZXMgfQorICAgICAgICBFZGl0b3I6OlNtYXJ0UmVwbGFjZSB7IE5vLCBZZXMgfQorICAgICAgICBF
ZGl0b3I6Ok1hdGNoU3R5bGUgeyBObywgWWVzIH0KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzZWxlY3RUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmhhbmRsZVRleHRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtN
aXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
dHJhbnNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudCk6
CisKKyAgICAgICAgQXQgdmFyaW91cyBjYWxsIHNpdGVzLCByZXBsYWNlIGJvb2xlYW4gYXJndW1l
bnRzIHdpdGggbmFtZWQgZW51bXMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHBh
bmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxl
dGVUb01hcmspOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdFRvTWFyayk6CisgICAg
ICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZSk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZXBsYWNlUmFuZ2VzKToKKworICAgICAgICBBdm9pZCBhIGJpdCBvZiByZWYtY291bnQgY2h1cm4s
IGFuZCBhZGp1c3QgYSBmZXcgZnVuY3Rpb25zIHRvIHRha2UgYGNvbnN0IFZlY3RvciZgcyBpbnN0
ZWFkIG9mIGBWZWN0b3ImJmBzLgorCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXBsYWNlUmFu
Z2VzV2l0aFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVwbGFjZVNlbGVjdGlvbldp
dGhUZXh0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKwogMjAxOC0xMS0yMiAgRGVhbiBKYWNr
c29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFdlYkdQVVF1ZXVlIGFu
ZCBkZXZpY2UuZ2V0UXVldWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxODc3OTM0NTQzZTJhZGMxMjVkN2RiODQx
MjFhOGE1MjBkN2RiZWE3Li5lNmZlOGMxYjMzM2NkYmU3MmJmNTFlYzlkZGM2ZTRhYTY5MWQzNWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE4LTExLTIyICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZHJlc3MgcG9zdC1yZXZpZXcgZmVl
ZGJhY2sgYWZ0ZXIgcjIzODQzOAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgor
CisgICAgICAgIFJlcGxhY2UgYm9vbGVhbiBhcmd1bWVudHMgdG8gc2V0U2VsZWN0ZWRSYW5nZSwg
cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0IGFuZCByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50
IHdpdGgKKyAgICAgICAgZW51bSBmbGFncywgYW5kIHR3ZWFrIGEgY291cGxlIG9mIGZ1bmN0aW9u
cyB0byB0YWtlIGBjb25zdCBWZWN0b3ImYCBpbnN0ZWFkIG9mIGBWZWN0b3ImJmAuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6Cisg
ICAgICAgIChXS0J1bmRsZVBhZ2VSZXBsYWNlU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Rmlu
ZENvbnRyb2xsZXI6OnJlcGxhY2VNYXRjaGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxhY2VTdHJpbmdNYXRjaGVzRnJv
bUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVwbGFjZU1hdGNo
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzZWxlY3RXaXRoR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0
ZVNlbGVjdGlvbldpdGhUb3VjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0
V2l0aFR3b1RvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpleHRlbmRTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RXb3JkQmFja3dhcmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb3ZlU2VsZWN0aW9uQnlPZmZzZXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0
UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0
ZW50UG9pbnRBbmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVNl
bGVjdGlvbldpdGhFeHRlbnRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcGxh
Y2VTZWxlY3RlZFRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXBsYWNlRGljdGF0
ZWRUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3luY0FwcGx5QXV0b2NvcnJlY3Rp
b24pOgorCiAyMDE4LTExLTIyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSb2xsb3V0IHIyMzg0MzI6IEJyZWFrcyBpbnRlcm5hbCBNYWMgYnVpbGRzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDYxZjAwZDNmNjU2OWNkN2U5ZjUyNmE2OGZhZmJkMzUw
YjJkYzVmYjcuLmZmMWM3YTlkZjIyMmQ2NTNiMjhiNDk4ZDNmNmEyNWQxYTA4OTRhMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0xMS0yMiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRyZXNzIHBv
c3QtcmV2aWV3IGZlZWRiYWNrIGFmdGVyIHIyMzg0MzgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTkxMworCisgICAgICAgIFJldmlld2VkIGJ5IFJ5
b3N1a2UgTml3YS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgt
W1dlYkZyYW1lIHNldFNlbGVjdGVkRE9NUmFuZ2U6YWZmaW5pdHk6Y2xvc2VUeXBpbmc6XSk6Cisg
ICAgICAgICgtW1dlYkZyYW1lIF9yZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50OnNlbGVjdFJl
cGxhY2VtZW50OnNtYXJ0UmVwbGFjZTptYXRjaFN0eWxlOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRTZWxlY3RlZERPTVJhbmdlOmFmZmlu
aXR5Ol0pOgorCiAyMDE4LTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogIlJlbG9hZCBXZWIgSW5zcGVjdG9yIiBidXR0
b24gbm8gbG9uZ2VyIHBhcnRpYWxseSB3b3JrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmlu
ZGV4IGIxZDhiMGI1OGNjNzVkNzA2MjZkZWI1MDQ1NzVkYzBjZjZjMzAyZTEuLjAwMjJmOGIxNGFl
MDc1YzVlMzllMjQ1NmUzYmNiM2JkNGIzOTdiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMS0yMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRyZXNzIHBvc3QtcmV2aWV3IGZlZWRiYWNrIGFm
dGVyIHIyMzg0MzgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTkxMworCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAg
ICAqIEFjY2Vzc2libGVUZXh0SW1wbC5jcHA6CisgICAgICAgIChBY2Nlc3NpYmxlVGV4dDo6cmVw
bGFjZVRleHQpOgorCiAyMDE4LTExLTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogIlJlbG9hZCBXZWIgSW5zcGVjdG9yIiBi
dXR0b24gbm8gbG9uZ2VyIHBhcnRpYWxseSB3b3JrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggN2JjNDUyY2QwNGZh
MmM2MzAzOTQ5MTE3YjA0MzdmMTNhZGNlMzQxOC4uZGYxMzMxZGFjMDdiM2ZkOGU3MTM0ZmVkYjMz
M2E1NzZhZmI5MmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC04MzgsNyArODM4LDcgQEAgU3RyaW5nIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnNlbGVjdFRleHQoQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJp
YSogY3JpdGVyaWEKICAgICAgICAgCiAgICAgICAgIFN0cmluZyBjbG9zZXN0U3RyaW5nID0gY2xv
c2VzdFN0cmluZ1JhbmdlLT50ZXh0KCk7CiAgICAgICAgIGJvb2wgcmVwbGFjZVNlbGVjdGlvbiA9
IGZhbHNlOwotICAgICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uo
Y2xvc2VzdFN0cmluZ1JhbmdlLmdldCgpLCBET1dOU1RSRUFNLCB0cnVlKSkgeworICAgICAgICBp
ZiAoZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY2xvc2VzdFN0cmluZ1Jhbmdl
LmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olll
cykpIHsKICAgICAgICAgICAgIHN3aXRjaCAoYWN0aXZpdHkpIHsKICAgICAgICAgICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVNlbGVjdFRleHRBY3Rpdml0eTo6RmluZEFuZENhcGl0YWxpemU6CiAgICAg
ICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBjYXBpdGFsaXplKGNsb3Nlc3RTdHJpbmcs
ICcgJyk7IC8vIEZJWE1FOiBOZWVkcyB0byB0YWtlIGxvY2FsZSBpbnRvIGFjY291bnQgdG8gd29y
ayBjb3JyZWN0bHkuCkBAIC04NzEsNyArODcxLDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OnNlbGVjdFRleHQoQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRDcml0ZXJpYSogY3JpdGVyaWEK
ICAgICAgICAgICAgIC8vIEEgYml0IG9idmlvdXMsIGJ1dCB3b3J0aCBub3RpbmcgdGhlIEFQSSBj
b250cmFjdCBmb3IgdGhpcyBtZXRob2QgaXMgdGhhdCB3ZSBzaG91bGQKICAgICAgICAgICAgIC8v
IHJldHVybiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nIHdoZW4gcmVwbGFjaW5nLCBidXQgdGhlIHNl
bGVjdGVkIHN0cmluZyBpZiBub3QuCiAgICAgICAgICAgICBpZiAocmVwbGFjZVNlbGVjdGlvbikg
ewotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRl
eHQocmVwbGFjZW1lbnRTdHJpbmcsIHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZW1lbnRTdHJpbmcsIEVk
aXRvcjo6U2VsZWN0UmVwbGFjZW1lbnQ6OlllcywgRWRpdG9yOjpTbWFydFJlcGxhY2U6Olllcyk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50U3RyaW5nOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMmI2NWJkZDA4
YmM1ZTIwNTI4MDNiNmMxNDYzNzFjMDAyNzBhYTQzYS4uMGIwY2RhZjZiMDI3NGRkYTAzYTgwZDhi
MDJkYjYyYzliZDU5OWM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzEwLDkg
KzMxMCw5IEBAIGJvb2wgRWRpdG9yOjpoYW5kbGVUZXh0RXZlbnQoVGV4dEV2ZW50JiBldmVudCkK
ICAgICAgICAgICAgIGlmIChjbGllbnQoKS0+cGVyZm9ybXNUd29TdGVwUGFzdGUoZXZlbnQucGFz
dGluZ0ZyYWdtZW50KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCi0g
ICAgICAgICAgICByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KCpldmVudC5wYXN0aW5nRnJh
Z21lbnQoKSwgZmFsc2UsIGV2ZW50LnNob3VsZFNtYXJ0UmVwbGFjZSgpLCBldmVudC5zaG91bGRN
YXRjaFN0eWxlKCksIEVkaXRBY3Rpb246OlBhc3RlLCBldmVudC5tYWlsQmxvY2txdW90ZUhhbmRs
aW5nKCkpOworICAgICAgICAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudCgqZXZlbnQu
cGFzdGluZ0ZyYWdtZW50KCksIFNlbGVjdFJlcGxhY2VtZW50OjpObywgZXZlbnQuc2hvdWxkU21h
cnRSZXBsYWNlKCkgPyBTbWFydFJlcGxhY2U6OlllcyA6IFNtYXJ0UmVwbGFjZTo6Tm8sIGV2ZW50
LnNob3VsZE1hdGNoU3R5bGUoKSA/IE1hdGNoU3R5bGU6OlllcyA6IE1hdGNoU3R5bGU6Ok5vLCBF
ZGl0QWN0aW9uOjpQYXN0ZSwgZXZlbnQubWFpbEJsb2NrcXVvdGVIYW5kbGluZygpKTsKICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoZXZlbnQuZGF0
YSgpLCBmYWxzZSwgZXZlbnQuc2hvdWxkU21hcnRSZXBsYWNlKCksIEVkaXRBY3Rpb246OlBhc3Rl
KTsKKyAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChldmVudC5kYXRhKCksIFNl
bGVjdFJlcGxhY2VtZW50OjpObywgZXZlbnQuc2hvdWxkU21hcnRSZXBsYWNlKCkgPyBTbWFydFJl
cGxhY2U6OlllcyA6IFNtYXJ0UmVwbGFjZTo6Tm8sIEVkaXRBY3Rpb246OlBhc3RlKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC02MzksNyArNjM5LDcgQEAgYm9vbCBFZGl0b3I6
OnNob3VsZEluc2VydEZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBSYW5nZSog
cmVwbGFjaW5nRE8KICAgICByZXR1cm4gY2xpZW50KCktPnNob3VsZEluc2VydE5vZGUoJmZyYWdt
ZW50LCByZXBsYWNpbmdET01SYW5nZSwgZ2l2ZW5BY3Rpb24pOwogfQogCi12b2lkIEVkaXRvcjo6
cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwg
Ym9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHls
ZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxC
bG9ja3F1b3RlSGFuZGxpbmcpCit2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFn
bWVudChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgU2VsZWN0UmVwbGFjZW1lbnQgc2VsZWN0
UmVwbGFjZW1lbnQsIFNtYXJ0UmVwbGFjZSBzbWFydFJlcGxhY2UsIE1hdGNoU3R5bGUgbWF0Y2hT
dHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcpCiB7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24g
PSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwogICAgIGlmIChzZWxlY3Rpb24uaXNO
b25lKCkgfHwgIXNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpKQpAQCAtNjUwLDExICs2NTAs
MTEgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoRG9jdW1lbnRG
cmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgc2VsZWMKICAgICAgICAgcmVwbGFjZWRUZXh0ID0gQWNj
ZXNzaWJpbGl0eVJlcGxhY2VkVGV4dChzZWxlY3Rpb24pOwogCiAgICAgT3B0aW9uU2V0PFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2Fu
aXRpemVGcmFnbWVudCB9OwotICAgIGlmIChzZWxlY3RSZXBsYWNlbWVudCkKKyAgICBpZiAoc2Vs
ZWN0UmVwbGFjZW1lbnQgPT0gU2VsZWN0UmVwbGFjZW1lbnQ6OlllcykKICAgICAgICAgb3B0aW9u
cy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50KTsKLSAgICBp
ZiAoc21hcnRSZXBsYWNlKQorICAgIGlmIChzbWFydFJlcGxhY2UgPT0gU21hcnRSZXBsYWNlOjpZ
ZXMpCiAgICAgICAgIG9wdGlvbnMuYWRkKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTbWFydFJl
cGxhY2UpOwotICAgIGlmIChtYXRjaFN0eWxlKQorICAgIGlmIChtYXRjaFN0eWxlID09IE1hdGNo
U3R5bGU6OlllcykKICAgICAgICAgb3B0aW9ucy5hZGQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
Ok1hdGNoU3R5bGUpOwogICAgIGlmIChtYWlsQmxvY2txdW90ZUhhbmRsaW5nID09IE1haWxCbG9j
a3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpCiAgICAgICAgIG9wdGlvbnMuYWRkKFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpJZ25vcmVNYWlsQmxvY2txdW90ZSk7CkBAIC02ODUsMTMg
KzY4NSwxMyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChEb2N1
bWVudEZyYWdtZW50JiBmcmFnbWVudCwgYm9vbCBzZWxlYwogICAgICAgICBtX3NwZWxsQ2hlY2tl
ci0+cmVxdWVzdENoZWNraW5nRm9yKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKLXZv
aWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBi
b29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgRWRpdEFjdGlvbiBlZGl0
aW5nQWN0aW9uKQordm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChjb25zdCBT
dHJpbmcmIHRleHQsIFNlbGVjdFJlcGxhY2VtZW50IHNlbGVjdFJlcGxhY2VtZW50LCBTbWFydFJl
cGxhY2Ugc21hcnRSZXBsYWNlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24pCiB7CiAgICAgUmVm
UHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsKICAgICBpZiAoIXJhbmdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KGNyZWF0ZUZy
YWdtZW50RnJvbVRleHQoKnJhbmdlLCB0ZXh0KSwgc2VsZWN0UmVwbGFjZW1lbnQsIHNtYXJ0UmVw
bGFjZSwgdHJ1ZSwgZWRpdGluZ0FjdGlvbik7CisgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFn
bWVudChjcmVhdGVGcmFnbWVudEZyb21UZXh0KCpyYW5nZSwgdGV4dCksIHNlbGVjdFJlcGxhY2Vt
ZW50LCBzbWFydFJlcGxhY2UsIE1hdGNoU3R5bGU6OlllcywgZWRpdGluZ0FjdGlvbik7CiB9CiAK
IFJlZlB0cjxSYW5nZT4gRWRpdG9yOjpzZWxlY3RlZFJhbmdlKCkKQEAgLTIwMjMsNyArMjAyMyw3
IEBAIHZvaWQgRWRpdG9yOjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0
IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCA9
IHN0ZDo6bWluKGJhc2VPZmZzZXQgKyBzZWxlY3Rpb25TdGFydCwgZXh0ZW50T2Zmc2V0KTsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGVuZCA9IHN0ZDo6bWluKHN0ZDo6bWF4KHN0YXJ0LCBiYXNlT2Zm
c2V0ICsgc2VsZWN0aW9uRW5kKSwgZXh0ZW50T2Zmc2V0KTsKICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gc2VsZWN0ZWRSYW5nZSA9IFJhbmdlOjpjcmVhdGUoYmFzZU5vZGUtPmRvY3VtZW50KCks
IGJhc2VOb2RlLCBzdGFydCwgYmFzZU5vZGUsIGVuZCk7Ci0gICAgICAgICAgICBtX2ZyYW1lLnNl
bGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uoc2VsZWN0ZWRSYW5nZS5nZXQoKSwgRE9XTlNUUkVB
TSwgZmFsc2UpOworICAgICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJh
bmdlKHNlbGVjdGVkUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6Tm8pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTE3LDcgKzI1MTcs
NyBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0
IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogCiAgICAgICAgIGlmICghbV9mcmFtZS5lZGl0
b3IoKS5zaG91bGRJbnNlcnRUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIG1pc3NwZWxsaW5nUmFu
Z2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6VHlwZWQpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBtX2ZyYW1lLmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChhdXRv
Y29ycmVjdGVkU3RyaW5nLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rpb246Okluc2VydCk7CisgICAg
ICAgIG1fZnJhbWUuZWRpdG9yKCkucmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGF1dG9jb3JyZWN0
ZWRTdHJpbmcsIFNlbGVjdFJlcGxhY2VtZW50OjpObywgU21hcnRSZXBsYWNlOjpObywgRWRpdEFj
dGlvbjo6SW5zZXJ0KTsKIAogICAgICAgICAvLyBSZXNldCB0aGUgY2hhcmV0IG9uZSBjaGFyYWN0
ZXIgZnVydGhlci4KICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5tb3ZlVG8obV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSk7CkBAIC0yODc1LDcgKzI4NzUsNyBAQCB2b2lk
IEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZykKICAgICAKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlY29yZEF1
dG9jb3JyZWN0aW9uUmVzcG9uc2UoQXV0b2NvcnJlY3Rpb25SZXNwb25zZTo6UmV2ZXJ0ZWQsIHJl
cGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24uZ2V0KCkpOwogICAgIFRleHRDaGVja2luZ1BhcmFncmFw
aCBwYXJhZ3JhcGgoKnNlbGVjdGlvbik7Ci0gICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJl
cGxhY2VkU3RyaW5nLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rpb246Okluc2VydCk7CisgICAgcmVw
bGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VkU3RyaW5nLCBTZWxlY3RSZXBsYWNlbWVudDo6
Tm8sIFNtYXJ0UmVwbGFjZTo6Tm8sIEVkaXRBY3Rpb246Okluc2VydCk7CiAgICAgYXV0byBjaGFu
Z2VkUmFuZ2UgPSBwYXJhZ3JhcGguc3VicmFuZ2UocGFyYWdyYXBoLmNoZWNraW5nU3RhcnQoKSwg
cmVwbGFjZWRTdHJpbmcubGVuZ3RoKCkpOwogICAgIGNoYW5nZWRSYW5nZS0+c3RhcnRDb250YWlu
ZXIoKS5kb2N1bWVudCgpLm1hcmtlcnMoKS5hZGRNYXJrZXIoY2hhbmdlZFJhbmdlLnB0cigpLCBE
b2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQsIFN0cmluZygpKTsKICAgICBtX2FsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXItPm1hcmtSZXZlcnNlZChjaGFuZ2VkUmFuZ2UpOwpAQCAtMzEyMSw3ICsz
MTIxLDcgQEAgdm9pZCBFZGl0b3I6OnRyYW5zcG9zZSgpCiAgICAgLy8gSW5zZXJ0IHRoZSB0cmFu
c3Bvc2VkIGNoYXJhY3RlcnMuCiAgICAgaWYgKCFzaG91bGRJbnNlcnRUZXh0KHRyYW5zcG9zZWQs
IHJhbmdlLmdldCgpLCBFZGl0b3JJbnNlcnRBY3Rpb246OlR5cGVkKSkKICAgICAgICAgcmV0dXJu
OwotICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0cmFuc3Bvc2VkLCBmYWxzZSwgZmFsc2Us
IEVkaXRBY3Rpb246Okluc2VydCk7CisgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHRyYW5z
cG9zZWQsIFNlbGVjdFJlcGxhY2VtZW50OjpObywgU21hcnRSZXBsYWNlOjpObywgRWRpdEFjdGlv
bjo6SW5zZXJ0KTsKIH0KIAogdm9pZCBFZGl0b3I6OmFkZFJhbmdlVG9LaWxsUmluZyhjb25zdCBS
YW5nZSYgcmFuZ2UsIEtpbGxSaW5nSW5zZXJ0aW9uTW9kZSBtb2RlKQpAQCAtNDA5OCw3ICs0MDk4
LDcgQEAgdm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYKICAgICBhdXRvIGZyYWdtZW50VG9JbnNlcnQg
PSBkb2N1bWVudCgpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBmcmFnbWVudFRvSW5z
ZXJ0LT5hcHBlbmRDaGlsZChhdHRhY2htZW50LmdldCgpKTsKIAotICAgIHJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoZnJhZ21lbnRUb0luc2VydC5nZXQoKSwgZmFsc2UsIGZhbHNlLCB0cnVl
KTsKKyAgICByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KGZyYWdtZW50VG9JbnNlcnQuZ2V0
KCksIFNlbGVjdFJlcGxhY2VtZW50OjpObywgU21hcnRSZXBsYWNlOjpObywgTWF0Y2hTdHlsZTo6
WWVzKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAppbmRleCBlOGZmY2M4ZjExOWI1OGM0NTE4ZGQ3ZjlhMzZmOWE1MGZlODMw
NmQzLi43YTE0ZWRjMGMxNDE5NzE4ZDU2MTQ3M2QwYmI5NTMzMzRhZjRhY2FiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKQEAgLTQzOCw4ICs0MzgsMTEgQEAgcHVibGljOgogICAgIHZvaWQgdGV4
dERpZENoYW5nZUluVGV4dEFyZWEoRWxlbWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIFdyaXRp
bmdEaXJlY3Rpb24gYmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50
KERvY3VtZW50RnJhZ21lbnQmLCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0UmVw
bGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6SW5zZXJ0LCBN
YWlsQmxvY2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJs
b2NrcXVvdGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhU
ZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRSZXBs
YWNlLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6SW5zZXJ0KTsKKyAgICBlbnVtIGNsYXNzIFNl
bGVjdFJlcGxhY2VtZW50IDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBlbnVtIGNsYXNzIFNtYXJ0
UmVwbGFjZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgZW51bSBjbGFzcyBNYXRjaFN0eWxlIDog
Ym9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYsIFNlbGVjdFJlcGxhY2VtZW50LCBTbWFy
dFJlcGxhY2UsIE1hdGNoU3R5bGUsIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uOjpJbnNlcnQsIE1h
aWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0Qmxv
Y2txdW90ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFRl
eHQoY29uc3QgU3RyaW5nJiwgU2VsZWN0UmVwbGFjZW1lbnQsIFNtYXJ0UmVwbGFjZSwgRWRpdEFj
dGlvbiA9IEVkaXRBY3Rpb246Okluc2VydCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxl
Y3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgaW50IGZy
b20sIGludCBsZW5ndGgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZm
ZWN0ZWRCeUVkaXRpbmcoYm9vbCBvbmx5SGFuZGxlV29yZHNDb250YWluaW5nU2VsZWN0aW9uKTsK
ICAgICB2b2lkIGRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24oY29uc3QgUG9zaXRpb24m
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCmluZGV4IDg2ZjljY2M0ZjYyNzQyZTY0OWQ3MmI5YTRhYTgxOTI0OGYw
NDRiYWQuLmNhNmRmMTA5YTg5Y2VkMmJlYzdmYWNiNjRiMmI4NzE5NmQyZWQxNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHN0
YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoRnJhbWUmIGZyYW1lLCBUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgRUFmZmluaXR5IGFmZmluaXR5ID0gc2VsZWN0aW9u
LmFmZmluaXR5KCk7CiAgICAgaWYgKCFmcmFtZS5lZGl0b3IoKS5jbGllbnQoKS0+c2hvdWxkQ2hh
bmdlU2VsZWN0ZWRSYW5nZShvbGRSYW5nZS5nZXQoKSwgbmV3UmFuZ2UuZ2V0KCksIGFmZmluaXR5
LCBmYWxzZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3RlZFJhbmdlKG5ld1JhbmdlLmdldCgpLCBhZmZpbml0eSwgdHJ1ZSk7CisgICAgZnJh
bWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShuZXdSYW5nZS5nZXQoKSwgYWZmaW5pdHks
IEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb01h
cmsoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0CiAgICAg
UmVmUHRyPFJhbmdlPiBtYXJrID0gZnJhbWUuZWRpdG9yKCkubWFyaygpLnRvTm9ybWFsaXplZFJh
bmdlKCk7CiAgICAgRnJhbWVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLnNlbGVjdGlvbigp
OwogICAgIGlmIChtYXJrICYmIGZyYW1lLmVkaXRvcigpLnNlbGVjdGVkUmFuZ2UoKSkgewotICAg
ICAgICBib29sIHNlbGVjdGVkID0gc2VsZWN0aW9uLnNldFNlbGVjdGVkUmFuZ2UodW5pb25ET01S
YW5nZXMoKm1hcmssICpmcmFtZS5lZGl0b3IoKS5zZWxlY3RlZFJhbmdlKCkpLmdldCgpLCBET1dO
U1RSRUFNLCB0cnVlKTsKKyAgICAgICAgYm9vbCBzZWxlY3RlZCA9IHNlbGVjdGlvbi5zZXRTZWxl
Y3RlZFJhbmdlKHVuaW9uRE9NUmFuZ2VzKCptYXJrLCAqZnJhbWUuZWRpdG9yKCkuc2VsZWN0ZWRS
YW5nZSgpKS5nZXQoKSwgRE9XTlNUUkVBTSwgRnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlw
aW5nOjpZZXMpOwogICAgICAgICBBU1NFUlQoc2VsZWN0ZWQpOwogICAgICAgICBpZiAoIXNlbGVj
dGVkKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgc3Rh
dGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRvTWFyayhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QKICAgICAgICAgUEFMOjpzeXN0ZW1CZWVwKCk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRS
YW5nZSh1bmlvbkRPTVJhbmdlcygqbWFyaywgKnNlbGVjdGlvbikuZ2V0KCksIERPV05TVFJFQU0s
IHRydWUpOworICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UodW5pb25ET01S
YW5nZXMoKm1hcmssICpzZWxlY3Rpb24pLmdldCgpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlv
bjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYjJjN2M1ZTIzMjBiZWQz
ZDNmMDQxNzQ3N2ZjNmExZjk5OTk0YjhkOS4uNDI0ZTMyZTlhZTk3MGVmYTcxZDk1NmE0YzRjODk4
MzkyNzM0MTM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
QEAgLTE5NzksNyArMTk3OSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCgpCiAg
ICAgfQogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJhbmdlKFJhbmdlKiBy
YW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29sIGNsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJl
ZCB1c2VyVHJpZ2dlcmVkKQorYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShS
YW5nZSogcmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgU2hvdWxkQ2xvc2VUeXBpbmcgY2xvc2VU
eXBpbmcsIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CiAgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk5NCw3ICsxOTk0LDcgQEAgYm9vbCBGcmFtZVNl
bGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShSYW5nZSogcmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0
eSwgYm9vbCBjbG8KICNlbmRpZgogCiAgICAgT3B0aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4g
c2VsZWN0aW9uT3B0aW9ucyB7ICBDbGVhclR5cGluZ1N0eWxlIH07Ci0gICAgaWYgKGNsb3NlVHlw
aW5nKQorICAgIGlmIChjbG9zZVR5cGluZyA9PSBTaG91bGRDbG9zZVR5cGluZzo6WWVzKQogICAg
ICAgICBzZWxlY3Rpb25PcHRpb25zLmFkZChDbG9zZVR5cGluZyk7CiAKICAgICBpZiAodXNlclRy
aWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmgKaW5kZXggZDE5ZjM2NWQyOWYxYzVjMTQ1ZGI3Y2M1NzNjYjg0OTUxNGMzY2ZhZC4u
NmQ3NTJkZjExOTMyOTA3ZDIzMDhlMTkxM2RlMDgxOGEzYzc4YzExMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaApAQCAtMTUwLDcgKzE1MCw5IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c2VsZWN0aW9uOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+ID0gZGVmYXVs
dFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgPSBBWFRleHRT
dGF0ZUNoYW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25DdXJzb3JPblNj
cm9sbElmTmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRTZWxlY3RlZFJhbmdlKFJhbmdlKiwgRUFmZmluaXR5
LCBib29sIGNsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwor
CisgICAgZW51bSBjbGFzcyBTaG91bGRDbG9zZVR5cGluZyA6IGJvb2wgeyBObywgWWVzIH07Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRTZWxlY3RlZFJhbmdlKFJhbmdlKiwgRUFmZmluaXR5
LCBTaG91bGRDbG9zZVR5cGluZywgRVVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVjdEFsbCgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2xlYXIoKTsKICAgICB2b2lkIHByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKaW5kZXggYzlhNjBlNTU5Y2U2ZmI2Njk5ZDU5OTExZTVhYjQ0NzEyYWYwNDRjOS4u
YzQ5MzY5NzRkYzgzN2E0MGQ4YTZhMDFlOGEzZGIxNzNlOThiMzA4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCkBAIC03NzIsNyArNzcyLDcgQEAgc3RydWN0IEZpbmRSZXBsYWNlbWVudFJhbmdlIHsKICAg
ICBzaXplX3QgbGVuZ3RoIHsgMCB9OwogfTsKIAotc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQ
YWdlJiBwYWdlLCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiYgcmFuZ2VzLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50VGV4dCkKK3N0YXRpYyB2b2lkIHJlcGxhY2VSYW5nZXMoUGFnZSYg
cGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYgcmFuZ2VzLCBjb25zdCBT
dHJpbmcmIHJlcGxhY2VtZW50VGV4dCkKIHsKICAgICBIYXNoTWFwPFJlZlB0cjxDb250YWluZXJO
b2RlPiwgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPj4gcmFuZ2VzQnlDb250YWluZXJOb2Rl
OwogICAgIGZvciAoYXV0byYgcmFuZ2UgOiByYW5nZXMpIHsKQEAgLTgxOSw3ICs4MTksNyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIFZlY3RvcjxGaW5kUmVwbGFjZW1l
bnRSYW5nZT4mJiByYW5nZXMsIGNvbgogICAgICAgICByZXR1cm4gZnJhbWVUb1RyYXZlcnNhbElu
ZGV4TWFwLmdldChmaXJzdEZyYW1lKSA+IGZyYW1lVG9UcmF2ZXJzYWxJbmRleE1hcC5nZXQoc2Vj
b25kRnJhbWUpOwogICAgIH0pOwogCi0gICAgZm9yIChhdXRvIGNvbnRhaW5lciA6IGNvbnRhaW5l
ck5vZGVzSW5PcmRlck9mUmVwbGFjZW1lbnQpIHsKKyAgICBmb3IgKGF1dG8mIGNvbnRhaW5lciA6
IGNvbnRhaW5lck5vZGVzSW5PcmRlck9mUmVwbGFjZW1lbnQpIHsKICAgICAgICAgYXV0byBmcmFt
ZSA9IG1ha2VSZWZQdHIoY29udGFpbmVyLT5kb2N1bWVudCgpLmZyYW1lKCkpOwogICAgICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICAgICAgY29udGludWU7CkBAIC04MzEsMTMgKzgzMSwxMyBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIFZlY3RvcjxGaW5kUmVwbGFjZW1l
bnRSYW5nZT4mJiByYW5nZXMsIGNvbgogICAgICAgICAgICAgaWYgKCFyYW5nZSB8fCByYW5nZS0+
Y29sbGFwc2VkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBET1dOU1RSRUFN
LCB0cnVlKTsKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0
aFRleHQocmVwbGFjZW1lbnRUZXh0LCB0cnVlLCBmYWxzZSwgRWRpdEFjdGlvbjo6SW5zZXJ0UmVw
bGFjZW1lbnQpOworICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFu
Z2UocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5
cGluZzo6WWVzKTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQocmVwbGFjZW1lbnRUZXh0LCBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpZZXMs
IEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObywgRWRpdEFjdGlvbjo6SW5zZXJ0UmVwbGFjZW1lbnQp
OwogICAgICAgICB9CiAgICAgfQogfQogCi11aW50MzJfdCBQYWdlOjpyZXBsYWNlUmFuZ2VzV2l0
aFRleHQoVmVjdG9yPFJlZjxSYW5nZT4+JiYgcmFuZ2VzVG9SZXBsYWNlLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5KQordWludDMyX3QgUGFnZTo6cmVw
bGFjZVJhbmdlc1dpdGhUZXh0KGNvbnN0IFZlY3RvcjxSZWY8UmFuZ2U+PiYgcmFuZ2VzVG9SZXBs
YWNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5KQog
ewogICAgIC8vIEZJWE1FOiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgcmVzcGVjdCB0aGUgYHNl
bGVjdGlvbk9ubHlgIGZsYWcgYnkgY2hlY2tpbmcgd2hldGhlciBlYWNoIHJhbmdlIGJlaW5nIHJl
cGxhY2VkIGlzCiAgICAgLy8gY29udGFpbmVkIHdpdGhpbiBpdHMgZnJhbWUncyBzZWxlY3Rpb24u
CkBAIC04NjYsNyArODY2LDcgQEAgdWludDMyX3QgUGFnZTo6cmVwbGFjZVJhbmdlc1dpdGhUZXh0
KFZlY3RvcjxSZWY8UmFuZ2U+PiYmIHJhbmdlc1RvUmVwbGFjZSwgY29uc3QKICAgICAgICAgcmVw
bGFjZW1lbnRSYW5nZXMuYXBwZW5kKHsgV1RGTW92ZShoaWdoZXN0Um9vdCksIHJlcGxhY2VtZW50
TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoIH0pOwogICAgIH0KIAotICAgIHJlcGxhY2VSYW5n
ZXMoKnRoaXMsIFdURk1vdmUocmVwbGFjZW1lbnRSYW5nZXMpLCByZXBsYWNlbWVudFRleHQpOwor
ICAgIHJlcGxhY2VSYW5nZXMoKnRoaXMsIHJlcGxhY2VtZW50UmFuZ2VzLCByZXBsYWNlbWVudFRl
eHQpOwogICAgIHJldHVybiByYW5nZXNUb1JlcGxhY2Uuc2l6ZSgpOwogfQogCkBAIC04NzgsNyAr
ODc4LDcgQEAgdWludDMyX3QgUGFnZTo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRUZXh0KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGF1dG8gZWRp
dEFjdGlvbiA9IHNlbGVjdGlvbi5pc1JhbmdlKCkgPyBFZGl0QWN0aW9uOjpJbnNlcnRSZXBsYWNl
bWVudCA6IEVkaXRBY3Rpb246Okluc2VydDsKLSAgICBmcmFtZS0+ZWRpdG9yKCkucmVwbGFjZVNl
bGVjdGlvbldpdGhUZXh0KHJlcGxhY2VtZW50VGV4dCwgdHJ1ZSwgZmFsc2UsIGVkaXRBY3Rpb24p
OworICAgIGZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZW1l
bnRUZXh0LCBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpZZXMsIEVkaXRvcjo6U21hcnRSZXBs
YWNlOjpObywgZWRpdEFjdGlvbik7CiAgICAgcmV0dXJuIDE7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggZjg0MGQxMTZiM2E2MDYxZmI2NTBlODk0YTkzZGFhNzg2ZTBiOTBlNC4uZjg0NjVhYThlMjU4
NjVkNGIwNWViZTZmY2FjNzZiOWYyMzdjODc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI3OCw3ICsy
NzgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoKSBj
b25zdCB7IHJldHVybiBtX3RhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50czsgfQogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCBE
aWRXcmFwKiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHVpbnQzMl90IHJlcGxhY2VS
YW5nZXNXaXRoVGV4dChWZWN0b3I8UmVmPFJhbmdlPj4mJiByYW5nZXNUb1JlcGxhY2UsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHkpOworICAgIFdFQkNP
UkVfRVhQT1JUIHVpbnQzMl90IHJlcGxhY2VSYW5nZXNXaXRoVGV4dChjb25zdCBWZWN0b3I8UmVm
PFJhbmdlPj4mIHJhbmdlc1RvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQs
IGJvb2wgc2VsZWN0aW9uT25seSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdWludDMyX3QgcmVwbGFj
ZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0KTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSYW5nZT4gcmFuZ2VPZlN0cmluZyhjb25zdCBTdHJpbmcm
LCBSYW5nZSosIEZpbmRPcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXgg
OGJmODZhZWMyY2EzYWI3N2RhMTY5YTRjZmJjMzZkODY3NmU5M2Y5NC4uNzk5MzA1NzM3ZGNhOTUx
YmEwYjFmNDhmOWU1NWIxNGM3MjEwOGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAK
QEAgLTQ2MSwxMSArNDYxLDEyIEBAIHZvaWQgV0tCdW5kbGVQYWdlUmVwbGFjZVN0cmluZ01hdGNo
ZXMoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQXJyYXlSZWYgbWF0Y2hJCiAgICAgVmVjdG9y
PHVpbnQzMl90PiBpbmRpY2VzOwogICAgIGluZGljZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
YXRjaEluZGljZXMtPnNpemUoKSk7CiAKLSAgICBmb3IgKHNpemVfdCBhcnJheUluZGV4ID0gMDsg
YXJyYXlJbmRleCA8IG1hdGNoSW5kaWNlcy0+c2l6ZSgpOyArK2FycmF5SW5kZXgpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIGluZGV4QXNPYmplY3QgPSBtYXRjaEluZGljZXMtPmF0PEFQSTo6VUludDY0
PihhcnJheUluZGV4KSkKKyAgICBhdXRvIG51bWJlck9mTWF0Y2hJbmRpY2VzID0gbWF0Y2hJbmRp
Y2VzLT5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZk1hdGNoSW5k
aWNlczsgKytpKSB7CisgICAgICAgIGlmIChhdXRvKiBpbmRleEFzT2JqZWN0ID0gbWF0Y2hJbmRp
Y2VzLT5hdDxBUEk6OlVJbnQ2ND4oaSkpCiAgICAgICAgICAgICBpbmRpY2VzLnVuY2hlY2tlZEFw
cGVuZChpbmRleEFzT2JqZWN0LT52YWx1ZSgpKTsKICAgICB9Ci0gICAgdG9JbXBsKHBhZ2VSZWYp
LT5yZXBsYWNlU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRsZShXVEZNb3ZlKGluZGljZXMp
LCB0b1dURlN0cmluZyhyZXBsYWNlbWVudFRleHQpLCBzZWxlY3Rpb25Pbmx5KTsKKyAgICB0b0lt
cGwocGFnZVJlZiktPnJlcGxhY2VTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGluZGlj
ZXMsIHRvV1RGU3RyaW5nKHJlcGxhY2VtZW50VGV4dCksIHNlbGVjdGlvbk9ubHkpOwogfQogCiBX
S0ltYWdlUmVmIFdLQnVuZGxlUGFnZUNyZWF0ZVNuYXBzaG90V2l0aE9wdGlvbnMoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2VSZWYsIFdLUmVjdCByZWN0LCBXS1NuYXBzaG90T3B0aW9ucyBvcHRpb25zKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIu
Y3BwCmluZGV4IGQ3OTdjMmVmZGU5NDNjNzUxNjAxOWM2ZDhiYzQ3YTIzNTk5NDhiYzguLjlmZWZk
YmNhMTJjZjU5ZTZlMzI1Y2M5YzI0ZWJlNGYzMDkyOWQxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTk5LDcgKzk5
LDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb24KICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkQ291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgbWF0Y2hDb3Vu
dCkpOwogfQogCi11aW50MzJfdCBGaW5kQ29udHJvbGxlcjo6cmVwbGFjZU1hdGNoZXMoVmVjdG9y
PHVpbnQzMl90PiYmIG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQs
IGJvb2wgc2VsZWN0aW9uT25seSkKK3VpbnQzMl90IEZpbmRDb250cm9sbGVyOjpyZXBsYWNlTWF0
Y2hlcyhjb25zdCBWZWN0b3I8dWludDMyX3Q+JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHkpCiB7CiAgICAgaWYgKG1hdGNoSW5k
aWNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnJl
cGxhY2VTZWxlY3Rpb25XaXRoVGV4dChyZXBsYWNlbWVudFRleHQpOwpAQCAtMTE3LDcgKzExNyw3
IEBAIHVpbnQzMl90IEZpbmRDb250cm9sbGVyOjpyZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMy
X3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTCiAgICAgICAgIGlmIChyYW5nZXNUb1JlcGxhY2Uu
c2l6ZSgpID49IG1heGltdW1OdW1iZXJPZk1hdGNoZXNUb1JlcGxhY2UpCiAgICAgICAgICAgICBi
cmVhazsKICAgICB9Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cmVwbGFjZVJh
bmdlc1dpdGhUZXh0KFdURk1vdmUocmFuZ2VzVG9SZXBsYWNlKSwgcmVwbGFjZW1lbnRUZXh0LCBz
ZWxlY3Rpb25Pbmx5KTsKKyAgICByZXR1cm4gbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5yZXBsYWNl
UmFuZ2VzV2l0aFRleHQocmFuZ2VzVG9SZXBsYWNlLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlv
bk9ubHkpOwogfQogCiBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdlKiBwYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVy
LmgKaW5kZXggOGFlZjIwNWVkOWE1MmRlMzZhYjY4MWM5ZjJiNjE3YzJmOGNlNjNkZS4uZTJmNGEx
MTBkMDJhYzNhNDUzMTgyODk2NzVkNmEwMDk4ZmJjMDFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KTsK
ICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKICAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25z
dCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7Ci0gICAgdWlu
dDMyX3QgcmVwbGFjZU1hdGNoZXMoVmVjdG9yPHVpbnQzMl90PiYmIG1hdGNoSW5kaWNlcywgY29u
c3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQsIGJvb2wgc2VsZWN0aW9uT25seSk7CisgICAgdWlu
dDMyX3QgcmVwbGFjZU1hdGNoZXMoY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJbmRpY2Vz
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5KTsKICAg
ICAKICAgICB2b2lkIGhpZGVGaW5kSW5kaWNhdG9yKCk7CiAgICAgdm9pZCBzaG93RmluZEluZGlj
YXRvckluU2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDc0YjA2ZGMyOWZjOTJiYWNiOTRiMWJjNDg0YWZmNThlNTU3OWM1NWQu
LjRhYWUxNGYxNzM4NzAwMzBhMjczNDNiOTBiZDMxYTA4MzFhMTIxYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNzk2LDkgKzM3OTYsOSBA
QCB2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0
IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aQogICAgIGZpbmRDb250cm9sbGVyKCkuZmluZFN0cmlu
Z01hdGNoZXModGFyZ2V0LCBvcHRpb25zLCAwKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXBsYWNl
U3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRsZShWZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJ
bmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5
KQordm9pZCBXZWJQYWdlOjpyZXBsYWNlU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRsZShj
b25zdCBWZWN0b3I8dWludDMyX3Q+JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHkpCiB7Ci0gICAgZmluZENvbnRyb2xsZXIoKS5y
ZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2Vs
ZWN0aW9uT25seSk7CisgICAgZmluZENvbnRyb2xsZXIoKS5yZXBsYWNlTWF0Y2hlcyhtYXRjaElu
ZGljZXMsIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3Qgb3B0aW9ucywgdWlu
dDMyX3QgbWF4TWF0Y2hDb3VudCkKQEAgLTM4MzEsOSArMzgzMSw5IEBAIHZvaWQgV2ViUGFnZTo6
Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRpb25z
LCB1aW50MzJfCiAgICAgZmluZENvbnRyb2xsZXIoKS5jb3VudFN0cmluZ01hdGNoZXMoc3RyaW5n
LCBzdGF0aWNfY2FzdDxGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaElu
ZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHks
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cmVwbGFjZU1hdGNoZXMoY29u
c3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2Vt
ZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0g
ICAgYXV0byBudW1iZXJPZlJlcGxhY2VtZW50cyA9IGZpbmRDb250cm9sbGVyKCkucmVwbGFjZU1h
dGNoZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlvbk9u
bHkpOworICAgIGF1dG8gbnVtYmVyT2ZSZXBsYWNlbWVudHMgPSBmaW5kQ29udHJvbGxlcigpLnJl
cGxhY2VNYXRjaGVzKG1hdGNoSW5kaWNlcywgcmVwbGFjZW1lbnRUZXh0LCBzZWxlY3Rpb25Pbmx5
KTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2sobnVt
YmVyT2ZSZXBsYWNlbWVudHMsIGNhbGxiYWNrSUQpKTsKIH0KIApAQCAtNDAzNiw5ICs0MDM2LDcg
QEAgdm9pZCBXZWJQYWdlOjpkaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGNvbnN0
IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGkKIAogdm9pZCBXZWJQYWdlOjpyZXBsYWNlU2VsZWN0
aW9uV2l0aFRleHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgYm9v
bCBzZWxlY3RSZXBsYWNlbWVudCA9IHRydWU7Ci0gICAgYm9vbCBzbWFydFJlcGxhY2UgPSBmYWxz
ZTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0
ZXh0LCBzZWxlY3RSZXBsYWNlbWVudCwgc21hcnRSZXBsYWNlKTsKKyAgICByZXR1cm4gZnJhbWUt
PmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0ZXh0LCBXZWJDb3JlOjpFZGl0b3I6
OlNlbGVjdFJlcGxhY2VtZW50OjpZZXMsIFdlYkNvcmU6OkVkaXRvcjo6U21hcnRSZXBsYWNlOjpO
byk7CiB9CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5MTFhMmY4NzQ4NDBjNmRhNmE0NjExNmJkMGQ0
Y2JjZGM1NjZhZDI5Li41NzUzMjk4NDg5NTkwMzk0NDBmYTFhYjE3ZmI3MTA2NTU4M2U4N2E4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00MDksNyAr
NDA5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBmaW5kU3RyaW5nRnJvbUluamVjdGVkQnVuZGxl
KGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKICAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVz
RnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKLSAgICB2b2lk
IHJlcGxhY2VTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKFZlY3Rvcjx1aW50MzJfdD4m
JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVj
dGlvbk9ubHkpOworICAgIHZvaWQgcmVwbGFjZVN0cmluZ01hdGNoZXNGcm9tSW5qZWN0ZWRCdW5k
bGUoY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5KTsKIAogICAgIFdlYkZyYW1lKiBtYWlu
V2ViRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZS5nZXQoKTsgfQogCkBAIC0xMzA2
LDcgKzEzMDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKHVpbnQzMl90
IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgaGlkZUZpbmRVSSgpOwogICAgIHZvaWQgY291bnRTdHJp
bmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJfdCBt
YXhNYXRjaENvdW50KTsKLSAgICB2b2lkIHJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4m
JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVj
dGlvbk9ubHksIENhbGxiYWNrSUQpOworICAgIHZvaWQgcmVwbGFjZU1hdGNoZXMoY29uc3QgVmVj
dG9yPHVpbnQzMl90PiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4
dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBDYWxsYmFja0lEKTsKIAogI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKICAgICB2b2lkIHNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGVlMDgyYzRhOWY0YTQ0M2Uz
MGIyNmRlNmZkMDY0YjJmYWJkMWU1NjcuLjU3ODA3YzY1Mzk1NGVhNmY4NjZkNjc1YzhiNmY0MzAy
MTg3NzExMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCkBAIC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVj
dFdpdGhHZXN0dXJlKGNvbnN0IEludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ3JhbnVsYXJpdHks
IHVpbgogICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKHJhbmdlKQotICAgICAgICBmcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBwb3NpdGlvbi5hZmZp
bml0eSgpLCB0cnVlLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCku
c2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQp
OwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXN0dXJlQ2FsbGJhY2socG9p
bnQsIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIHN0YXRpY19jYXN0PHVpbnQzMl90PihmbGFn
cyksIGNhbGxiYWNrSUQpKTsKIH0KQEAgLTEzNjQsNyArMTM2NCw3IEBAIHZvaWQgV2ViUGFnZTo6
dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3QgSW50UG9pbnQmIHBvaW50LCB1aW50MzJf
dCB0b3VjaGVzCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAocmFuZ2UpCi0gICAgICAg
IGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIHBvc2l0aW9u
LmFmZmluaXR5KCksIHRydWUsIFVzZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS5zZWxlY3Rp
b24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdn
ZXJlZCk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlRvdWNoZXNDYWxsYmFj
ayhwb2ludCwgdG91Y2hlcywgZmxhZ3MsIGNhbGxiYWNrSUQpKTsKIH0KQEAgLTEzODAsNyArMTM4
MCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGZyb20sIGNvbnN0IFdlYkNvcmU6CiAgICAgICAgICAgICByYW5nZSA9IFJhbmdl
OjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGZyb21Qb3NpdGlvbiwgdG9Qb3NpdGlvbik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9j
dW1lbnQoKSwgdG9Qb3NpdGlvbiwgZnJvbVBvc2l0aW9uKTsKLSAgICAgICAgZnJhbWUuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgZnJvbVBvc2l0aW9uLmFmZmluaXR5
KCksIHRydWUsIFVzZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBmcm9tUG9zaXRpb24uYWZmaW5pdHkoKSwgV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQp
OwogICAgIH0KIAogICAgIC8vIFdlIGNhbiB1c2UgdGhlIHNhbWUgY2FsbGJhY2sgZm9yIHRoZSBn
ZXN0dXJlcyB3aXRoIG9uZSBwb2ludC4KQEAgLTEzOTUsNyArMTM5NSw3IEBAIHZvaWQgV2ViUGFn
ZTo6ZXh0ZW5kU2VsZWN0aW9uKHVpbnQzMl90IGdyYW51bGFyaXR5KQogICAgICAgICByZXR1cm47
CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpOwotICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uo
d29yZFJhbmdlRnJvbVBvc2l0aW9uKHBvc2l0aW9uKS5nZXQoKSwgcG9zaXRpb24uYWZmaW5pdHko
KSwgdHJ1ZSwgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
ZWRSYW5nZSh3b3JkUmFuZ2VGcm9tUG9zaXRpb24ocG9zaXRpb24pLmdldCgpLCBwb3NpdGlvbi5h
ZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6Olll
cywgVXNlclRyaWdnZXJlZCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2VsZWN0V29yZEJhY2t3YXJk
KCkKQEAgLTE0MDcsNyArMTQwNyw3IEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V29yZEJhY2t3YXJk
KCkKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24gPSBmcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpOwogICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFBvc2l0aW9uID0gcG9z
aXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIFdvcmRHcmFudWxhcml0
eSwgRGlyZWN0aW9uQmFja3dhcmQpOwogICAgIGlmIChzdGFydFBvc2l0aW9uLmlzTm90TnVsbCgp
ICYmIHN0YXJ0UG9zaXRpb24gIT0gcG9zaXRpb24pCi0gICAgICAgIGZyYW1lLnNlbGVjdGlvbigp
LnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgc3RhcnRQ
b3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCB0cnVlLCBVc2Vy
VHJpZ2dlcmVkKTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShS
YW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBzdGFydFBvc2l0aW9uLCBwb3NpdGlvbiku
cHRyKCksIHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91
bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpt
b3ZlU2VsZWN0aW9uQnlPZmZzZXQoaW50MzJfdCBvZmZzZXQsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKQEAgLTE0MjUsNyArMTQyNSw3IEBAIHZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkJ5T2Zm
c2V0KGludDMyX3Qgb2Zmc2V0LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpICYmIHN0YXJ0UG9zaXRp
b24gIT0gcG9zaXRpb24pCi0gICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFu
Z2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9uKS5w
dHIoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgdHJ1ZSwgVXNlclRyaWdnZXJlZCk7CisgICAgICAg
IGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUu
ZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9uKS5wdHIoKSwgcG9zaXRpb24uYWZmaW5pdHko
KSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJU
cmlnZ2VyZWQpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNr
KGNhbGxiYWNrSUQpKTsKIH0KICAgICAKQEAgLTE1NDUsNyArMTU0NSw3IEBAIHZvaWQgV2ViUGFn
ZTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwg
Ym9vbCBpc0ludGVyCiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0
aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhB
c3Npc3RlZE5vZGUpOwogICAgIAogICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkKLSAgICAg
ICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0
eSgpLCB0cnVlLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0ZWRSYW5nZShSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwg
cG9zaXRpb24pLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOwogfQogCkBA
IC0xNTU3LDcgKzE1NTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFy
eVdpdGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaQogICAgIGlmIChwb3Np
dGlvbi5pc05vdE51bGwoKSkgewogICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uT2ZOZXh0Qm91
bmRhcnlPZkdyYW51bGFyaXR5KHBvc2l0aW9uLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXh0R3Jh
bnVsYXJpdHk+KGdyYW51bGFyaXR5KSwgc3RhdGljX2Nhc3Q8U2VsZWN0aW9uRGlyZWN0aW9uPihk
aXJlY3Rpb24pKTsKICAgICAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKQotICAgICAgICAg
ICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgcG9zaXRpb24pLnB0cigpLCBVUFNUUkVBTSwgdHJ1ZSwg
VXNlclRyaWdnZXJlZCk7CisgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rl
ZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlv
bikucHRyKCksIFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VU
eXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAgICAgfQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxiYWNrSUQpKTsKIH0KQEAgLTE1NzEsNyArMTU3
MSw3IEBAIHZvaWQgV2ViUGFnZTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9u
KHVpbnQzMl90IGdyYW51bGFyaXR5LCB1aW50MzJfCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbiA9IChpc0ZvcndhcmQpID8gZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlz
aWJsZUVuZCgpIDogZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCk7
CiAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25PZk5leHRCb3VuZGFyeU9mR3JhbnVsYXJpdHko
cG9zaXRpb24sIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRleHRHcmFudWxhcml0eT4oZ3JhbnVsYXJp
dHkpLCBzdGF0aWNfY2FzdDxTZWxlY3Rpb25EaXJlY3Rpb24+KGRpcmVjdGlvbikpOwogICAgICAg
ICBpZiAocG9zaXRpb24uaXNOb3ROdWxsKCkpCi0gICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24o
KS5zZXRTZWxlY3RlZFJhbmdlKFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0
aW9uLCBwb3NpdGlvbikucHRyKCksIGlzRm9yd2FyZD8gVVBTVFJFQU0gOiBET1dOU1RSRUFNLCB0
cnVlLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNl
bGVjdGVkUmFuZ2UoUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBv
c2l0aW9uKS5wdHIoKSwgaXNGb3J3YXJkPyBVUFNUUkVBTSA6IERPV05TVFJFQU0sIFdlYkNvcmU6
OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsK
ICAgICB9CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2Fs
bGJhY2tJRCkpOwogfQpAQCAtMTYyOCw3ICsxNjI4LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RU
ZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQs
IHUKICAgICB9CiAKICAgICBpZiAocmFuZ2UpCi0gICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIFVQU1RSRUFNLCB0cnVlLCBVc2VyVHJpZ2dlcmVk
KTsKKyAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQo
KSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6
WWVzLCBVc2VyVHJpZ2dlcmVkKTsKICAgICBtX2luaXRpYWxTZWxlY3Rpb24gPSByYW5nZTsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7
CiB9CkBAIC0xNjYzLDcgKzE2NjMsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JgogICAgICAg
ICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHNlbGVjdGlvblN0YXJ0
LCBzZWxlY3Rpb25FbmQpOwogICAgIAogICAgIGlmIChyYW5nZSkKLSAgICAgICAgZnJhbWUuc2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5nZXQoKSwgVVBTVFJFQU0sIHRydWUsIFVz
ZXJUcmlnZ2VyZWQpOworICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdl
KHJhbmdlLmdldCgpLCBVUFNUUkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENs
b3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2VyZWQpOwogICAgIAogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhzZWxlY3Rpb25TdGFydCA9PSBtX2luaXRp
YWxTZWxlY3Rpb24tPnN0YXJ0UG9zaXRpb24oKSwgY2FsbGJhY2tJRCkpOwogfQpAQCAtMTcwNiw3
ICsxNzA2LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBib28KICAgICAgICAgcmFuZ2UgPSBSYW5n
ZTo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5k
KTsKIAogICAgIGlmIChyYW5nZSkKLSAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
ZWRSYW5nZShyYW5nZS5nZXQoKSwgVVBTVFJFQU0sIHRydWUsIFVzZXJUcmlnZ2VyZWQpOworICAg
ICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBVUFNU
UkVBTSwgV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVz
ZXJUcmlnZ2VyZWQpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbnNpZ25l
ZENhbGxiYWNrKG1fc2VsZWN0aW9uQW5jaG9yID09IFN0YXJ0LCBjYWxsYmFja0lEKSk7CiB9CkBA
IC0xNzY5LDcgKzE3NjksNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3RlZFRleHQoY29u
c3QgU3RyaW5nJiBvbGRUZXh0LCBjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2VzKHRy
dWUpOwotICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2Uod29yZFJhbmdlLmdl
dCgpLCBVUFNUUkVBTSwgdHJ1ZSk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRS
YW5nZSh3b3JkUmFuZ2UuZ2V0KCksIFVQU1RSRUFNLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
U2hvdWxkQ2xvc2VUeXBpbmc6Olllcyk7CiAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0VGV4dChu
ZXdUZXh0LCAwKTsKICAgICBmcmFtZS5lZGl0b3IoKS5zZXRJZ25vcmVTZWxlY3Rpb25DaGFuZ2Vz
KGZhbHNlKTsKIH0KQEAgLTE3OTYsNyArMTc5Niw3IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZURp
Y3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3VGV4dCkK
IAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbm90aWZ5IHRoZSBjbGllbnQgdGhhdCB0aGUgc2Vs
ZWN0aW9uIGhhcyBjaGFuZ2VkIHVudGlsIHdlIGFyZSBkb25lIGluc2VydGluZyB0aGUgbmV3IHRl
eHQuCiAgICAgZnJhbWUuZWRpdG9yKCkuc2V0SWdub3JlU2VsZWN0aW9uQ2hhbmdlcyh0cnVlKTsK
LSAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBVUFNU
UkVBTSwgdHJ1ZSk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5n
ZS5nZXQoKSwgVVBTVFJFQU0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5
cGluZzo6WWVzKTsKICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRUZXh0KG5ld1RleHQsIDApOwog
ICAgIGZyYW1lLmVkaXRvcigpLnNldElnbm9yZVNlbGVjdGlvbkNoYW5nZXMoZmFsc2UpOwogfQpA
QCAtMTkzMCw3ICsxOTMwLDcgQEAgdm9pZCBXZWJQYWdlOjpzeW5jQXBwbHlBdXRvY29ycmVjdGlv
bihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3IKICAgICBpZiAocmFu
Z2UgJiYgcmFuZ2UtPmNvbGxhcHNlZCgpKQogICAgICAgICBhZmZpbml0eSA9IFZpc2libGVQb3Np
dGlvbihyYW5nZS0+c3RhcnRQb3NpdGlvbigpLCBVUFNUUkVBTSkuYWZmaW5pdHkoKTsKICAgICAK
LSAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBhZmZp
bml0eSwgdHJ1ZSk7CisgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5n
ZS5nZXQoKSwgYWZmaW5pdHksIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5
cGluZzo6WWVzKTsKICAgICBpZiAoY29ycmVjdGlvbi5sZW5ndGgoKSkKICAgICAgICAgZnJhbWUu
ZWRpdG9yKCkuaW5zZXJ0VGV4dChjb3JyZWN0aW9uLCAwLCBvcmlnaW5hbFRleHQuaXNFbXB0eSgp
ID8gVGV4dEV2ZW50SW5wdXRLZXlib2FyZCA6IFRleHRFdmVudElucHV0QXV0b2NvbXBsZXRpb24p
OwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CmluZGV4IDU0MWU3NDBmNzM3YzIyMjBkNmJkNmJmMjk2M2IzNzY1MjJkMDM3MWEuLmMxNDQwMjk4
YTg4ZTA2OWE0ZDE2MjFhYzgxZTI4M2MyOWQ5NTgyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTQ4Miw3ICsxNDgyLDcgQEAgLSAodm9pZClz
ZXRTZWxlY3RlZERPTVJhbmdlOihET01SYW5nZSAqKXJhbmdlIGFmZmluaXR5OihOU1NlbGVjdGlv
bkFmZmluaXR5KWFmZmkKICAgICAgICAgfQogICAgIH0KIAotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS5zZXRTZWxlY3RlZFJhbmdlKGNvcmUocmFuZ2UpLCAoRUFmZmluaXR5KWFmZmluaXR5LCBjbG9z
ZVR5cGluZyk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY29yZShy
YW5nZSksIChFQWZmaW5pdHkpYWZmaW5pdHksIGNsb3NlVHlwaW5nID8gRnJhbWVTZWxlY3Rpb246
OlNob3VsZENsb3NlVHlwaW5nOjpZZXMgOiBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBp
bmc6Ok5vKTsKICAgICBpZiAoIWNsb3NlVHlwaW5nKQogICAgICAgICBmcmFtZS0+ZWRpdG9yKCku
ZW5zdXJlTGFzdEVkaXRDb21tYW5kSGFzQ3VycmVudFNlbGVjdGlvbklmT3BlbkZvck1vcmVUeXBp
bmcoKTsKIH0KQEAgLTE5NTIsNyArMTk1Miw3IEBAIC0gKHZvaWQpX3JlcGxhY2VTZWxlY3Rpb25X
aXRoRnJhZ21lbnQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilmcmFnbWVudCBzZWxlY3RSZXBsCiB7
CiAgICAgaWYgKF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLmlzTm9uZSgpIHx8ICFm
cmFnbWVudCkKICAgICAgICAgcmV0dXJuOwotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmVkaXRv
cigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoKmNvcmUoZnJhZ21lbnQpLCBzZWxlY3RS
ZXBsYWNlbWVudCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlKTsKKyAgICBfcHJpdmF0ZS0+Y29y
ZUZyYW1lLT5lZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KCpjb3JlKGZyYWdt
ZW50KSwgc2VsZWN0UmVwbGFjZW1lbnQgPyBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpZZXMg
OiBFZGl0b3I6OlNlbGVjdFJlcGxhY2VtZW50OjpObywgc21hcnRSZXBsYWNlID8gRWRpdG9yOjpT
bWFydFJlcGxhY2U6OlllcyA6IEVkaXRvcjo6U21hcnRSZXBsYWNlOjpObywgbWF0Y2hTdHlsZSA/
IEVkaXRvcjo6TWF0Y2hTdHlsZTo6WWVzIDogRWRpdG9yOjpNYXRjaFN0eWxlOjpObyk7CiB9CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCmluZGV4IGU3OGE4YmQ2ZWYwNTJhODMwYTRmMDhlZDU2MDEwZDM2NTFhMjZk
ZTEuLjg5M2ZhMDhjY2Y5MDY1OGI0NDdiYjY1YmMzOWJmYTM1OWI3YmUwMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTgzNTEsNyArODM1MSw3IEBA
IC0gKHZvaWQpc2V0U2VsZWN0ZWRET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZSBhZmZpbml0eToo
TlNTZWxlY3Rpb25BZmZpbml0eSlzZWxlCiAgICAgICAgIGlmICghY29yZUZyYW1lKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0
ZWRSYW5nZShjb3JlKHJhbmdlKSwgY29yZShzZWxlY3Rpb25BZmZpbml0eSksIHRydWUpOworICAg
ICAgICBjb3JlRnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY29yZShyYW5nZSks
IGNvcmUoc2VsZWN0aW9uQWZmaW5pdHkpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxk
Q2xvc2VUeXBpbmc6Olllcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9BY2Nlc3NpYmxlVGV4dEltcGwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQWNjZXNzaWJsZVRleHRJbXBsLmNwcAppbmRleCA0YWFhNTM3NTM1ZGQ3M2I1MTQ1ZTI2MmVm
YThmZjg4ODM1ZWU5MDFmLi45Zjg0NTY4MmMyZmY4YzUxYjkxYmI4NGFkZjBkZGFlODkwZTBmZmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlVGV4dEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVUZXh0SW1wbC5jcHAK
QEAgLTY1Niw3ICs2NTYsNyBAQCBIUkVTVUxUIEFjY2Vzc2libGVUZXh0OjpyZXBsYWNlVGV4dChs
b25nIHN0YXJ0T2Zmc2V0LCBsb25nIGVuZE9mZnNldCwgQlNUUiogdGV4dAogCiAgICAgYWRkU2Vs
ZWN0aW9uKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpOwogCi0gICAgZnJhbWUtPmVkaXRvcigpLnJl
cGxhY2VTZWxlY3Rpb25XaXRoVGV4dCgqdGV4dCwgdHJ1ZSwgZmFsc2UpOworICAgIGZyYW1lLT5l
ZGl0b3IoKS5yZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoKnRleHQsIEVkaXRvcjo6U2VsZWN0UmVw
bGFjZW1lbnQ6OlllcywgRWRpdG9yOjpTbWFydFJlcGxhY2U6Ok5vKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>