<?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>228216</bug_id>
          
          <creation_ts>2021-07-22 20:15:49 -0700</creation_ts>
          <short_desc>☂️ [GPU Process] Defer removal of resources in the GPU Process until we&apos;ve executed all display list items which reference them</short_desc>
          <delta_ts>2022-01-26 03:15:14 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229043</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=235636</see_also>
          <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>
          <dependson>228224</dependson>
    
    <dependson>228225</dependson>
    
    <dependson>228495</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>ehutchison</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1778969</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-22 20:15:49 -0700</bug_when>
    <thetext>[GPU Process] Defer removal of resources in the GPU Process until we&apos;ve executed all display list items which reference them</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778974</commentid>
    <comment_count>1</comment_count>
      <attachid>434059</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-22 20:19:58 -0700</bug_when>
    <thetext>Created attachment 434059
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778980</commentid>
    <comment_count>2</comment_count>
      <attachid>434062</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-22 21:19:06 -0700</bug_when>
    <thetext>Created attachment 434062
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778981</commentid>
    <comment_count>3</comment_count>
      <attachid>434063</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-22 21:41:30 -0700</bug_when>
    <thetext>Created attachment 434063
First draft</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779009</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-23 01:20:31 -0700</bug_when>
    <thetext>1. https://bugs.webkit.org/show_bug.cgi?id=228219 [GPU Process] Migrate the DisplayList::Replayer::Delegate from RemoteImageBuffer to RemoteRenderingBackend
2. https://bugs.webkit.org/show_bug.cgi?id=228222 [GPU Process] Add resource use counter infrastructure to RemoteResourceCache
3. https://bugs.webkit.org/show_bug.cgi?id=228224 [GPU Process] Start tracking resource uses for NativeImages and Fonts
4. https://bugs.webkit.org/show_bug.cgi?id=228225 [GPU Process] Start tracking resource uses for ImageBuffers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779010</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-23 01:21:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/80473805&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779676</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-26 21:14:19 -0700</bug_when>
    <thetext>I guess this can be the bug that I use to remove all the TestExpectation lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780235</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-28 15:35:47 -0700</bug_when>
    <thetext>*** Bug 227881 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780236</commentid>
    <comment_count>8</comment_count>
      <attachid>434473</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-07-28 15:36:42 -0700</bug_when>
    <thetext>Created attachment 434473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780270</commentid>
    <comment_count>9</comment_count>
      <attachid>434473</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-07-28 17:09:45 -0700</bug_when>
    <thetext>Comment on attachment 434473
Patch

r=mews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780333</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-29 01:32:24 -0700</bug_when>
    <thetext>Committed r280418 (240058@main): &lt;https://commits.webkit.org/240058@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434473.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434059</attachid>
            <date>2021-07-22 20:19:58 -0700</date>
            <delta_ts>2021-07-22 21:19:05 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-228216-20210722201957.patch</filename>
            <type>text/plain</type>
            <size>31065</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIzYmMzMWNlMWU2OTdk
ZDdjMDkwMWMwYmZiM2YwYmY0ZDE0ZGU5Yy4uMjg0MDlhZTFlZTgwNjI1YWJiNmU5Yzc2OWFjOThl
MzFmNTA1Y2U1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA3LTIyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBEZWZlciByZW1vdmFsIG9mIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nlc3MgdW50aWwg
d2UndmUgZXhlY3V0ZWQgYWxsIGRpc3BsYXkgbGlzdCBpdGVtcyB3aGljaCByZWZlcmVuY2UgdGhl
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OnJlcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OmRpZENvbXBsZXRlUmVwbGF5aW5nKToKKwogMjAyMS0w
Ny0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSBuZXR3
b3JrIHByb2Nlc3MgZmFpbHMgdG8gdGFrZSBhIGxvY2tlZCBmaWxlIGFzc2VydGlvbiB3aGVuIGV4
ZWN1dGluZyBhIFNRTGl0ZVN0YXRlbWVudCBvdXRzaWRlIGEgdHJhbnNhY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZGY3NzgwYzg3M2Y4MWRmNmQ0ZjhiMDY4MzZiYWQ0Mjk0MmM4N2YzNy4uZWZjNjFkYjBiNjBm
NjhkNDk1MDU3NzhkMjlkNzVlZDdjOTYwOWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAor
MjAyMS0wNy0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFUgUHJvY2Vzc10gRGVmZXIgcmVtb3ZhbCBvZiByZXNvdXJjZXMgaW4gdGhlIEdQ
VSBQcm9jZXNzIHVudGlsIHdlJ3ZlIGV4ZWN1dGVkIGFsbCBkaXNwbGF5IGxpc3QgaXRlbXMgd2hp
Y2ggcmVmZXJlbmNlIHRoZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODIxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6YXBwbHkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OmRpZFJlc2V0TWFza0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6UmVwbGF5ZXJEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OmFwcGx5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6
ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6ZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZXBsYXllckRlbGVnYXRl
OjpkaWRDb21wbGV0ZVJlcGxheWluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnN1Ym1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlRm9udCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjpyZWNvcmRSZXNvdXJjZVVzZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OnBydW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6flJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlRm9udCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjbGVhckZvbnRNYXApOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZpbmFsaXplUmVuZGVyaW5nVXBk
YXRlRm9yRm9udHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oOgorCiAyMDIxLTA3LTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNzg4NzcpIFtDb2NvYV0gV2Vi
QXV0aG4gc3RvcHBlZCB3b3JraW5nIGZvciBub24tU2FmYXJpIGJyb3dzZXJzIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IGYzNzBiNDExOGQwMjQzYTFiMjli
YmEwMjEwZjg5NzQ3MjkzN2E4NTMuLjM1NjFkYTBiZDEyMjZjYmM5NTI3ZWFmZWQxMzQ1NzdkZGY4
ZDNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTIz
Miw2ICsyMzIsOSBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgICAgICB9CiAgICAgfQog
CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPmRpZENvbXBsZXRlUmVw
bGF5aW5nKCk7CisKICAgICByZXN1bHQudHJhY2tlZERpc3BsYXlMaXN0ID0gV1RGTW92ZShyZXBs
YXlMaXN0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmgKaW5kZXggMTY2MjdhMDIwNmUzMDkyNDNmOGI3YmQxOGNkYjNkYTU4NjA3OGE4
Zi4uNTc5MzllZTk3N2VkNGVjNDU4YTBkNDU5MmQ5ZGNkYjcyYWZjZjAzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCBib29sIGFwcGx5KEl0ZW1IYW5kbGUsIEdyYXBoaWNzQ29udGV4dCYpIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVNYXNrSW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlc2V0TWFza0ltYWdlQnVmZmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb21w
bGV0ZVJlcGxheWluZygpIHsgfQogICAgIH07CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRl
eCBkMmY5NWJkOTZjYWMwNDBmNjEyMmNiNDgwY2U4OGJlMWRhYzBkMWQxLi4yMzAyNjU3MDg5ZGI2
MDk0YjcxZDJmNDFkMTc5OTlmNDk3MWMyMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtMzgsNyArMzgsNyBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgot
Y2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1
ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6
OkRlbGVnYXRlIHsKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmU6OkNv
bmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+Owog
ICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0OwogICAgIHVzaW5nIEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CkBAIC03NSw3ICs3NSw5IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBv
dmVycmlkZQorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworCisgICAg
Ym9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgewogICAgICAgICBpZiAoaXRlbS5pczxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI+KCkpIHsKICAgICAgICAgICAgIGF1
dG8mIGdldFBpeGVsQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpH
ZXRQaXhlbEJ1ZmZlcj4oKTsKQEAgLTEwOCwxMiArMTEwLDEyIEBAIHByaXZhdGU6CiAgICAgICAg
IHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuYXBwbHlNZWRpYUl0ZW0oaXRlbSwgY29u
dGV4dCk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRDcmVhdGVNYXNrSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBmaW5hbAorICAgIHZvaWQgZGlkQ3JlYXRlTWFz
a0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKICAgICB7CiAg
ICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRDcmVhdGVNYXNrSW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIpOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIo
KSBmaW5hbAorICAgIHZvaWQgZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoKQogICAgIHsKICAgICAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZFJlc2V0TWFza0ltYWdlQnVmZmVyKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGE1ZWRmOTFhN2I1NDJjNWY2YmU3Mjc4
MTAyOWQ4ZGExYzZlNjUyYzIuLjEzMTMyOTAwMzIxNGE2ODQ2NjA0MzU0ZjY0YWM4YjM3NGI1MDdm
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTE4NCwxNiArMTg0LDY5IEBAIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAgICAgIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3Rk
OjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZvLCBzdGQ6Om51bGxvcHQpLT5hcmd1bWVudHMp
OwogfQogCisKK1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OlJlcGxh
eWVyRGVsZWdhdGUoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGRlc3RpbmF0aW9uLCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKQorICAgIDogbV9kZXN0aW5hdGlvbihk
ZXN0aW5hdGlvbikKKyAgICAsIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJp
bmdCYWNrZW5kKQorICAgICwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MpCit7Cit9CisKK2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVw
bGF5ZXJEZWxlZ2F0ZTo6YXBwbHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRl
bSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCit7CisgICAgaWYg
KGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM+KCkpIHsKKyAgICAgICAg
YXV0byYgZHJhd0dseXBocyA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5
cGhzPigpOworICAgICAgICBhdXRvIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IGRyYXdH
bHlwaHMuZm9udElkZW50aWZpZXIoKTsKKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LnJlbW90ZVJlc291cmNlQ2FjaGUoKS5yZWNvcmRSZXNvdXJjZVVzZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIH0KKworICAgIGF1dG8gYXBwbHkgPSBbJl0oYXV0byYmIGRlc3Rp
bmF0aW9uKSB7CisgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbi5hcHBseShpdGVtLCBncmFwaGlj
c0NvbnRleHQpOworICAgIH07CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbi5yZW5kZXJpbmdNb2Rl
KCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIHJldHVybiBhcHBseShz
dGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4obV9kZXN0aW5hdGlvbikp
OworICAgIHJldHVybiBhcHBseShzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXImPihtX2Rlc3RpbmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBhdXRvIGRpZENyZWF0ZU1hc2tJbWFnZUJ1
ZmZlciA9IFsmXShhdXRvJiYgZGVzdGluYXRpb24pIHsKKyAgICAgICAgZGVzdGluYXRpb24uZGlk
Q3JlYXRlTWFza0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKKyAgICB9OworCisgICAgLy8gRklY
TUU6IFdoeSB0aGUgaW5kaXJlY3Rpb24gdGhyb3VnaCBSZW1vdGVJbWFnZUJ1ZmZlciBpZiBpdCdz
IGp1c3QgZ29pbmcgdG8gdHVybiBhcm91bmQgYW5kIGltbWVkaWF0ZWx5IGNhbGwgYmFjayBpbnRv
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ/CisgICAgaWYgKG1fZGVzdGluYXRpb24ucmVuZGVyaW5n
TW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICBkaWRDcmVhdGVN
YXNrSW1hZ2VCdWZmZXIoc3RhdGljX2Nhc3Q8QWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlciY+
KG1fZGVzdGluYXRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIGRpZENyZWF0ZU1hc2tJbWFnZUJ1
ZmZlcihzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXImPihtX2Rlc3Rp
bmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxl
Z2F0ZTo6ZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoKQoreworICAgIGF1dG8gZGlkUmVzZXRNYXNr
SW1hZ2VCdWZmZXIgPSBbXShhdXRvJiYgZGVzdGluYXRpb24pIHsKKyAgICAgICAgZGVzdGluYXRp
b24uZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoKTsKKyAgICB9OworCisgICAgLy8gRklYTUU6IFdo
eSB0aGUgaW5kaXJlY3Rpb24gdGhyb3VnaCBSZW1vdGVJbWFnZUJ1ZmZlciBpZiBpdCdzIGp1c3Qg
Z29pbmcgdG8gdHVybiBhcm91bmQgYW5kIGltbWVkaWF0ZWx5IGNhbGwgYmFjayBpbnRvIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ/CisgICAgaWYgKG1fZGVzdGluYXRpb24ucmVuZGVyaW5nTW9kZSgp
ID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQorICAgICAgICBkaWRSZXNldE1hc2tJbWFn
ZUJ1ZmZlcihzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4obV9kZXN0
aW5hdGlvbikpOworICAgIGVsc2UKKyAgICAgICAgZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoc3Rh
dGljX2Nhc3Q8VW5hY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4obV9kZXN0aW5hdGlvbikp
OworfQorCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OmRp
ZENvbXBsZXRlUmVwbGF5aW5nKCkKK3sKKyAgICBhdXRvIHRoaW5nc0FyZU9rYXkgPSBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLnBydW5lKCk7CisgICAgTUVT
U0FHRV9DSEVDSyh0aGluZ3NBcmVPa2F5LCAiV2ViIHByb2Nlc3MgdHJpZWQgdG8gcmVsZWFzZSBh
IHJlc291cmNlIHRoYXQgd2Fzbid0IGNhY2hlZCIpOworfQorCiBEaXNwbGF5TGlzdDo6UmVwbGF5
UmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24pCiB7CiAg
ICAgaWYgKGRpc3BsYXlMaXN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IERpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUqIHJlcGxheWVyRGVsZWdhdGUgPSBudWxs
cHRyOwotICAgIGlmIChkZXN0aW5hdGlvbi5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9k
ZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgIHJlcGxheWVyRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxB
Y2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyKj4oJmRlc3RpbmF0aW9uKTsKLSAgICBlbHNlCi0g
ICAgICAgIHJlcGxheWVyRGVsZWdhdGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3Rl
SW1hZ2VCdWZmZXIqPigmZGVzdGluYXRpb24pOworICAgIFJlcGxheWVyRGVsZWdhdGUgcmVwbGF5
ZXJEZWxlZ2F0ZShkZXN0aW5hdGlvbiwgKnRoaXMsIG1fZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vz
cyk7CiAKICAgICByZXR1cm4gV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyIHsKICAgICAg
ICAgZGVzdGluYXRpb24uY29udGV4dCgpLApAQCAtMjAyLDcgKzI1NSw3IEBAIERpc3BsYXlMaXN0
OjpSZXBsYXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3Bs
YXlMaXN0OjpEaXNwCiAgICAgICAgICZyZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2Vz
KCksCiAgICAgICAgICZyZW1vdGVSZXNvdXJjZUNhY2hlKCkuZm9udHMoKSwKICAgICAgICAgbV9j
dXJyZW50TWFza0ltYWdlQnVmZmVyLmdldCgpLAotICAgICAgICByZXBsYXllckRlbGVnYXRlCisg
ICAgICAgICZyZXBsYXllckRlbGVnYXRlCiAgICAgfS5yZXBsYXkoKTsKIH0KIApAQCAtNDgzLDEw
ICs1MzYsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWxldGVBbGxGb250cygp
CiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmRlbGV0ZUFsbEZvbnRzKCk7CiB9CiAKLXZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VDb3Vu
dCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3JlbW90ZVJlc291
cmNlQ2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CisgICAgYXV0byBzdWNjZXNzID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVzZUNvdW50KTsKKyAgICBN
RVNTQUdFX0NIRUNLKHN1Y2Nlc3MsICJSZXNvdXJjZSBpcyBiZWluZyByZWxlYXNlZCBiZWZvcmUg
YmVpbmcgY2FjaGVkLiIpOwogICAgIHVwZGF0ZVJlbmRlcmluZ1Jlc291cmNlUmVxdWVzdCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBhMzUxNjViMTkxMWY5YTkzZjNkNGE4ZGU5MWIx
MDFmNzU2OWFiYjIyLi44NzI2MjlmMDI1M2JmNGI2OTM2ODJiNzAyMjMyODVmZmI2MTM1NmQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTE0NCw5ICsxNDQsMjQgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2FjaGVGb250KFJl
ZjxXZWJDb3JlOjpGb250PiYmKTsKICAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCk7Ci0gICAgdm9p
ZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50KTsKICAgICB2b2lkIGRpZENyZWF0
ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVy
SWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKIAor
ICAgIGNsYXNzIFJlcGxheWVyRGVsZWdhdGUgOiBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OlJlcGxheWVyOjpEZWxlZ2F0ZSB7CisgICAgcHVibGljOgorICAgICAgICBSZXBsYXllckRlbGVn
YXRlKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYsIEdQVUNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgYXBw
bHkoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUsIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYpIGZpbmFsOworICAgICAgICB2b2lkIGRpZENyZWF0ZU1hc2tJbWFnZUJ1ZmZlcihXZWJD
b3JlOjpJbWFnZUJ1ZmZlciYpIGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlc2V0TWFza0ltYWdl
QnVmZmVyKCkgZmluYWw7CisgICAgICAgIHZvaWQgZGlkQ29tcGxldGVSZXBsYXlpbmcoKSBmaW5h
bDsKKworICAgICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgbV9kZXN0aW5hdGlvbjsKKyAgICAg
ICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworICAg
ICAgICBSZWY8R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOworICAgIH07CisKICAgICBzdHJ1Y3QgUGVuZGluZ1dha2V1cEluZm9ybWF0aW9uIHsK
ICAgICAgICAgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMgYXJndW1lbnRzOwogICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4g
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4KaW5kZXggNGIzZmU5YTAyNjJlOGE1NDkxODUyYzZkNmEwNDA0NWQ2YTY5
NjM5Ny4uZmY2MmFmNTExZjNlMmU1Y2ViZjQ3NDFiYjM1MDMzODQ5NGUzOGViNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTM2LDcgKzM2LDcgQEAgbWVzc2Fn
ZXMgLT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCB7CiAgICAgQ2FjaGVGb250KElQQzo6Rm9udFJl
ZmVyZW5jZSBmb250KQogICAgIERlbGV0ZUFsbEZvbnRzKCkKICAgICBEaWRDcmVhdGVTaGFyZWRE
aXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50
aWZpZXIpCi0gICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgUmVsZWFzZVJl
bW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50KQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4IDgxZGRlMGJmZmNmMGJk
NmNjMWMyOGU1ZGQyNDYzNzRiMzQ2NDYyNzguLjNiMDkxYzYyNmJlY2M5MzRhNzJlOGFhNjU3M2Rj
NDMzMTdlMzdmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTUwLDggKzUwLDE0IEBAIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYg
aW1hZ2UpCiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KFJlZjxGb250PiYm
IGZvbnQpCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQgPSBtX2ZvbnRzLmFkZChmb250LT5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgV1RGTW92ZShmb250KSk7Ci0gICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBhdXRvIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciA9IGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwor
ICAgIG1fZm9udHMuYWRkKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShmb250
KSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IG1fcmVzb3VyY2VVc2VDb3VudGVycy5lbnN1cmUocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBbJl0geworICAgICAgICByZXR1cm4gUmVzb3VyY2VV
c2VDb3VudGVyIHsgfTsKKyAgICB9KTsKKyAgICArK3Jlc3VsdC5pdGVyYXRvci0+dmFsdWUub3Bl
bkNvdW50OworICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm9wZW5Db3VudCk7CiB9
CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZGVsZXRlQWxsRm9udHMoKQpAQCAtNTksMTYg
KzY1LDcxIEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6ZGVsZXRlQWxsRm9udHMoKQogICAg
IG1fZm9udHMuY2xlYXIoKTsKIH0KIAotdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNl
UmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZTo6bWF5YmVSZW1vdmVSZXNv
dXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBSZXNvdXJjZVVzZUNvdW50ZXJzTWFwOjppdGVyYXRvciBpdGVyYXRvcikK
IHsKKyAgICAvLyBJdCdzIGFjdHVhbGx5IG9rYXkgaWYgdXNlQ291bnQgPiB0b3RhbFVzZUNvdW50
LgorICAgIC8vIEl0IGp1c3QgbWVhbnMgdGhhdCB0aGVyZSdzIGEgY2FjaGUgbWVzc2FnZSBwZW5k
aW5nLCBhbmQgd2UndmUgZWFnZXJseSB1c2VkIGEgcHJldmlvdXNseS1jYWNoZWQgcmVzb3VyY2Uu
CisgICAgLy8gV2hpY2ggaXMgZmluZS4KKyAgICAvLyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkbid0
IGFjdHVhbGx5IHJlbW92ZSB0aGUgcmVzb3VyY2UgaW4gdGhpcyBzaXR1YXRpb24/CisgICAgLy8g
V2UgbWF5IGFjdHVhbGx5IGJlIGFibGUgdG8gZ2V0IGEgaGVhZCBzdGFydCBvbiBzb21lIGRpc3Bs
YXkgbGlzdCBpdGVtcyBpZiB0aGV5J3JlIHJlYWR5IGZvciB1cyBhbmQgd2UgaGF2ZSB0aGUgcmVz
b3VyY2VzIHRoZXkgZGVwZW5kIG9uLgorCisgICAgaWYgKGl0ZXJhdG9yLT52YWx1ZS5vcGVuQ291
bnQgfHwgaXRlcmF0b3ItPnZhbHVlLnVzZUNvdW50IDwgaXRlcmF0b3ItPnZhbHVlLnRvdGFsVXNl
Q291bnQpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGl0ZXJhdG9yLT52YWx1ZS51c2VDb3Vu
dCAtPSBpdGVyYXRvci0+dmFsdWUudG90YWxVc2VDb3VudDsKKyAgICBpdGVyYXRvci0+dmFsdWUu
dG90YWxVc2VDb3VudCA9IDA7CisgICAgaWYgKCFpdGVyYXRvci0+dmFsdWUudXNlQ291bnQpCisg
ICAgICAgIG1fcmVzb3VyY2VVc2VDb3VudGVycy5yZW1vdmUoaXRlcmF0b3IpOworCiAgICAgaWYg
KG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtX25hdGl2ZUltYWdl
cy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBpZiAobV9mb250cy5yZW1vdmUocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KwogICAgIC8vIENhY2hpbmcgdGhlIHJlbW90ZSByZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5l
ZCBiZWZvcmUgcmVsZWFzaW5nIGl0LgotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWNvcmRSZXNvdXJj
ZVVzZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlVXNlQ291bnRl
cnMuZmluZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgaWYgKGl0ZXJhdG9y
ID09IG1fcmVzb3VyY2VVc2VDb3VudGVycy5lbmQoKSkgeworICAgICAgICAvLyBUaGUgZGlzcGxh
eSBsaXN0IGl0ZW1zIHdvbiB0aGUgcmFjZSBhZ2FpbnN0IHRoZSBjYWNoZUZvbnQgbWVzc2FnZS4K
KyAgICAgICAgLy8gV2hlbiB3ZSByZWNlaXZlIHRoZSBjYWNoZUZvbnQgbWVzc2FnZSwgd2Ugd2ls
bCByZXRyeSB0aGUgZGlzcGxheSBsaXN0IGl0ZW0uCisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgUmVzb3VyY2VVc2VDb3VudGVyJiB1c2VDb3VudGVyID0gaXRlcmF0b3ItPnZhbHVl
OworICAgICsrdXNlQ291bnRlci51c2VDb3VudDsKKworICAgIG1fcmVzb3VyY2VzRm9yTWF5YmVS
ZW1vdmluZy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworYm9vbCBSZW1v
dGVSZXNvdXJjZUNhY2hlOjpwcnVuZSgpCit7CisgICAgZm9yIChhdXRvIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciA6IG1fcmVzb3VyY2VzRm9yTWF5YmVSZW1vdmluZykgeworICAgICAgICBh
dXRvIGl0ZXJhdG9yID0gbV9yZXNvdXJjZVVzZUNvdW50ZXJzLmZpbmQocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fcmVzb3VyY2VVc2VD
b3VudGVycy5lbmQoKSk7CisgICAgICAgIGF1dG8gdGhpbmdzQXJlT2theSA9IG1heWJlUmVtb3Zl
UmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBpdGVyYXRvcik7CisgICAgICAg
IGlmICghdGhpbmdzQXJlT2theSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgbV9yZXNvdXJjZXNGb3JNYXliZVJlbW92aW5nLmNsZWFyKCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVp
bnQ2NF90IHVzZUNvdW50KQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlVXNlQ291
bnRlcnMuZmluZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIEFTU0VSVChpdGVy
YXRvciAhPSBtX3Jlc291cmNlVXNlQ291bnRlcnMuZW5kKCkpOworICAgIFJlc291cmNlVXNlQ291
bnRlciYgdXNlQ291bnRlciA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoIWl0ZXJhdG9yLT52
YWx1ZS5vcGVuQ291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAtLXVzZUNvdW50ZXIu
b3BlbkNvdW50OworICAgIHVzZUNvdW50ZXIudG90YWxVc2VDb3VudCArPSB1c2VDb3VudDsKKyAg
ICByZXR1cm4gbWF5YmVSZW1vdmVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IGl0ZXJhdG9yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAppbmRl
eCAyY2VkOTA5ZjQ4MTEwYzY2NjU2ZGUxYmZlMzgxMWRiYWJhYWE5ZjRmLi5kZmVjNDhmODFjZjM5
MjRmMjI3OGU5MjMyYTI0NWM3NWY1YzE3NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKQEAgLTQ2LDE2ICs0
Niw0MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpO
YXRpdmVJbWFnZT4mJik7CiAgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYp
OwogICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKTsKLSAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNv
dXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGJvb2wgcmVs
ZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
dWludDY0X3QgdXNlQ291bnQpOworICAgIHZvaWQgcmVjb3JkUmVzb3VyY2VVc2UoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBib29sIHBydW5lKCk7CiAKICAgICBj
b25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsg
cmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VI
YXNoTWFwJiBuYXRpdmVJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsgfQog
ICAgIGNvbnN0IFdlYkNvcmU6OkZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMoKSBjb25z
dCB7IHJldHVybiBtX2ZvbnRzOyB9CiAKIHByaXZhdGU6CisgICAgLy8gQmVjYXVzZSB0aGUgY2Fj
aGUvcmVsZWFzZSBtZXNzYWdlcyBhcmUgc2VudCBhc3luY2hyb25vdXNseSBmcm9tIHRoZSBkaXNw
bGF5IGxpc3QgaXRlbXMgd2hpY2gKKyAgICAvLyByZWZlcmVuY2UgdGhlIHJlc291cmNlcywgaXQn
cyB0b3RhbGx5IHBvc3NpYmxlIHRoYXQgd2Ugc2VlIGEgcmVsZWFzZSBtZXNzYWdlIGJlZm9yZSB3
ZSd2ZQorICAgIC8vIGV4ZWN1dGVkIGFsbCB0aGUgZGlzcGxheSBsaXN0IGl0ZW1zIHdoaWNoIHJl
ZmVyZW5jZSB0aGUgcmVzb3VyY2UuIFRoZSB3ZWIgcHJvY2VzcyB0ZWxscyB1cworICAgIC8vIGhv
dyBtYW55IGRpc3BsYXkgbGlzdCBpdGVtcyB3aWxsIHJlZmVyZW5jZSB0aGlzIHJlc291cmNlLCBh
bmQgd2UgZGVmZXIgZGVsZXRpb24gb2YgdGhlIHJlc291cmNlCisgICAgLy8gdW50aWwgd2UgZXhl
Y3V0ZSB0aGF0IG1hbnkgZGlzcGxheSBsaXN0IGl0ZW1zLgorICAgIC8vCisgICAgLy8gSXQncyBh
Y3R1YWxseSBhIGJpdCB3b3JzZSB0aGFuIHRoaXMsIHRob3VnaCwgYmVjYXVzZSB3ZSBtYXkgYWN0
dWFsbHkgc2VlIGEgKm5ldyogY2FjaGUgbWVzc2FnZQorICAgIC8vIGR1cmluZyB0aGUgdGltZSB3
aGVuIGRlbGV0aW9uIGlzIGRlZmVycmVkLCBzbyB3ZSBuZWVkIGEgc2Vjb25kIGNvdW50IG9mIHRo
ZSBudW1iZXIgb2YgY2FjaGUKKyAgICAvLyBtZXNzYWdlcyB3aGljaCBkb24ndCBoYXZlIGFuIGFj
Y29tcGFueWluZyByZWxlYXNlIG1lc3NhZ2VzLgorICAgIC8vCisgICAgLy8gV2UgY2FuIG9ubHkg
c2FmZWx5IGRlbGV0ZSBhIHJlc291cmNlIHdoZW4gYWxsIHRoZSBjYWNoZSBtZXNzYWdlcyBoYXZl
IGFuIGFjY29tcGFueWluZyByZWxlYXNlCisgICAgLy8gbWVzc2FnZSwgYW5kIHdlJ3ZlIHByb2Nl
c3NlZCBhcyBtYW55IGRpc3BsYXkgbGlzdCBpdGVtcyBhcyB0aGUgd2ViIHByb2Nlc3MgaGFzIGVu
Y29kZWQgdGhhdAorICAgIC8vIHJlZmVyZW5jZSBhIHBhcnRpY3VsYXIgcmVzb3VyY2UuCisgICAg
c3RydWN0IFJlc291cmNlVXNlQ291bnRlciB7CisgICAgICAgIHVpbnQ2NF90IG9wZW5Db3VudCB7
IDAgfTsgLy8gVGhlIG51bWJlciBvZiBjYWNoZUZvbyBtZXNzYWdlcyB3ZSd2ZSByZWNlaXZlZCB3
aXRob3V0IGEgY29ycmVzcG9uZGluZyByZWxlYXNlIG1lc3NhZ2UKKyAgICAgICAgdWludDY0X3Qg
dXNlQ291bnQgeyAwIH07IC8vIFRoZSBudW1iZXIgb2YgcmVuZGVyaW5nIGNvbW1hbmRzIHdlJ3Zl
IGV4ZWN1dGVkIHdoaWNoIHJlZmVyZW5jZSB0aGlzIHJlc291cmNlCisgICAgICAgIHVpbnQ2NF90
IHRvdGFsVXNlQ291bnQgeyAwIH07IC8vIE9uY2UgdXNlQ291bnQgaGl0cyB0aGlzIGxpbWl0LCB3
ZSBjYW4gZnJlZSB0aGUgcmVzb3VyY2UKKyAgICB9OworICAgIHVzaW5nIFJlc291cmNlVXNlQ291
bnRlcnNNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
UmVzb3VyY2VVc2VDb3VudGVyPjsKKworICAgIGJvb2wgbWF5YmVSZW1vdmVSZXNvdXJjZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlVXNlQ291bnRlcnNNYXA6
Oml0ZXJhdG9yKTsKKwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVm
ZmVyczsKICAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CiAg
ICAgV2ViQ29yZTo6Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwIG1fZm9udHM7CisKKyAgICBSZXNv
dXJjZVVzZUNvdW50ZXJzTWFwIG1fcmVzb3VyY2VVc2VDb3VudGVyczsKKyAgICBIYXNoU2V0PFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gbV9yZXNvdXJjZXNGb3JNYXliZVJl
bW92aW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNz
Y2hlbWUgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2No
ZW1lcy9XZWJLaXQueGNzY2hlbWUKaW5kZXggNjEwMzliMWM3MTczOGYzMjMzZGI4YjM1OTg0M2M0
NGM4M2VmOWM5Zi4uZTQwMjA4ZTg2MDIzZjI0YjVkZWQ5ZGI5Nzk2ZTA0Mjc5ZTJmNjllZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3Nj
aGVtZXMvV2ViS2l0Lnhjc2NoZW1lCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZQpAQCAtMzEsNyArMzEsNyBA
QAogICAgICAgPC9UZXN0YWJsZXM+CiAgICA8L1Rlc3RBY3Rpb24+CiAgICA8TGF1bmNoQWN0aW9u
Ci0gICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKKyAgICAgIGJ1aWxkQ29uZmln
dXJhdGlvbiA9ICJEZWJ1ZyIKICAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhj
b2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgogICAgICAgc2VsZWN0ZWRMYXVu
Y2hlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVyLkxMREIi
CiAgICAgICBsYXVuY2hTdHlsZSA9ICIwIgpAQCAtNDAsNiArNDAsMjIgQEAKICAgICAgIGRlYnVn
RG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyIKICAgICAgIGRlYnVnU2VydmljZUV4dGVuc2lvbiA9
ICJpbnRlcm5hbCIKICAgICAgIGFsbG93TG9jYXRpb25TaW11bGF0aW9uID0gIllFUyI+CisgICAg
ICA8UGF0aFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURlYnVnZ2luZ01vZGUgPSAiMCIKKyAg
ICAgICAgIEZpbGVQYXRoID0gIi9Vc2Vycy9tbWF4ZmllbGQvQnVpbGQvUHJvZHVjdHMvRGVidWcv
TWluaUJyb3dzZXIuYXBwIj4KKyAgICAgIDwvUGF0aFJ1bm5hYmxlPgorICAgICAgPEVudmlyb25t
ZW50VmFyaWFibGVzPgorICAgICAgICAgPEVudmlyb25tZW50VmFyaWFibGUKKyAgICAgICAgICAg
IGtleSA9ICJNYWxsb2MiCisgICAgICAgICAgICB2YWx1ZSA9ICIxIgorICAgICAgICAgICAgaXNF
bmFibGVkID0gIllFUyI+CisgICAgICAgICA8L0Vudmlyb25tZW50VmFyaWFibGU+CisgICAgICAg
ICA8RW52aXJvbm1lbnRWYXJpYWJsZQorICAgICAgICAgICAga2V5ID0gIl9fWFBDX01hbGxvYyIK
KyAgICAgICAgICAgIHZhbHVlID0gIjEiCisgICAgICAgICAgICBpc0VuYWJsZWQgPSAiWUVTIj4K
KyAgICAgICAgIDwvRW52aXJvbm1lbnRWYXJpYWJsZT4KKyAgICAgIDwvRW52aXJvbm1lbnRWYXJp
YWJsZXM+CiAgICA8L0xhdW5jaEFjdGlvbj4KICAgIDxQcm9maWxlQWN0aW9uCiAgICAgICBidWls
ZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5k
ZXggYjQ0OGIzN2Y5N2ZlN2FlNjVkYmViYjJhODVhYjBjOTk0ZTFmMjZiZC4uN2VkNzY5NDJkZDdj
OWRjNmYyY2FjOWVhY2UxYjQ0YmY2YWQyYjljMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRl
eHQoKTsKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSgpLnJlbGVhc2VJbWFnZUJ1ZmZlcihtX3JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZWxlYXNl
UmVtb3RlUmVzb3VyY2UobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVsZWFzZVJlbW90ZVJlc291cmNlKG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCAwKTsgLy8gRklYTUU6IFRoaXMgMCBpcyBwcm9iYWJs
eSB3cm9uZy4KICAgICB9CiAKICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcAppbmRleCAwOWNlNGM2ZWY2ZDZhYmU3MWUwM2VhYjdmYThjZDIxNGZmNjhiMGZlLi5l
OTVmMWFkMzkzNGYyNTRiZDVmOTlkMjNhNWI0NjU1NTM1Y2UwOTMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0yNDksMTIgKzI0OSwxMiBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6ZGVsZXRlQWxsRm9udHMoKQogICAgIHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkRlbGV0ZUFsbEZvbnRzKCksIHJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdCB1c2VDb3VudCkKIHsKICAg
ICBpZiAocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID09IG1fY3VycmVudERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJJZGVudGlmaWVyKQogICAgICAgICBtX2N1cnJlbnREZXN0aW5hdGlvbkltYWdl
QnVmZmVySWRlbnRpZmllciA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCBJUEM6OlNlbmRP
cHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAg
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJlbW90ZVJlc291
cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdXNlQ291bnQpLCByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpkaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
IGhhbmRsZSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDYzMTQ5
NjcwYTM1OTRlMjVhMmRhNWNkMTk3NjExNDYxYzYxNzk3NDAuLmIyY2UzZDhjMjhhYjE5MTI1MzUx
OTAyN2ZjOTA3NGQyMGVkMTcyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1h
Z2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2FjaGVGb250KFJlZjxXZWJDb3JlOjpGb250PiYm
KTsKICAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCk7Ci0gICAgdm9pZCByZWxlYXNlUmVtb3RlUmVz
b3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJl
bGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IHVpbnQ2NF90IHVzZUNvdW50KTsKIAogICAgIGVudW0gY2xhc3MgRGlkUmVjZWl2ZUJhY2tlbmRD
cmVhdGlvblJlc3VsdCA6IGJvb2wgewogICAgICAgICBSZWNlaXZlZEFueVJlc3BvbnNlLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IDAzZjM0YjMzYTIyZGQ0OTI4ZDQy
NjBlNDc4NjJkMzkxMzcxMTAxYWYuLmQwN2RhNjVlYzg1ODI3ZmE2YzdkOTZlMzJjODE0NzJmMDM0
NjkyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTEwNCwxNCAr
MTA0LDE1IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiBpbWFnZSkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNh
Y2hlRm9udChGb250JiBmb250KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9mb250SWRlbnRpZmll
clRvTGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXAuZW5zdXJlKGZvbnQucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIFsmXSB7Ci0gICAgICAgIHJldHVybiAwOworICAgIGF1dG8gcmVz
dWx0ID0gbV9mb250U3RhdGVzLmVuc3VyZShmb250LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpLCBbJl0geworICAgICAgICByZXR1cm4gRm9udFN0YXRlIHsgMCwgMCB9OwogICAgIH0pOwot
ICAgIGF1dG8mIGxhc3RWZXJzaW9uID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKLSAgICBpZiAo
bGFzdFZlcnNpb24gIT0gbV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lvbikgewotICAgICAg
ICBsYXN0VmVyc2lvbiA9IG1fY3VycmVudFJlbmRlcmluZ1VwZGF0ZVZlcnNpb247CisgICAgYXV0
byYgY3VycmVudFN0YXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoY3VycmVu
dFN0YXRlLmxhc3RSZW5kZXJpbmdVcGRhdGVWZXJzaW9uVXNlZFdpdGhpbiAhPSBtX2N1cnJlbnRS
ZW5kZXJpbmdVcGRhdGVWZXJzaW9uKSB7CisgICAgICAgIGN1cnJlbnRTdGF0ZS5sYXN0UmVuZGVy
aW5nVXBkYXRlVmVyc2lvblVzZWRXaXRoaW4gPSBtX2N1cnJlbnRSZW5kZXJpbmdVcGRhdGVWZXJz
aW9uOwogICAgICAgICArK21fbnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRh
dGU7CiAgICAgfQorICAgICsrY3VycmVudFN0YXRlLnVzZUNvdW50OwogICAgIGlmIChyZXN1bHQu
aXNOZXdFbnRyeSkKICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVG
b250KG1ha2VSZWYoZm9udCkpOwogfQpAQCAtMTIyLDcgKzEyMyw3IEBAIHZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNz
IHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgotICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwor
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIDApOyAvLyBGSVhNRTogVGhpcyAwIGlzIHByb2Jh
Ymx5IHdyb25nLgogfQogCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cHJlcGFyZUZv
ck5leHRSZW5kZXJpbmdVcGRhdGUoKQpAQCAtMTMzLDkgKzEzNCw5IEBAIHZvaWQgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpwcmVwYXJlRm9yTmV4dFJlbmRlcmluZ1VwZGF0ZSgpCiAKIHZvaWQg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjbGVhckZvbnRNYXAoKQogewotICAgIGZvciAoYXV0
byYgaXRlbSA6IG1fZm9udElkZW50aWZpZXJUb0xhc3RSZW5kZXJpbmdVcGRhdGVWZXJzaW9uTWFw
KQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVz
b3VyY2UoaXRlbS5rZXkpOwotICAgIG1fZm9udElkZW50aWZpZXJUb0xhc3RSZW5kZXJpbmdVcGRh
dGVWZXJzaW9uTWFwLmNsZWFyKCk7CisgICAgZm9yIChhdXRvJiBmb250U3RhdGUgOiBtX2ZvbnRT
dGF0ZXMpCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShmb250U3RhdGUua2V5LCBmb250U3RhdGUudmFsdWUudXNlQ291bnQpOworICAg
IG1fZm9udFN0YXRlcy5jbGVhcigpOwogICAgIG1fbnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRS
ZW5kZXJpbmdVcGRhdGUgPSAwOwogfQogCkBAIC0xNDMsMjAgKzE0NCwyMCBAQCB2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6ZmluYWxpemVSZW5kZXJpbmdVcGRhdGVGb3JGb250cygpCiB7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBtaW5pbXVtUmVuZGVyaW5nVXBkYXRlQ291
bnRUb0tlZXBGb250QWxpdmUgPSA0OwogCi0gICAgdW5zaWduZWQgdG90YWxGb250Q291bnQgPSBt
X2ZvbnRJZGVudGlmaWVyVG9MYXN0UmVuZGVyaW5nVXBkYXRlVmVyc2lvbk1hcC5zaXplKCk7Cisg
ICAgdW5zaWduZWQgdG90YWxGb250Q291bnQgPSBtX2ZvbnRTdGF0ZXMuc2l6ZSgpOwogICAgIFJF
TEVBU0VfQVNTRVJUKG1fbnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUg
PD0gdG90YWxGb250Q291bnQpOwogICAgIGlmICh0b3RhbEZvbnRDb3VudCA9PSBtX251bWJlck9m
Rm9udHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBIYXNoU2V0PFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gdG9SZW1vdmU7
Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRlcmluZ1Vw
ZGF0ZVZlcnNpb25NYXApIHsKLSAgICAgICAgaWYgKG1fY3VycmVudFJlbmRlcmluZ1VwZGF0ZVZl
cnNpb24gLSBpdGVtLnZhbHVlID49IG1pbmltdW1SZW5kZXJpbmdVcGRhdGVDb3VudFRvS2VlcEZv
bnRBbGl2ZSkgeworICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZm9udFN0YXRlcykgeworICAgICAg
ICBpZiAobV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lvbiAtIGl0ZW0udmFsdWUubGFzdFJl
bmRlcmluZ1VwZGF0ZVZlcnNpb25Vc2VkV2l0aGluID49IG1pbmltdW1SZW5kZXJpbmdVcGRhdGVD
b3VudFRvS2VlcEZvbnRBbGl2ZSkgewogICAgICAgICAgICAgdG9SZW1vdmUuYWRkKGl0ZW0ua2V5
KTsKLSAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShpdGVtLmtleSk7CisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UoaXRlbS5rZXksIGl0ZW0udmFsdWUudXNlQ291
bnQpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRl
cmluZ1VwZGF0ZVZlcnNpb25NYXAucmVtb3ZlSWYoWyZdKGNvbnN0IGF1dG8mIGJ1Y2tldCkgewor
ICAgIG1fZm9udFN0YXRlcy5yZW1vdmVJZihbJl0oY29uc3QgYXV0byYgYnVja2V0KSB7CiAgICAg
ICAgIHJldHVybiB0b1JlbW92ZS5jb250YWlucyhidWNrZXQua2V5KTsKICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCmluZGV4IDZkNzMxYzRjYzVlZjZlZjMyYzI4MDI5
YTViMDMyNDEzYTE1YTU4OTAuLmIxZDdjMTc0Yzg1Nzk3NWYyMDEzMTA2YWQ3Mjk0YjU0NGY3YjNm
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtNjksNyArNjksMTEgQEAg
cHJpdmF0ZToKICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgTmF0
aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwogCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBtX2ZvbnRJZGVudGlmaWVyVG9M
YXN0UmVuZGVyaW5nVXBkYXRlVmVyc2lvbk1hcDsKKyAgICBzdHJ1Y3QgRm9udFN0YXRlIHsKKyAg
ICAgICAgdWludDY0X3QgbGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25Vc2VkV2l0aGluOworICAg
ICAgICB1aW50NjRfdCB1c2VDb3VudDsKKyAgICB9OworICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBGb250U3RhdGU+IG1fZm9udFN0YXRlczsKICAgICB1
bnNpZ25lZCBtX251bWJlck9mRm9udHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlIHsgMCB9
OwogICAgIHVpbnQ2NF90IG1fY3VycmVudFJlbmRlcmluZ1VwZGF0ZVZlcnNpb24geyAxIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434062</attachid>
            <date>2021-07-22 21:19:06 -0700</date>
            <delta_ts>2021-07-22 21:41:28 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-228216-20210722211905.patch</filename>
            <type>text/plain</type>
            <size>33291</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIzYmMzMWNlMWU2OTdk
ZDdjMDkwMWMwYmZiM2YwYmY0ZDE0ZGU5Yy4uMjg0MDlhZTFlZTgwNjI1YWJiNmU5Yzc2OWFjOThl
MzFmNTA1Y2U1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA3LTIyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBEZWZlciByZW1vdmFsIG9mIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nlc3MgdW50aWwg
d2UndmUgZXhlY3V0ZWQgYWxsIGRpc3BsYXkgbGlzdCBpdGVtcyB3aGljaCByZWZlcmVuY2UgdGhl
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OnJlcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OmRpZENvbXBsZXRlUmVwbGF5aW5nKToKKwogMjAyMS0w
Ny0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSBuZXR3
b3JrIHByb2Nlc3MgZmFpbHMgdG8gdGFrZSBhIGxvY2tlZCBmaWxlIGFzc2VydGlvbiB3aGVuIGV4
ZWN1dGluZyBhIFNRTGl0ZVN0YXRlbWVudCBvdXRzaWRlIGEgdHJhbnNhY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZGY3NzgwYzg3M2Y4MWRmNmQ0ZjhiMDY4MzZiYWQ0Mjk0MmM4N2YzNy4uZWZjNjFkYjBiNjBm
NjhkNDk1MDU3NzhkMjlkNzVlZDdjOTYwOWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAor
MjAyMS0wNy0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFUgUHJvY2Vzc10gRGVmZXIgcmVtb3ZhbCBvZiByZXNvdXJjZXMgaW4gdGhlIEdQ
VSBQcm9jZXNzIHVudGlsIHdlJ3ZlIGV4ZWN1dGVkIGFsbCBkaXNwbGF5IGxpc3QgaXRlbXMgd2hp
Y2ggcmVmZXJlbmNlIHRoZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODIxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6YXBwbHkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OmRpZFJlc2V0TWFza0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6UmVwbGF5ZXJEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OmFwcGx5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6
ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6ZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZXBsYXllckRlbGVnYXRl
OjpkaWRDb21wbGV0ZVJlcGxheWluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnN1Ym1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlRm9udCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjpyZWNvcmRSZXNvdXJjZVVzZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OnBydW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6flJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlRm9udCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjbGVhckZvbnRNYXApOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZpbmFsaXplUmVuZGVyaW5nVXBk
YXRlRm9yRm9udHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oOgorCiAyMDIxLTA3LTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNzg4NzcpIFtDb2NvYV0gV2Vi
QXV0aG4gc3RvcHBlZCB3b3JraW5nIGZvciBub24tU2FmYXJpIGJyb3dzZXJzIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IGYzNzBiNDExOGQwMjQzYTFiMjli
YmEwMjEwZjg5NzQ3MjkzN2E4NTMuLjM1NjFkYTBiZDEyMjZjYmM5NTI3ZWFmZWQxMzQ1NzdkZGY4
ZDNlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTIz
Miw2ICsyMzIsOSBAQCBSZXBsYXlSZXN1bHQgUmVwbGF5ZXI6OnJlcGxheShjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBib29sIHRyYWNrUmVwbGF5TGlzdAogICAgICAgICB9CiAgICAgfQog
CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPmRpZENvbXBsZXRlUmVw
bGF5aW5nKCk7CisKICAgICByZXN1bHQudHJhY2tlZERpc3BsYXlMaXN0ID0gV1RGTW92ZShyZXBs
YXlMaXN0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmgKaW5kZXggMTY2MjdhMDIwNmUzMDkyNDNmOGI3YmQxOGNkYjNkYTU4NjA3OGE4
Zi4uNTc5MzllZTk3N2VkNGVjNDU4YTBkNDU5MmQ5ZGNkYjcyYWZjZjAzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCBib29sIGFwcGx5KEl0ZW1IYW5kbGUsIEdyYXBoaWNzQ29udGV4dCYpIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVNYXNrSW1hZ2VC
dWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlc2V0TWFza0ltYWdlQnVmZmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb21w
bGV0ZVJlcGxheWluZygpIHsgfQogICAgIH07CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAppbmRl
eCBkMmY5NWJkOTZjYWMwNDBmNjEyMmNiNDgwY2U4OGJlMWRhYzBkMWQxLi5jYjNmOGU4MzVkMGM4
MGE3YTUyNzY5YTRkNjIwN2Q3OGE1ODg0YjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaApAQCAtMzgsNyArMzgsNyBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgot
Y2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1
ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6
OkRlbGVnYXRlIHsKK2NsYXNzIFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmU6OkNv
bmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+IHsKICAgICB1c2luZyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+Owog
ICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0OwogICAgIHVzaW5nIEJh
c2VDb25jcmV0ZUltYWdlQnVmZmVyOjptX2JhY2tlbmQ7CkBAIC03NSw3ICs3NSw5IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGJvb2wgYXBwbHkoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBv
dmVycmlkZQorICAgIGZyaWVuZCBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOworCisgICAg
Ym9vbCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgewogICAgICAgICBpZiAoaXRlbS5pczxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI+KCkpIHsKICAgICAgICAgICAgIGF1
dG8mIGdldFBpeGVsQnVmZmVySXRlbSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpH
ZXRQaXhlbEJ1ZmZlcj4oKTsKQEAgLTEwOCwxNiArMTEwLDYgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5hcHBseU1lZGlhSXRlbShpdGVtLCBjb250
ZXh0KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZU1hc2tJbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIGZpbmFsCi0gICAgewotICAgICAgICBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGRpZFJlc2V0TWFza0ltYWdlQnVmZmVyKCkgZmluYWwKLSAgICB7
Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRSZXNldE1hc2tJbWFnZUJ1ZmZl
cigpOwotICAgIH0KLQogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZDsKICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmlu
ZGV4IGE1ZWRmOTFhN2I1NDJjNWY2YmU3Mjc4MTAyOWQ4ZGExYzZlNjUyYzIuLjIwOGQxMTI5ODQ1
ZTQ2NjM2NzMxYjRhODk3NThiMDQ2YWIwMWY5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAK
QEAgLTE4NCwxNiArMTg0LDY0IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuCiAgICAgICAgIHdh
a2VVcEFuZEFwcGx5RGlzcGxheUxpc3Qoc3RkOjpleGNoYW5nZShtX3BlbmRpbmdXYWtldXBJbmZv
LCBzdGQ6Om51bGxvcHQpLT5hcmd1bWVudHMpOwogfQogCisKK1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OlJlcGxheWVyRGVsZWdhdGU6OlJlcGxheWVyRGVsZWdhdGUoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImIGRlc3RpbmF0aW9uLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLCBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKQorICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAsIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZChyZW1vdGVSZW5kZXJpbmdCYWNrZW5kKQorICAgICwgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCit7Cit9CisKK2Jvb2wg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6YXBwbHkoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGUgaXRlbSwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQpCit7CisgICAgYXV0byYgcmVtb3RlUmVzb3VyY2VDYWNoZSA9IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCk7CisKKyAgICBpZiAoaXRl
bS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocz4oKSkKKyAgICAgICAgcmVtb3Rl
UmVzb3VyY2VDYWNoZS5yZWNvcmRSZXNvdXJjZVVzZShpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd0dseXBocz4oKS5mb250SWRlbnRpZmllcigpKTsKKyAgICBlbHNlIGlmIChpdGVt
LmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybj4oKSkKKyAgICAgICAgcmVtb3Rl
UmVzb3VyY2VDYWNoZS5yZWNvcmRSZXNvdXJjZVVzZShpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd1BhdHRlcm4+KCkuaW1hZ2VJZGVudGlmaWVyKCkpOworICAgIGVsc2UgaWYgKGl0
ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZT4oKSkKKyAgICAgICAg
cmVtb3RlUmVzb3VyY2VDYWNoZS5yZWNvcmRSZXNvdXJjZVVzZShpdGVtLmdldDxXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlPigpLmltYWdlSWRlbnRpZmllcigpKTsKKyAgICBl
bHNlIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZT4oKSkgeworICAg
ICAgICBhdXRvJiBzZXRTdGF0ZSA9IGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRT
dGF0ZT4oKTsKKyAgICAgICAgYXV0byBjaGFuZ2VGbGFncyA9IHNldFN0YXRlLnN0YXRlQ2hhbmdl
KCkubV9jaGFuZ2VGbGFnczsKKyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSkKKyAgICAgICAgICAgIHJlbW90
ZVJlc291cmNlQ2FjaGUucmVjb3JkUmVzb3VyY2VVc2Uoc2V0U3RhdGUuc3Ryb2tlUGF0dGVybklt
YWdlSWRlbnRpZmllcigpKTsKKyAgICAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpCisgICAgICAgICAgICByZW1vdGVS
ZXNvdXJjZUNhY2hlLnJlY29yZFJlc291cmNlVXNlKHNldFN0YXRlLmZpbGxQYXR0ZXJuSW1hZ2VJ
ZGVudGlmaWVyKCkpOworICAgIH0KKworICAgIGF1dG8gYXBwbHkgPSBbJl0oYXV0byYmIGRlc3Rp
bmF0aW9uKSB7CisgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbi5hcHBseShpdGVtLCBncmFwaGlj
c0NvbnRleHQpOworICAgIH07CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbi5yZW5kZXJpbmdNb2Rl
KCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIHJldHVybiBhcHBseShz
dGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4obV9kZXN0aW5hdGlvbikp
OworICAgIHJldHVybiBhcHBseShzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VC
dWZmZXImPihtX2Rlc3RpbmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKK30KKwordm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpSZXBsYXllckRlbGVnYXRlOjpkaWRSZXNldE1hc2tJbWFnZUJ1ZmZl
cigpCit7CisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZFJlc2V0TWFza0ltYWdlQnVm
ZmVyKCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0
ZTo6ZGlkQ29tcGxldGVSZXBsYXlpbmcoKQoreworICAgIGF1dG8gdGhpbmdzQXJlT2theSA9IG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkucHJ1bmUoKTsKKyAg
ICBNRVNTQUdFX0NIRUNLKHRoaW5nc0FyZU9rYXksICJXZWIgcHJvY2VzcyB0cmllZCB0byByZWxl
YXNlIGEgcmVzb3VyY2UgdGhhdCB3YXNuJ3QgY2FjaGVkIik7Cit9CisKIERpc3BsYXlMaXN0OjpS
ZXBsYXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbikK
IHsKICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSogcmVwbGF5ZXJEZWxlZ2F0ZSA9
IG51bGxwdHI7Ci0gICAgaWYgKGRlc3RpbmF0aW9uLnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0YXRpY19j
YXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIqPigmZGVzdGluYXRpb24pOwotICAgIGVs
c2UKLSAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRS
ZW1vdGVJbWFnZUJ1ZmZlcio+KCZkZXN0aW5hdGlvbik7CisgICAgUmVwbGF5ZXJEZWxlZ2F0ZSBy
ZXBsYXllckRlbGVnYXRlKGRlc3RpbmF0aW9uLCAqdGhpcywgbV9ncHVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKTsKIAogICAgIHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgewog
ICAgICAgICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCkBAIC0yMDIsNyArMjUwLDcgQEAgRGlzcGxh
eUxpc3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29uc3Qg
RGlzcGxheUxpc3Q6OkRpc3AKICAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJ
bWFnZXMoKSwKICAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5mb250cygpLAogICAgICAg
ICBtX2N1cnJlbnRNYXNrSW1hZ2VCdWZmZXIuZ2V0KCksCi0gICAgICAgIHJlcGxheWVyRGVsZWdh
dGUKKyAgICAgICAgJnJlcGxheWVyRGVsZWdhdGUKICAgICB9LnJlcGxheSgpOwogfQogCkBAIC00
ODMsMTAgKzUzMSwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlbGV0ZUFsbEZv
bnRzKCkKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuZGVsZXRlQWxsRm9udHMoKTsKIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVz
ZUNvdW50KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICBhdXRvIHN1Y2Nlc3MgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFz
ZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdXNlQ291bnQpOwor
ICAgIE1FU1NBR0VfQ0hFQ0soc3VjY2VzcywgIlJlc291cmNlIGlzIGJlaW5nIHJlbGVhc2VkIGJl
Zm9yZSBiZWluZyBjYWNoZWQuIik7CiAgICAgdXBkYXRlUmVuZGVyaW5nUmVzb3VyY2VSZXF1ZXN0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGEzNTE2NWIxOTExZjlhOTNmM2Q0YThk
ZTkxYjEwMWY3NTY5YWJiMjIuLjg3MjYyOWYwMjUzYmY0YjY5MzY4MmI3MDIyMzI4NWZmYjYxMzU2
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMTQ0LDkgKzE0NCwyNCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZUZv
bnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYpOwogICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKTsKLSAg
ICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgdXNlQ291bnQpOwogICAgIHZvaWQgZGlk
Q3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIp
OwogCisgICAgY2xhc3MgUmVwbGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFJlcGxheWVy
RGVsZWdhdGUoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiwg
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9v
bCBhcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSwgV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JikgZmluYWw7CisgICAgICAgIHZvaWQgZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVy
KFdlYkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVzZXRNYXNr
SW1hZ2VCdWZmZXIoKSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRDb21wbGV0ZVJlcGxheWluZygp
IGZpbmFsOworCisgICAgICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBtX2Rlc3RpbmF0aW9uOwor
ICAgICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7
CisgICAgICAgIFJlZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CisgICAgfTsKKwogICAgIHN0cnVjdCBQZW5kaW5nV2FrZXVwSW5mb3JtYXRp
b24gewogICAgICAgICBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyBhcmd1bWVudHM7
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyPiBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCA0YjNmZTlhMDI2MmU4YTU0OTE4NTJjNmQ2YTA0MDQ1
ZDZhNjk2Mzk3Li5mZjYyYWY1MTFmM2UyZTVjZWJmNDc0MWJiMzUwMzM4NDk0ZTM4ZWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMzYsNyArMzYsNyBAQCBt
ZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHsKICAgICBDYWNoZUZvbnQoSVBDOjpG
b250UmVmZXJlbmNlIGZvbnQpCiAgICAgRGVsZXRlQWxsRm9udHMoKQogICAgIERpZENyZWF0ZVNo
YXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRs
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVy
SWRlbnRpZmllcikKLSAgICBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBSZWxl
YXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgdXNlQ291bnQpCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggODFkZGUwYmZm
Y2YwYmQ2Y2MxYzI4ZTVkZDI0NjM3NGIzNDY0NjI3OC4uM2IwOTFjNjI2YmVjYzkzNGE3MmU4YWE2
NTczZGM0MzMxN2UzN2ZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtNTAsOCArNTAsMTQgQEAg
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFn
ZT4mJiBpbWFnZSkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQoUmVmPEZv
bnQ+JiYgZm9udCkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZm9udHMuYWRkKGZvbnQtPnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGZvbnQpKTsKLSAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIGF1dG8gcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyID0gZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCk7CisgICAgbV9mb250cy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3Zl
KGZvbnQpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9yZXNvdXJjZVVzZUNvdW50ZXJzLmVuc3Vy
ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFsmXSB7CisgICAgICAgIHJldHVybiBSZXNv
dXJjZVVzZUNvdW50ZXIgeyB9OworICAgIH0pOworICAgICsrcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5vcGVuQ291bnQ7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUub3BlbkNvdW50
KTsKIH0KIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxldGVBbGxGb250cygpCkBAIC01
OSwxNiArNjUsNzEgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxldGVBbGxGb250cygp
CiAgICAgbV9mb250cy5jbGVhcigpOwogfQogCi12b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJl
bGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQorYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjptYXliZVJlbW92
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlVXNlQ291bnRlcnNNYXA6Oml0ZXJhdG9yIGl0ZXJh
dG9yKQogeworICAgIC8vIEl0J3MgYWN0dWFsbHkgb2theSBpZiB1c2VDb3VudCA+IHRvdGFsVXNl
Q291bnQuCisgICAgLy8gSXQganVzdCBtZWFucyB0aGF0IHRoZXJlJ3MgYSBjYWNoZSBtZXNzYWdl
IHBlbmRpbmcsIGFuZCB3ZSd2ZSBlYWdlcmx5IHVzZWQgYSBwcmV2aW91c2x5LWNhY2hlZCByZXNv
dXJjZS4KKyAgICAvLyBXaGljaCBpcyBmaW5lLgorICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91
bGRuJ3QgYWN0dWFsbHkgcmVtb3ZlIHRoZSByZXNvdXJjZSBpbiB0aGlzIHNpdHVhdGlvbj8KKyAg
ICAvLyBXZSBtYXkgYWN0dWFsbHkgYmUgYWJsZSB0byBnZXQgYSBoZWFkIHN0YXJ0IG9uIHNvbWUg
ZGlzcGxheSBsaXN0IGl0ZW1zIGlmIHRoZXkncmUgcmVhZHkgZm9yIHVzIGFuZCB3ZSBoYXZlIHRo
ZSByZXNvdXJjZXMgdGhleSBkZXBlbmQgb24uCisKKyAgICBpZiAoaXRlcmF0b3ItPnZhbHVlLm9w
ZW5Db3VudCB8fCBpdGVyYXRvci0+dmFsdWUudXNlQ291bnQgPCBpdGVyYXRvci0+dmFsdWUudG90
YWxVc2VDb3VudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaXRlcmF0b3ItPnZhbHVlLnVz
ZUNvdW50IC09IGl0ZXJhdG9yLT52YWx1ZS50b3RhbFVzZUNvdW50OworICAgIGl0ZXJhdG9yLT52
YWx1ZS50b3RhbFVzZUNvdW50ID0gMDsKKyAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS51c2VDb3Vu
dCkKKyAgICAgICAgbV9yZXNvdXJjZVVzZUNvdW50ZXJzLnJlbW92ZShpdGVyYXRvcik7CisKICAg
ICBpZiAobV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG1fbmF0aXZl
SW1hZ2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtX2ZvbnRzLnJlbW92ZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
cnVlOworCiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhh
cHBlbmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlY29yZFJl
c291cmNlVXNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VVc2VD
b3VudGVycy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBpZiAoaXRl
cmF0b3IgPT0gbV9yZXNvdXJjZVVzZUNvdW50ZXJzLmVuZCgpKSB7CisgICAgICAgIC8vIFRoZSBk
aXNwbGF5IGxpc3QgaXRlbXMgd29uIHRoZSByYWNlIGFnYWluc3QgdGhlIGNhY2hlRm9udCBtZXNz
YWdlLgorICAgICAgICAvLyBXaGVuIHdlIHJlY2VpdmUgdGhlIGNhY2hlRm9udCBtZXNzYWdlLCB3
ZSB3aWxsIHJldHJ5IHRoZSBkaXNwbGF5IGxpc3QgaXRlbS4KKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBSZXNvdXJjZVVzZUNvdW50ZXImIHVzZUNvdW50ZXIgPSBpdGVyYXRvci0+
dmFsdWU7CisgICAgKyt1c2VDb3VudGVyLnVzZUNvdW50OworCisgICAgbV9yZXNvdXJjZXNGb3JN
YXliZVJlbW92aW5nLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCitib29s
IFJlbW90ZVJlc291cmNlQ2FjaGU6OnBydW5lKCkKK3sKKyAgICBmb3IgKGF1dG8gcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIDogbV9yZXNvdXJjZXNGb3JNYXliZVJlbW92aW5nKSB7CisgICAg
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlVXNlQ291bnRlcnMuZmluZChyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9yZXNvdXJj
ZVVzZUNvdW50ZXJzLmVuZCgpKTsKKyAgICAgICAgYXV0byB0aGluZ3NBcmVPa2F5ID0gbWF5YmVS
ZW1vdmVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGl0ZXJhdG9yKTsKKyAg
ICAgICAgaWYgKCF0aGluZ3NBcmVPa2F5KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBtX3Jlc291cmNlc0Zvck1heWJlUmVtb3ZpbmcuY2xlYXIoKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgdWludDY0X3QgdXNlQ291bnQpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VV
c2VDb3VudGVycy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJU
KGl0ZXJhdG9yICE9IG1fcmVzb3VyY2VVc2VDb3VudGVycy5lbmQoKSk7CisgICAgUmVzb3VyY2VV
c2VDb3VudGVyJiB1c2VDb3VudGVyID0gaXRlcmF0b3ItPnZhbHVlOworICAgIGlmICghaXRlcmF0
b3ItPnZhbHVlLm9wZW5Db3VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC0tdXNlQ291
bnRlci5vcGVuQ291bnQ7CisgICAgdXNlQ291bnRlci50b3RhbFVzZUNvdW50ICs9IHVzZUNvdW50
OworICAgIHJldHVybiBtYXliZVJlbW92ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgaXRlcmF0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5o
CmluZGV4IDJjZWQ5MDlmNDgxMTBjNjY2NTZkZTFiZmUzODExZGJhYmFhYTlmNGYuLmRmZWM0OGY4
MWNmMzkyNGYyMjc4ZTkyMzJhMjQ1Yzc1ZjVjMTc3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtNDYs
MTYgKzQ2LDQzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiYmKTsKICAgICB2b2lkIGNhY2hlRm9udChSZWY8V2ViQ29yZTo6Rm9u
dD4mJik7CiAgICAgdm9pZCBkZWxldGVBbGxGb250cygpOwotICAgIHZvaWQgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgYm9v
bCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCB1aW50NjRfdCB1c2VDb3VudCk7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGJvb2wgcHJ1bmUoKTsKIAog
ICAgIGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KICAgICBjb25zdCBXZWJDb3JlOjpOYXRpdmVJ
bWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2Vz
OyB9CiAgICAgY29uc3QgV2ViQ29yZTo6Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cygp
IGNvbnN0IHsgcmV0dXJuIG1fZm9udHM7IH0KIAogcHJpdmF0ZToKKyAgICAvLyBCZWNhdXNlIHRo
ZSBjYWNoZS9yZWxlYXNlIG1lc3NhZ2VzIGFyZSBzZW50IGFzeW5jaHJvbm91c2x5IGZyb20gdGhl
IGRpc3BsYXkgbGlzdCBpdGVtcyB3aGljaAorICAgIC8vIHJlZmVyZW5jZSB0aGUgcmVzb3VyY2Vz
LCBpdCdzIHRvdGFsbHkgcG9zc2libGUgdGhhdCB3ZSBzZWUgYSByZWxlYXNlIG1lc3NhZ2UgYmVm
b3JlIHdlJ3ZlCisgICAgLy8gZXhlY3V0ZWQgYWxsIHRoZSBkaXNwbGF5IGxpc3QgaXRlbXMgd2hp
Y2ggcmVmZXJlbmNlIHRoZSByZXNvdXJjZS4gVGhlIHdlYiBwcm9jZXNzIHRlbGxzIHVzCisgICAg
Ly8gaG93IG1hbnkgZGlzcGxheSBsaXN0IGl0ZW1zIHdpbGwgcmVmZXJlbmNlIHRoaXMgcmVzb3Vy
Y2UsIGFuZCB3ZSBkZWZlciBkZWxldGlvbiBvZiB0aGUgcmVzb3VyY2UKKyAgICAvLyB1bnRpbCB3
ZSBleGVjdXRlIHRoYXQgbWFueSBkaXNwbGF5IGxpc3QgaXRlbXMuCisgICAgLy8KKyAgICAvLyBJ
dCdzIGFjdHVhbGx5IGEgYml0IHdvcnNlIHRoYW4gdGhpcywgdGhvdWdoLCBiZWNhdXNlIHdlIG1h
eSBhY3R1YWxseSBzZWUgYSAqbmV3KiBjYWNoZSBtZXNzYWdlCisgICAgLy8gZHVyaW5nIHRoZSB0
aW1lIHdoZW4gZGVsZXRpb24gaXMgZGVmZXJyZWQsIHNvIHdlIG5lZWQgYSBzZWNvbmQgY291bnQg
b2YgdGhlIG51bWJlciBvZiBjYWNoZQorICAgIC8vIG1lc3NhZ2VzIHdoaWNoIGRvbid0IGhhdmUg
YW4gYWNjb21wYW55aW5nIHJlbGVhc2UgbWVzc2FnZXMuCisgICAgLy8KKyAgICAvLyBXZSBjYW4g
b25seSBzYWZlbHkgZGVsZXRlIGEgcmVzb3VyY2Ugd2hlbiBhbGwgdGhlIGNhY2hlIG1lc3NhZ2Vz
IGhhdmUgYW4gYWNjb21wYW55aW5nIHJlbGVhc2UKKyAgICAvLyBtZXNzYWdlLCBhbmQgd2UndmUg
cHJvY2Vzc2VkIGFzIG1hbnkgZGlzcGxheSBsaXN0IGl0ZW1zIGFzIHRoZSB3ZWIgcHJvY2VzcyBo
YXMgZW5jb2RlZCB0aGF0CisgICAgLy8gcmVmZXJlbmNlIGEgcGFydGljdWxhciByZXNvdXJjZS4K
KyAgICBzdHJ1Y3QgUmVzb3VyY2VVc2VDb3VudGVyIHsKKyAgICAgICAgdWludDY0X3Qgb3BlbkNv
dW50IHsgMCB9OyAvLyBUaGUgbnVtYmVyIG9mIGNhY2hlRm9vIG1lc3NhZ2VzIHdlJ3ZlIHJlY2Vp
dmVkIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIHJlbGVhc2UgbWVzc2FnZQorICAgICAgICB1aW50
NjRfdCB1c2VDb3VudCB7IDAgfTsgLy8gVGhlIG51bWJlciBvZiByZW5kZXJpbmcgY29tbWFuZHMg
d2UndmUgZXhlY3V0ZWQgd2hpY2ggcmVmZXJlbmNlIHRoaXMgcmVzb3VyY2UKKyAgICAgICAgdWlu
dDY0X3QgdG90YWxVc2VDb3VudCB7IDAgfTsgLy8gT25jZSB1c2VDb3VudCBoaXRzIHRoaXMgbGlt
aXQsIHdlIGNhbiBmcmVlIHRoZSByZXNvdXJjZQorICAgIH07CisgICAgdXNpbmcgUmVzb3VyY2VV
c2VDb3VudGVyc01hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBSZXNvdXJjZVVzZUNvdW50ZXI+OworCisgICAgYm9vbCBtYXliZVJlbW92ZVJlc291cmNl
KFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VVc2VDb3VudGVy
c01hcDo6aXRlcmF0b3IpOworCiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1h
Z2VCdWZmZXJzOwogICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdl
czsKICAgICBXZWJDb3JlOjpGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAgbV9mb250czsKKworICAg
IFJlc291cmNlVXNlQ291bnRlcnNNYXAgbV9yZXNvdXJjZVVzZUNvdW50ZXJzOworICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX3Jlc291cmNlc0Zvck1h
eWJlUmVtb3Zpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYktp
dC54Y3NjaGVtZSBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEv
eGNzY2hlbWVzL1dlYktpdC54Y3NjaGVtZQppbmRleCA2MTAzOWIxYzcxNzM4ZjMyMzNkYjhiMzU5
ODQzYzQ0YzgzZWY5YzlmLi5lNDAyMDhlODYwMjNmMjRiNWRlZDlkYjk3OTZlMDQyNzllMmY2OWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRh
L3hjc2NoZW1lcy9XZWJLaXQueGNzY2hlbWUKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lCkBAIC0zMSw3ICsz
MSw3IEBACiAgICAgICA8L1Rlc3RhYmxlcz4KICAgIDwvVGVzdEFjdGlvbj4KICAgIDxMYXVuY2hB
Y3Rpb24KLSAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgorICAgICAgYnVpbGRD
b25maWd1cmF0aW9uID0gIkRlYnVnIgogICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZpZXIg
PSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIiCiAgICAgICBzZWxlY3Rl
ZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNoZXIu
TExEQiIKICAgICAgIGxhdW5jaFN0eWxlID0gIjAiCkBAIC00MCw2ICs0MCwyMiBAQAogICAgICAg
ZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgogICAgICAgZGVidWdTZXJ2aWNlRXh0ZW5z
aW9uID0gImludGVybmFsIgogICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRpb24gPSAiWUVTIj4K
KyAgICAgIDxQYXRoUnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIw
IgorICAgICAgICAgRmlsZVBhdGggPSAiL1VzZXJzL21tYXhmaWVsZC9CdWlsZC9Qcm9kdWN0cy9E
ZWJ1Zy9NaW5pQnJvd3Nlci5hcHAiPgorICAgICAgPC9QYXRoUnVubmFibGU+CisgICAgICA8RW52
aXJvbm1lbnRWYXJpYWJsZXM+CisgICAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZQorICAgICAg
ICAgICAga2V5ID0gIk1hbGxvYyIKKyAgICAgICAgICAgIHZhbHVlID0gIjEiCisgICAgICAgICAg
ICBpc0VuYWJsZWQgPSAiWUVTIj4KKyAgICAgICAgIDwvRW52aXJvbm1lbnRWYXJpYWJsZT4KKyAg
ICAgICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlCisgICAgICAgICAgICBrZXkgPSAiX19YUENfTWFs
bG9jIgorICAgICAgICAgICAgdmFsdWUgPSAiMSIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZ
RVMiPgorICAgICAgICAgPC9FbnZpcm9ubWVudFZhcmlhYmxlPgorICAgICAgPC9FbnZpcm9ubWVu
dFZhcmlhYmxlcz4KICAgIDwvTGF1bmNoQWN0aW9uPgogICAgPFByb2ZpbGVBY3Rpb24KICAgICAg
IGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aAppbmRleCBiNDQ4YjM3Zjk3ZmU3YWU2NWRiZWJiMmE4NWFiMGM5OTRlMWYyNmJkLi43ZWQ3Njk0
MmRkN2M5ZGM2ZjJjYWM5ZWFjZTFiNDRiZjZhZDJiOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgZmx1c2hEcmF3aW5n
Q29udGV4dCgpOwogICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5KCkucmVsZWFzZUltYWdlQnVmZmVyKG1fcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJl
bGVhc2VSZW1vdGVSZXNvdXJjZShtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAg
ICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIDApOyAvLyBGSVhNRTogVGhpcyAwIGlzIHBy
b2JhYmx5IHdyb25nLgogICAgIH0KIAogICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVh
dGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCmluZGV4IDA5Y2U0YzZlZjZkNmFiZTcxZTAzZWFiN2ZhOGNkMjE0ZmY2OGIw
ZmUuLmU5NWYxYWQzOTM0ZjI1NGJkNWY5OWQyM2E1YjQ2NTU1MzVjZTA5MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAgLTI0OSwxMiArMjQ5LDEyIEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkZWxldGVBbGxGb250cygpCiAgICAgc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6RGVsZXRlQWxsRm9udHMoKSwgcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNvdW50KQog
ewogICAgIGlmIChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPT0gbV9jdXJyZW50RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpCiAgICAgICAgIG1fY3VycmVudERlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gc3RkOjpudWxsb3B0OwogCi0gICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6
U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNlUmVtb3Rl
UmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1c2VDb3VudCksIHJlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZChJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKaW5kZXgg
NjMxNDk2NzBhMzU5NGUyNWEyZGE1Y2QxOTc2MTE0NjFjNjE3OTc0MC4uYjJjZTNkOGMyOGFiMTkx
MjUzNTE5MDI3ZmM5MDc0ZDIwZWQxNzI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVOYXRp
dmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZUZvbnQoUmVmPFdlYkNvcmU6OkZv
bnQ+JiYpOwogICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKTsKLSAgICB2b2lkIHJlbGVhc2VSZW1v
dGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZv
aWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgdWludDY0X3QgdXNlQ291bnQpOwogCiAgICAgZW51bSBjbGFzcyBEaWRSZWNlaXZlQmFj
a2VuZENyZWF0aW9uUmVzdWx0IDogYm9vbCB7CiAgICAgICAgIFJlY2VpdmVkQW55UmVzcG9uc2Us
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKaW5kZXggMDNmMzRiMzNhMjJkZDQ5
MjhkNDI2MGU0Nzg2MmQzOTEzNzExMDFhZi4uNDBlYzM5MmNhZTQ2NTRhMzUzNDJmMzJlYWFjYzQ0
YWI3ODViNmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcApAQCAtNDEs
OCArNDEsOCBAQCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmCiAKIFJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6flJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpCiB7Ci0gICAgZm9yIChhdXRvJiBpbWFn
ZSA6IG1fbmF0aXZlSW1hZ2VzLnZhbHVlcygpKQotICAgICAgICBpbWFnZS0+cmVtb3ZlT2JzZXJ2
ZXIoKnRoaXMpOworICAgIGZvciAoYXV0byYgbmF0aXZlSW1hZ2VTdGF0ZSA6IG1fbmF0aXZlSW1h
Z2VzLnZhbHVlcygpKQorICAgICAgICBuYXRpdmVJbWFnZVN0YXRlLmltYWdlLT5yZW1vdmVPYnNl
cnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUlt
YWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKQEAgLTgwLDggKzgw
LDExIEBAIGlubGluZSBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVh
YmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKE5hdGl2CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKIHsKLSAgICBpZiAo
bV9uYXRpdmVJbWFnZXMuY29udGFpbnMoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCkpKQorICAgIGF1dG8gaXRlcmF0b3IgPSBtX25hdGl2ZUltYWdlcy5maW5kKGltYWdlLnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9uYXRpdmVJ
bWFnZXMuZW5kKCkpIHsKKyAgICAgICAgKytpdGVyYXRvci0+dmFsdWUudXNlQ291bnQ7CiAgICAg
ICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvIGJpdG1hcCA9IGNyZWF0ZVNoYXJlYWJsZUJp
dG1hcEZyb21OYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgaWYgKCFiaXRtYXApCkBAIC05Miw3ICs5
NSw3IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJiBpbWFnZSkKICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX25hdGl2ZUltYWdlcy5hZGQoaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKCksIG1ha2VXZWFrUHRyKGltYWdlKSk7CisgICAgbV9uYXRpdmVJbWFnZXMuYWRkKGlt
YWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBOYXRpdmVJbWFnZVN0YXRlIHsgbWFr
ZVdlYWtQdHIoaW1hZ2UpLCAxIH0pOwogCiAgICAgLy8gU2V0IGl0c2VsZiBhcyBhbiBvYnNlcnZl
ciB0byBOYXRpdmVJbWFnZSwgc28gcmVsZWFzZU5hdGl2ZUltYWdlKCkKICAgICAvLyBnZXRzIGNh
bGxlZCB3aGVuIE5hdGl2ZUltYWdlIGlzIGJlaW5nIGRlbGVsZXRlZC4KQEAgLTEwNCwyNSArMTA3
LDMwIEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlJiBpbWFnZSkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hl
Rm9udChGb250JiBmb250KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9mb250SWRlbnRpZmllclRv
TGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXAuZW5zdXJlKGZvbnQucmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKCksIFsmXSB7Ci0gICAgICAgIHJldHVybiAwOworICAgIGF1dG8gcmVzdWx0
ID0gbV9mb250cy5lbnN1cmUoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgWyZd
IHsKKyAgICAgICAgcmV0dXJuIEZvbnRTdGF0ZSB7IDAsIDAgfTsKICAgICB9KTsKLSAgICBhdXRv
JiBsYXN0VmVyc2lvbiA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Ci0gICAgaWYgKGxhc3RWZXJz
aW9uICE9IG1fY3VycmVudFJlbmRlcmluZ1VwZGF0ZVZlcnNpb24pIHsKLSAgICAgICAgbGFzdFZl
cnNpb24gPSBtX2N1cnJlbnRSZW5kZXJpbmdVcGRhdGVWZXJzaW9uOworICAgIGF1dG8mIGN1cnJl
bnRTdGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKGN1cnJlbnRTdGF0ZS5s
YXN0UmVuZGVyaW5nVXBkYXRlVmVyc2lvblVzZWRXaXRoaW4gIT0gbV9jdXJyZW50UmVuZGVyaW5n
VXBkYXRlVmVyc2lvbikgeworICAgICAgICBjdXJyZW50U3RhdGUubGFzdFJlbmRlcmluZ1VwZGF0
ZVZlcnNpb25Vc2VkV2l0aGluID0gbV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lvbjsKICAg
ICAgICAgKyttX251bWJlck9mRm9udHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlOwogICAg
IH0KKyAgICArK2N1cnJlbnRTdGF0ZS51c2VDb3VudDsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50
cnkpCiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlRm9udChtYWtl
UmVmKGZvbnQpKTsKIH0KIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VO
YXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQogewotICAgIGlmICghbV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybjsKKyAgICBhdXRvIGl0ZXJhdG9yID0g
bV9uYXRpdmVJbWFnZXMuZmluZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIFJF
TEVBU0VfQVNTRVJUKGl0ZXJhdG9yICE9IG1fbmF0aXZlSW1hZ2VzLmVuZCgpKTsKKworICAgIGF1
dG8gdXNlQ291bnQgPSBpdGVyYXRvci0+dmFsdWUudXNlQ291bnQ7CisKKyAgICBhdXRvIHN1Y2Nl
c3MgPSBtX25hdGl2ZUltYWdlcy5yZW1vdmUoaXRlcmF0b3IpOworICAgIEFTU0VSVF9VTlVTRUQo
c3VjY2Vzcywgc3VjY2Vzcyk7CiAKLSAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byByZW1v
dmUgdGhpcyByZXNvdXJjZS4KLSAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxl
YXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCB1c2VDb3VudCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5OjpwcmVwYXJlRm9yTmV4dFJlbmRlcmluZ1VwZGF0ZSgpCkBAIC0xMzMsOSArMTQx
LDkgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnByZXBhcmVGb3JOZXh0UmVuZGVy
aW5nVXBkYXRlKCkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNsZWFyRm9udE1h
cCgpCiB7Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRl
cmluZ1VwZGF0ZVZlcnNpb25NYXApCi0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShpdGVtLmtleSk7Ci0gICAgbV9mb250SWRlbnRpZmll
clRvTGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXAuY2xlYXIoKTsKKyAgICBmb3IgKGF1dG8m
IGZvbnRTdGF0ZSA6IG1fZm9udHMpCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShmb250U3RhdGUua2V5LCBmb250U3RhdGUudmFsdWUu
dXNlQ291bnQpOworICAgIG1fZm9udHMuY2xlYXIoKTsKICAgICBtX251bWJlck9mRm9udHNVc2Vk
SW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlID0gMDsKIH0KIApAQCAtMTQzLDIwICsxNTEsMjAgQEAg
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRm9y
Rm9udHMoKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWluaW11bVJlbmRlcmlu
Z1VwZGF0ZUNvdW50VG9LZWVwRm9udEFsaXZlID0gNDsKIAotICAgIHVuc2lnbmVkIHRvdGFsRm9u
dENvdW50ID0gbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXAu
c2l6ZSgpOworICAgIHVuc2lnbmVkIHRvdGFsRm9udENvdW50ID0gbV9mb250cy5zaXplKCk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9udW1iZXJPZkZvbnRzVXNlZEluQ3VycmVudFJlbmRlcmluZ1Vw
ZGF0ZSA8PSB0b3RhbEZvbnRDb3VudCk7CiAgICAgaWYgKHRvdGFsRm9udENvdW50ID09IG1fbnVt
YmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRhdGUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiB0b1Jl
bW92ZTsKLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2ZvbnRJZGVudGlmaWVyVG9MYXN0UmVuZGVy
aW5nVXBkYXRlVmVyc2lvbk1hcCkgewotICAgICAgICBpZiAobV9jdXJyZW50UmVuZGVyaW5nVXBk
YXRlVmVyc2lvbiAtIGl0ZW0udmFsdWUgPj0gbWluaW11bVJlbmRlcmluZ1VwZGF0ZUNvdW50VG9L
ZWVwRm9udEFsaXZlKSB7CisgICAgZm9yIChhdXRvJiBpdGVtIDogbV9mb250cykgeworICAgICAg
ICBpZiAobV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lvbiAtIGl0ZW0udmFsdWUubGFzdFJl
bmRlcmluZ1VwZGF0ZVZlcnNpb25Vc2VkV2l0aGluID49IG1pbmltdW1SZW5kZXJpbmdVcGRhdGVD
b3VudFRvS2VlcEZvbnRBbGl2ZSkgewogICAgICAgICAgICAgdG9SZW1vdmUuYWRkKGl0ZW0ua2V5
KTsKLSAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1v
dGVSZXNvdXJjZShpdGVtLmtleSk7CisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UoaXRlbS5rZXksIGl0ZW0udmFsdWUudXNlQ291
bnQpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRl
cmluZ1VwZGF0ZVZlcnNpb25NYXAucmVtb3ZlSWYoWyZdKGNvbnN0IGF1dG8mIGJ1Y2tldCkgewor
ICAgIG1fZm9udHMucmVtb3ZlSWYoWyZdKGNvbnN0IGF1dG8mIGJ1Y2tldCkgewogICAgICAgICBy
ZXR1cm4gdG9SZW1vdmUuY29udGFpbnMoYnVja2V0LmtleSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaAppbmRleCA2ZDczMWM0Y2M1ZWY2ZWYzMmMyODAyOWE1YjAz
MjQxM2ExNWE1ODkwLi5jOThmMDkwYzIwMzY1YzcwNzM3NzVhZjljZmFlMjNiYWJkNmNhMzBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAgLTU5LDcgKzU5LDE4IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB1c2luZyBJbWFnZUJ1ZmZlckhhc2hNYXAgPSBIYXNoTWFwPFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV2Vha1B0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4+OwotICAgIHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlPj47CisKKyAgICBzdHJ1Y3QgTmF0aXZlSW1hZ2VTdGF0ZSB7CisgICAgICAgIFdlYWtQdHI8
V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGltYWdlOworICAgICAgICB1aW50NjRfdCB1c2VDb3VudDsK
KyAgICB9OworICAgIHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBOYXRpdmVJbWFnZVN0YXRlPjsKKworICAgIHN0
cnVjdCBGb250U3RhdGUgeworICAgICAgICB1aW50NjRfdCBsYXN0UmVuZGVyaW5nVXBkYXRlVmVy
c2lvblVzZWRXaXRoaW47CisgICAgICAgIHVpbnQ2NF90IHVzZUNvdW50OworICAgIH07CisgICAg
dXNpbmcgRm9udEhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgRm9udFN0YXRlPjsKICAgICAKICAgICB2b2lkIHJlbGVhc2VOYXRpdmVJbWFnZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZmluYWxpemVSZW5kZXJpbmdVcGRhdGVGb3JGb250cygpOwpAQCAtNjgsOCArNzksNyBAQCBwcml2
YXRlOgogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIE5hdGl2
ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKLQotICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1aW50NjRfdD4gbV9mb250SWRlbnRpZmllclRvTGFz
dFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXA7CisgICAgRm9udEhhc2hNYXAgbV9mb250czsKICAg
ICB1bnNpZ25lZCBtX251bWJlck9mRm9udHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlIHsg
MCB9OwogICAgIHVpbnQ2NF90IG1fY3VycmVudFJlbmRlcmluZ1VwZGF0ZVZlcnNpb24geyAxIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434063</attachid>
            <date>2021-07-22 21:41:30 -0700</date>
            <delta_ts>2021-07-23 01:18:29 -0700</delta_ts>
            <desc>First draft</desc>
            <filename>bug-228216-20210722214129.patch</filename>
            <type>text/plain</type>
            <size>37919</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIzYmMzMWNlMWU2OTdk
ZDdjMDkwMWMwYmZiM2YwYmY0ZDE0ZGU5Yy4uMjg0MDlhZTFlZTgwNjI1YWJiNmU5Yzc2OWFjOThl
MzFmNTA1Y2U1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA3LTIyICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9j
ZXNzXSBEZWZlciByZW1vdmFsIG9mIHJlc291cmNlcyBpbiB0aGUgR1BVIFByb2Nlc3MgdW50aWwg
d2UndmUgZXhlY3V0ZWQgYWxsIGRpc3BsYXkgbGlzdCBpdGVtcyB3aGljaCByZWZlcmVuY2UgdGhl
bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MjE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OnJlcGxheSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZXBsYXllcjo6RGVsZWdhdGU6OmRpZENvbXBsZXRlUmVwbGF5aW5nKToKKwogMjAyMS0w
Ny0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZSBuZXR3
b3JrIHByb2Nlc3MgZmFpbHMgdG8gdGFrZSBhIGxvY2tlZCBmaWxlIGFzc2VydGlvbiB3aGVuIGV4
ZWN1dGluZyBhIFNRTGl0ZVN0YXRlbWVudCBvdXRzaWRlIGEgdHJhbnNhY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZGY3NzgwYzg3M2Y4MWRmNmQ0ZjhiMDY4MzZiYWQ0Mjk0MmM4N2YzNy4uZWZjNjFkYjBiNjBm
NjhkNDk1MDU3NzhkMjlkNzVlZDdjOTYwOWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAor
MjAyMS0wNy0yMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFUgUHJvY2Vzc10gRGVmZXIgcmVtb3ZhbCBvZiByZXNvdXJjZXMgaW4gdGhlIEdQ
VSBQcm9jZXNzIHVudGlsIHdlJ3ZlIGV4ZWN1dGVkIGFsbCBkaXNwbGF5IGxpc3QgaXRlbXMgd2hp
Y2ggcmVmZXJlbmNlIHRoZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODIxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6YXBwbHkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OmRpZFJlc2V0TWFza0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6UmVwbGF5ZXJEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlcGxheWVyRGVsZWdhdGU6OmFwcGx5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6
ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6ZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZXBsYXllckRlbGVnYXRl
OjpkaWRDb21wbGV0ZVJlcGxheWluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OnN1Ym1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlRm9udCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGU6Om1heWJlUmVtb3ZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZXNvdXJjZUNhY2hlOjpyZWNvcmRSZXNvdXJjZVVzZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlc291cmNlQ2FjaGU6OnBydW5lKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6flJlbW90ZUltYWdlQnVmZmVyUHJveHkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlRm9udCk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjbGVhckZvbnRNYXApOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZpbmFsaXplUmVuZGVyaW5nVXBk
YXRlRm9yRm9udHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGVQcm94eS5oOgorCiAyMDIxLTA3LTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNzg4NzcpIFtDb2NvYV0gV2Vi
QXV0aG4gc3RvcHBlZCB3b3JraW5nIGZvciBub24tU2FmYXJpIGJyb3dzZXJzIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggZjFjN2RiMTNk
ODU2NTc0YTE0ZDI4OGU3NTQ5ZDhiMGNiZmFiNWU4Yi4uY2Y1MWY3OTk2OTUyNDc3ZTE2MTQ2MmEx
NGJmZDE3OTA1NzYxZjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuTWFwQmFja2luZ1N0b3JlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRVc2VDb3VudGVyKCkgeyB9CiAK
ICAgICB2aXJ0dWFsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZmx1c2hDb250ZXh0KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCmluZGV4IGI4YTJkYjljZTBkZjFjOTkyYjVlYzQ3ZWEwNzA3YzhmYjVm
ODU4YmEuLjM2MjRlYTM2NzdhYzdmZGFjZWU1MTMyNzQ2ZDBjZTcyNTk4Y2VmYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTE5OCwxMiArMTk4LDEzIEBA
IHZvaWQgUmVjb3JkZXI6OmFwcGVuZERyYXdHbHlwaHNJdGVtV2l0aENhY2hlZEZvbnQoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCCiAgICAgYXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGds
eXBocywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5nTW9kZSk7CiB9CiAK
LXZvaWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1h
Z2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit2b2lkIFJlY29yZGVy
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghY2FuRHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyKSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlciwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIGltYWdlQnVmZmVyLmluY3JlbWVudFVzZUNvdW50ZXIoKTsKICAgICBtX2Rpc3Bs
YXlMaXN0LmNhY2hlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwogICAgIGFwcGVuZDxEcmF3SW1h
Z2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CkBAIC00NjUsNiArNDY2LDcgQEAgSW50UmVjdCBS
ZWNvcmRlcjo6Y2xpcEJvdW5kcygpIGNvbnN0CiAKIHZvaWQgUmVjb3JkZXI6OmNsaXBUb0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKIHsKKyAgICBpbWFnZUJ1ZmZlci5pbmNyZW1lbnRVc2VDb3VudGVyKCk7CiAgICAgbV9kaXNw
bGF5TGlzdC5jYWNoZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKICAgICBhcHBlbmQ8Q2xpcFRv
SW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBk
ZXN0UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5k
ZXggZjM3MGI0MTE4ZDAyNDNhMWIyOWJiYTAyMTBmODk3NDcyOTM3YTg1My4uMzU2MWRhMGJkMTIy
NmNiYzk1MjdlYWZlZDEzNDU3N2RkZjhkM2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcApAQCAtMjMyLDYgKzIzMiw5IEBAIFJlcGxheVJlc3VsdCBSZXBsYXll
cjo6cmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGJvb2wgdHJhY2tSZXBsYXlM
aXN0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9k
ZWxlZ2F0ZS0+ZGlkQ29tcGxldGVSZXBsYXlpbmcoKTsKKwogICAgIHJlc3VsdC50cmFja2VkRGlz
cGxheUxpc3QgPSBXVEZNb3ZlKHJlcGxheUxpc3QpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCAxNjYyN2EwMjA2ZTMwOTI0
M2Y4YjdiZDE4Y2RiM2RhNTg2MDc4YThmLi41NzkzOWVlOTc3ZWQ0ZWM0NThhMGQ0NTkyZDlkY2Ri
NzJhZmNmMDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTY4
LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoSXRlbUhhbmRs
ZSwgR3JhcGhpY3NDb250ZXh0JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZU1hc2tJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIHsgfQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzZXRNYXNrSW1hZ2VCdWZmZXIoKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUmVwbGF5aW5nKCkgeyB9CiAgICAgfTsKICAgICAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCmluZGV4IGQyZjk1YmQ5NmNhYzA0MGY2MTIyY2I0ODBjZTg4YmUx
ZGFjMGQxZDEuLmNiM2Y4ZTgzNWQwYzgwYTdhNTI3NjlhNGQ2MjA3ZDc4YTU4ODRiNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQmFja2VuZFR5cGU+Ci1jbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBX
ZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEJhY2tlbmRUeXBlPiwgcHVibGljIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgeworY2xhc3MgUmVtb3RlSW1hZ2VCdWZm
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4gewog
ICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFn
ZUJ1ZmZlcjxCYWNrZW5kVHlwZT47CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OmNvbnRleHQ7CiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6Om1fYmFja2VuZDsK
QEAgLTc1LDcgKzc1LDkgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgYm9vbCBh
cHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCisgICAgZnJpZW5kIGNsYXNzIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ7CisKKyAgICBib29sIGFwcGx5KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtSGFuZGxlIGl0ZW0sIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICB7
CiAgICAgICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZl
cj4oKSkgewogICAgICAgICAgICAgYXV0byYgZ2V0UGl4ZWxCdWZmZXJJdGVtID0gaXRlbS5nZXQ8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkdldFBpeGVsQnVmZmVyPigpOwpAQCAtMTA4LDE2ICsxMTAs
NiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmFw
cGx5TWVkaWFJdGVtKGl0ZW0sIGNvbnRleHQpOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ3JlYXRl
TWFza0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikgZmluYWwK
LSAgICB7Ci0gICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5kaWRDcmVhdGVNYXNrSW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIpOwotICAgIH0KLQotICAgIHZvaWQgZGlkUmVzZXRNYXNrSW1h
Z2VCdWZmZXIoKSBmaW5hbAotICAgIHsKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmRpZFJlc2V0TWFza0ltYWdlQnVmZmVyKCk7Ci0gICAgfQotCiAgICAgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kOwogICAgIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggYTVlZGY5MWE3YjU0MmM1ZjZiZTcyNzgxMDI5ZDhk
YTFjNmU2NTJjMi4uMDBlNmEzMjBmZGFjMDc4MTA5YWYzMWY4ZmUyMWE2NDY5MTcyMmFhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMTg0LDE2ICsxODQsNjcgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2lj
YWxTaXplLCBSZW4KICAgICAgICAgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdGQ6OmV4Y2hh
bmdlKG1fcGVuZGluZ1dha2V1cEluZm8sIHN0ZDo6bnVsbG9wdCktPmFyZ3VtZW50cyk7CiB9CiAK
KworUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6UmVwbGF5ZXJEZWxl
Z2F0ZShXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgZGVzdGluYXRpb24sIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCisgICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0
aW9uKQorICAgICwgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kKHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQpCisgICAgLCBtX2dwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoZ3B1Q29ubmVjdGlvblRvV2Vi
UHJvY2VzcykKK3sKK30KKworYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZXBsYXllckRl
bGVnYXRlOjphcHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSBpdGVtLCBXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKK3sKKyAgICBhdXRvJiByZW1v
dGVSZXNvdXJjZUNhY2hlID0gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnJlbW90ZVJlc291cmNl
Q2FjaGUoKTsKKworICAgIGlmIChpdGVtLmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5
cGhzPigpKQorICAgICAgICByZW1vdGVSZXNvdXJjZUNhY2hlLnJlY29yZFJlc291cmNlVXNlKGl0
ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzPigpLmZvbnRJZGVudGlmaWVy
KCkpOworICAgIGVsc2UgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0
ZXJuPigpKQorICAgICAgICByZW1vdGVSZXNvdXJjZUNhY2hlLnJlY29yZFJlc291cmNlVXNlKGl0
ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybj4oKS5pbWFnZUlkZW50aWZp
ZXIoKSk7CisgICAgZWxzZSBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05h
dGl2ZUltYWdlPigpKQorICAgICAgICByZW1vdGVSZXNvdXJjZUNhY2hlLnJlY29yZFJlc291cmNl
VXNlKGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U+KCkuaW1h
Z2VJZGVudGlmaWVyKCkpOworICAgIGVsc2UgaWYgKGl0ZW0uaXM8V2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlNldFN0YXRlPigpKSB7CisgICAgICAgIGF1dG8mIHNldFN0YXRlID0gaXRlbS5nZXQ8V2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlPigpOworICAgICAgICBhdXRvIGNoYW5nZUZsYWdz
ID0gc2V0U3RhdGUuc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzOworICAgICAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFu
Z2UpKQorICAgICAgICAgICAgcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWNvcmRSZXNvdXJjZVVzZShz
ZXRTdGF0ZS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkpOworICAgICAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdl
KSkKKyAgICAgICAgICAgIHJlbW90ZVJlc291cmNlQ2FjaGUucmVjb3JkUmVzb3VyY2VVc2Uoc2V0
U3RhdGUuZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSk7CisgICAgfSBlbHNlIGlmIChpdGVt
LmlzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3SW1hZ2VCdWZmZXI+KCkpCisgICAgICAgIHJl
bW90ZVJlc291cmNlQ2FjaGUucmVjb3JkUmVzb3VyY2VVc2UoaXRlbS5nZXQ8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdJbWFnZUJ1ZmZlcj4oKS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSk7Cisg
ICAgZWxzZSBpZiAoaXRlbS5pczxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvSW1hZ2VCdWZm
ZXI+KCkpCisgICAgICAgIHJlbW90ZVJlc291cmNlQ2FjaGUucmVjb3JkUmVzb3VyY2VVc2UoaXRl
bS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0ltYWdlQnVmZmVyPigpLmltYWdlQnVm
ZmVySWRlbnRpZmllcigpKTsKKworICAgIGF1dG8gYXBwbHkgPSBbJl0oYXV0byYmIGRlc3RpbmF0
aW9uKSB7CisgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbi5hcHBseShpdGVtLCBncmFwaGljc0Nv
bnRleHQpOworICAgIH07CisKKyAgICBpZiAobV9kZXN0aW5hdGlvbi5yZW5kZXJpbmdNb2RlKCkg
PT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCisgICAgICAgIHJldHVybiBhcHBseShzdGF0
aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyJj4obV9kZXN0aW5hdGlvbikpOwor
ICAgIHJldHVybiBhcHBseShzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZm
ZXImPihtX2Rlc3RpbmF0aW9uKSk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
UmVwbGF5ZXJEZWxlZ2F0ZTo6ZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiBpbWFnZUJ1ZmZlcikKK3sKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuZGlk
Q3JlYXRlTWFza0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyKTsKK30KKwordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpSZXBsYXllckRlbGVnYXRlOjpkaWRSZXNldE1hc2tJbWFnZUJ1ZmZlcigp
Cit7CisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmRpZFJlc2V0TWFza0ltYWdlQnVmZmVy
KCk7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVwbGF5ZXJEZWxlZ2F0ZTo6
ZGlkQ29tcGxldGVSZXBsYXlpbmcoKQoreworICAgIGF1dG8gdGhpbmdzQXJlT2theSA9IG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkucHJ1bmUoKTsKKyAgICBN
RVNTQUdFX0NIRUNLKHRoaW5nc0FyZU9rYXksICJXZWIgcHJvY2VzcyB0cmllZCB0byByZWxlYXNl
IGEgcmVzb3VyY2UgdGhhdCB3YXNuJ3QgY2FjaGVkIik7Cit9CisKIERpc3BsYXlMaXN0OjpSZXBs
YXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIEltYWdlQnVmZmVyJiBkZXN0aW5hdGlvbikKIHsK
ICAgICBpZiAoZGlzcGxheUxpc3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgRGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSogcmVwbGF5ZXJEZWxlZ2F0ZSA9IG51
bGxwdHI7Ci0gICAgaWYgKGRlc3RpbmF0aW9uLnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdN
b2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0
PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXIqPigmZGVzdGluYXRpb24pOwotICAgIGVsc2UK
LSAgICAgICAgcmVwbGF5ZXJEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1v
dGVJbWFnZUJ1ZmZlcio+KCZkZXN0aW5hdGlvbik7CisgICAgUmVwbGF5ZXJEZWxlZ2F0ZSByZXBs
YXllckRlbGVnYXRlKGRlc3RpbmF0aW9uLCAqdGhpcywgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKTsKIAogICAgIHJldHVybiBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgewogICAg
ICAgICBkZXN0aW5hdGlvbi5jb250ZXh0KCksCkBAIC0yMDIsNyArMjUzLDcgQEAgRGlzcGxheUxp
c3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29uc3QgRGlz
cGxheUxpc3Q6OkRpc3AKICAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFn
ZXMoKSwKICAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5mb250cygpLAogICAgICAgICBt
X2N1cnJlbnRNYXNrSW1hZ2VCdWZmZXIuZ2V0KCksCi0gICAgICAgIHJlcGxheWVyRGVsZWdhdGUK
KyAgICAgICAgJnJlcGxheWVyRGVsZWdhdGUKICAgICB9LnJlcGxheSgpOwogfQogCkBAIC00ODMs
MTAgKzUzNCwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlbGV0ZUFsbEZvbnRz
KCkKICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuZGVsZXRlQWxsRm9udHMoKTsKIH0KIAotdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90IHVzZUNv
dW50KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIG1fcmVtb3RlUmVz
b3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKKyAgICBhdXRvIHN1Y2Nlc3MgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGUucmVsZWFzZVJl
bW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdXNlQ291bnQpOworICAg
IE1FU1NBR0VfQ0hFQ0soc3VjY2VzcywgIlJlc291cmNlIGlzIGJlaW5nIHJlbGVhc2VkIGJlZm9y
ZSBiZWluZyBjYWNoZWQuIik7CiAgICAgdXBkYXRlUmVuZGVyaW5nUmVzb3VyY2VSZXF1ZXN0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4IGEzNTE2NWIxOTExZjlhOTNmM2Q0YThkZTkx
YjEwMWY3NTY5YWJiMjIuLjg3MjYyOWYwMjUzYmY0YjY5MzY4MmI3MDIyMzI4NWZmYjYxMzU2ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMTQ0LDkgKzE0NCwyNCBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZUZvbnQo
UmVmPFdlYkNvcmU6OkZvbnQ+JiYpOwogICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKTsKLSAgICB2
b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgdXNlQ291bnQpOwogICAgIHZvaWQgZGlkQ3Jl
YXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZm
ZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwog
CisgICAgY2xhc3MgUmVwbGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OkRlbGVnYXRlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFJlcGxheWVyRGVs
ZWdhdGUoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiwgR1BV
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBh
cHBseShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZSwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JikgZmluYWw7CisgICAgICAgIHZvaWQgZGlkQ3JlYXRlTWFza0ltYWdlQnVmZmVyKFdl
YkNvcmU6OkltYWdlQnVmZmVyJikgZmluYWw7CisgICAgICAgIHZvaWQgZGlkUmVzZXRNYXNrSW1h
Z2VCdWZmZXIoKSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRDb21wbGV0ZVJlcGxheWluZygpIGZp
bmFsOworCisgICAgICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyJiBtX2Rlc3RpbmF0aW9uOworICAg
ICAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7Cisg
ICAgICAgIFJlZjxHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2dwdUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M7CisgICAgfTsKKwogICAgIHN0cnVjdCBQZW5kaW5nV2FrZXVwSW5mb3JtYXRpb24g
ewogICAgICAgICBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyBhcmd1bWVudHM7CiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5tZXNzYWdlcy5pbgppbmRleCA0YjNmZTlhMDI2MmU4YTU0OTE4NTJjNmQ2YTA0MDQ1ZDZh
Njk2Mzk3Li5mZjYyYWY1MTFmM2UyZTVjZWJmNDc0MWJiMzUwMzM4NDk0ZTM4ZWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMzYsNyArMzYsNyBAQCBtZXNz
YWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIHsKICAgICBDYWNoZUZvbnQoSVBDOjpGb250
UmVmZXJlbmNlIGZvbnQpCiAgICAgRGVsZXRlQWxsRm9udHMoKQogICAgIERpZENyZWF0ZVNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGhhbmRsZSwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRl
bnRpZmllcikKLSAgICBSZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBSZWxlYXNl
UmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgdXNlQ291bnQpCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggODFkZGUwYmZmY2Yw
YmQ2Y2MxYzI4ZTVkZDI0NjM3NGIzNDY0NjI3OC4uM2IwOTFjNjI2YmVjYzkzNGE3MmU4YWE2NTcz
ZGM0MzMxN2UzN2ZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtNTAsOCArNTAsMTQgQEAgdm9p
ZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4m
JiBpbWFnZSkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZUZvbnQoUmVmPEZvbnQ+
JiYgZm9udCkKIHsKLSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZm9udHMuYWRkKGZvbnQtPnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGZvbnQpKTsKLSAgICBBU1NFUlRfVU5V
U0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgIGF1dG8gcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyID0gZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7
CisgICAgbV9mb250cy5hZGQocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGZv
bnQpKTsKKworICAgIGF1dG8gcmVzdWx0ID0gbV9yZXNvdXJjZVVzZUNvdW50ZXJzLmVuc3VyZShy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFsmXSB7CisgICAgICAgIHJldHVybiBSZXNvdXJj
ZVVzZUNvdW50ZXIgeyB9OworICAgIH0pOworICAgICsrcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5v
cGVuQ291bnQ7CisgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUub3BlbkNvdW50KTsK
IH0KIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxldGVBbGxGb250cygpCkBAIC01OSwx
NiArNjUsNzEgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpkZWxldGVBbGxGb250cygpCiAg
ICAgbV9mb250cy5jbGVhcigpOwogfQogCi12b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVh
c2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQorYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjptYXliZVJlbW92ZVJl
c291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFJlc291cmNlVXNlQ291bnRlcnNNYXA6Oml0ZXJhdG9yIGl0ZXJhdG9y
KQogeworICAgIC8vIEl0J3MgYWN0dWFsbHkgb2theSBpZiB1c2VDb3VudCA+IHRvdGFsVXNlQ291
bnQuCisgICAgLy8gSXQganVzdCBtZWFucyB0aGF0IHRoZXJlJ3MgYSBjYWNoZSBtZXNzYWdlIHBl
bmRpbmcsIGFuZCB3ZSd2ZSBlYWdlcmx5IHVzZWQgYSBwcmV2aW91c2x5LWNhY2hlZCByZXNvdXJj
ZS4KKyAgICAvLyBXaGljaCBpcyBmaW5lLgorICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBzaG91bGRu
J3QgYWN0dWFsbHkgcmVtb3ZlIHRoZSByZXNvdXJjZSBpbiB0aGlzIHNpdHVhdGlvbj8KKyAgICAv
LyBXZSBtYXkgYWN0dWFsbHkgYmUgYWJsZSB0byBnZXQgYSBoZWFkIHN0YXJ0IG9uIHNvbWUgZGlz
cGxheSBsaXN0IGl0ZW1zIGlmIHRoZXkncmUgcmVhZHkgZm9yIHVzIGFuZCB3ZSBoYXZlIHRoZSBy
ZXNvdXJjZXMgdGhleSBkZXBlbmQgb24uCisKKyAgICBpZiAoaXRlcmF0b3ItPnZhbHVlLm9wZW5D
b3VudCB8fCBpdGVyYXRvci0+dmFsdWUudXNlQ291bnQgPCBpdGVyYXRvci0+dmFsdWUudG90YWxV
c2VDb3VudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaXRlcmF0b3ItPnZhbHVlLnVzZUNv
dW50IC09IGl0ZXJhdG9yLT52YWx1ZS50b3RhbFVzZUNvdW50OworICAgIGl0ZXJhdG9yLT52YWx1
ZS50b3RhbFVzZUNvdW50ID0gMDsKKyAgICBpZiAoIWl0ZXJhdG9yLT52YWx1ZS51c2VDb3VudCkK
KyAgICAgICAgbV9yZXNvdXJjZVVzZUNvdW50ZXJzLnJlbW92ZShpdGVyYXRvcik7CisKICAgICBp
ZiAobV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKG1fbmF0aXZlSW1h
Z2VzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChtX2ZvbnRzLnJlbW92ZShyZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVl
OworCiAgICAgLy8gQ2FjaGluZyB0aGUgcmVtb3RlIHJlc291cmNlIHNob3VsZCBoYXZlIGhhcHBl
bmVkIGJlZm9yZSByZWxlYXNpbmcgaXQuCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlY29yZFJlc291
cmNlVXNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VVc2VDb3Vu
dGVycy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBpZiAoaXRlcmF0
b3IgPT0gbV9yZXNvdXJjZVVzZUNvdW50ZXJzLmVuZCgpKSB7CisgICAgICAgIC8vIFRoZSBkaXNw
bGF5IGxpc3QgaXRlbXMgd29uIHRoZSByYWNlIGFnYWluc3QgdGhlIGNhY2hlRm9udCBtZXNzYWdl
LgorICAgICAgICAvLyBXaGVuIHdlIHJlY2VpdmUgdGhlIGNhY2hlRm9udCBtZXNzYWdlLCB3ZSB3
aWxsIHJldHJ5IHRoZSBkaXNwbGF5IGxpc3QgaXRlbS4KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBSZXNvdXJjZVVzZUNvdW50ZXImIHVzZUNvdW50ZXIgPSBpdGVyYXRvci0+dmFs
dWU7CisgICAgKyt1c2VDb3VudGVyLnVzZUNvdW50OworCisgICAgbV9yZXNvdXJjZXNGb3JNYXli
ZVJlbW92aW5nLmFkZChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCitib29sIFJl
bW90ZVJlc291cmNlQ2FjaGU6OnBydW5lKCkKK3sKKyAgICBmb3IgKGF1dG8gcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIDogbV9yZXNvdXJjZXNGb3JNYXliZVJlbW92aW5nKSB7CisgICAgICAg
IGF1dG8gaXRlcmF0b3IgPSBtX3Jlc291cmNlVXNlQ291bnRlcnMuZmluZChyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV9yZXNvdXJjZVVz
ZUNvdW50ZXJzLmVuZCgpKTsKKyAgICAgICAgYXV0byB0aGluZ3NBcmVPa2F5ID0gbWF5YmVSZW1v
dmVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGl0ZXJhdG9yKTsKKyAgICAg
ICAgaWYgKCF0aGluZ3NBcmVPa2F5KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBtX3Jlc291cmNlc0Zvck1heWJlUmVtb3ZpbmcuY2xlYXIoKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
dWludDY0X3QgdXNlQ291bnQpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fcmVzb3VyY2VVc2VD
b3VudGVycy5maW5kKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgQVNTRVJUKGl0
ZXJhdG9yICE9IG1fcmVzb3VyY2VVc2VDb3VudGVycy5lbmQoKSk7CisgICAgUmVzb3VyY2VVc2VD
b3VudGVyJiB1c2VDb3VudGVyID0gaXRlcmF0b3ItPnZhbHVlOworICAgIGlmICghaXRlcmF0b3It
PnZhbHVlLm9wZW5Db3VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC0tdXNlQ291bnRl
ci5vcGVuQ291bnQ7CisgICAgdXNlQ291bnRlci50b3RhbFVzZUNvdW50ICs9IHVzZUNvdW50Owor
ICAgIHJldHVybiBtYXliZVJlbW92ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgaXRlcmF0b3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmlu
ZGV4IDJjZWQ5MDlmNDgxMTBjNjY2NTZkZTFiZmUzODExZGJhYmFhYTlmNGYuLmRmZWM0OGY4MWNm
MzkyNGYyMjc4ZTkyMzJhMjQ1Yzc1ZjVjMTc3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaApAQCAtNDYsMTYg
KzQ2LDQzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6
Ok5hdGl2ZUltYWdlPiYmKTsKICAgICB2b2lkIGNhY2hlRm9udChSZWY8V2ViQ29yZTo6Rm9udD4m
Jik7CiAgICAgdm9pZCBkZWxldGVBbGxGb250cygpOwotICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJl
c291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgYm9vbCBy
ZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCB1aW50NjRfdCB1c2VDb3VudCk7CisgICAgdm9pZCByZWNvcmRSZXNvdXJjZVVzZShXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIGJvb2wgcHJ1bmUoKTsKIAogICAg
IGNvbnN0IFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KICAgICBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFn
ZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzOyB9
CiAgICAgY29uc3QgV2ViQ29yZTo6Rm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cygpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udHM7IH0KIAogcHJpdmF0ZToKKyAgICAvLyBCZWNhdXNlIHRoZSBj
YWNoZS9yZWxlYXNlIG1lc3NhZ2VzIGFyZSBzZW50IGFzeW5jaHJvbm91c2x5IGZyb20gdGhlIGRp
c3BsYXkgbGlzdCBpdGVtcyB3aGljaAorICAgIC8vIHJlZmVyZW5jZSB0aGUgcmVzb3VyY2VzLCBp
dCdzIHRvdGFsbHkgcG9zc2libGUgdGhhdCB3ZSBzZWUgYSByZWxlYXNlIG1lc3NhZ2UgYmVmb3Jl
IHdlJ3ZlCisgICAgLy8gZXhlY3V0ZWQgYWxsIHRoZSBkaXNwbGF5IGxpc3QgaXRlbXMgd2hpY2gg
cmVmZXJlbmNlIHRoZSByZXNvdXJjZS4gVGhlIHdlYiBwcm9jZXNzIHRlbGxzIHVzCisgICAgLy8g
aG93IG1hbnkgZGlzcGxheSBsaXN0IGl0ZW1zIHdpbGwgcmVmZXJlbmNlIHRoaXMgcmVzb3VyY2Us
IGFuZCB3ZSBkZWZlciBkZWxldGlvbiBvZiB0aGUgcmVzb3VyY2UKKyAgICAvLyB1bnRpbCB3ZSBl
eGVjdXRlIHRoYXQgbWFueSBkaXNwbGF5IGxpc3QgaXRlbXMuCisgICAgLy8KKyAgICAvLyBJdCdz
IGFjdHVhbGx5IGEgYml0IHdvcnNlIHRoYW4gdGhpcywgdGhvdWdoLCBiZWNhdXNlIHdlIG1heSBh
Y3R1YWxseSBzZWUgYSAqbmV3KiBjYWNoZSBtZXNzYWdlCisgICAgLy8gZHVyaW5nIHRoZSB0aW1l
IHdoZW4gZGVsZXRpb24gaXMgZGVmZXJyZWQsIHNvIHdlIG5lZWQgYSBzZWNvbmQgY291bnQgb2Yg
dGhlIG51bWJlciBvZiBjYWNoZQorICAgIC8vIG1lc3NhZ2VzIHdoaWNoIGRvbid0IGhhdmUgYW4g
YWNjb21wYW55aW5nIHJlbGVhc2UgbWVzc2FnZXMuCisgICAgLy8KKyAgICAvLyBXZSBjYW4gb25s
eSBzYWZlbHkgZGVsZXRlIGEgcmVzb3VyY2Ugd2hlbiBhbGwgdGhlIGNhY2hlIG1lc3NhZ2VzIGhh
dmUgYW4gYWNjb21wYW55aW5nIHJlbGVhc2UKKyAgICAvLyBtZXNzYWdlLCBhbmQgd2UndmUgcHJv
Y2Vzc2VkIGFzIG1hbnkgZGlzcGxheSBsaXN0IGl0ZW1zIGFzIHRoZSB3ZWIgcHJvY2VzcyBoYXMg
ZW5jb2RlZCB0aGF0CisgICAgLy8gcmVmZXJlbmNlIGEgcGFydGljdWxhciByZXNvdXJjZS4KKyAg
ICBzdHJ1Y3QgUmVzb3VyY2VVc2VDb3VudGVyIHsKKyAgICAgICAgdWludDY0X3Qgb3BlbkNvdW50
IHsgMCB9OyAvLyBUaGUgbnVtYmVyIG9mIGNhY2hlRm9vIG1lc3NhZ2VzIHdlJ3ZlIHJlY2VpdmVk
IHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIHJlbGVhc2UgbWVzc2FnZQorICAgICAgICB1aW50NjRf
dCB1c2VDb3VudCB7IDAgfTsgLy8gVGhlIG51bWJlciBvZiByZW5kZXJpbmcgY29tbWFuZHMgd2Un
dmUgZXhlY3V0ZWQgd2hpY2ggcmVmZXJlbmNlIHRoaXMgcmVzb3VyY2UKKyAgICAgICAgdWludDY0
X3QgdG90YWxVc2VDb3VudCB7IDAgfTsgLy8gT25jZSB1c2VDb3VudCBoaXRzIHRoaXMgbGltaXQs
IHdlIGNhbiBmcmVlIHRoZSByZXNvdXJjZQorICAgIH07CisgICAgdXNpbmcgUmVzb3VyY2VVc2VD
b3VudGVyc01hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBSZXNvdXJjZVVzZUNvdW50ZXI+OworCisgICAgYm9vbCBtYXliZVJlbW92ZVJlc291cmNlKFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VVc2VDb3VudGVyc01h
cDo6aXRlcmF0b3IpOworCiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VC
dWZmZXJzOwogICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsK
ICAgICBXZWJDb3JlOjpGb250UmVuZGVyaW5nUmVzb3VyY2VNYXAgbV9mb250czsKKworICAgIFJl
c291cmNlVXNlQ291bnRlcnNNYXAgbV9yZXNvdXJjZVVzZUNvdW50ZXJzOworICAgIEhhc2hTZXQ8
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBtX3Jlc291cmNlc0Zvck1heWJl
UmVtb3Zpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYktpdC54
Y3NjaGVtZSBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNz
Y2hlbWVzL1dlYktpdC54Y3NjaGVtZQppbmRleCA2MTAzOWIxYzcxNzM4ZjMyMzNkYjhiMzU5ODQz
YzQ0YzgzZWY5YzlmLi5lNDAyMDhlODYwMjNmMjRiNWRlZDlkYjk3OTZlMDQyNzllMmY2OWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hj
c2NoZW1lcy9XZWJLaXQueGNzY2hlbWUKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1lCkBAIC0zMSw3ICszMSw3
IEBACiAgICAgICA8L1Rlc3RhYmxlcz4KICAgIDwvVGVzdEFjdGlvbj4KICAgIDxMYXVuY2hBY3Rp
b24KLSAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgorICAgICAgYnVpbGRDb25m
aWd1cmF0aW9uID0gIkRlYnVnIgogICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZpZXIgPSAi
WGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIiCiAgICAgICBzZWxlY3RlZExh
dW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNoZXIuTExE
QiIKICAgICAgIGxhdW5jaFN0eWxlID0gIjAiCkBAIC00MCw2ICs0MCwyMiBAQAogICAgICAgZGVi
dWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgogICAgICAgZGVidWdTZXJ2aWNlRXh0ZW5zaW9u
ID0gImludGVybmFsIgogICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRpb24gPSAiWUVTIj4KKyAg
ICAgIDxQYXRoUnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIgor
ICAgICAgICAgRmlsZVBhdGggPSAiL1VzZXJzL21tYXhmaWVsZC9CdWlsZC9Qcm9kdWN0cy9EZWJ1
Zy9NaW5pQnJvd3Nlci5hcHAiPgorICAgICAgPC9QYXRoUnVubmFibGU+CisgICAgICA8RW52aXJv
bm1lbnRWYXJpYWJsZXM+CisgICAgICAgICA8RW52aXJvbm1lbnRWYXJpYWJsZQorICAgICAgICAg
ICAga2V5ID0gIk1hbGxvYyIKKyAgICAgICAgICAgIHZhbHVlID0gIjEiCisgICAgICAgICAgICBp
c0VuYWJsZWQgPSAiWUVTIj4KKyAgICAgICAgIDwvRW52aXJvbm1lbnRWYXJpYWJsZT4KKyAgICAg
ICAgIDxFbnZpcm9ubWVudFZhcmlhYmxlCisgICAgICAgICAgICBrZXkgPSAiX19YUENfTWFsbG9j
IgorICAgICAgICAgICAgdmFsdWUgPSAiMSIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMi
PgorICAgICAgICAgPC9FbnZpcm9ubWVudFZhcmlhYmxlPgorICAgICAgPC9FbnZpcm9ubWVudFZh
cmlhYmxlcz4KICAgIDwvTGF1bmNoQWN0aW9uPgogICAgPFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1
aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApp
bmRleCBiNDQ4YjM3Zjk3ZmU3YWU2NWRiZWJiMmE4NWFiMGM5OTRlMWYyNmJkLi40YzA2YWJjMTc0
YmVmYWJhOTJhODNkNWI3Y2ZmMzljZWNhMmMzMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgZmx1c2hEcmF3aW5nQ29u
dGV4dCgpOwogICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5KCkucmVsZWFzZUltYWdlQnVmZmVyKG1fcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbGVh
c2VSZW1vdGVSZXNvdXJjZShtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgICAg
IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZWxlYXNlUmVtb3RlUmVzb3VyY2UobV9y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIG1fdXNlQ291bnQpOwogICAgIH0KIAogICAgIElt
YWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKQpA
QCAtMzAzLDcgKzMwMyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9kcmF3aW5nQ29udGV4dC5k
aXNwbGF5TGlzdCgpLmNsZWFyKCk7CiAgICAgfQogCi0gICAgYm9vbCBjYW5BcHBlbmRJdGVtT2ZU
eXBlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZSkgb3ZlcnJpZGUKKyAgICBib29sIGNh
bkFwcGVuZEl0ZW1PZlR5cGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlKSBmaW5hbAog
ICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTcsMTIgKzMxNywxNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+ZGlkQXBw
ZW5kRGF0YShoYW5kbGUsIG51bWJlck9mQnl0ZXMsIGRpZENoYW5nZUl0ZW1CdWZmZXIsIG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICB2b2lkIGNhY2hlRm9udChX
ZWJDb3JlOjpGb250JiBmb250KSBvdmVycmlkZQorICAgIHZvaWQgY2FjaGVGb250KFdlYkNvcmU6
OkZvbnQmIGZvbnQpIGZpbmFsCiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpCiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+
cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVGb250KGZvbnQpOwogICAgIH0KIAorICAg
IHZvaWQgaW5jcmVtZW50VXNlQ291bnRlcigpIGZpbmFsCisgICAgeworICAgICAgICArK21fdXNl
Q291bnQ7CisgICAgfQorCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5k
bGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIGZpbmFsCiAgICAgewogICAgICAg
ICBpZiAoTElLRUxZKG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKQEAgLTM0MywxMyAr
MzQ4LDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgfSwgaXRlbSk7CiAgICAgfQogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IGNyZWF0
ZUZsdXNoZXIoKSBvdmVycmlkZQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRT
YWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgZmluYWwKICAgICB7CiAgICAg
ICAgIHJldHVybiBXVEY6Om1ha2VVbmlxdWU8VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1
c2hlcjxCYWNrZW5kVHlwZT4+KCp0aGlzKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6Rmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRlbnRpZmllcjsKICAgICBMb2NrIG1f
cmVjZWl2ZWRGbHVzaElkZW50aWZpZXJMb2NrOworICAgIHVpbnQ2NF90IG1fdXNlQ291bnQgeyAw
IH07CiAgICAgQ29uZGl0aW9uIG1fcmVjZWl2ZWRGbHVzaElkZW50aWZpZXJDaGFuZ2VkQ29uZGl0
aW9uOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgbV9yZWNlaXZl
ZEZsdXNoSWRlbnRpZmllciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcmVjZWl2ZWRGbHVzaElkZW50
aWZpZXJMb2NrKTsgLy8gT25seSBtb2RpZmllZCBvbiB0aGUgbWFpbiB0aHJlYWQgYnV0IG1heSBn
ZXQgcXVlcmllZCBvbiBhIHNlY29uZGFyeSB0aHJlYWQuCiAgICAgV2Vha1B0cjxSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDA5Y2U0YzZlZjZkNmFiZTcx
ZTAzZWFiN2ZhOGNkMjE0ZmY2OGIwZmUuLmU5NWYxYWQzOTM0ZjI1NGJkNWY5OWQyM2E1YjQ2NTU1
MzVjZTA5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKQEAg
LTI0OSwxMiArMjQ5LDEyIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpkZWxl
dGVBbGxGb250cygpCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
RGVsZXRlQWxsRm9udHMoKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgSVBDOjpTZW5k
T3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQog
Ci12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
Cit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNl
KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIs
IHVpbnQ2NF90IHVzZUNvdW50KQogewogICAgIGlmIChyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgPT0gbV9jdXJyZW50RGVzdGluYXRpb25JbWFnZUJ1ZmZlcklkZW50aWZpZXIpCiAgICAgICAg
IG1fY3VycmVudERlc3RpbmF0aW9uSW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gc3RkOjpudWxsb3B0
OwogCi0gICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFzZVJl
bW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIHJlbmRlcmluZ0JhY2tl
bmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCB1c2VDb3VudCksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlv
bjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2Vu
ZChJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgaGFuZGxlLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgKaW5kZXggNjMxNDk2NzBhMzU5NGUyNWEyZGE1Y2QxOTc2MTE0NjFjNjE3
OTc0MC4uYjJjZTNkOGMyOGFiMTkxMjUzNTE5MDI3ZmM5MDc0ZDIwZWQxNzI4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNo
ZUZvbnQoUmVmPFdlYkNvcmU6OkZvbnQ+JiYpOwogICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKTsK
LSAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgdXNlQ291bnQpOwogCiAgICAgZW51
bSBjbGFzcyBEaWRSZWNlaXZlQmFja2VuZENyZWF0aW9uUmVzdWx0IDogYm9vbCB7CiAgICAgICAg
IFJlY2VpdmVkQW55UmVzcG9uc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAK
aW5kZXggMDNmMzRiMzNhMjJkZDQ5MjhkNDI2MGU0Nzg2MmQzOTEzNzExMDFhZi4uNDBlYzM5MmNh
ZTQ2NTRhMzUzNDJmMzJlYWFjYzQ0YWI3ODViNmZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmNwcApAQCAtNDEsOCArNDEsOCBAQCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6
OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eShSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmCiAK
IFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6flJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSgpCiB7
Ci0gICAgZm9yIChhdXRvJiBpbWFnZSA6IG1fbmF0aXZlSW1hZ2VzLnZhbHVlcygpKQotICAgICAg
ICBpbWFnZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOworICAgIGZvciAoYXV0byYgbmF0aXZlSW1h
Z2VTdGF0ZSA6IG1fbmF0aXZlSW1hZ2VzLnZhbHVlcygpKQorICAgICAgICBuYXRpdmVJbWFnZVN0
YXRlLmltYWdlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5OjpjYWNoZUltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFn
ZUJ1ZmZlcikKQEAgLTgwLDggKzgwLDExIEBAIGlubGluZSBzdGF0aWMgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQml0bWFwRnJvbU5hdGl2ZUltYWdlKE5hdGl2CiAKIHZv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiBpbWFnZSkKIHsKLSAgICBpZiAobV9uYXRpdmVJbWFnZXMuY29udGFpbnMoaW1hZ2UucmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpKQorICAgIGF1dG8gaXRlcmF0b3IgPSBtX25hdGl2ZUlt
YWdlcy5maW5kKGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICBpZiAo
aXRlcmF0b3IgIT0gbV9uYXRpdmVJbWFnZXMuZW5kKCkpIHsKKyAgICAgICAgKytpdGVyYXRvci0+
dmFsdWUudXNlQ291bnQ7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvIGJpdG1h
cCA9IGNyZWF0ZVNoYXJlYWJsZUJpdG1hcEZyb21OYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgaWYg
KCFiaXRtYXApCkBAIC05Miw3ICs5NSw3IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKICAgICBpZiAoaGFuZGxlLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX25hdGl2ZUltYWdlcy5hZGQoaW1hZ2Uu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKGltYWdlKSk7CisgICAg
bV9uYXRpdmVJbWFnZXMuYWRkKGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBO
YXRpdmVJbWFnZVN0YXRlIHsgbWFrZVdlYWtQdHIoaW1hZ2UpLCAxIH0pOwogCiAgICAgLy8gU2V0
IGl0c2VsZiBhcyBhbiBvYnNlcnZlciB0byBOYXRpdmVJbWFnZSwgc28gcmVsZWFzZU5hdGl2ZUlt
YWdlKCkKICAgICAvLyBnZXRzIGNhbGxlZCB3aGVuIE5hdGl2ZUltYWdlIGlzIGJlaW5nIGRlbGVs
ZXRlZC4KQEAgLTEwNCwyNSArMTA3LDMwIEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKIAogdm9pZCBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHk6OmNhY2hlRm9udChGb250JiBmb250KQogewotICAgIGF1dG8gcmVzdWx0
ID0gbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXAuZW5zdXJl
KGZvbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSB7Ci0gICAgICAgIHJldHVy
biAwOworICAgIGF1dG8gcmVzdWx0ID0gbV9mb250cy5lbnN1cmUoZm9udC5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIEZvbnRTdGF0ZSB7IDAsIDAg
fTsKICAgICB9KTsKLSAgICBhdXRvJiBsYXN0VmVyc2lvbiA9IHJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7Ci0gICAgaWYgKGxhc3RWZXJzaW9uICE9IG1fY3VycmVudFJlbmRlcmluZ1VwZGF0ZVZlcnNp
b24pIHsKLSAgICAgICAgbGFzdFZlcnNpb24gPSBtX2N1cnJlbnRSZW5kZXJpbmdVcGRhdGVWZXJz
aW9uOworICAgIGF1dG8mIGN1cnJlbnRTdGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cisg
ICAgaWYgKGN1cnJlbnRTdGF0ZS5sYXN0UmVuZGVyaW5nVXBkYXRlVmVyc2lvblVzZWRXaXRoaW4g
IT0gbV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lvbikgeworICAgICAgICBjdXJyZW50U3Rh
dGUubGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25Vc2VkV2l0aGluID0gbV9jdXJyZW50UmVuZGVy
aW5nVXBkYXRlVmVyc2lvbjsKICAgICAgICAgKyttX251bWJlck9mRm9udHNVc2VkSW5DdXJyZW50
UmVuZGVyaW5nVXBkYXRlOwogICAgIH0KKyAgICArK2N1cnJlbnRTdGF0ZS51c2VDb3VudDsKICAg
ICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LmNhY2hlRm9udChtYWtlUmVmKGZvbnQpKTsKIH0KIAogdm9pZCBSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OnJlbGVhc2VOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIGlmICghbV9uYXRpdmVJbWFn
ZXMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybjsK
KyAgICBhdXRvIGl0ZXJhdG9yID0gbV9uYXRpdmVJbWFnZXMuZmluZChyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfQVNTRVJUKGl0ZXJhdG9yICE9IG1fbmF0aXZlSW1h
Z2VzLmVuZCgpKTsKKworICAgIGF1dG8gdXNlQ291bnQgPSBpdGVyYXRvci0+dmFsdWUudXNlQ291
bnQ7CisKKyAgICBhdXRvIHN1Y2Nlc3MgPSBtX25hdGl2ZUltYWdlcy5yZW1vdmUoaXRlcmF0b3Ip
OworICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKLSAgICAvLyBUZWxsIHRo
ZSBHUFUgcHJvY2VzcyB0byByZW1vdmUgdGhpcyByZXNvdXJjZS4KLSAgICBtX3JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVt
b3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCB1c2VDb3VudCk7CiB9CiAK
IHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpwcmVwYXJlRm9yTmV4dFJlbmRlcmluZ1Vw
ZGF0ZSgpCkBAIC0xMzMsOSArMTQxLDkgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6
OnByZXBhcmVGb3JOZXh0UmVuZGVyaW5nVXBkYXRlKCkKIAogdm9pZCBSZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHk6OmNsZWFyRm9udE1hcCgpCiB7Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogbV9mb250
SWRlbnRpZmllclRvTGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXApCi0gICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShpdGVtLmtleSk7
Ci0gICAgbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXAuY2xl
YXIoKTsKKyAgICBmb3IgKGF1dG8mIGZvbnRTdGF0ZSA6IG1fZm9udHMpCisgICAgICAgIG1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShmb250U3RhdGUu
a2V5LCBmb250U3RhdGUudmFsdWUudXNlQ291bnQpOworICAgIG1fZm9udHMuY2xlYXIoKTsKICAg
ICBtX251bWJlck9mRm9udHNVc2VkSW5DdXJyZW50UmVuZGVyaW5nVXBkYXRlID0gMDsKIH0KIApA
QCAtMTQzLDIwICsxNTEsMjAgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmZpbmFs
aXplUmVuZGVyaW5nVXBkYXRlRm9yRm9udHMoKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbWluaW11bVJlbmRlcmluZ1VwZGF0ZUNvdW50VG9LZWVwRm9udEFsaXZlID0gNDsKIAot
ICAgIHVuc2lnbmVkIHRvdGFsRm9udENvdW50ID0gbV9mb250SWRlbnRpZmllclRvTGFzdFJlbmRl
cmluZ1VwZGF0ZVZlcnNpb25NYXAuc2l6ZSgpOworICAgIHVuc2lnbmVkIHRvdGFsRm9udENvdW50
ID0gbV9mb250cy5zaXplKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9udW1iZXJPZkZvbnRzVXNl
ZEluQ3VycmVudFJlbmRlcmluZ1VwZGF0ZSA8PSB0b3RhbEZvbnRDb3VudCk7CiAgICAgaWYgKHRv
dGFsRm9udENvdW50ID09IG1fbnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJpbmdVcGRh
dGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiB0b1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2ZvbnRJ
ZGVudGlmaWVyVG9MYXN0UmVuZGVyaW5nVXBkYXRlVmVyc2lvbk1hcCkgewotICAgICAgICBpZiAo
bV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lvbiAtIGl0ZW0udmFsdWUgPj0gbWluaW11bVJl
bmRlcmluZ1VwZGF0ZUNvdW50VG9LZWVwRm9udEFsaXZlKSB7CisgICAgZm9yIChhdXRvJiBpdGVt
IDogbV9mb250cykgeworICAgICAgICBpZiAobV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVyc2lv
biAtIGl0ZW0udmFsdWUubGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25Vc2VkV2l0aGluID49IG1p
bmltdW1SZW5kZXJpbmdVcGRhdGVDb3VudFRvS2VlcEZvbnRBbGl2ZSkgewogICAgICAgICAgICAg
dG9SZW1vdmUuYWRkKGl0ZW0ua2V5KTsKLSAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShpdGVtLmtleSk7CisgICAgICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UoaXRlbS5r
ZXksIGl0ZW0udmFsdWUudXNlQ291bnQpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9mb250
SWRlbnRpZmllclRvTGFzdFJlbmRlcmluZ1VwZGF0ZVZlcnNpb25NYXAucmVtb3ZlSWYoWyZdKGNv
bnN0IGF1dG8mIGJ1Y2tldCkgeworICAgIG1fZm9udHMucmVtb3ZlSWYoWyZdKGNvbnN0IGF1dG8m
IGJ1Y2tldCkgewogICAgICAgICByZXR1cm4gdG9SZW1vdmUuY29udGFpbnMoYnVja2V0LmtleSk7
CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAppbmRleCA2ZDczMWM0
Y2M1ZWY2ZWYzMmMyODAyOWE1YjAzMjQxM2ExNWE1ODkwLi44ZDExMTljYWI5MGU4YWMxZTNkODU4
ODljOTI1NTIxZTIyZDA5ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKQEAg
LTUwLDggKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNhY2hlTmF0aXZl
SW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsKLQogICAgIHZvaWQgY2FjaGVGb250KFdlYkNv
cmU6OkZvbnQmKTsKKwogICAgIHZvaWQgZGlkRmluYWxpemVSZW5kZXJpbmdVcGRhdGUoKTsKIAog
ICAgIHZvaWQgcmVtb3RlUmVzb3VyY2VDYWNoZVdhc0Rlc3Ryb3llZCgpOwpAQCAtNTksNyArNTks
MTggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHVzaW5nIEltYWdlQnVmZmVySGFzaE1hcCA9
IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdl
YkNvcmU6OkltYWdlQnVmZmVyPj47Ci0gICAgdXNpbmcgTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFz
aE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29y
ZTo6TmF0aXZlSW1hZ2U+PjsKKworICAgIHN0cnVjdCBOYXRpdmVJbWFnZVN0YXRlIHsKKyAgICAg
ICAgV2Vha1B0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gaW1hZ2U7CisgICAgICAgIHVpbnQ2NF90
IHVzZUNvdW50OworICAgIH07CisgICAgdXNpbmcgTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1h
cDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIE5hdGl2ZUltYWdlU3RhdGU+
OworCisgICAgc3RydWN0IEZvbnRTdGF0ZSB7CisgICAgICAgIHVpbnQ2NF90IGxhc3RSZW5kZXJp
bmdVcGRhdGVWZXJzaW9uVXNlZFdpdGhpbjsKKyAgICAgICAgdWludDY0X3QgdXNlQ291bnQ7Cisg
ICAgfTsKKyAgICB1c2luZyBGb250SGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyLCBGb250U3RhdGU+OwogICAgIAogICAgIHZvaWQgcmVsZWFzZU5h
dGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZvckZvbnRzKCk7CkBAIC02OCw4ICs3
OSw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7
CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwotCi0gICAgSGFzaE1hcDxX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBtX2ZvbnRJZGVu
dGlmaWVyVG9MYXN0UmVuZGVyaW5nVXBkYXRlVmVyc2lvbk1hcDsKKyAgICBGb250SGFzaE1hcCBt
X2ZvbnRzOwogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZGb250c1VzZWRJbkN1cnJlbnRSZW5kZXJp
bmdVcGRhdGUgeyAwIH07CiAgICAgdWludDY0X3QgbV9jdXJyZW50UmVuZGVyaW5nVXBkYXRlVmVy
c2lvbiB7IDEgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434473</attachid>
            <date>2021-07-28 15:36:42 -0700</date>
            <delta_ts>2021-07-29 01:32:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228216-20210728153642.patch</filename>
            <type>text/plain</type>
            <size>4800</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDA1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmIzMzM2NDFkM2RlZTkwNjQ1Zjk1
ZmU4NjcyMzkwYTJjMzI4ODI4Ny4uYmU4MGI5YmQ0MmQzMTUxYjY1ZjVhMmQyYzU5ODNiYThkZjNm
OTA1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTA3LTI4ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAg4piC77iPIFtHUFUgUHJvY2Vzc10g
RGVmZXIgcmVtb3ZhbCBvZiByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNzIHVudGlsIHdlJ3Zl
IGV4ZWN1dGVkIGFsbCBkaXNwbGF5IGxpc3QgaXRlbXMgd2hpY2ggcmVmZXJlbmNlIHRoZW0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODIxNgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vODA0NzM4MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsIHRoZSBjb2RlIGNoYW5nZXMgaGF2ZSBsYW5kZWQu
IE1hcmsgdGhlIHRlc3RzIGFzIHBhc3NpbmcgYWdhaW4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIxLTA3LTI4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgUmViYXNlbGluZSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvZG9tL2lkbGhhcm5lc3MuaHR0cHMuaHRtbCBvbiBpUGFkLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDkzZjJm
MjE4N2JhMzY1MTI5Njc2MzM3ZTE0MjhhMmY1NDZmZjliNmUuLjczOWQ0OGUwMWJkODU3YzRhNTc0
ZDU1ZTQ2ZDYyOTEzMDZjYjNmZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE5ODEsMTQgKzE5ODEsMTAgQEAgd2Via2l0Lm9yZy9iLzIy
NjgyNiBodHRwL3Rlc3RzL3NzbC9hcHBsZXBheS9BcHBsZVBheUJ1dHRvbi5odG1sIFsgRmFpbHVy
ZSBdCiAKIHdlYmtpdC5vcmcvYi8yMjcyNzMgZmFzdC9jc3MtY3VzdG9tLXBhaW50L291dC1vZi1t
ZW1vcnktd2hpbGUtYWRkaW5nLXdvcmtsZXQtbW9kdWxlLmh0bWwgWyBQYXNzIFRpbWVvdXQgRHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyIF0KIAotd2Via2l0Lm9yZy9iLzIyNzg4MSBmYXN0L2NhbnZh
cy9jYW52YXMtb3ZlcmxvYWRzLXN0cm9rZVRleHQuaHRtbCBbIFBhc3MgQ3Jhc2ggXQotCiB3ZWJr
aXQub3JnL2IvMjI2NTk4IGFuaW1hdGlvbnMvbGVhay1kb2N1bWVudC13aXRoLWNzcy1hbmltYXRp
b24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8yMjc5MzEgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY29uZGl0aW9uYWwvaWRsaGFybmVzcy5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzIyNzg5MCBmYXN0L2NhbnZhcy9jYW52YXMt
cGF0aC1hZGRQYXRoLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQotCiB3ZWJraXQub3JnL2IvMjI4MDgy
IGZhc3QvY2FudmFzL2NhbnZhcy1vdmVybG9hZHMtc2V0U2hhZG93Lmh0bWwgWyBQYXNzIFRpbWVv
dXQgXQogCiB3ZWJraXQub3JnL2IvMjI4MTE0IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvY29udGVudC10eXBlL3NjcmlwdC53aW5kb3cuaHRtbCBbIFBhc3MgRmFpbHVyZSBd
CkBAIC0yMDA0LDQgKzIwMDAsNCBAQCB3ZWJraXQub3JnL2IvMjI3NzYyIFsgRGVidWcgXSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvaW50ZXJhY3Rpb24vZgogd2Via2l0Lm9y
Zy9iLzIyNjc4OSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnN0b3JhZ2UvZXZl
bnRfY2FzZV9zZW5zaXRpdmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8y
MjgzMjcgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0
cy9hdWRpby13b3JrbGV0LXNlcnZpY2Utd29ya2VyLWludGVyY2VwdGlvbi5odHRwcy5odG1sIFsg
UGFzcyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMjgzMjcgWyBSZWxlYXNlIF0gaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrbGV0cy9wYWludC13b3JrbGV0LXNlcnZpY2Utd29y
a2VyLWludGVyY2VwdGlvbi5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCit3ZWJraXQub3JnL2IvMjI4MzI3IFsgUmVsZWFzZSBdIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29ya2xldHMvcGFpbnQtd29ya2xldC1zZXJ2aWNlLXdv
cmtlci1pbnRlcmNlcHRpb24uaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTRmMmEzNTBhNzdi
ODg5MGE4NDE0MDhkMzhkY2MwNmJiZmM5YzQ0My4uM2Q4NjZkZTkxMmMzMGJlMzgxN2E3NjQ2Y2Iz
NjI1OWFmYzBhOThmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMTU3NSwyMCArMTU3NSw2IEBAIHdlYmtpdC5vcmcvYi8yMjc5MjIgaW5z
cGVjdG9yL2NhbnZhcy9zZXRTaGFkZXJQcm9ncmFtRGlzYWJsZWQuaHRtbCBbIFBhc3MgRmFpbHVy
CiAKIHdlYmtpdC5vcmcvYi8yMjc4NzQgWyBSZWxlYXNlIF0gZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1yZW1vdmUtY2hpbGRyZW4uaHRtbCBbIFBhc3MgQ3Jhc2ggXQogCi0jIHdlYmtpdC5vcmcvYi8y
Mjc4ODEgTXVsdGlwbGUgdGVzdHMgZmFpbGluZywgdGltaW5nIG91dCBvciBjcmFzaGluZzoKLWZh
c3QvY2FudmFzL2NhbnZhcy1vdmVybG9hZHMtc3Ryb2tlVGV4dC5odG1sIFsgUGFzcyBDcmFzaCBd
Ci1mYXN0L2NhbnZhcy9jYW52YXMtcGF0aC1hZGRQYXRoLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQot
ZmFzdC9jYW52YXMvY2FudmFzLW92ZXJsb2Fkcy1zZXRTaGFkb3cuaHRtbCBbIFBhc3MgVGltZW91
dCBdCi1pbnNwZWN0b3IvY2FudmFzL3JlcXVlc3RDbGllbnROb2Rlcy1jc3MuaHRtbCBbIFBhc3Mg
VGltZW91dCBdCi1pbnNwZWN0b3IvY2FudmFzL3JlY29yZGluZy13ZWJnbC1zbmFwc2hvdHMuaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCi1pbnNwZWN0b3IvY2FudmFzL3JlY29yZGluZy0yZC1tZW1vcnlM
aW1pdC5odG1sIFsgUGFzcyBDcmFzaCBdCi1pbnNwZWN0b3IvY2FudmFzL3JlY29yZGluZy0yZC1m
dWxsLmh0bWwgWyBQYXNzIENyYXNoIF0KLWluc3BlY3Rvci9jYW52YXMvcmVjb3JkaW5nLWJpdG1h
cHJlbmRlcmVyLWZ1bGwuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IF0KLWluc3BlY3Rvci9j
YW52YXMvcmVjb3JkaW5nLWJpdG1hcHJlbmRlcmVyLWZyYW1lQ291bnQuaHRtbCBbIFBhc3MgRmFp
bHVyZSBUaW1lb3V0IF0KLWluc3BlY3Rvci9jYW52YXMvcmVjb3JkaW5nLWJpdG1hcHJlbmRlcmVy
LW1lbW9yeUxpbWl0Lmh0bWwgWyBTa2lwIF0KLWluc3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVy
LXdlYmdwdS5odG1sIFsgUGFzcyBGYWlsdXJlIF0KLWluc3BlY3Rvci9jYW52YXMvcmVjb3JkaW5n
LWh0bWwtMmQuaHRtbCBbIFBhc3MgRmFpbHVyZSBUaW1lb3V0IENyYXNoIF0KLQogd2Via2l0Lm9y
Zy9iLzIyODA4MiBmYXN0L2NhbnZhcy9nZXRQdXRJbWFnZURhdGFQYWlyVGVzdC5odG1sIFsgUGFz
cyBUaW1lb3V0IF0KIAogd2Via2l0Lm9yZy9iLzIyODAzMCBpbnNwZWN0b3IvY2FudmFzL3NldFNo
YWRlclByb2dyYW1IaWdobGlnaHRlZC5odG1sIFsgUGFzcyBGYWlsdXJlIFRpbWVvdXQgXQpAQCAt
MTYxOCw0ICsxNjA0LDQgQEAgd2Via2l0Lm9yZy9iLzIyODUyOCBbIEJpZ1N1ciBEZWJ1ZyBhcm02
NCBdIGZhc3QvdGV4dC9lbW9qaS1vdmVybGFwLmh0bWwgWyBQYXNzIEkKIFsgTW9udGVyZXkgXSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9pbXBvcnQtc2NyaXB0cy1jcm9zcy1vcmlnaW4uaHR0cHMuaHRtbCBbIEZhaWx1cmUgXQog
WyBNb250ZXJleSBdIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1zb3VyY2UuaHRtbCBbIFBh
c3MgQ3Jhc2ggXQogWyBNb250ZXJleSBSZWxlYXNlIF0gcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L2FzeWNocm9ub3VzLWRlYWRsb2NrLXdpdGgtdGltZXItYW5kLWV2YWx1YXRlLmh0bWwgWyBQYXNz
IENyYXNoIF0KLVsgTW9udGVyZXkgUmVsZWFzZSBdIG1lZGlhL21lZGlhLWZyYWdtZW50cy9UQzAw
MDQuaHRtbCBbIFBhc3MgVGltZW91dCBdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorWyBN
b250ZXJleSBSZWxlYXNlIF0gbWVkaWEvbWVkaWEtZnJhZ21lbnRzL1RDMDAwNC5odG1sIFsgUGFz
cyBUaW1lb3V0IF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>