<?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>189356</bug_id>
          
          <creation_ts>2018-09-06 10:14:46 -0700</creation_ts>
          <short_desc>[macOS] [WK2] Support changing attributes for selected text (text shadow, underline, strike-through)</short_desc>
          <delta_ts>2018-09-06 17:05:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>189295</dependson>
          <blocked>189383</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1457125</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-06 10:14:46 -0700</bug_when>
    <thetext>...using controls on the NSFontPanel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457126</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-06 10:15:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/44185674&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457168</commentid>
    <comment_count>2</comment_count>
      <attachid>349049</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-06 11:49:33 -0700</bug_when>
    <thetext>Created attachment 349049
Blocked on webkit.org/b/189295</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457191</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-06 12:48:29 -0700</bug_when>
    <thetext>Could you update the patch for trunk?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457205</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-06 13:01:07 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #3)
&gt; Could you update the patch for trunk?

Yep, now that r235748 is in!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457206</commentid>
    <comment_count>5</comment_count>
      <attachid>349056</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-06 13:01:13 -0700</bug_when>
    <thetext>Created attachment 349056
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457222</commentid>
    <comment_count>6</comment_count>
      <attachid>349064</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-06 13:38:41 -0700</bug_when>
    <thetext>Created attachment 349064
Fix build for SDK &lt; macOS 10.13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457346</commentid>
    <comment_count>7</comment_count>
      <attachid>349064</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-06 17:05:39 -0700</bug_when>
    <thetext>Comment on attachment 349064
Fix build for SDK &lt; macOS 10.13

Clearing flags on attachment: 349064

Committed r235769: &lt;https://trac.webkit.org/changeset/235769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457347</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-06 17:05:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349049</attachid>
            <date>2018-09-06 11:49:33 -0700</date>
            <delta_ts>2018-09-06 13:01:12 -0700</delta_ts>
            <desc>Blocked on webkit.org/b/189295</desc>
            <filename>bug-189356-20180906114932.patch</filename>
            <type>text/plain</type>
            <size>34602</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY4NGEyNzkyZWE1MGUz
MzAzZjI4ZmE0ODNkZmJhOGQ4ZTFmMTAxNS4uZjVkMzkxZmU2NTc2NDMxNjM4YzBmYjQ3MzM3ZjZj
MWVlYzk2YTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTA5LTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dL
Ml0gU3VwcG9ydCBjaGFuZ2luZyBhdHRyaWJ1dGVzIGZvciBzZWxlY3RlZCB0ZXh0ICh0ZXh0IHNo
YWRvdywgdW5kZXJsaW5lLCBzdHJpa2UtdGhyb3VnaCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTM1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDQxODU2NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyBGb250QXR0cmlidXRlQ2hh
bmdlcywgc28gdGhhdCB3ZSBjYW4gc2VuZCBGb250QXR0cmlidXRlQ2hhbmdlcyBvdmVyIElQQyBp
bgorICAgICAgICBXZWJLaXQyLiBBbHNvIGNoYW5nZSBtX3ZlcnRpY2FsQWxpZ24gdG8gYSBuZXcg
VmVydGljYWxBbGlnbkNoYW5nZSBlbnVtIHR5cGUsIHNvIHRoYXQgaXQncyBubyBsb25nZXIgdGll
ZCB0byB0aGUKKyAgICAgICAgQ1NTIHByb3BlcnR5IHZhbHVlcyBvZiAidmVydGljYWwtYWxpZ24i
LCBhbmQgY2FuIGJlIGVuY29kZWQvZGVjb2RlZCBzZXBhcmF0ZWx5IGZyb20gVmVydGljYWxBbGln
biBpbgorICAgICAgICBSZW5kZXJTdHlsZUNvbnN0YW50cy4KKworICAgICAgICBUZXN0OiBGb250
TWFuYWdlclRlc3RzLkNoYW5nZUF0dHJpYnV0ZXNXaXRoRm9udEVmZmVjdHNCb3gKKworICAgICAg
ICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZUNoYW5nZXM6OmNyZWF0ZUVkaXRpbmdTdHlsZSBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEF0dHJpYnV0ZUNoYW5nZXM6OnNldFZlcnRpY2FsQWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFNoYWRvdzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRTaGFkb3c6
OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVkRm9udEF0dHJpYnV0ZUNoYW5nZXMpOgorCiAyMDE4
LTA5LTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IFttYWNPU10gQ2Fubm90IGNoYW5nZSBmb250IHNpemUgYXQgc2VsZWN0aW9uIHVudGlsIGZvbnQg
cGFuZWwgaXMgc2hvd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTE2ZTU5M2MxZDdiMzAxYTBiNDY1M2M2M2UxNjBj
NDY2MGY1NGE4OC4uZWU1OWQ3ODRiZTAwNmI1ZjE4YzZiODBjMzE1MzEyNDUzZDU2YjAxMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOC0wOS0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIFtXSzJdIFN1cHBvcnQgY2hhbmdp
bmcgYXR0cmlidXRlcyBmb3Igc2VsZWN0ZWQgdGV4dCAodGV4dCBzaGFkb3csIHVuZGVybGluZSwg
c3RyaWtlLXRocm91Z2gpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODkzNTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ0MTg1Njc0PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCAtW1dL
V2ViVmlldyBjaGFuZ2VBdHRyaWJ1dGVzOl0sIHNvIHRoYXQgV0tXZWJWaWV3IGNhbiBjYXJyeSBv
dXQgbW9yZSB0eXBlcyBvZiBmb250IHN0eWxlIGNoYW5nZXMgdmlhCisgICAgICAgIE5TRm9udFBh
bmVsLiBUaGlzIHBhdGNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvICgxKSBjaGFuZ2UgdGV4dCBzaGFk
b3csICgyKSBhZGQgb3IgcmVtb3ZlIHN0cmlrZS10aHJvdWdoLCBhbmQgKDMpCisgICAgICAgIGFk
ZCBvciByZW1vdmUgdW5kZXJsaW5lcyBmcm9tIHNlbGVjdGVkIHRleHQgdXNpbmcgdGhlIGZvbnQg
cGFuZWwuCisKKyAgICAgICAgVGhpcyBidWlsZHMgb24gdGhlIG1lY2hhbmlzbXMgaW50cm9kdWNl
ZCBpbiA8d2Via2l0Lm9yZy9iLzE4OTI5NT4gdG8gY29tcHV0ZSBmb250IGF0dHJpYnV0ZSBjaGFu
Z2VzIGluIHRoZSBVSQorICAgICAgICBwcm9jZXNzIGFuZCBwcm9wYWdhdGUgdGhpcyBpbmZvcm1h
dGlvbiB0byB0aGUgd2ViIHByb2Nlc3MsIHdoZXJlIHdlJ3JlIGFibGUgdG8gY3JlYXRlIGFuZCBh
cHBseSBhbiBFZGl0aW5nU3R5bGUKKyAgICAgICAgdG8gdGhlIGN1cnJlbnQgc2VsZWN0aW9uLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBjaGFuZ2VBdHRyaWJ1dGVzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzRnJv
bVNlbmRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorCisgICAgICAgIEFkZCBib2lsZXJwbGF0ZSBJUEMgc3VwcG9ydC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMpOgorCiAyMDE4LTA5LTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQ2Fu
bm90IGNoYW5nZSBmb250IHNpemUgYXQgc2VsZWN0aW9uIHVudGlsIGZvbnQgcGFuZWwgaXMgc2hv
d24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5n
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAK
aW5kZXggZWMzZjhmYzZiYjZiODI4MWNlN2IyYzA2YjE4MjRjODVhYzRhNDA2OS4uNDBiM2Q2MmFi
NjBlZWY1ZjVhOWI1Yzc2N2RmNWMwNmI0ODRmYzM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKQEAgLTExMiwxNCArMTEyLDE5IEBAIFJl
ZjxFZGl0aW5nU3R5bGU+IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjpjcmVhdGVFZGl0aW5nU3R5bGUo
KSBjb25zdAogICAgIH0KIAogICAgIGlmIChtX3ZlcnRpY2FsQWxpZ24pIHsKLSAgICAgICAgaWYg
KCptX3ZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6U3VwZXIpCisgICAgICAgIHN3aXRj
aCAoKm1fdmVydGljYWxBbGlnbikgeworICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ25DaGFuZ2U6
OlN1cGVyc2NyaXB0OgogICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VmVydGljYWxBbGlnbiwgQ1NTVmFsdWVTdXBlcik7Ci0gICAgICAgIGVsc2UgaWYgKCptX3ZlcnRp
Y2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6U3ViKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVmVydGljYWxBbGlnbkNoYW5nZTo6U3Vic2NyaXB0OgogICAgICAgICAgICAgc3R5
bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgQ1NTVmFsdWVTdWIpOwot
ICAgICAgICBlbHNlIGlmICgqbV92ZXJ0aWNhbEFsaWduID09IFZlcnRpY2FsQWxpZ246OkJhc2Vs
aW5lKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbkNoYW5n
ZTo6QmFzZWxpbmU6CiAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlW
ZXJ0aWNhbEFsaWduLCBDU1NWYWx1ZUJhc2VsaW5lKTsKLSAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGF1dG8gZWRpdGluZ1N0eWxlID0gRWRpdGlu
Z1N0eWxlOjpjcmVhdGUoc3R5bGUucHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
b250QXR0cmlidXRlQ2hhbmdlcy5oCmluZGV4IGI5N2ZkZTgwOWFmNTM5Y2MwNGNkYzI3MThjNTE5
YWM0ZGE5YTIyNDUuLmNiNjY3YjVjNTBlY2UwMDVlYmUwOTRkNWIxYjFlOGU2ZTFjNjEwOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmgKQEAgLTI2
LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRl
ICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIApAQCAt
MzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFZGl0aW5nU3R5bGU7CiBj
bGFzcyBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOwogCitlbnVtIGNsYXNzIFZlcnRpY2FsQWxpZ25D
aGFuZ2UgOiB1aW50OF90IHsgU3VwZXJzY3JpcHQsIEJhc2VsaW5lLCBTdWJzY3JpcHQgfTsKKwog
Y2xhc3MgRm9udENoYW5nZXMgewogcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTYyLDYgKzY0LDkgQEAgcHJpdmF0ZToK
IH07CiAKIHN0cnVjdCBGb250U2hhZG93IHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBGb250U2hhZG93Jik7CisKICAgICBDb2xvciBj
b2xvcjsKICAgICBkb3VibGUgd2lkdGggeyAwIH07CiAgICAgZG91YmxlIGhlaWdodCB7IDAgfTsK
QEAgLTcwLDcgKzc1LDEwIEBAIHN0cnVjdCBGb250U2hhZG93IHsKIAogY2xhc3MgRm9udEF0dHJp
YnV0ZUNoYW5nZXMgewogcHVibGljOgotICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihWZXJ0aWNh
bEFsaWduIGFsaWduKSB7IG1fdmVydGljYWxBbGlnbiA9IGFsaWduOyB9CisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgRm9udEF0dHJpYnV0
ZUNoYW5nZXMmKTsKKworICAgIHZvaWQgc2V0VmVydGljYWxBbGlnbihWZXJ0aWNhbEFsaWduQ2hh
bmdlIGFsaWduKSB7IG1fdmVydGljYWxBbGlnbiA9IGFsaWduOyB9CiAgICAgdm9pZCBzZXRCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fYmFja2dyb3VuZENvbG9yID0gY29s
b3I7IH0KICAgICB2b2lkIHNldEZvcmVncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpIHsg
bV9mb3JlZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogICAgIHZvaWQgc2V0U2hhZG93KGNvbnN0IEZv
bnRTaGFkb3cmIHNoYWRvdykgeyBtX3NoYWRvdyA9IHNoYWRvdzsgfQpAQCAtODEsNyArODksNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEVkaXRpbmdTdHlsZT4gY3JlYXRlRWRp
dGluZ1N0eWxlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgc3RkOjpvcHRpb25hbDxWZXJ0aWNh
bEFsaWduPiBtX3ZlcnRpY2FsQWxpZ247CisgICAgc3RkOjpvcHRpb25hbDxWZXJ0aWNhbEFsaWdu
Q2hhbmdlPiBtX3ZlcnRpY2FsQWxpZ247CiAgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gbV9iYWNr
Z3JvdW5kQ29sb3I7CiAgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4gbV9mb3JlZ3JvdW5kQ29sb3I7
CiAgICAgc3RkOjpvcHRpb25hbDxGb250U2hhZG93PiBtX3NoYWRvdzsKQEAgLTEyMiw0ICsxMzAs
NzIgQEAgYm9vbCBGb250Q2hhbmdlczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEZvbnRDaGFu
Z2VzJiBjaGFuZ2VzKQogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgordm9pZCBGb250U2hhZG93OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sK
KyAgICBlbmNvZGVyIDw8IGNvbG9yIDw8IHdpZHRoIDw8IGhlaWdodCA8PCBibHVyUmFkaXVzOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBGb250U2hhZG93OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgRm9udFNoYWRvdyYgc2hhZG93KQoreworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc2hhZG93LmNvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzaGFkb3cud2lkdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5oZWlnaHQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5ibHVyUmFkaXVzKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Cit2b2lkIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fdmVydGljYWxBbGlnbiA8PCBtX2JhY2tn
cm91bmRDb2xvciA8PCBtX2ZvcmVncm91bmRDb2xvciA8PCBtX3NoYWRvdyA8PCBtX3N0cmlrZVRo
cm91Z2ggPDwgbV91bmRlcmxpbmUgPDwgbV9mb250Q2hhbmdlczsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KK2Jvb2wgRm9udEF0dHJpYnV0ZUNoYW5nZXM6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBGb250QXR0cmlidXRlQ2hhbmdlcyYgY2hhbmdlcykKK3sKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNoYW5nZXMubV92ZXJ0aWNhbEFsaWduKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFuZ2VzLm1fYmFja2dyb3VuZENvbG9yKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFuZ2Vz
Lm1fZm9yZWdyb3VuZENvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShjaGFuZ2VzLm1fc2hhZG93KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFuZ2VzLm1fc3RyaWtlVGhyb3VnaCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2hhbmdlcy5tX3Vu
ZGVybGluZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY2hhbmdlcy5tX2ZvbnRDaGFuZ2VzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdU
RiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlZlcnRpY2FsQWxpZ25D
aGFuZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3Jl
OjpWZXJ0aWNhbEFsaWduQ2hhbmdlLAorICAgICAgICBXZWJDb3JlOjpWZXJ0aWNhbEFsaWduQ2hh
bmdlOjpTdXBlcnNjcmlwdCwKKyAgICAgICAgV2ViQ29yZTo6VmVydGljYWxBbGlnbkNoYW5nZTo6
QmFzZWxpbmUsCisgICAgICAgIFdlYkNvcmU6OlZlcnRpY2FsQWxpZ25DaGFuZ2U6OlN1YnNjcmlw
dAorICAgID47Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IDQ3OGRiNGFjYzQzNjQ0NWQ3
ZTgzMDI1ZDhiMDNmMDI0NGIxZDg0NWEuLjkyNzViYTVmMDkyODA5ZWJmZThjMTY3N2IzYmE5M2Y2
MThjMTA1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
TlNGb250TWFuYWdlckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0KQEAgLTE0NCwxMSArMTQ0LDExIEBAIEZvbnRB
dHRyaWJ1dGVDaGFuZ2VzIGNvbXB1dGVkRm9udEF0dHJpYnV0ZUNoYW5nZXMoTlNGb250TWFuYWdl
ciAqZm9udE1hbmFnZXIsIGlkCiAgICAgaW50IGNvbnZlcnRlZFN1cGVyc2NyaXB0QSA9IFtbY29u
dmVydGVkQXR0cmlidXRlc0Egb2JqZWN0Rm9yS2V5Ok5TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1l
XSBpbnRWYWx1ZV07CiAgICAgaWYgKGNvbnZlcnRlZFN1cGVyc2NyaXB0QSA9PSBbW2NvbnZlcnRl
ZEF0dHJpYnV0ZXNCIG9iamVjdEZvcktleTpOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gaW50
VmFsdWVdKSB7CiAgICAgICAgIGlmIChjb252ZXJ0ZWRTdXBlcnNjcmlwdEEgPiAwKQotICAgICAg
ICAgICAgY2hhbmdlcy5zZXRWZXJ0aWNhbEFsaWduKFZlcnRpY2FsQWxpZ246OlN1cGVyKTsKKyAg
ICAgICAgICAgIGNoYW5nZXMuc2V0VmVydGljYWxBbGlnbihWZXJ0aWNhbEFsaWduQ2hhbmdlOjpT
dXBlcnNjcmlwdCk7CiAgICAgICAgIGVsc2UgaWYgKGNvbnZlcnRlZFN1cGVyc2NyaXB0QSA8IDAp
Ci0gICAgICAgICAgICBjaGFuZ2VzLnNldFZlcnRpY2FsQWxpZ24oVmVydGljYWxBbGlnbjo6U3Vi
KTsKKyAgICAgICAgICAgIGNoYW5nZXMuc2V0VmVydGljYWxBbGlnbihWZXJ0aWNhbEFsaWduQ2hh
bmdlOjpTdWJzY3JpcHQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjaGFuZ2VzLnNldFZl
cnRpY2FsQWxpZ24oVmVydGljYWxBbGlnbjo6QmFzZWxpbmUpOworICAgICAgICAgICAgY2hhbmdl
cy5zZXRWZXJ0aWNhbEFsaWduKFZlcnRpY2FsQWxpZ25DaGFuZ2U6OkJhc2VsaW5lKTsKICAgICB9
CiAKICAgICBpbnQgY29udmVydGVkU3RyaWtlVGhyb3VnaEEgPSBbW2NvbnZlcnRlZEF0dHJpYnV0
ZXNBIG9iamVjdEZvcktleTpOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdIGludFZh
bHVlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IDQ5ZjUxODBlZDMzNjAzYTQ1NGM1MWY0MDFhN2ViNzU0ZjJmNjdkMGMuLjY2YzI4ZWJm
ZmNkNTIzYjcwNDVjMTVhZGIyNzU0ZjQyYTBjZDgyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMzM1OSw2ICszMzU5LDExIEBAIFdF
QkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogICAgIF9pbXBsLT5jaGFuZ2VGb250RnJvbUZv
bnRNYW5hZ2VyKCk7CiB9CiAKKy0gKHZvaWQpY2hhbmdlQXR0cmlidXRlczooaWQpc2VuZGVyCit7
CisgICAgX2ltcGwtPmNoYW5nZUZvbnRBdHRyaWJ1dGVzRnJvbVNlbmRlcihzZW5kZXIpOworfQor
CiAtIChJQkFjdGlvbilzdGFydFNwZWFraW5nOihpZClzZW5kZXIKIHsKICAgICBfaW1wbC0+c3Rh
cnRTcGVha2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgKaW5kZXggYzlmM2I4OTVjN2JhOGU3N2YwZGE2MzlmYWQyZWI5NzFiZjczNDdkZC4uNzk2Yzky
OGQwOTFjMGE2NmI5OGI0Y2UyNzIxOTU1YzRiMDNmMzJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0zMTYsNiArMzE2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkQmVjb21lRWRpdGFibGUoKTsKICAgICB2b2lkIHVwZGF0ZUZvbnRQYW5lbElm
TmVlZGVkKCk7CiAgICAgdm9pZCBjaGFuZ2VGb250RnJvbUZvbnRNYW5hZ2VyKCk7CisgICAgdm9p
ZCBjaGFuZ2VGb250QXR0cmlidXRlc0Zyb21TZW5kZXIoaWQpOwogICAgIGJvb2wgdmFsaWRhdGVV
c2VySW50ZXJmYWNlSXRlbShpZCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4pOwogICAg
IHZvaWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGMyNWVkZjM0ZjY1MGFiZWVj
YzUyOTQ4NWI2MzZhMzk5YzY1OWQ1OTMuLjU1MmQ2NTA1ZDI1MzhiODZjNWZjZWVlNzdkOTUwYmE4
YzI1YTQwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCkBAIC0yNzM0LDYgKzI3MzQsMTYgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlRm9udFBh
bmVsSWZOZWVkZWQoKQogICAgIH0KIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6Y2hhbmdlRm9udEF0
dHJpYnV0ZXNGcm9tU2VuZGVyKGlkIHNlbmRlcikKK3sKKyAgICBhdXRvJiBlZGl0b3JTdGF0ZSA9
IG1fcGFnZS0+ZWRpdG9yU3RhdGUoKTsKKyAgICBpZiAoIWVkaXRvclN0YXRlLmlzQ29udGVudEVk
aXRhYmxlIHx8IGVkaXRvclN0YXRlLnNlbGVjdGlvbklzTm9uZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wYWdlLT5jaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpjb21wdXRlZEZvbnRB
dHRyaWJ1dGVDaGFuZ2VzKE5TRm9udE1hbmFnZXIuc2hhcmVkRm9udE1hbmFnZXIsIHNlbmRlcikp
OworICAgIHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkKCk7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6
OmNoYW5nZUZvbnRGcm9tRm9udE1hbmFnZXIoKQogewogICAgIGF1dG8mIGVkaXRvclN0YXRlID0g
bV9wYWdlLT5lZGl0b3JTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCAzODBiYTllZmVhMTA0ODFkYjE5ZDA3OWE2YjI0MTU0ODJlMDk5MDQ3Li40MjcyZTFi
M2U0ZDJmMGRmN2EyNjcwN2FiZjE5MzI4MDVkNWQyMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMTYyLDYgKzE2Miw3IEBAIGNsYXNzIENlcnRpZmljYXRlSW5m
bzsKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIERyYWdEYXRhOwogY2xhc3MgRmxvYXRSZWN0OworY2xh
c3MgRm9udEF0dHJpYnV0ZUNoYW5nZXM7CiBjbGFzcyBGb250Q2hhbmdlczsKIGNsYXNzIEdyYXBo
aWNzTGF5ZXI7CiBjbGFzcyBJbnRTaXplOwpAQCAtNjgxLDYgKzY4Miw3IEBAIHB1YmxpYzoKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7CiAgICAgdm9pZCBhdHRyaWJ1dGVkU3Vi
c3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBjb25zdCBFZGl0aW5nUmFuZ2Um
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBjaGFuZ2VGb250QXR0cmlidXRl
cyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmKTsKICAgICB2b2lkIGNoYW5nZUZvbnQo
V2ViQ29yZTo6Rm9udENoYW5nZXMmJik7CiAgICAgdm9pZCBmb250QXRTZWxlY3Rpb24oV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvb2wsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KaW5kZXggMTQ0NmFlMGQxMmYxMzViY2QyZmEyNTM4N2EwZmJiYWE5NzlkZDMzYi4u
NWQwY2VkYzA4OWZkZjkxMDYyOWVlOTY5MDI1YTczYzBjM2Y4NWQ1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC02MjYsNiArNjI2LDE0
IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphcHBsZU1haWxMaW5lc0NsYW1wRW5hYmxlZCgpCiB7CiAg
ICAgcmV0dXJuIE1hY0FwcGxpY2F0aW9uOjppc0FwcGxlTWFpbCgpOwogfQorCit2b2lkIFdlYlBh
Z2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5n
ZXMmJiBjaGFuZ2VzKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udEF0dHJpYnV0
ZXMoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFnZUlEKTsKK30KICAgICAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBmYmFmNzgwZGIzZjhj
Yjc2NjljMjg1NGUyODEwNGUyZDIyMjkyM2VkLi4xNDQ5OTQ4MDI5M2M1ZTQyZWFlZTg3Yjc1YTQz
NWVlOGQxZmU1MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0xMzUsNiArMTM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2FwdHVy
ZURldmljZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRHJhZ0RhdGE7CitjbGFzcyBG
b250QXR0cmlidXRlQ2hhbmdlczsKIGNsYXNzIEZvbnRDaGFuZ2VzOwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBGcmFtZVNlbGVjdGlvbjsKQEAgLTEzNjMsNiArMTM2NCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKTsKICAgICB2b2lkIGltbWVkaWF0ZUFjdGlv
bkRpZENvbXBsZXRlKCk7CiAgICAgdm9pZCBjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2Vz
JiYpOworICAgIHZvaWQgY2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0
ZUNoYW5nZXMmJik7CiAKICAgICB2b2lkIGRhdGFEZXRlY3RvcnNEaWRQcmVzZW50VUkoV2ViQ29y
ZTo6UGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQpOwogICAgIHZvaWQgZGF0YURldGVjdG9yc0Rp
ZENoYW5nZVVJKFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmlu
ZGV4IDcwZjIyMGRkMzc1YWE5NWE4ZDIxMGZlOGU3MTA1ZGYyMTU5MmYxYzQuLmMzNGFmZWIxZDA4
YTlhZTdkNDg3OWI0NDQ3YWUyZjdiODJiMTUyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTkxLDYgKzE5MSw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpCiAgICAg
Q2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyBjaGFuZ2VzKQorICAgIENoYW5nZUZvbnRB
dHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzIGNoYW5nZXMpCiAjZW5kaWYK
IAogICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2Vz
U3RvcmUgc3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCmluZGV4IDhkMjBkMmVmZjA2YmM0NmIwY2ZjOTkxNTljOGU5ODlmNWRi
M2YzODcuLjhlMjAwMmQ0ZTAzODA1MTk1NjY0OTYzMzEzNzEzYzA5ZjNhMjk3MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBA
IC0xMTE1LDYgKzExMTUsMTMgQEAgdm9pZCBXZWJQYWdlOjpkYXRhRGV0ZWN0b3JzRGlkSGlkZVVJ
KFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlEIG92ZXJsYXlJRCkKICAgICB9CiB9CiAKK3ZvaWQg
V2ViUGFnZTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5n
ZXMmJiBjaGFuZ2VzKQoreworICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuYXBw
bHlTdHlsZVRvU2VsZWN0aW9uKGNoYW5nZXMuY3JlYXRlRWRpdGluZ1N0eWxlKCksIEVkaXRBY3Rp
b25DaGFuZ2VBdHRyaWJ1dGVzLCBFZGl0b3I6OkNvbG9yRmlsdGVyTW9kZTo6SW52ZXJ0Q29sb3Ip
OworfQorCiB2b2lkIFdlYlBhZ2U6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJiBj
aGFuZ2VzKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBjZTU2ZjM0MWZmOTkzODIzNTc4M2Q0OWY0MmM2MjlhYjc0OGYwNzEx
Li42MGJiOWYyNzQyMTNmOWZlZjBiODhhYjcwYTIzZGZlNmEzNDdmOWU4IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIw
MTgtMDktMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW21hY09TXSBbV0syXSBTdXBwb3J0IGNoYW5naW5nIGF0dHJpYnV0ZXMgZm9yIHNlbGVjdGVk
IHRleHQgKHRleHQgc2hhZG93LCB1bmRlcmxpbmUsIHN0cmlrZS10aHJvdWdoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5MzU2CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80NDE4NTY3ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IEFQSSB0ZXN0IHRvIHZlcmlmeSB0aGF0IHNvbWUg
Zm9udCBhdHRyaWJ1dGVzICh0ZXh0IHNoYWRvdywgdW5kZXJsaW5lLCBhbmQgc3RyaWtlLXRocm91
Z2gpIGNhbiBiZQorICAgICAgICBhZGRlZCBhbmQgcmVtb3ZlZCB1c2luZyBOU0ZvbnRQYW5lbC4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2Vy
VGVzdHMubW06CisKKyAgICAgICAgQWRkIHRoZSBuZXcgQVBJIHRlc3QuCisKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGlu
Zy5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRlc3Rp
bmcubW06IEFkZGVkLgorCisgICAgICAgIEludHJvZHVjZSBhIG5ldyBmaWxlIHRoYXQgZXh0ZW5k
cyBOU0ZvbnRQYW5lbCB3aXRoIHNvbWUgYWRkaXRpb25hbCB0ZXN0aW5nIGZ1bmN0aW9uYWxpdHku
IFRoaXMgaW5jbHVkZXMgdGhlCisgICAgICAgIGFiaWxpdHkgdG8gaW50ZXJhY3Qgd2l0aCB0aGUg
dGV4dCBzaGFkb3cgdG9nZ2xlIGJ1dHRvbiwgY2hvb3NlIHRoZSB0ZXh0IHNoYWRvdyBibHVyIHJh
ZGl1cyBhbmQgb3BhY2l0eSwgYW5kCisgICAgICAgIGNoYW5nZSB1bmRlcmxpbmUgYW5kIHN0cmlr
ZS10aHJvdWdoIHN0eWxlcy4KKworICAgICAgICAoZmluZFN1YnZpZXdPZkNsYXNzKToKKyAgICAg
ICAgKGZpbmRNZW51SXRlbVdpdGhUaXRsZSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIGZvbnRF
ZmZlY3RzQm94XSk6CisKKyAgICAgICAgTlNGb250RWZmZWN0c0JveCAoYW4gaW50ZXJuYWwgQXBw
S2l0IGNsYXNzKSBpcyB0aGUgc2VuZGVyIGluIHRoZSBjYXNlIHdoZXJlIC1jaGFuZ2VBdHRyaWJ1
dGVzOiBpcyBpbnZva2VkCisgICAgICAgIHRocm91Z2ggaW50ZXJhY3Rpb24gd2l0aCB0aGUgZm9u
dCBwYW5lbC4gVG8gc2ltdWxhdGUgdGhpcyBmb3IgdGVzdGluZywgZ3JhYiB0aGlzIGZvbnQgZWZm
ZWN0cyBib3ggYW5kIHBhc3MgaXQKKyAgICAgICAgZGlyZWN0b3J5IHRvIC1jaGFuZ2VBdHRyaWJ1
dGVzOi4KKworICAgICAgICAoLVtOU0ZvbnRQYW5lbCBjaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdp
dGhUaXRsZTpdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgY2hvb3NlU3RyaWtlVGhyb3VnaE1l
bnVJdGVtV2l0aFRpdGxlOl0pOgorCisgICAgICAgIFRoZSBzdXBwb3J0ZWQgdmFsdWVzIGZvciB0
aGVzZSBtZW51IGl0ZW1zIGFyZSAibm9uZSIgYW5kICJzaW5nbGUiLCB3aGljaCBhZGRzIGEgc2lu
Z2xlIHVuZGVybGluZSBvcgorICAgICAgICBzdHJpa2UtdGhyb3VnaCB0byBzZWxlY3RlZCB0ZXh0
LiBXZSBncmFiIHRoZXNlIG1lbnUgaXRlbXMgYnkgYXNraW5nIGZvciB0aGUgZm9udCBwYW5lbCdz
IE5TVG9vbGJhciwgYW5kIGZpbmRpbmcKKyAgICAgICAgdGhlIHJlbGV2YW50IG1lbnUgaXRlbXMg
dmlhIHRvb2xiYXIgaXRlbSBpZGVudGlmaWVycy4KKworICAgICAgICAoLVtOU0ZvbnRQYW5lbCBf
ZGlkQ2hhbmdlQXR0cmlidXRlc10pOgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBzaGFkb3dCbHVy
U2xpZGVyXSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNoYWRvd09wYWNpdHlTbGlkZXJdKToK
KyAgICAgICAgKC1bTlNGb250UGFuZWwgc2hhZG93VG9nZ2xlQnV0dG9uXSk6CisgICAgICAgICgt
W05TRm9udFBhbmVsIHRvZ2dsZVNoYWRvd10pOgorICAgICAgICAoLVtOU0ZvbnRQYW5lbCBzaGFk
b3dPcGFjaXR5XSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNldFNoYWRvd09wYWNpdHk6XSk6
CisgICAgICAgICgtW05TRm9udFBhbmVsIHNoYWRvd0JsdXJdKToKKyAgICAgICAgKC1bTlNGb250
UGFuZWwgc2V0U2hhZG93Qmx1cjpdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgX3Rvb2xiYXJJ
dGVtV2l0aElkZW50aWZpZXI6XSk6CisKIDIwMTgtMDktMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBDYW5ub3QgY2hhbmdlIGZvbnQg
c2l6ZSBhdCBzZWxlY3Rpb24gdW50aWwgZm9udCBwYW5lbCBpcyBzaG93bgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAyMzY3NzdhODM1OGVjZTMyNzYxMWI3Y2U1YjY1MmY5MmNjMWMwMzc5Li45
NTE4MTUyYmQwYTNkMGM5ZWRlMjBkNDM1MmMwMThjYjc5ZDFhMTBhIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNzk0LDYgKzc5NCw3IEBACiAJCUY0MkRBNTE2MUQ4Q0VGRTQwMDMzNkY0MCAv
KiBsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDJEQTUxNTFEOENFRkRCMDAzMzZG
NDAgLyogbGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0bWwgKi87IH07CiAJCUY0M0Uz
QkJGMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0M0UzQkJFMjBEQURBMUUwMEE0RTdF
RCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5tbSAqLzsgfTsKIAkJRjQzRTNCQzEyMERBREJDNTAwQTRF
N0VEIC8qIGZpeGVkLW5hdi1iYXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDNFM0JDMDIwREFEQjgwMDBBNEU3RUQgLyogZml4ZWQt
bmF2LWJhci5odG1sICovOyB9OworCQlGNDQyODUxRDIxNDBERjI5MDBDQ0RBMjIgLyogTlNGb250
UGFuZWxUZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ0Mjg1MUMyMTQwREYyOTAwQ0NEQTIyIC8qIE5TRm9udFBhbmVsVGVzdGluZy5tbSAq
LzsgfTsKIAkJRjQ0NTFDNzYxRUI4RkQ4OTAwMjBDNURBIC8qIHR3by1wYXJhZ3JhcGgtY29udGVu
dGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ0NTFDNzUxRUI4RkQ3QzAwMjBDNURBIC8qIHR3by1wYXJhZ3JhcGgtY29u
dGVudGVkaXRhYmxlLmh0bWwgKi87IH07CiAJCUY0NEM3OUZGMjBGOUU4NzEwMDE0NDc4QyAvKiBQ
YXJzZXJZaWVsZFRva2VuVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDRDNzlGRTIwRjlFODcxMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRUb2tl
blRlc3RzLm1tICovOyB9OwogCQlGNDRDN0EwMDIwRjlFRUJGMDAxNDQ3OEMgLyogUGFyc2VyWWll
bGRUb2tlblBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NEM3OUZCMjBGOUU1MEMwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0lu
Lm1tICovOyB9OwpAQCAtMjAzNSw2ICsyMDM2LDggQEAKIAkJRjQyREE1MTUxRDhDRUZEQjAwMzM2
RjQwIC8qIGxhcmdlLWlucHV0LWZpZWxkLWZvY3VzLW9ubG9hZC5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBuYW1lID0gImxhcmdlLWlucHV0LWZpZWxkLWZvY3VzLW9ubG9hZC5odG1sIjsgcGF0
aCA9ICJUZXN0cy9XZWJLaXRDb2NvYS9sYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRt
bCI7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJRjQzRTNCQkUyMERBREExRTAwQTRF
N0VEIC8qIFdLU2Nyb2xsVmlld1Rlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTY3Jv
bGxWaWV3VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0M0UzQkMwMjBE
QURCODAwMEE0RTdFRCAvKiBmaXhlZC1uYXYtYmFyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZml4ZWQtbmF2
LWJhci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0Mjg1MUIyMTQwREYy
OTAwQ0NEQTIyIC8qIE5TRm9udFBhbmVsVGVzdGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0ZvbnRQ
YW5lbFRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0Mjg1MUMyMTQw
REYyOTAwQ0NEQTIyIC8qIE5TRm9udFBhbmVsVGVzdGluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE5TRm9udFBhbmVsVGVzdGluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQ0NTFDNzUxRUI4RkQ3QzAwMjBDNURBIC8qIHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxl
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidHdvLXBhcmFncmFwaC1jb250ZW50
ZWRpdGFibGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NEM3OUZCMjBG
OUU1MEMwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQ0Qzc5RkQyMEY5RTg3MTAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJZaWVsZFRva2VuVGVzdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNjEsNiArMzE2NCw4IEBACiAJCQkJRjRFMEEyQjcyMTIyODQ3
NDAwQUY3QzdGIC8qIFRlc3RGaWxlUHJvbWlzZVJlY2VpdmVyLm1tICovLAogCQkJCUMwODU4N0JF
MTNGRTk1NkMwMDFFRjRFNSAvKiBXZWJLaXRBZ25vc3RpY1Rlc3QuaCAqLywKIAkJCQlDMDg1ODdC
RDEzRkU5NTZDMDAxRUY0RTUgLyogV2ViS2l0QWdub3N0aWNUZXN0Lm1tICovLAorCQkJCUY0NDI4
NTFCMjE0MERGMjkwMENDREEyMiAvKiBOU0ZvbnRQYW5lbFRlc3RpbmcuaCAqLywKKwkJCQlGNDQy
ODUxQzIxNDBERjI5MDBDQ0RBMjIgLyogTlNGb250UGFuZWxUZXN0aW5nLm1tICovLAogCQkJKTsK
IAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzkxMyw2ICsz
OTE4LDcgQEAKIAkJCQk0NjQ3QjEyNjFFQkEzQjg1MDA0MUQ3RUYgLyogUHJvY2Vzc0RpZFRlcm1p
bmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTg4MkYwMzIxMDEwQzBEMDAyRkYyODggLyog
UHJvY2Vzc1ByZVdhcm1pbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MThDMTE1MzIwNUIwNTA0
MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlGNDQyODUxRDIxNDBERjI5MDBDQ0RBMjIgLyogTlNGb250UGFuZWxUZXN0aW5nLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0UwQzExRDBBNjUyRjAwRkVCQ0YzIC8qIFByb3Zpc2lvbmFsVVJM
Tm90Q2hhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzgxQTQxMUE3RTAwNDQ3QzRD
IC8qIFB1YmxpY1N1ZmZpeC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEMyMUQwQTY1MzUw
MEZFQkNGMyAvKiBRdWlja0xvb2subW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3RzLm1tCmluZGV4IGQxNWEwYzM1YTY5
OGQxZDYwMTc0NzM3ZWFjNjI5M2NkOWM4M2NjZDguLjIyYmY4N2M2YWJlNWIwY2MwMzMxOTA2NmJi
MDFiMGNlMTBhNzE4Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L0ZvbnRNYW5hZ2VyVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
Rm9udE1hbmFnZXJUZXN0cy5tbQpAQCAtMjcsNiArMjcsOCBAQAogCiAjaWYgUExBVEZPUk0oTUFD
KSAmJiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJBcHBLaXRTUEkuaCIKKyNpbXBvcnQgIk5T
Rm9udFBhbmVsVGVzdGluZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+
CkBAIC0xNzgsNiArMTgwLDc0IEBAIFRFU1QoRm9udE1hbmFnZXJUZXN0cywgQ2hhbmdlRm9udFdp
dGhQYW5lbCkKICAgICBFWFBFQ1RfRVEobGFyZ2VJdGFsaWNMaWdodEF2ZW5pckZvbnQsIGZvbnRN
YW5hZ2VyLnNlbGVjdGVkRm9udCk7CiB9CiAKK1RFU1QoRm9udE1hbmFnZXJUZXN0cywgQ2hhbmdl
QXR0cmlidXRlc1dpdGhGb250RWZmZWN0c0JveCkKK3sKKyAgICBOU0ZvbnRNYW5hZ2VyICpmb250
TWFuYWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSB3ZWJWaWV3Rm9yRm9udE1hbmFnZXJUZXN0aW5nKGZvbnRNYW5hZ2VyKTsKKworICAg
IE5TRm9udFBhbmVsICpmb250UGFuZWwgPSBbZm9udE1hbmFnZXIgZm9udFBhbmVsOllFU107Cisg
ICAgW2ZvbnRQYW5lbCBzZXRJc1Zpc2libGU6WUVTXTsKKworICAgIGF1dG8gdGV4dERlY29yYXRp
b25zQXJvdW5kU2VsZWN0aW9uID0gW3dlYlZpZXddIHsKKyAgICAgICAgTlNTdHJpbmcgKmRlY29y
YXRpb25zQXRTdGFydCA9IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAi
LXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdOworICAgICAgICBOU1N0cmluZyAq
ZGVjb3JhdGlvbnNBdEVuZCA9IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvbkVuZDpA
Ii13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXTsKKyAgICAgICAgaWYgKFtkZWNv
cmF0aW9uc0F0U3RhcnQgaXNFcXVhbFRvU3RyaW5nOmRlY29yYXRpb25zQXRFbmRdIHx8IGRlY29y
YXRpb25zQXRTdGFydCA9PSBkZWNvcmF0aW9uc0F0RW5kKQorICAgICAgICAgICAgcmV0dXJuIGRl
Y29yYXRpb25zQXRTdGFydDsKKyAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiKCVALCAlQCkiLCBkZWNvcmF0aW9uc0F0U3RhcnQsIGRlY29yYXRpb25zQXRFbmRdOwor
ICAgIH07CisKKyAgICBhdXRvIHRleHRTaGFkb3dBcm91bmRTZWxlY3Rpb24gPSBbd2ViVmlld10g
eworICAgICAgICBOU1N0cmluZyAqc2hhZG93QXRTdGFydCA9IFt3ZWJWaWV3IHN0eWxlUHJvcGVy
dHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1zaGFkb3ciXTsKKyAgICAgICAgTlNTdHJpbmcgKnNo
YWRvd0F0RW5kID0gW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2VsZWN0aW9uRW5kOkAidGV4dC1z
aGFkb3ciXTsKKyAgICAgICAgaWYgKFtzaGFkb3dBdFN0YXJ0IGlzRXF1YWxUb1N0cmluZzpzaGFk
b3dBdEVuZF0gfHwgc2hhZG93QXRTdGFydCA9PSBzaGFkb3dBdEVuZCkKKyAgICAgICAgICAgIHJl
dHVybiBzaGFkb3dBdFN0YXJ0OworICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIoJUAsICVAKSIsIHNoYWRvd0F0U3RhcnQsIHNoYWRvd0F0RW5kXTsKKyAgICB9Owor
CisgICAgW3dlYlZpZXcgc2VsZWN0V29yZDpuaWxdOworICAgIFtmb250UGFuZWwgY2hvb3NlVW5k
ZXJsaW5lTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
ImZvbyIsIFt3ZWJWaWV3IHNlbGVjdGVkVGV4dF0pOworICAgIEVYUEVDVF9XS19TVFJFUSgidW5k
ZXJsaW5lIiwgdGV4dERlY29yYXRpb25zQXJvdW5kU2VsZWN0aW9uKCkpOworCisgICAgW2ZvbnRQ
YW5lbCBjaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdpdGhUaXRsZTpAIm5vbmUiXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIm5vbmUiLCB0ZXh0RGVjb3JhdGlvbnNBcm91bmRTZWxlY3Rpb24oKSk7CisK
KyAgICBbd2ViVmlldyBzZWxlY3ROZXh0V29yZF07CisgICAgW2ZvbnRQYW5lbCBjaG9vc2VTdHJp
a2VUaHJvdWdoTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoImJhciIsIFt3ZWJWaWV3IHNlbGVjdGVkVGV4dF0pOworICAgIEVYUEVDVF9XS19TVFJFUSgi
bGluZS10aHJvdWdoIiwgdGV4dERlY29yYXRpb25zQXJvdW5kU2VsZWN0aW9uKCkpOworCisgICAg
W2ZvbnRQYW5lbCBjaG9vc2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1XaXRoVGl0bGU6QCJub25lIl07
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub25lIiwgdGV4dERlY29yYXRpb25zQXJvdW5kU2VsZWN0
aW9uKCkpOworCisgICAgW3dlYlZpZXcgc2VsZWN0TmV4dFdvcmRdOworICAgIGZvbnRQYW5lbC5z
aGFkb3dCbHVyID0gODsKKyAgICBmb250UGFuZWwuc2hhZG93T3BhY2l0eSA9IDE7CisgICAgW2Zv
bnRQYW5lbCB0b2dnbGVTaGFkb3ddOworICAgIEVYUEVDVF9XS19TVFJFUSgiYmF6IiwgW3dlYlZp
ZXcgc2VsZWN0ZWRUZXh0XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJyZ2IoMCwgMCwgMCkgMHB4
IDFweCA4cHgiLCB0ZXh0U2hhZG93QXJvdW5kU2VsZWN0aW9uKCkpOworCisgICAgW2ZvbnRQYW5l
bCB0b2dnbGVTaGFkb3ddOworICAgIEVYUEVDVF9XS19TVFJFUSgibm9uZSIsIHRleHRTaGFkb3dB
cm91bmRTZWxlY3Rpb24oKSk7CisKKyAgICAvLyBOb3cgY29tYmluZSBhbGwgdGhyZWUgYXR0cmli
dXRlcyB0b2dldGhlci4KKyAgICBbd2ViVmlldyBzZWxlY3RBbGw6bmlsXTsKKyAgICBmb250UGFu
ZWwuc2hhZG93Qmx1ciA9IDU7CisgICAgZm9udFBhbmVsLnNoYWRvd09wYWNpdHkgPSAwLjI7Cisg
ICAgW2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOworICAgIFtmb250UGFuZWwgY2hvb3NlVW5kZXJs
aW5lTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsKKyAgICBbZm9udFBhbmVsIGNob29zZVN0
cmlrZVRocm91Z2hNZW51SXRlbVdpdGhUaXRsZTpAInNpbmdsZSJdOworICAgIEVYUEVDVF9XS19T
VFJFUSgiZm9vIGJhciBiYXoiLCBbd2ViVmlldyBzZWxlY3RlZFRleHRdKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoInJnYmEoMCwgMCwgMCwgMC4yKSAwcHggMXB4IDVweCIsIHRleHRTaGFkb3dBcm91
bmRTZWxlY3Rpb24oKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ1bmRlcmxpbmUgbGluZS10aHJv
dWdoIiwgdGV4dERlY29yYXRpb25zQXJvdW5kU2VsZWN0aW9uKCkpOworCisgICAgW2ZvbnRQYW5l
bCB0b2dnbGVTaGFkb3ddOworICAgIFtmb250UGFuZWwgY2hvb3NlVW5kZXJsaW5lTWVudUl0ZW1X
aXRoVGl0bGU6QCJub25lIl07CisgICAgW2ZvbnRQYW5lbCBjaG9vc2VTdHJpa2VUaHJvdWdoTWVu
dUl0ZW1XaXRoVGl0bGU6QCJub25lIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub25lIiwgdGV4
dFNoYWRvd0Fyb3VuZFNlbGVjdGlvbigpKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCB0
ZXh0RGVjb3JhdGlvbnNBcm91bmRTZWxlY3Rpb24oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggNjEzZGZhZThh
YTFkZmY3NjRjNzczY2ZjNTAxNGU1YzNlMTYzODE2Ni4uNWYxNjlkOWI0ZDc0ZGE1NzEzZTNlYTNj
ODE4NWEyYTcyYThhZDU5MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmgKQEAgLTM3LDYgKzM3LDcgQEAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChBZGRpdGlvbmFs
RGVjbGFyYXRpb25zKQogI2lmIFBMQVRGT1JNKE1BQykKIC0gKHZvaWQpcGFzdGU6KGlkKXNlbmRl
cjsKKy0gKHZvaWQpY2hhbmdlQXR0cmlidXRlczooaWQpc2VuZGVyOwogI2VuZGlmCiBAZW5kCiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvTlNGb250UGFuZWxUZXN0aW5nLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGIwNGQ0OGYzZTk4NWZhMjIxZGE2MWM2OWRhMWJlYjI4NjE0MWQ5YgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5oCkBAIC0w
LDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKE1B
QykgJiYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgorCitAaW50
ZXJmYWNlIE5TRm9udFBhbmVsIChUZXN0V2ViS2l0QVBJKQorCitAcHJvcGVydHkgKG5vbmF0b21p
YykgZG91YmxlIHNoYWRvd09wYWNpdHk7CitAcHJvcGVydHkgKG5vbmF0b21pYykgZG91YmxlIHNo
YWRvd0JsdXI7CisKKy0gKHZvaWQpdG9nZ2xlU2hhZG93OworLSAodm9pZCljaG9vc2VVbmRlcmxp
bmVNZW51SXRlbVdpdGhUaXRsZTooTlNTdHJpbmcgKilpdGVtVGl0bGU7CistICh2b2lkKWNob29z
ZVN0cmlrZVRocm91Z2hNZW51SXRlbVdpdGhUaXRsZTooTlNTdHJpbmcgKilpdGVtVGl0bGU7CisK
K0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9OU0Zv
bnRQYW5lbFRlc3RpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRl
c3RpbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFjMWFiYjEwMjEzMTg4OTAzMTQ5ZmU4ZWE2YjBjZjU3NmZk
ZmYxMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBh
bmVsVGVzdGluZy5tbQpAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJOU0ZvbnRQYW5lbFRlc3RpbmcuaCIKKworI2lmIFBMQVRGT1JN
KE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisKK0Bp
bnRlcmZhY2UgTlNCb3ggKE5TRm9udEVmZmVjdHNCb3gpCisvLyBJbnZva2VkIGFmdGVyIGEgZm9u
dCBlZmZlY3QgKGUuZy4gc2luZ2xlIHN0cmlrZS10aHJvdWdoKSBpcyBjaG9zZW4uCistICh2b2lk
KV9vcGVuRWZmZWN0c0J1dHRvbjooaWQpc2VuZGVyOworQGVuZAorCitzdGF0aWMgTlNWaWV3ICpm
aW5kU3Vidmlld09mQ2xhc3MoTlNWaWV3ICp2aWV3LCBDbGFzcyB0YXJnZXRDbGFzcykKK3sKKyAg
ICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczp0YXJnZXRDbGFzc10pCisgICAgICAgIHJldHVybiB2
aWV3OworCisgICAgZm9yIChOU1ZpZXcgKnN1YnZpZXcgaW4gdmlldy5zdWJ2aWV3cykgeworICAg
ICAgICBpZiAoTlNWaWV3ICp0YXJnZXRWaWV3ID0gZmluZFN1YnZpZXdPZkNsYXNzKHN1YnZpZXcs
IHRhcmdldENsYXNzKSkKKyAgICAgICAgICAgIHJldHVybiB0YXJnZXRWaWV3OworICAgIH0KKyAg
ICByZXR1cm4gbmlsOworfQorCitzdGF0aWMgTlNNZW51SXRlbSAqZmluZE1lbnVJdGVtV2l0aFRp
dGxlKE5TUG9wVXBCdXR0b24gKmJ1dHRvbiwgTlNTdHJpbmcgKnRpdGxlKQoreworICAgIGZvciAo
TlNNZW51SXRlbSAqaXRlbSBpbiBidXR0b24uaXRlbUFycmF5KSB7CisgICAgICAgIGlmIChbaXRl
bS50aXRsZS5sb3dlcmNhc2VTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnRpdGxlLmxvd2VyY2FzZVN0
cmluZ10pCisgICAgICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CisgICAgcmV0dXJuIG5pbDsK
K30KKworQGltcGxlbWVudGF0aW9uIE5TRm9udFBhbmVsIChUZXN0V2ViS2l0QVBJKQorCistIChO
U0JveCAqKWZvbnRFZmZlY3RzQm94Cit7CisgICAgdm9pZCogcmVzdWx0ID0gbnVsbHB0cjsKKyAg
ICBvYmplY3RfZ2V0SW5zdGFuY2VWYXJpYWJsZShzZWxmLCAiX2ZvbnRFZmZlY3RzQm94IiwgJnJl
c3VsdCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TQm94ICo+KHJlc3VsdCk7Cit9CisKKy0g
KHZvaWQpY2hvb3NlVW5kZXJsaW5lTWVudUl0ZW1XaXRoVGl0bGU6KE5TU3RyaW5nICopaXRlbVRp
dGxlCit7CisgICAgTlNQb3BVcEJ1dHRvbiAqYnV0dG9uID0gKE5TUG9wVXBCdXR0b24gKilbc2Vs
ZiBfdG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjpAIk5TRm9udFBhbmVsVW5kZXJsaW5lVG9vbGJh
ckl0ZW0iXS52aWV3OworICAgIFtidXR0b24gc2VsZWN0SXRlbTpmaW5kTWVudUl0ZW1XaXRoVGl0
bGUoYnV0dG9uLCBpdGVtVGl0bGUpXTsKKyAgICBbc2VsZi5mb250RWZmZWN0c0JveCBfb3BlbkVm
ZmVjdHNCdXR0b246YnV0dG9uXTsKKyAgICBbc2VsZiBfZGlkQ2hhbmdlQXR0cmlidXRlc107Cit9
CisKKy0gKHZvaWQpY2hvb3NlU3RyaWtlVGhyb3VnaE1lbnVJdGVtV2l0aFRpdGxlOihOU1N0cmlu
ZyAqKWl0ZW1UaXRsZQoreworICAgIE5TUG9wVXBCdXR0b24gKmJ1dHRvbiA9IChOU1BvcFVwQnV0
dG9uICopW3NlbGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6QCJOU0ZvbnRQYW5lbFN0cmlr
ZXRocm91Z2hUb29sYmFySXRlbSJdLnZpZXc7CisgICAgW2J1dHRvbiBzZWxlY3RJdGVtOmZpbmRN
ZW51SXRlbVdpdGhUaXRsZShidXR0b24sIGl0ZW1UaXRsZSldOworICAgIFtzZWxmLmZvbnRFZmZl
Y3RzQm94IF9vcGVuRWZmZWN0c0J1dHRvbjpidXR0b25dOworICAgIFtzZWxmIF9kaWRDaGFuZ2VB
dHRyaWJ1dGVzXTsKK30KKworLSAodm9pZClfZGlkQ2hhbmdlQXR0cmlidXRlcworeworICAgIE5T
Rm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0gTlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdl
cjsKKyAgICBpZiAoc2VsZiA9PSBbZm9udE1hbmFnZXIgZm9udFBhbmVsOk5PXSkKKyAgICAgICAg
W2ZvbnRNYW5hZ2VyLnRhcmdldCBjaGFuZ2VBdHRyaWJ1dGVzOnNlbGYuZm9udEVmZmVjdHNCb3hd
OworfQorCistIChOU1NsaWRlciAqKXNoYWRvd0JsdXJTbGlkZXIKK3sKKyAgICByZXR1cm4gKE5T
U2xpZGVyICopZmluZFN1YnZpZXdPZkNsYXNzKFtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlm
aWVyOkAiTlNGb250UGFuZWxTaGFkb3dCbHVyVG9vbGJhckl0ZW0iXS52aWV3LCBOU1NsaWRlci5j
bGFzcyk7Cit9CisKKy0gKE5TU2xpZGVyICopc2hhZG93T3BhY2l0eVNsaWRlcgoreworICAgIHJl
dHVybiAoTlNTbGlkZXIgKilmaW5kU3Vidmlld09mQ2xhc3MoW3NlbGYgX3Rvb2xiYXJJdGVtV2l0
aElkZW50aWZpZXI6QCJOU0ZvbnRQYW5lbFNoYWRvd09wYWNpdHlUb29sYmFySXRlbSJdLnZpZXcs
IE5TU2xpZGVyLmNsYXNzKTsKK30KKworLSAoTlNCdXR0b24gKilzaGFkb3dUb2dnbGVCdXR0b24K
K3sKKyAgICByZXR1cm4gKE5TQnV0dG9uICopW3NlbGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZp
ZXI6QCJOU0ZvbnRQYW5lbFNoYWRvd1RvZ2dsZVRvb2xiYXJJdGVtIl0udmlldzsKK30KKworLSAo
dm9pZCl0b2dnbGVTaGFkb3cKK3sKKyAgICBOU0J1dHRvbiAqc2hhZG93VG9nZ2xlQnV0dG9uID0g
c2VsZi5zaGFkb3dUb2dnbGVCdXR0b247CisgICAgc2hhZG93VG9nZ2xlQnV0dG9uLnN0YXRlID0g
c2hhZG93VG9nZ2xlQnV0dG9uLnN0YXRlID09IE5TQ29udHJvbFN0YXRlVmFsdWVPZmYgPyBOU0Nv
bnRyb2xTdGF0ZVZhbHVlT24gOiBOU0NvbnRyb2xTdGF0ZVZhbHVlT2ZmOworICAgIFtzZWxmIF9k
aWRDaGFuZ2VBdHRyaWJ1dGVzXTsKK30KKworLSAoZG91YmxlKXNoYWRvd09wYWNpdHkKK3sKKyAg
ICByZXR1cm4gc2VsZi5zaGFkb3dPcGFjaXR5U2xpZGVyLmRvdWJsZVZhbHVlOworfQorCistICh2
b2lkKXNldFNoYWRvd09wYWNpdHk6KGRvdWJsZSlzaGFkb3dPcGFjaXR5Cit7CisgICAgc2VsZi5z
aGFkb3dPcGFjaXR5U2xpZGVyLmRvdWJsZVZhbHVlID0gc2hhZG93T3BhY2l0eTsKKyAgICBpZiAo
c2VsZi5zaGFkb3dUb2dnbGVCdXR0b24uc3RhdGUgPT0gTlNDb250cm9sU3RhdGVWYWx1ZU9uKQor
ICAgICAgICBbc2VsZiBfZGlkQ2hhbmdlQXR0cmlidXRlc107Cit9CisKKy0gKGRvdWJsZSlzaGFk
b3dCbHVyCit7CisgICAgcmV0dXJuIHNlbGYuc2hhZG93Qmx1clNsaWRlci5kb3VibGVWYWx1ZTsK
K30KKworLSAodm9pZClzZXRTaGFkb3dCbHVyOihkb3VibGUpc2hhZG93Qmx1cgoreworICAgIHNl
bGYuc2hhZG93Qmx1clNsaWRlci5kb3VibGVWYWx1ZSA9IHNoYWRvd0JsdXI7CisgICAgaWYgKHNl
bGYuc2hhZG93VG9nZ2xlQnV0dG9uLnN0YXRlID09IE5TQ29udHJvbFN0YXRlVmFsdWVPbikKKyAg
ICAgICAgW3NlbGYgX2RpZENoYW5nZUF0dHJpYnV0ZXNdOworfQorCistIChOU1Rvb2xiYXJJdGVt
ICopX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaXRlbUlkZW50aWZpZXIK
K3sKKyAgICBmb3IgKE5TVG9vbGJhckl0ZW0gKml0ZW0gaW4gc2VsZi50b29sYmFyLml0ZW1zKSB7
CisgICAgICAgIGlmIChbaXRlbS5pdGVtSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6aXRlbUlk
ZW50aWZpZXJdKQorICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgfQorICAgIHJldHVybiBu
aWw7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJM
RUQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349056</attachid>
            <date>2018-09-06 13:01:13 -0700</date>
            <delta_ts>2018-09-06 13:38:39 -0700</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-189356-20180906130112.patch</filename>
            <type>text/plain</type>
            <size>34734</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM3MGE4OWFmZTA3YWU2
ODNmNTM3OGE3N2VkZjlmNjAyNDU5NGMyYy4uYmI3YzEwMTcyNmVmYjE2Y2FjNjdmZGZiMmNhNGJh
OWQ3NWJlYjI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTA5LTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dL
Ml0gU3VwcG9ydCBjaGFuZ2luZyBhdHRyaWJ1dGVzIGZvciBzZWxlY3RlZCB0ZXh0ICh0ZXh0IHNo
YWRvdywgdW5kZXJsaW5lLCBzdHJpa2UtdGhyb3VnaCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTM1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDQxODU2NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyBGb250QXR0cmlidXRlQ2hh
bmdlcywgc28gdGhhdCB3ZSBjYW4gc2VuZCBGb250QXR0cmlidXRlQ2hhbmdlcyBvdmVyIElQQyBp
bgorICAgICAgICBXZWJLaXQyLiBBbHNvIGNoYW5nZSBtX3ZlcnRpY2FsQWxpZ24gdG8gYSBuZXcg
VmVydGljYWxBbGlnbkNoYW5nZSBlbnVtIHR5cGUsIHNvIHRoYXQgaXQncyBubyBsb25nZXIgdGll
ZCB0byB0aGUKKyAgICAgICAgQ1NTIHByb3BlcnR5IHZhbHVlcyBvZiAidmVydGljYWwtYWxpZ24i
LCBhbmQgY2FuIGJlIGVuY29kZWQvZGVjb2RlZCBzZXBhcmF0ZWx5IGZyb20gVmVydGljYWxBbGln
biBpbgorICAgICAgICBSZW5kZXJTdHlsZUNvbnN0YW50cy4KKworICAgICAgICBUZXN0OiBGb250
TWFuYWdlclRlc3RzLkNoYW5nZUF0dHJpYnV0ZXNXaXRoRm9udEVmZmVjdHNCb3gKKworICAgICAg
ICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZUNoYW5nZXM6OmNyZWF0ZUVkaXRpbmdTdHlsZSBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEF0dHJpYnV0ZUNoYW5nZXM6OnNldFZlcnRpY2FsQWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFNoYWRvdzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRTaGFkb3c6
OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVkRm9udEF0dHJpYnV0ZUNoYW5nZXMpOgorCiAyMDE4
LTA5LTA2ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBHcm91
cCBvcHRpb25zIG9mIHNjcm9sbFJlY3RUb1Zpc2libGUgaW50byBhIHN0cnVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBmZjM1NGIwYTA4ZDU5ZmEyMTk1OWIwZGZkY2E4ODJhNmFmYjA0MTRlLi5mYzhhZGJjODg4Nzk5
ZjNkMTEyNjg1Y2U2NGYzZmQxZjg1Mjk1NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisy
MDE4LTA5LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFttYWNPU10gW1dLMl0gU3VwcG9ydCBjaGFuZ2luZyBhdHRyaWJ1dGVzIGZvciBzZWxlY3Rl
ZCB0ZXh0ICh0ZXh0IHNoYWRvdywgdW5kZXJsaW5lLCBzdHJpa2UtdGhyb3VnaCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTM1NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDQxODU2NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IC1bV0tXZWJWaWV3IGNoYW5nZUF0dHJpYnV0ZXM6
XSwgc28gdGhhdCBXS1dlYlZpZXcgY2FuIGNhcnJ5IG91dCBtb3JlIHR5cGVzIG9mIGZvbnQgc3R5
bGUgY2hhbmdlcyB2aWEKKyAgICAgICAgTlNGb250UGFuZWwuIFRoaXMgcGF0Y2ggbWFrZXMgaXQg
cG9zc2libGUgdG8gKDEpIGNoYW5nZSB0ZXh0IHNoYWRvdywgKDIpIGFkZCBvciByZW1vdmUgc3Ry
aWtlLXRocm91Z2gsIGFuZCAoMykKKyAgICAgICAgYWRkIG9yIHJlbW92ZSB1bmRlcmxpbmVzIGZy
b20gc2VsZWN0ZWQgdGV4dCB1c2luZyB0aGUgZm9udCBwYW5lbC4KKworICAgICAgICBUaGlzIGJ1
aWxkcyBvbiB0aGUgbWVjaGFuaXNtcyBpbnRyb2R1Y2VkIGluIHIyMzU3NDggdG8gY29tcHV0ZSBm
b250IGF0dHJpYnV0ZSBjaGFuZ2VzIGluIHRoZSBVSSBwcm9jZXNzIGFuZAorICAgICAgICBwcm9w
YWdhdGUgdGhpcyBpbmZvcm1hdGlvbiB0byB0aGUgd2ViIHByb2Nlc3MsIHdoZXJlIHdlJ3JlIGFi
bGUgdG8gY3JlYXRlIGFuZCBhcHBseSBhbiBFZGl0aW5nU3R5bGUgdG8gdGhlCisgICAgICAgIGN1
cnJlbnQgc2VsZWN0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBjaGFuZ2VBdHRyaWJ1dGVzOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNoYW5n
ZUZvbnRBdHRyaWJ1dGVzRnJvbVNlbmRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisgICAgICAgIEFkZCBib2lsZXJwbGF0ZSBJ
UEMgc3VwcG9ydC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMpOgor
CiAyMDE4LTA5LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPU10gQ2Fubm90IGNoYW5nZSBmb250IHNpemUgYXQgc2VsZWN0aW9uIHVudGls
IGZvbnQgcGFuZWwgaXMgc2hvd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Rm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0
cmlidXRlQ2hhbmdlcy5jcHAKaW5kZXggZWMzZjhmYzZiYjZiODI4MWNlN2IyYzA2YjE4MjRjODVh
YzRhNDA2OS4uNDBiM2Q2MmFiNjBlZWY1ZjVhOWI1Yzc2N2RmNWMwNmI0ODRmYzM1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKQEAgLTEx
MiwxNCArMTEyLDE5IEBAIFJlZjxFZGl0aW5nU3R5bGU+IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjpj
cmVhdGVFZGl0aW5nU3R5bGUoKSBjb25zdAogICAgIH0KIAogICAgIGlmIChtX3ZlcnRpY2FsQWxp
Z24pIHsKLSAgICAgICAgaWYgKCptX3ZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6U3Vw
ZXIpCisgICAgICAgIHN3aXRjaCAoKm1fdmVydGljYWxBbGlnbikgeworICAgICAgICBjYXNlIFZl
cnRpY2FsQWxpZ25DaGFuZ2U6OlN1cGVyc2NyaXB0OgogICAgICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgQ1NTVmFsdWVTdXBlcik7Ci0gICAgICAg
IGVsc2UgaWYgKCptX3ZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6U3ViKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbkNoYW5nZTo6U3Vic2NyaXB0
OgogICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGln
biwgQ1NTVmFsdWVTdWIpOwotICAgICAgICBlbHNlIGlmICgqbV92ZXJ0aWNhbEFsaWduID09IFZl
cnRpY2FsQWxpZ246OkJhc2VsaW5lKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VmVydGljYWxBbGlnbkNoYW5nZTo6QmFzZWxpbmU6CiAgICAgICAgICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBDU1NWYWx1ZUJhc2VsaW5lKTsKLSAgICAg
ICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGF1dG8gZWRp
dGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoc3R5bGUucHRyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oCmluZGV4IGI5N2ZkZTgwOWFm
NTM5Y2MwNGNkYzI3MThjNTE5YWM0ZGE5YTIyNDUuLmNiNjY3YjVjNTBlY2UwMDVlYmUwOTRkNWIx
YjFlOGU2ZTFjNjEwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0
dHJpYnV0ZUNoYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1
dGVDaGFuZ2VzLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
Q29sb3IuaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgPHd0
Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIApAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBFZGl0aW5nU3R5bGU7CiBjbGFzcyBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOwogCitlbnVtIGNs
YXNzIFZlcnRpY2FsQWxpZ25DaGFuZ2UgOiB1aW50OF90IHsgU3VwZXJzY3JpcHQsIEJhc2VsaW5l
LCBTdWJzY3JpcHQgfTsKKwogY2xhc3MgRm9udENoYW5nZXMgewogcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTYyLDYg
KzY0LDkgQEAgcHJpdmF0ZToKIH07CiAKIHN0cnVjdCBGb250U2hhZG93IHsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBGb250U2hhZG93
Jik7CisKICAgICBDb2xvciBjb2xvcjsKICAgICBkb3VibGUgd2lkdGggeyAwIH07CiAgICAgZG91
YmxlIGhlaWdodCB7IDAgfTsKQEAgLTcwLDcgKzc1LDEwIEBAIHN0cnVjdCBGb250U2hhZG93IHsK
IAogY2xhc3MgRm9udEF0dHJpYnV0ZUNoYW5nZXMgewogcHVibGljOgotICAgIHZvaWQgc2V0VmVy
dGljYWxBbGlnbihWZXJ0aWNhbEFsaWduIGFsaWduKSB7IG1fdmVydGljYWxBbGlnbiA9IGFsaWdu
OyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiwgRm9udEF0dHJpYnV0ZUNoYW5nZXMmKTsKKworICAgIHZvaWQgc2V0VmVydGljYWxBbGln
bihWZXJ0aWNhbEFsaWduQ2hhbmdlIGFsaWduKSB7IG1fdmVydGljYWxBbGlnbiA9IGFsaWduOyB9
CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fYmFj
a2dyb3VuZENvbG9yID0gY29sb3I7IH0KICAgICB2b2lkIHNldEZvcmVncm91bmRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpIHsgbV9mb3JlZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogICAgIHZvaWQg
c2V0U2hhZG93KGNvbnN0IEZvbnRTaGFkb3cmIHNoYWRvdykgeyBtX3NoYWRvdyA9IHNoYWRvdzsg
fQpAQCAtODEsNyArODksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEVkaXRp
bmdTdHlsZT4gY3JlYXRlRWRpdGluZ1N0eWxlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgc3Rk
OjpvcHRpb25hbDxWZXJ0aWNhbEFsaWduPiBtX3ZlcnRpY2FsQWxpZ247CisgICAgc3RkOjpvcHRp
b25hbDxWZXJ0aWNhbEFsaWduQ2hhbmdlPiBtX3ZlcnRpY2FsQWxpZ247CiAgICAgc3RkOjpvcHRp
b25hbDxDb2xvcj4gbV9iYWNrZ3JvdW5kQ29sb3I7CiAgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4g
bV9mb3JlZ3JvdW5kQ29sb3I7CiAgICAgc3RkOjpvcHRpb25hbDxGb250U2hhZG93PiBtX3NoYWRv
dzsKQEAgLTEyMiw0ICsxMzAsNzIgQEAgYm9vbCBGb250Q2hhbmdlczo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIEZvbnRDaGFuZ2VzJiBjaGFuZ2VzKQogICAgIHJldHVybiB0cnVlOwogfQogCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBGb250U2hhZG93OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGNvbG9yIDw8IHdpZHRoIDw8IGhlaWdo
dCA8PCBibHVyUmFkaXVzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBGb250
U2hhZG93OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRm9udFNoYWRvdyYgc2hhZG93KQorewor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93LmNvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaGFkb3cud2lkdGgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5oZWlnaHQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5i
bHVyUmFkaXVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fdmVydGlj
YWxBbGlnbiA8PCBtX2JhY2tncm91bmRDb2xvciA8PCBtX2ZvcmVncm91bmRDb2xvciA8PCBtX3No
YWRvdyA8PCBtX3N0cmlrZVRocm91Z2ggPDwgbV91bmRlcmxpbmUgPDwgbV9mb250Q2hhbmdlczsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgRm9udEF0dHJpYnV0ZUNoYW5nZXM6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGb250QXR0cmlidXRlQ2hhbmdlcyYgY2hhbmdlcykK
K3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNoYW5nZXMubV92ZXJ0aWNhbEFsaWduKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFuZ2VzLm1f
YmFja2dyb3VuZENvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShjaGFuZ2VzLm1fZm9yZWdyb3VuZENvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFuZ2VzLm1fc2hhZG93KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFuZ2VzLm1fc3Ry
aWtlVGhyb3VnaCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY2hhbmdlcy5tX3VuZGVybGluZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY2hhbmdlcy5tX2ZvbnRDaGFuZ2VzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OlZlcnRpY2FsQWxpZ25DaGFuZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAorICAgICAgICBXZWJDb3JlOjpWZXJ0aWNhbEFsaWduQ2hhbmdlLAorICAgICAgICBXZWJDb3Jl
OjpWZXJ0aWNhbEFsaWduQ2hhbmdlOjpTdXBlcnNjcmlwdCwKKyAgICAgICAgV2ViQ29yZTo6VmVy
dGljYWxBbGlnbkNoYW5nZTo6QmFzZWxpbmUsCisgICAgICAgIFdlYkNvcmU6OlZlcnRpY2FsQWxp
Z25DaGFuZ2U6OlN1YnNjcmlwdAorICAgID47Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCmluZGV4
IDk1MWViM2EwYjQwZDkxOTljNWEyYWVhZGU2YmU3ZDE5NzY1ODllMDEuLjI2MDQ3YWI5Yjk5NmRk
ZjcyZGYzNGYxMmExMGY0MzY1NTRkNzM4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0KQEAgLTE0NCwx
MSArMTQ0LDExIEBAIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzIGNvbXB1dGVkRm9udEF0dHJpYnV0ZUNo
YW5nZXMoTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIsIGlkCiAgICAgaW50IGNvbnZlcnRlZFN1
cGVyc2NyaXB0QSA9IFtbY29udmVydGVkQXR0cmlidXRlc0Egb2JqZWN0Rm9yS2V5Ok5TU3VwZXJz
Y3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRWYWx1ZV07CiAgICAgaWYgKGNvbnZlcnRlZFN1cGVyc2Ny
aXB0QSA9PSBbW2NvbnZlcnRlZEF0dHJpYnV0ZXNCIG9iamVjdEZvcktleTpOU1N1cGVyc2NyaXB0
QXR0cmlidXRlTmFtZV0gaW50VmFsdWVdKSB7CiAgICAgICAgIGlmIChjb252ZXJ0ZWRTdXBlcnNj
cmlwdEEgPiAwKQotICAgICAgICAgICAgY2hhbmdlcy5zZXRWZXJ0aWNhbEFsaWduKFZlcnRpY2Fs
QWxpZ246OlN1cGVyKTsKKyAgICAgICAgICAgIGNoYW5nZXMuc2V0VmVydGljYWxBbGlnbihWZXJ0
aWNhbEFsaWduQ2hhbmdlOjpTdXBlcnNjcmlwdCk7CiAgICAgICAgIGVsc2UgaWYgKGNvbnZlcnRl
ZFN1cGVyc2NyaXB0QSA8IDApCi0gICAgICAgICAgICBjaGFuZ2VzLnNldFZlcnRpY2FsQWxpZ24o
VmVydGljYWxBbGlnbjo6U3ViKTsKKyAgICAgICAgICAgIGNoYW5nZXMuc2V0VmVydGljYWxBbGln
bihWZXJ0aWNhbEFsaWduQ2hhbmdlOjpTdWJzY3JpcHQpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBjaGFuZ2VzLnNldFZlcnRpY2FsQWxpZ24oVmVydGljYWxBbGlnbjo6QmFzZWxpbmUpOwor
ICAgICAgICAgICAgY2hhbmdlcy5zZXRWZXJ0aWNhbEFsaWduKFZlcnRpY2FsQWxpZ25DaGFuZ2U6
OkJhc2VsaW5lKTsKICAgICB9CiAKICAgICBpbnQgY29udmVydGVkU3RyaWtlVGhyb3VnaEEgPSBb
W2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVjdEZvcktleTpOU1N0cmlrZXRocm91Z2hTdHlsZUF0
dHJpYnV0ZU5hbWVdIGludFZhbHVlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDQ5ZjUxODBlZDMzNjAzYTQ1NGM1MWY0MDFhN2ViNzU0
ZjJmNjdkMGMuLjY2YzI4ZWJmZmNkNTIzYjcwNDVjMTVhZGIyNzU0ZjQyYTBjZDgyNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMzM1
OSw2ICszMzU5LDExIEBAIFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogICAgIF9pbXBs
LT5jaGFuZ2VGb250RnJvbUZvbnRNYW5hZ2VyKCk7CiB9CiAKKy0gKHZvaWQpY2hhbmdlQXR0cmli
dXRlczooaWQpc2VuZGVyCit7CisgICAgX2ltcGwtPmNoYW5nZUZvbnRBdHRyaWJ1dGVzRnJvbVNl
bmRlcihzZW5kZXIpOworfQorCiAtIChJQkFjdGlvbilzdGFydFNwZWFraW5nOihpZClzZW5kZXIK
IHsKICAgICBfaW1wbC0+c3RhcnRTcGVha2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggYzlmM2I4OTVjN2JhOGU3N2YwZGE2MzlmYWQyZWI5
NzFiZjczNDdkZC4uNzk2YzkyOGQwOTFjMGE2NmI5OGI0Y2UyNzIxOTU1YzRiMDNmMzJiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0zMTYsNiAr
MzE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVjb21lRWRpdGFibGUoKTsKICAgICB2b2lk
IHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkKCk7CiAgICAgdm9pZCBjaGFuZ2VGb250RnJvbUZvbnRN
YW5hZ2VyKCk7CisgICAgdm9pZCBjaGFuZ2VGb250QXR0cmlidXRlc0Zyb21TZW5kZXIoaWQpOwog
ICAgIGJvb2wgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbShpZCA8TlNWYWxpZGF0ZWRVc2VySW50
ZXJmYWNlSXRlbT4pOwogICAgIHZvaWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4
IGMyNWVkZjM0ZjY1MGFiZWVjYzUyOTQ4NWI2MzZhMzk5YzY1OWQ1OTMuLjU1MmQ2NTA1ZDI1Mzhi
ODZjNWZjZWVlNzdkOTUwYmE4YzI1YTQwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yNzM0LDYgKzI3MzQsMTYgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6dXBkYXRlRm9udFBhbmVsSWZOZWVkZWQoKQogICAgIH0KIH0KIAordm9pZCBXZWJWaWV3
SW1wbDo6Y2hhbmdlRm9udEF0dHJpYnV0ZXNGcm9tU2VuZGVyKGlkIHNlbmRlcikKK3sKKyAgICBh
dXRvJiBlZGl0b3JTdGF0ZSA9IG1fcGFnZS0+ZWRpdG9yU3RhdGUoKTsKKyAgICBpZiAoIWVkaXRv
clN0YXRlLmlzQ29udGVudEVkaXRhYmxlIHx8IGVkaXRvclN0YXRlLnNlbGVjdGlvbklzTm9uZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5jaGFuZ2VGb250QXR0cmlidXRlcyhXZWJD
b3JlOjpjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKE5TRm9udE1hbmFnZXIuc2hhcmVkRm9u
dE1hbmFnZXIsIHNlbmRlcikpOworICAgIHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkKCk7Cit9CisK
IHZvaWQgV2ViVmlld0ltcGw6OmNoYW5nZUZvbnRGcm9tRm9udE1hbmFnZXIoKQogewogICAgIGF1
dG8mIGVkaXRvclN0YXRlID0gbV9wYWdlLT5lZGl0b3JTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5NGIwNDMzZjg0ZmUwMWJmOTNlYjhhMzZiYjM1YzNh
ZmIxYjY3OTYwLi5hOThmZDcyZWVlNGJmN2EwNTA4NmI1ODVhYmJlNzNhMWQ2NjM1NWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTYyLDYgKzE2Miw3IEBAIGNs
YXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIERyYWdEYXRhOwogY2xh
c3MgRmxvYXRSZWN0OworY2xhc3MgRm9udEF0dHJpYnV0ZUNoYW5nZXM7CiBjbGFzcyBGb250Q2hh
bmdlczsKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBJbnRTaXplOwpAQCAtNjgxLDYgKzY4
Miw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbnNlcnREaWN0YXRl
ZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7CiAgICAg
dm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBj
b25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBj
aGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmKTsKICAg
ICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJik7CiAgICAgdm9pZCBmb250
QXRTZWxlY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJv
b2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggMTQ0NmFlMGQxMmYxMzViY2QyZmEyNTM4
N2EwZmJiYWE5NzlkZDMzYi4uNWQwY2VkYzA4OWZkZjkxMDYyOWVlOTY5MDI1YTczYzBjM2Y4NWQ1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CkBAIC02MjYsNiArNjI2LDE0IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphcHBsZU1haWxMaW5lc0Ns
YW1wRW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIE1hY0FwcGxpY2F0aW9uOjppc0FwcGxlTWFpbCgp
OwogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQoreworICAgIGlmICghaXNWYWxpZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2hhbmdlRm9udEF0dHJpYnV0ZXMoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFnZUlEKTsKK30KICAg
ICAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYg
Y2hhbmdlcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCBmYmFmNzgwZGIzZjhjYjc2NjljMjg1NGUyODEwNGUyZDIyMjkyM2VkLi4xNDQ5OTQ4MDI5
M2M1ZTQyZWFlZTg3Yjc1YTQzNWVlOGQxZmU1MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMzUsNiArMTM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ2FwdHVyZURldmljZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3Mg
RHJhZ0RhdGE7CitjbGFzcyBGb250QXR0cmlidXRlQ2hhbmdlczsKIGNsYXNzIEZvbnRDaGFuZ2Vz
OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKQEAgLTEzNjMsNiArMTM2NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKTsKICAgICB2
b2lkIGltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCk7CiAgICAgdm9pZCBjaGFuZ2VGb250KFdl
YkNvcmU6OkZvbnRDaGFuZ2VzJiYpOworICAgIHZvaWQgY2hhbmdlRm9udEF0dHJpYnV0ZXMoV2Vi
Q29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJik7CiAKICAgICB2b2lkIGRhdGFEZXRlY3RvcnNE
aWRQcmVzZW50VUkoV2ViQ29yZTo6UGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQpOwogICAgIHZv
aWQgZGF0YURldGVjdG9yc0RpZENoYW5nZVVJKFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpQYWdlT3Zl
cmxheUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IDcwZjIyMGRkMzc1YWE5NWE4ZDIxMGZlOGU3MTA1ZGYyMTU5
MmYxYzQuLmMzNGFmZWIxZDA4YTlhZTdkNDg3OWI0NDQ3YWUyZjdiODJiMTUyZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtMTkxLDYgKzE5MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVu
dFNlbGVjdGlvbigpCiAgICAgQ2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyBjaGFuZ2Vz
KQorICAgIENoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2Vz
IGNoYW5nZXMpCiAjZW5kaWYKIAogICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0cnVjdCBXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDhkMjBkMmVmZjA2YmM0NmIw
Y2ZjOTkxNTljOGU5ODlmNWRiM2YzODcuLjhlMjAwMmQ0ZTAzODA1MTk1NjY0OTYzMzEzNzEzYzA5
ZjNhMjk3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCkBAIC0xMTE1LDYgKzExMTUsMTMgQEAgdm9pZCBXZWJQYWdlOjpkYXRh
RGV0ZWN0b3JzRGlkSGlkZVVJKFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlEIG92ZXJsYXlJRCkK
ICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQoreworICAgIGF1dG8mIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoZnJh
bWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNoYW5nZXMuY3JlYXRlRWRpdGlu
Z1N0eWxlKCksIEVkaXRBY3Rpb25DaGFuZ2VBdHRyaWJ1dGVzLCBFZGl0b3I6OkNvbG9yRmlsdGVy
TW9kZTo6SW52ZXJ0Q29sb3IpOworfQorCiB2b2lkIFdlYlBhZ2U6OmNoYW5nZUZvbnQoV2ViQ29y
ZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMmQzZGMwOTEyNDFkNDYxYjAzN2Vm
YzI5NWVjZWE3MWRjZjMzOGNjLi5lYzAxMmQ3MGIzOWQxN2Y5YjM4ODJlMmFlMTZhZGM2MDEyZjIw
M2NhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTQgQEAKKzIwMTgtMDktMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBbV0syXSBTdXBwb3J0IGNoYW5naW5nIGF0dHJp
YnV0ZXMgZm9yIHNlbGVjdGVkIHRleHQgKHRleHQgc2hhZG93LCB1bmRlcmxpbmUsIHN0cmlrZS10
aHJvdWdoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg5MzU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDE4NTY3ND4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IEFQSSB0ZXN0IHRv
IHZlcmlmeSB0aGF0IHNvbWUgZm9udCBhdHRyaWJ1dGVzICh0ZXh0IHNoYWRvdywgdW5kZXJsaW5l
LCBhbmQgc3RyaWtlLXRocm91Z2gpIGNhbiBiZQorICAgICAgICBhZGRlZCBhbmQgcmVtb3ZlZCB1
c2luZyBOU0ZvbnRQYW5lbC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW06CisKKyAgICAgICAgQWRkIHRoZSBuZXcgQVBJIHRl
c3QuCisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFj
L05TRm9udFBhbmVsVGVzdGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21h
Yy9OU0ZvbnRQYW5lbFRlc3RpbmcubW06IEFkZGVkLgorCisgICAgICAgIEludHJvZHVjZSBhIG5l
dyBmaWxlIHRoYXQgZXh0ZW5kcyBOU0ZvbnRQYW5lbCB3aXRoIHNvbWUgYWRkaXRpb25hbCB0ZXN0
aW5nIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaW5jbHVkZXMgdGhlCisgICAgICAgIGFiaWxpdHkgdG8g
aW50ZXJhY3Qgd2l0aCB0aGUgdGV4dCBzaGFkb3cgdG9nZ2xlIGJ1dHRvbiwgY2hvb3NlIHRoZSB0
ZXh0IHNoYWRvdyBibHVyIHJhZGl1cyBhbmQgb3BhY2l0eSwgYW5kCisgICAgICAgIGNoYW5nZSB1
bmRlcmxpbmUgYW5kIHN0cmlrZS10aHJvdWdoIHN0eWxlcy4KKworICAgICAgICAoZmluZFN1YnZp
ZXdPZkNsYXNzKToKKyAgICAgICAgKGZpbmRNZW51SXRlbVdpdGhUaXRsZSk6CisgICAgICAgICgt
W05TRm9udFBhbmVsIGZvbnRFZmZlY3RzQm94XSk6CisKKyAgICAgICAgTlNGb250RWZmZWN0c0Jv
eCAoYW4gaW50ZXJuYWwgQXBwS2l0IGNsYXNzKSBpcyB0aGUgc2VuZGVyIGluIHRoZSBjYXNlIHdo
ZXJlIC1jaGFuZ2VBdHRyaWJ1dGVzOiBpcyBpbnZva2VkCisgICAgICAgIHRocm91Z2ggaW50ZXJh
Y3Rpb24gd2l0aCB0aGUgZm9udCBwYW5lbC4gVG8gc2ltdWxhdGUgdGhpcyBmb3IgdGVzdGluZywg
Z3JhYiB0aGlzIGZvbnQgZWZmZWN0cyBib3ggYW5kIHBhc3MgaXQKKyAgICAgICAgZGlyZWN0b3J5
IHRvIC1jaGFuZ2VBdHRyaWJ1dGVzOi4KKworICAgICAgICAoLVtOU0ZvbnRQYW5lbCBjaG9vc2VV
bmRlcmxpbmVNZW51SXRlbVdpdGhUaXRsZTpdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgY2hv
b3NlU3RyaWtlVGhyb3VnaE1lbnVJdGVtV2l0aFRpdGxlOl0pOgorCisgICAgICAgIFRoZSBzdXBw
b3J0ZWQgdmFsdWVzIGZvciB0aGVzZSBtZW51IGl0ZW1zIGFyZSAibm9uZSIgYW5kICJzaW5nbGUi
LCB3aGljaCBhZGRzIGEgc2luZ2xlIHVuZGVybGluZSBvcgorICAgICAgICBzdHJpa2UtdGhyb3Vn
aCB0byBzZWxlY3RlZCB0ZXh0LiBXZSBncmFiIHRoZXNlIG1lbnUgaXRlbXMgYnkgYXNraW5nIGZv
ciB0aGUgZm9udCBwYW5lbCdzIE5TVG9vbGJhciwgYW5kIGZpbmRpbmcKKyAgICAgICAgdGhlIHJl
bGV2YW50IG1lbnUgaXRlbXMgdmlhIHRvb2xiYXIgaXRlbSBpZGVudGlmaWVycy4KKworICAgICAg
ICAoLVtOU0ZvbnRQYW5lbCBfZGlkQ2hhbmdlQXR0cmlidXRlc10pOgorICAgICAgICAoLVtOU0Zv
bnRQYW5lbCBzaGFkb3dCbHVyU2xpZGVyXSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNoYWRv
d09wYWNpdHlTbGlkZXJdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgc2hhZG93VG9nZ2xlQnV0
dG9uXSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHRvZ2dsZVNoYWRvd10pOgorICAgICAgICAo
LVtOU0ZvbnRQYW5lbCBzaGFkb3dPcGFjaXR5XSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNl
dFNoYWRvd09wYWNpdHk6XSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNoYWRvd0JsdXJdKToK
KyAgICAgICAgKC1bTlNGb250UGFuZWwgc2V0U2hhZG93Qmx1cjpdKToKKyAgICAgICAgKC1bTlNG
b250UGFuZWwgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6XSk6CisKIDIwMTgtMDktMDYgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBD
YW5ub3QgY2hhbmdlIGZvbnQgc2l6ZSBhdCBzZWxlY3Rpb24gdW50aWwgZm9udCBwYW5lbCBpcyBz
aG93bgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMzY3NzdhODM1OGVjZTMyNzYxMWI3Y2U1
YjY1MmY5MmNjMWMwMzc5Li40Y2I1ZWNjYTRjNGE3MTkwY2QxZTM0ZWFjNmYxNDQxYzliN2QxNWM0
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzk0LDYgKzc5NCw3IEBACiAJCUY0MkRBNTE2
MUQ4Q0VGRTQwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDJE
QTUxNTFEOENFRkRCMDAzMzZGNDAgLyogbGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0
bWwgKi87IH07CiAJCUY0M0UzQkJGMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0M0Uz
QkJFMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5tbSAqLzsgfTsKIAkJRjQz
RTNCQzEyMERBREJDNTAwQTRFN0VEIC8qIGZpeGVkLW5hdi1iYXIuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDNFM0JDMDIwREFEQjgw
MDBBNEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovOyB9OworCQlGNDQyODUxRDIxNDBERjI5
MDBDQ0RBMjIgLyogTlNGb250UGFuZWxUZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Mjg1MUMyMTQwREYyOTAwQ0NEQTIyIC8qIE5TRm9u
dFBhbmVsVGVzdGluZy5tbSAqLzsgfTsKIAkJRjQ0NTFDNzYxRUI4RkQ4OTAwMjBDNURBIC8qIHR3
by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0NTFDNzUxRUI4RkQ3QzAwMjBDNURBIC8q
IHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgKi87IH07CiAJCUY0NEM3OUZGMjBG
OUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRDNzlGRTIwRjlFODcxMDAxNDQ3OEMg
LyogUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tICovOyB9OwogCQlGNDRDN0EwMDIwRjlFRUJGMDAx
NDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEM3OUZCMjBGOUU1MEMwMDE0NDc4QyAvKiBQYXJz
ZXJZaWVsZFRva2VuUGx1Z0luLm1tICovOyB9OwpAQCAtMjAzNSw2ICsyMDM2LDggQEAKIAkJRjQy
REE1MTUxRDhDRUZEQjAwMzM2RjQwIC8qIGxhcmdlLWlucHV0LWZpZWxkLWZvY3VzLW9ubG9hZC5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBuYW1lID0gImxhcmdlLWlucHV0LWZpZWxkLWZvY3Vz
LW9ubG9hZC5odG1sIjsgcGF0aCA9ICJUZXN0cy9XZWJLaXRDb2NvYS9sYXJnZS1pbnB1dC1maWVs
ZC1mb2N1cy1vbmxvYWQuaHRtbCI7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJRjQz
RTNCQkUyMERBREExRTAwQTRFN0VEIC8qIFdLU2Nyb2xsVmlld1Rlc3RzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tTY3JvbGxWaWV3VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0M0UzQkMwMjBEQURCODAwMEE0RTdFRCAvKiBmaXhlZC1uYXYtYmFyLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiZml4ZWQtbmF2LWJhci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjQ0Mjg1MUIyMTQwREYyOTAwQ0NEQTIyIC8qIE5TRm9udFBhbmVsVGVzdGluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOU0ZvbnRQYW5lbFRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjQ0Mjg1MUMyMTQwREYyOTAwQ0NEQTIyIC8qIE5TRm9udFBhbmVsVGVzdGluZy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5TRm9udFBhbmVsVGVzdGluZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0NTFDNzUxRUI4RkQ3QzAwMjBDNURBIC8qIHR3by1wYXJhZ3Jh
cGgtY29udGVudGVkaXRhYmxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidHdv
LXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0NEM3OUZCMjBGOUU1MEMwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0lu
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0Qzc5RkQyMEY5RTg3MTAwMTQ0NzhDIC8qIFBh
cnNlcllpZWxkVG9rZW5UZXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJZaWVsZFRva2VuVGVz
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNDksNiArMzE1Miw4IEBACiAJ
CQkJMUFFREUyMjQxM0U1RTdBMDAwRTYyRkU4IC8qIEluamVjdGVkQnVuZGxlQ29udHJvbGxlck1h
Yy5tbSAqLywKIAkJCQlDMDgxMjI0MDEzRkMxNzI0MDBEQzM5QUUgLyogSmF2YVNjcmlwdFRlc3RN
YWMubW0gKi8sCiAJCQkJMkU3NzY1Q0UxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gKi8s
CisJCQkJRjQ0Mjg1MUIyMTQwREYyOTAwQ0NEQTIyIC8qIE5TRm9udFBhbmVsVGVzdGluZy5oICov
LAorCQkJCUY0NDI4NTFDMjE0MERGMjkwMENDREEyMiAvKiBOU0ZvbnRQYW5lbFRlc3RpbmcubW0g
Ki8sCiAJCQkJQkMxMzE4ODQxMTcxMTRCNjAwQjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFj
Lm1tICovLAogCQkJCUJDOTA5NTVDMTI1NTQ4QUEwMDA4Mzc1NiAvKiBQbGF0Zm9ybVdlYlZpZXdN
YWMubW0gKi8sCiAJCQkJQzA4MTIyNDMxM0ZDMTlFQzAwREMzOUFFIC8qIFN5bnRoZXRpY0JhY2tp
bmdTY2FsZUZhY3RvcldpbmRvdy5oICovLApAQCAtMzg4MCw2ICszODg1LDcgQEAKIAkJCQlDRDJE
MEQxQTIxMzQ2NTU2MDAxOEM3ODQgLyogTm93UGxheWluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJFQ0ZGNTU1MUQ5QjEyRjgwMEI1NTM5NCAvKiBOb3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUExMEYwNDdFMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5h
Z2VyRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0Mjg1MUQyMTQwREYyOTAwQ0NEQTIy
IC8qIE5TRm9udFBhbmVsVGVzdGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3QTIyQUE3MURD
QUEyNzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0ZXJDcmFz
aC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI1MUE0MTFBRjYwMDQ0N0M0QyAvKiBPcGVu
QW5kQ2xvc2VXaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRUJDQTEyRjFFM0E2NjAxMDBD
NzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVz
dHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3RzLm1t
CmluZGV4IGQxNWEwYzM1YTY5OGQxZDYwMTc0NzM3ZWFjNjI5M2NkOWM4M2NjZDguLjIyYmY4N2M2
YWJlNWIwY2MwMzMxOTA2NmJiMDFiMGNlMTBhNzE4Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQpAQCAtMjcsNiArMjcsOCBAQAog
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJBcHBLaXRT
UEkuaCIKKyNpbXBvcnQgIk5TRm9udFBhbmVsVGVzdGluZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+CkBAIC0xNzgsNiArMTgwLDc0IEBAIFRFU1QoRm9udE1hbmFnZXJU
ZXN0cywgQ2hhbmdlRm9udFdpdGhQYW5lbCkKICAgICBFWFBFQ1RfRVEobGFyZ2VJdGFsaWNMaWdo
dEF2ZW5pckZvbnQsIGZvbnRNYW5hZ2VyLnNlbGVjdGVkRm9udCk7CiB9CiAKK1RFU1QoRm9udE1h
bmFnZXJUZXN0cywgQ2hhbmdlQXR0cmlidXRlc1dpdGhGb250RWZmZWN0c0JveCkKK3sKKyAgICBO
U0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5h
Z2VyXTsKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRm9udE1hbmFnZXJUZXN0aW5nKGZv
bnRNYW5hZ2VyKTsKKworICAgIE5TRm9udFBhbmVsICpmb250UGFuZWwgPSBbZm9udE1hbmFnZXIg
Zm9udFBhbmVsOllFU107CisgICAgW2ZvbnRQYW5lbCBzZXRJc1Zpc2libGU6WUVTXTsKKworICAg
IGF1dG8gdGV4dERlY29yYXRpb25zQXJvdW5kU2VsZWN0aW9uID0gW3dlYlZpZXddIHsKKyAgICAg
ICAgTlNTdHJpbmcgKmRlY29yYXRpb25zQXRTdGFydCA9IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlB
dFNlbGVjdGlvblN0YXJ0OkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdOwor
ICAgICAgICBOU1N0cmluZyAqZGVjb3JhdGlvbnNBdEVuZCA9IFt3ZWJWaWV3IHN0eWxlUHJvcGVy
dHlBdFNlbGVjdGlvbkVuZDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXTsK
KyAgICAgICAgaWYgKFtkZWNvcmF0aW9uc0F0U3RhcnQgaXNFcXVhbFRvU3RyaW5nOmRlY29yYXRp
b25zQXRFbmRdIHx8IGRlY29yYXRpb25zQXRTdGFydCA9PSBkZWNvcmF0aW9uc0F0RW5kKQorICAg
ICAgICAgICAgcmV0dXJuIGRlY29yYXRpb25zQXRTdGFydDsKKyAgICAgICAgcmV0dXJuIFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiKCVALCAlQCkiLCBkZWNvcmF0aW9uc0F0U3RhcnQsIGRl
Y29yYXRpb25zQXRFbmRdOworICAgIH07CisKKyAgICBhdXRvIHRleHRTaGFkb3dBcm91bmRTZWxl
Y3Rpb24gPSBbd2ViVmlld10geworICAgICAgICBOU1N0cmluZyAqc2hhZG93QXRTdGFydCA9IFt3
ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1zaGFkb3ciXTsKKyAg
ICAgICAgTlNTdHJpbmcgKnNoYWRvd0F0RW5kID0gW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2Vs
ZWN0aW9uRW5kOkAidGV4dC1zaGFkb3ciXTsKKyAgICAgICAgaWYgKFtzaGFkb3dBdFN0YXJ0IGlz
RXF1YWxUb1N0cmluZzpzaGFkb3dBdEVuZF0gfHwgc2hhZG93QXRTdGFydCA9PSBzaGFkb3dBdEVu
ZCkKKyAgICAgICAgICAgIHJldHVybiBzaGFkb3dBdFN0YXJ0OworICAgICAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIoJUAsICVAKSIsIHNoYWRvd0F0U3RhcnQsIHNoYWRv
d0F0RW5kXTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgc2VsZWN0V29yZDpuaWxdOworICAgIFtm
b250UGFuZWwgY2hvb3NlVW5kZXJsaW5lTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoImZvbyIsIFt3ZWJWaWV3IHNlbGVjdGVkVGV4dF0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgidW5kZXJsaW5lIiwgdGV4dERlY29yYXRpb25zQXJvdW5kU2VsZWN0aW9u
KCkpOworCisgICAgW2ZvbnRQYW5lbCBjaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdpdGhUaXRsZTpA
Im5vbmUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCB0ZXh0RGVjb3JhdGlvbnNBcm91
bmRTZWxlY3Rpb24oKSk7CisKKyAgICBbd2ViVmlldyBzZWxlY3ROZXh0V29yZF07CisgICAgW2Zv
bnRQYW5lbCBjaG9vc2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoImJhciIsIFt3ZWJWaWV3IHNlbGVjdGVkVGV4dF0pOworICAg
IEVYUEVDVF9XS19TVFJFUSgibGluZS10aHJvdWdoIiwgdGV4dERlY29yYXRpb25zQXJvdW5kU2Vs
ZWN0aW9uKCkpOworCisgICAgW2ZvbnRQYW5lbCBjaG9vc2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1X
aXRoVGl0bGU6QCJub25lIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub25lIiwgdGV4dERlY29y
YXRpb25zQXJvdW5kU2VsZWN0aW9uKCkpOworCisgICAgW3dlYlZpZXcgc2VsZWN0TmV4dFdvcmRd
OworICAgIGZvbnRQYW5lbC5zaGFkb3dCbHVyID0gODsKKyAgICBmb250UGFuZWwuc2hhZG93T3Bh
Y2l0eSA9IDE7CisgICAgW2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOworICAgIEVYUEVDVF9XS19T
VFJFUSgiYmF6IiwgW3dlYlZpZXcgc2VsZWN0ZWRUZXh0XSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCJyZ2IoMCwgMCwgMCkgMHB4IDFweCA4cHgiLCB0ZXh0U2hhZG93QXJvdW5kU2VsZWN0aW9uKCkp
OworCisgICAgW2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOworICAgIEVYUEVDVF9XS19TVFJFUSgi
bm9uZSIsIHRleHRTaGFkb3dBcm91bmRTZWxlY3Rpb24oKSk7CisKKyAgICAvLyBOb3cgY29tYmlu
ZSBhbGwgdGhyZWUgYXR0cmlidXRlcyB0b2dldGhlci4KKyAgICBbd2ViVmlldyBzZWxlY3RBbGw6
bmlsXTsKKyAgICBmb250UGFuZWwuc2hhZG93Qmx1ciA9IDU7CisgICAgZm9udFBhbmVsLnNoYWRv
d09wYWNpdHkgPSAwLjI7CisgICAgW2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOworICAgIFtmb250
UGFuZWwgY2hvb3NlVW5kZXJsaW5lTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsKKyAgICBb
Zm9udFBhbmVsIGNob29zZVN0cmlrZVRocm91Z2hNZW51SXRlbVdpdGhUaXRsZTpAInNpbmdsZSJd
OworICAgIEVYUEVDVF9XS19TVFJFUSgiZm9vIGJhciBiYXoiLCBbd2ViVmlldyBzZWxlY3RlZFRl
eHRdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYmEoMCwgMCwgMCwgMC4yKSAwcHggMXB4IDVw
eCIsIHRleHRTaGFkb3dBcm91bmRTZWxlY3Rpb24oKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ1
bmRlcmxpbmUgbGluZS10aHJvdWdoIiwgdGV4dERlY29yYXRpb25zQXJvdW5kU2VsZWN0aW9uKCkp
OworCisgICAgW2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOworICAgIFtmb250UGFuZWwgY2hvb3Nl
VW5kZXJsaW5lTWVudUl0ZW1XaXRoVGl0bGU6QCJub25lIl07CisgICAgW2ZvbnRQYW5lbCBjaG9v
c2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1XaXRoVGl0bGU6QCJub25lIl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJub25lIiwgdGV4dFNoYWRvd0Fyb3VuZFNlbGVjdGlvbigpKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIm5vbmUiLCB0ZXh0RGVjb3JhdGlvbnNBcm91bmRTZWxlY3Rpb24oKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykg
JiYgV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
LmgKaW5kZXggNjEzZGZhZThhYTFkZmY3NjRjNzczY2ZjNTAxNGU1YzNlMTYzODE2Ni4uNWYxNjlk
OWI0ZDc0ZGE1NzEzZTNlYTNjODE4NWEyYTcyYThhZDU5MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTM3LDYgKzM3LDcgQEAKIEBpbnRlcmZhY2UgV0tX
ZWJWaWV3IChBZGRpdGlvbmFsRGVjbGFyYXRpb25zKQogI2lmIFBMQVRGT1JNKE1BQykKIC0gKHZv
aWQpcGFzdGU6KGlkKXNlbmRlcjsKKy0gKHZvaWQpY2hhbmdlQXR0cmlidXRlczooaWQpc2VuZGVy
OwogI2VuZGlmCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05T
Rm9udFBhbmVsVGVzdGluZy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvTlNGb250UGFuZWxU
ZXN0aW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIwNGQ0OGYzZTk4NWZhMjIxZGE2MWM2OWRhMWJlYjI4NjE0
MWQ5YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBh
bmVsVGVzdGluZy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8QXBwS2l0
L0FwcEtpdC5oPgorCitAaW50ZXJmYWNlIE5TRm9udFBhbmVsIChUZXN0V2ViS2l0QVBJKQorCitA
cHJvcGVydHkgKG5vbmF0b21pYykgZG91YmxlIHNoYWRvd09wYWNpdHk7CitAcHJvcGVydHkgKG5v
bmF0b21pYykgZG91YmxlIHNoYWRvd0JsdXI7CisKKy0gKHZvaWQpdG9nZ2xlU2hhZG93OworLSAo
dm9pZCljaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdpdGhUaXRsZTooTlNTdHJpbmcgKilpdGVtVGl0
bGU7CistICh2b2lkKWNob29zZVN0cmlrZVRocm91Z2hNZW51SXRlbVdpdGhUaXRsZTooTlNTdHJp
bmcgKilpdGVtVGl0bGU7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRlc3RpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L21hYy9OU0ZvbnRQYW5lbFRlc3RpbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFjMWFiYjEwMjEzMTg4OTAz
MTQ5ZmU4ZWE2YjBjZjU3NmZkZmYxMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5tbQpAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOU0ZvbnRQYW5lbFRlc3Rpbmcu
aCIKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CisKK0BpbnRlcmZhY2UgTlNCb3ggKE5TRm9udEVmZmVjdHNCb3gpCisvLyBJ
bnZva2VkIGFmdGVyIGEgZm9udCBlZmZlY3QgKGUuZy4gc2luZ2xlIHN0cmlrZS10aHJvdWdoKSBp
cyBjaG9zZW4uCistICh2b2lkKV9vcGVuRWZmZWN0c0J1dHRvbjooaWQpc2VuZGVyOworQGVuZAor
CitzdGF0aWMgTlNWaWV3ICpmaW5kU3Vidmlld09mQ2xhc3MoTlNWaWV3ICp2aWV3LCBDbGFzcyB0
YXJnZXRDbGFzcykKK3sKKyAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczp0YXJnZXRDbGFzc10p
CisgICAgICAgIHJldHVybiB2aWV3OworCisgICAgZm9yIChOU1ZpZXcgKnN1YnZpZXcgaW4gdmll
dy5zdWJ2aWV3cykgeworICAgICAgICBpZiAoTlNWaWV3ICp0YXJnZXRWaWV3ID0gZmluZFN1YnZp
ZXdPZkNsYXNzKHN1YnZpZXcsIHRhcmdldENsYXNzKSkKKyAgICAgICAgICAgIHJldHVybiB0YXJn
ZXRWaWV3OworICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorCitzdGF0aWMgTlNNZW51SXRlbSAq
ZmluZE1lbnVJdGVtV2l0aFRpdGxlKE5TUG9wVXBCdXR0b24gKmJ1dHRvbiwgTlNTdHJpbmcgKnRp
dGxlKQoreworICAgIGZvciAoTlNNZW51SXRlbSAqaXRlbSBpbiBidXR0b24uaXRlbUFycmF5KSB7
CisgICAgICAgIGlmIChbaXRlbS50aXRsZS5sb3dlcmNhc2VTdHJpbmcgaXNFcXVhbFRvU3RyaW5n
OnRpdGxlLmxvd2VyY2FzZVN0cmluZ10pCisgICAgICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9
CisgICAgcmV0dXJuIG5pbDsKK30KKworQGltcGxlbWVudGF0aW9uIE5TRm9udFBhbmVsIChUZXN0
V2ViS2l0QVBJKQorCistIChOU0JveCAqKWZvbnRFZmZlY3RzQm94Cit7CisgICAgdm9pZCogcmVz
dWx0ID0gbnVsbHB0cjsKKyAgICBvYmplY3RfZ2V0SW5zdGFuY2VWYXJpYWJsZShzZWxmLCAiX2Zv
bnRFZmZlY3RzQm94IiwgJnJlc3VsdCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TQm94ICo+
KHJlc3VsdCk7Cit9CisKKy0gKHZvaWQpY2hvb3NlVW5kZXJsaW5lTWVudUl0ZW1XaXRoVGl0bGU6
KE5TU3RyaW5nICopaXRlbVRpdGxlCit7CisgICAgTlNQb3BVcEJ1dHRvbiAqYnV0dG9uID0gKE5T
UG9wVXBCdXR0b24gKilbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRlbnRpZmllcjpAIk5TRm9udFBh
bmVsVW5kZXJsaW5lVG9vbGJhckl0ZW0iXS52aWV3OworICAgIFtidXR0b24gc2VsZWN0SXRlbTpm
aW5kTWVudUl0ZW1XaXRoVGl0bGUoYnV0dG9uLCBpdGVtVGl0bGUpXTsKKyAgICBbc2VsZi5mb250
RWZmZWN0c0JveCBfb3BlbkVmZmVjdHNCdXR0b246YnV0dG9uXTsKKyAgICBbc2VsZiBfZGlkQ2hh
bmdlQXR0cmlidXRlc107Cit9CisKKy0gKHZvaWQpY2hvb3NlU3RyaWtlVGhyb3VnaE1lbnVJdGVt
V2l0aFRpdGxlOihOU1N0cmluZyAqKWl0ZW1UaXRsZQoreworICAgIE5TUG9wVXBCdXR0b24gKmJ1
dHRvbiA9IChOU1BvcFVwQnV0dG9uICopW3NlbGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6
QCJOU0ZvbnRQYW5lbFN0cmlrZXRocm91Z2hUb29sYmFySXRlbSJdLnZpZXc7CisgICAgW2J1dHRv
biBzZWxlY3RJdGVtOmZpbmRNZW51SXRlbVdpdGhUaXRsZShidXR0b24sIGl0ZW1UaXRsZSldOwor
ICAgIFtzZWxmLmZvbnRFZmZlY3RzQm94IF9vcGVuRWZmZWN0c0J1dHRvbjpidXR0b25dOworICAg
IFtzZWxmIF9kaWRDaGFuZ2VBdHRyaWJ1dGVzXTsKK30KKworLSAodm9pZClfZGlkQ2hhbmdlQXR0
cmlidXRlcworeworICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0gTlNGb250TWFuYWdl
ci5zaGFyZWRGb250TWFuYWdlcjsKKyAgICBpZiAoc2VsZiA9PSBbZm9udE1hbmFnZXIgZm9udFBh
bmVsOk5PXSkKKyAgICAgICAgW2ZvbnRNYW5hZ2VyLnRhcmdldCBjaGFuZ2VBdHRyaWJ1dGVzOnNl
bGYuZm9udEVmZmVjdHNCb3hdOworfQorCistIChOU1NsaWRlciAqKXNoYWRvd0JsdXJTbGlkZXIK
K3sKKyAgICByZXR1cm4gKE5TU2xpZGVyICopZmluZFN1YnZpZXdPZkNsYXNzKFtzZWxmIF90b29s
YmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxTaGFkb3dCbHVyVG9vbGJhckl0ZW0i
XS52aWV3LCBOU1NsaWRlci5jbGFzcyk7Cit9CisKKy0gKE5TU2xpZGVyICopc2hhZG93T3BhY2l0
eVNsaWRlcgoreworICAgIHJldHVybiAoTlNTbGlkZXIgKilmaW5kU3Vidmlld09mQ2xhc3MoW3Nl
bGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6QCJOU0ZvbnRQYW5lbFNoYWRvd09wYWNpdHlU
b29sYmFySXRlbSJdLnZpZXcsIE5TU2xpZGVyLmNsYXNzKTsKK30KKworLSAoTlNCdXR0b24gKilz
aGFkb3dUb2dnbGVCdXR0b24KK3sKKyAgICByZXR1cm4gKE5TQnV0dG9uICopW3NlbGYgX3Rvb2xi
YXJJdGVtV2l0aElkZW50aWZpZXI6QCJOU0ZvbnRQYW5lbFNoYWRvd1RvZ2dsZVRvb2xiYXJJdGVt
Il0udmlldzsKK30KKworLSAodm9pZCl0b2dnbGVTaGFkb3cKK3sKKyAgICBOU0J1dHRvbiAqc2hh
ZG93VG9nZ2xlQnV0dG9uID0gc2VsZi5zaGFkb3dUb2dnbGVCdXR0b247CisgICAgc2hhZG93VG9n
Z2xlQnV0dG9uLnN0YXRlID0gc2hhZG93VG9nZ2xlQnV0dG9uLnN0YXRlID09IE5TQ29udHJvbFN0
YXRlVmFsdWVPZmYgPyBOU0NvbnRyb2xTdGF0ZVZhbHVlT24gOiBOU0NvbnRyb2xTdGF0ZVZhbHVl
T2ZmOworICAgIFtzZWxmIF9kaWRDaGFuZ2VBdHRyaWJ1dGVzXTsKK30KKworLSAoZG91YmxlKXNo
YWRvd09wYWNpdHkKK3sKKyAgICByZXR1cm4gc2VsZi5zaGFkb3dPcGFjaXR5U2xpZGVyLmRvdWJs
ZVZhbHVlOworfQorCistICh2b2lkKXNldFNoYWRvd09wYWNpdHk6KGRvdWJsZSlzaGFkb3dPcGFj
aXR5Cit7CisgICAgc2VsZi5zaGFkb3dPcGFjaXR5U2xpZGVyLmRvdWJsZVZhbHVlID0gc2hhZG93
T3BhY2l0eTsKKyAgICBpZiAoc2VsZi5zaGFkb3dUb2dnbGVCdXR0b24uc3RhdGUgPT0gTlNDb250
cm9sU3RhdGVWYWx1ZU9uKQorICAgICAgICBbc2VsZiBfZGlkQ2hhbmdlQXR0cmlidXRlc107Cit9
CisKKy0gKGRvdWJsZSlzaGFkb3dCbHVyCit7CisgICAgcmV0dXJuIHNlbGYuc2hhZG93Qmx1clNs
aWRlci5kb3VibGVWYWx1ZTsKK30KKworLSAodm9pZClzZXRTaGFkb3dCbHVyOihkb3VibGUpc2hh
ZG93Qmx1cgoreworICAgIHNlbGYuc2hhZG93Qmx1clNsaWRlci5kb3VibGVWYWx1ZSA9IHNoYWRv
d0JsdXI7CisgICAgaWYgKHNlbGYuc2hhZG93VG9nZ2xlQnV0dG9uLnN0YXRlID09IE5TQ29udHJv
bFN0YXRlVmFsdWVPbikKKyAgICAgICAgW3NlbGYgX2RpZENoYW5nZUF0dHJpYnV0ZXNdOworfQor
CistIChOU1Rvb2xiYXJJdGVtICopX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6KE5TU3RyaW5n
ICopaXRlbUlkZW50aWZpZXIKK3sKKyAgICBmb3IgKE5TVG9vbGJhckl0ZW0gKml0ZW0gaW4gc2Vs
Zi50b29sYmFyLml0ZW1zKSB7CisgICAgICAgIGlmIChbaXRlbS5pdGVtSWRlbnRpZmllciBpc0Vx
dWFsVG9TdHJpbmc6aXRlbUlkZW50aWZpZXJdKQorICAgICAgICAgICAgcmV0dXJuIGl0ZW07Cisg
ICAgfQorICAgIHJldHVybiBuaWw7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykgJiYgV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349064</attachid>
            <date>2018-09-06 13:38:41 -0700</date>
            <delta_ts>2018-09-06 17:05:39 -0700</delta_ts>
            <desc>Fix build for SDK &lt; macOS 10.13</desc>
            <filename>bug-189356-20180906133840.patch</filename>
            <type>text/plain</type>
            <size>34923</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM3MGE4OWFmZTA3YWU2
ODNmNTM3OGE3N2VkZjlmNjAyNDU5NGMyYy4uYmI3YzEwMTcyNmVmYjE2Y2FjNjdmZGZiMmNhNGJh
OWQ3NWJlYjI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTA5LTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gW1dL
Ml0gU3VwcG9ydCBjaGFuZ2luZyBhdHRyaWJ1dGVzIGZvciBzZWxlY3RlZCB0ZXh0ICh0ZXh0IHNo
YWRvdywgdW5kZXJsaW5lLCBzdHJpa2UtdGhyb3VnaCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTM1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDQxODU2NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHN1cHBvcnQgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyBGb250QXR0cmlidXRlQ2hh
bmdlcywgc28gdGhhdCB3ZSBjYW4gc2VuZCBGb250QXR0cmlidXRlQ2hhbmdlcyBvdmVyIElQQyBp
bgorICAgICAgICBXZWJLaXQyLiBBbHNvIGNoYW5nZSBtX3ZlcnRpY2FsQWxpZ24gdG8gYSBuZXcg
VmVydGljYWxBbGlnbkNoYW5nZSBlbnVtIHR5cGUsIHNvIHRoYXQgaXQncyBubyBsb25nZXIgdGll
ZCB0byB0aGUKKyAgICAgICAgQ1NTIHByb3BlcnR5IHZhbHVlcyBvZiAidmVydGljYWwtYWxpZ24i
LCBhbmQgY2FuIGJlIGVuY29kZWQvZGVjb2RlZCBzZXBhcmF0ZWx5IGZyb20gVmVydGljYWxBbGln
biBpbgorICAgICAgICBSZW5kZXJTdHlsZUNvbnN0YW50cy4KKworICAgICAgICBUZXN0OiBGb250
TWFuYWdlclRlc3RzLkNoYW5nZUF0dHJpYnV0ZXNXaXRoRm9udEVmZmVjdHNCb3gKKworICAgICAg
ICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZUNoYW5nZXM6OmNyZWF0ZUVkaXRpbmdTdHlsZSBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEF0dHJpYnV0ZUNoYW5nZXM6OnNldFZlcnRpY2FsQWxpZ24pOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFNoYWRvdzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRTaGFkb3c6
OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjpkZWNvZGUp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVkRm9udEF0dHJpYnV0ZUNoYW5nZXMpOgorCiAyMDE4
LTA5LTA2ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBHcm91
cCBvcHRpb25zIG9mIHNjcm9sbFJlY3RUb1Zpc2libGUgaW50byBhIHN0cnVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBmZjM1NGIwYTA4ZDU5ZmEyMTk1OWIwZGZkY2E4ODJhNmFmYjA0MTRlLi5mYzhhZGJjODg4Nzk5
ZjNkMTEyNjg1Y2U2NGYzZmQxZjg1Mjk1NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisy
MDE4LTA5LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFttYWNPU10gW1dLMl0gU3VwcG9ydCBjaGFuZ2luZyBhdHRyaWJ1dGVzIGZvciBzZWxlY3Rl
ZCB0ZXh0ICh0ZXh0IHNoYWRvdywgdW5kZXJsaW5lLCBzdHJpa2UtdGhyb3VnaCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTM1NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDQxODU2NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IC1bV0tXZWJWaWV3IGNoYW5nZUF0dHJpYnV0ZXM6
XSwgc28gdGhhdCBXS1dlYlZpZXcgY2FuIGNhcnJ5IG91dCBtb3JlIHR5cGVzIG9mIGZvbnQgc3R5
bGUgY2hhbmdlcyB2aWEKKyAgICAgICAgTlNGb250UGFuZWwuIFRoaXMgcGF0Y2ggbWFrZXMgaXQg
cG9zc2libGUgdG8gKDEpIGNoYW5nZSB0ZXh0IHNoYWRvdywgKDIpIGFkZCBvciByZW1vdmUgc3Ry
aWtlLXRocm91Z2gsIGFuZCAoMykKKyAgICAgICAgYWRkIG9yIHJlbW92ZSB1bmRlcmxpbmVzIGZy
b20gc2VsZWN0ZWQgdGV4dCB1c2luZyB0aGUgZm9udCBwYW5lbC4KKworICAgICAgICBUaGlzIGJ1
aWxkcyBvbiB0aGUgbWVjaGFuaXNtcyBpbnRyb2R1Y2VkIGluIHIyMzU3NDggdG8gY29tcHV0ZSBm
b250IGF0dHJpYnV0ZSBjaGFuZ2VzIGluIHRoZSBVSSBwcm9jZXNzIGFuZAorICAgICAgICBwcm9w
YWdhdGUgdGhpcyBpbmZvcm1hdGlvbiB0byB0aGUgd2ViIHByb2Nlc3MsIHdoZXJlIHdlJ3JlIGFi
bGUgdG8gY3JlYXRlIGFuZCBhcHBseSBhbiBFZGl0aW5nU3R5bGUgdG8gdGhlCisgICAgICAgIGN1
cnJlbnQgc2VsZWN0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBjaGFuZ2VBdHRyaWJ1dGVzOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNoYW5n
ZUZvbnRBdHRyaWJ1dGVzRnJvbVNlbmRlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCisgICAgICAgIEFkZCBib2lsZXJwbGF0ZSBJ
UEMgc3VwcG9ydC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMpOgor
CiAyMDE4LTA5LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPU10gQ2Fubm90IGNoYW5nZSBmb250IHNpemUgYXQgc2VsZWN0aW9uIHVudGls
IGZvbnQgcGFuZWwgaXMgc2hvd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Rm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0
cmlidXRlQ2hhbmdlcy5jcHAKaW5kZXggZWMzZjhmYzZiYjZiODI4MWNlN2IyYzA2YjE4MjRjODVh
YzRhNDA2OS4uNDBiM2Q2MmFiNjBlZWY1ZjVhOWI1Yzc2N2RmNWMwNmI0ODRmYzM1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKQEAgLTEx
MiwxNCArMTEyLDE5IEBAIFJlZjxFZGl0aW5nU3R5bGU+IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjpj
cmVhdGVFZGl0aW5nU3R5bGUoKSBjb25zdAogICAgIH0KIAogICAgIGlmIChtX3ZlcnRpY2FsQWxp
Z24pIHsKLSAgICAgICAgaWYgKCptX3ZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6U3Vw
ZXIpCisgICAgICAgIHN3aXRjaCAoKm1fdmVydGljYWxBbGlnbikgeworICAgICAgICBjYXNlIFZl
cnRpY2FsQWxpZ25DaGFuZ2U6OlN1cGVyc2NyaXB0OgogICAgICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgQ1NTVmFsdWVTdXBlcik7Ci0gICAgICAg
IGVsc2UgaWYgKCptX3ZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6U3ViKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbkNoYW5nZTo6U3Vic2NyaXB0
OgogICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VmVydGljYWxBbGln
biwgQ1NTVmFsdWVTdWIpOwotICAgICAgICBlbHNlIGlmICgqbV92ZXJ0aWNhbEFsaWduID09IFZl
cnRpY2FsQWxpZ246OkJhc2VsaW5lKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VmVydGljYWxBbGlnbkNoYW5nZTo6QmFzZWxpbmU6CiAgICAgICAgICAgICBzdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCBDU1NWYWx1ZUJhc2VsaW5lKTsKLSAgICAg
ICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGF1dG8gZWRp
dGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoc3R5bGUucHRyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oCmluZGV4IGI5N2ZkZTgwOWFm
NTM5Y2MwNGNkYzI3MThjNTE5YWM0ZGE5YTIyNDUuLmNiNjY3YjVjNTBlY2UwMDVlYmUwOTRkNWIx
YjFlOGU2ZTFjNjEwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0
dHJpYnV0ZUNoYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1
dGVDaGFuZ2VzLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
Q29sb3IuaCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgPHd0
Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIApAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBFZGl0aW5nU3R5bGU7CiBjbGFzcyBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOwogCitlbnVtIGNs
YXNzIFZlcnRpY2FsQWxpZ25DaGFuZ2UgOiB1aW50OF90IHsgU3VwZXJzY3JpcHQsIEJhc2VsaW5l
LCBTdWJzY3JpcHQgfTsKKwogY2xhc3MgRm9udENoYW5nZXMgewogcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTYyLDYg
KzY0LDkgQEAgcHJpdmF0ZToKIH07CiAKIHN0cnVjdCBGb250U2hhZG93IHsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBGb250U2hhZG93
Jik7CisKICAgICBDb2xvciBjb2xvcjsKICAgICBkb3VibGUgd2lkdGggeyAwIH07CiAgICAgZG91
YmxlIGhlaWdodCB7IDAgfTsKQEAgLTcwLDcgKzc1LDEwIEBAIHN0cnVjdCBGb250U2hhZG93IHsK
IAogY2xhc3MgRm9udEF0dHJpYnV0ZUNoYW5nZXMgewogcHVibGljOgotICAgIHZvaWQgc2V0VmVy
dGljYWxBbGlnbihWZXJ0aWNhbEFsaWduIGFsaWduKSB7IG1fdmVydGljYWxBbGlnbiA9IGFsaWdu
OyB9CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiwgRm9udEF0dHJpYnV0ZUNoYW5nZXMmKTsKKworICAgIHZvaWQgc2V0VmVydGljYWxBbGln
bihWZXJ0aWNhbEFsaWduQ2hhbmdlIGFsaWduKSB7IG1fdmVydGljYWxBbGlnbiA9IGFsaWduOyB9
CiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fYmFj
a2dyb3VuZENvbG9yID0gY29sb3I7IH0KICAgICB2b2lkIHNldEZvcmVncm91bmRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpIHsgbV9mb3JlZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogICAgIHZvaWQg
c2V0U2hhZG93KGNvbnN0IEZvbnRTaGFkb3cmIHNoYWRvdykgeyBtX3NoYWRvdyA9IHNoYWRvdzsg
fQpAQCAtODEsNyArODksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEVkaXRp
bmdTdHlsZT4gY3JlYXRlRWRpdGluZ1N0eWxlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgc3Rk
OjpvcHRpb25hbDxWZXJ0aWNhbEFsaWduPiBtX3ZlcnRpY2FsQWxpZ247CisgICAgc3RkOjpvcHRp
b25hbDxWZXJ0aWNhbEFsaWduQ2hhbmdlPiBtX3ZlcnRpY2FsQWxpZ247CiAgICAgc3RkOjpvcHRp
b25hbDxDb2xvcj4gbV9iYWNrZ3JvdW5kQ29sb3I7CiAgICAgc3RkOjpvcHRpb25hbDxDb2xvcj4g
bV9mb3JlZ3JvdW5kQ29sb3I7CiAgICAgc3RkOjpvcHRpb25hbDxGb250U2hhZG93PiBtX3NoYWRv
dzsKQEAgLTEyMiw0ICsxMzAsNzIgQEAgYm9vbCBGb250Q2hhbmdlczo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIEZvbnRDaGFuZ2VzJiBjaGFuZ2VzKQogICAgIHJldHVybiB0cnVlOwogfQogCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBGb250U2hhZG93OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGNvbG9yIDw8IHdpZHRoIDw8IGhlaWdo
dCA8PCBibHVyUmFkaXVzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBGb250
U2hhZG93OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRm9udFNoYWRvdyYgc2hhZG93KQorewor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93LmNvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaGFkb3cud2lkdGgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5oZWlnaHQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5i
bHVyUmFkaXVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fdmVydGlj
YWxBbGlnbiA8PCBtX2JhY2tncm91bmRDb2xvciA8PCBtX2ZvcmVncm91bmRDb2xvciA8PCBtX3No
YWRvdyA8PCBtX3N0cmlrZVRocm91Z2ggPDwgbV91bmRlcmxpbmUgPDwgbV9mb250Q2hhbmdlczsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgRm9udEF0dHJpYnV0ZUNoYW5nZXM6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGb250QXR0cmlidXRlQ2hhbmdlcyYgY2hhbmdlcykK
K3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNoYW5nZXMubV92ZXJ0aWNhbEFsaWduKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFuZ2VzLm1f
YmFja2dyb3VuZENvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShjaGFuZ2VzLm1fZm9yZWdyb3VuZENvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFuZ2VzLm1fc2hhZG93KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjaGFuZ2VzLm1fc3Ry
aWtlVGhyb3VnaCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY2hhbmdlcy5tX3VuZGVybGluZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY2hhbmdlcy5tX2ZvbnRDaGFuZ2VzKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OlZlcnRpY2FsQWxpZ25DaGFuZ2U+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAorICAgICAgICBXZWJDb3JlOjpWZXJ0aWNhbEFsaWduQ2hhbmdlLAorICAgICAgICBXZWJDb3Jl
OjpWZXJ0aWNhbEFsaWduQ2hhbmdlOjpTdXBlcnNjcmlwdCwKKyAgICAgICAgV2ViQ29yZTo6VmVy
dGljYWxBbGlnbkNoYW5nZTo6QmFzZWxpbmUsCisgICAgICAgIFdlYkNvcmU6OlZlcnRpY2FsQWxp
Z25DaGFuZ2U6OlN1YnNjcmlwdAorICAgID47Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCmluZGV4
IDk1MWViM2EwYjQwZDkxOTljNWEyYWVhZGU2YmU3ZDE5NzY1ODllMDEuLjI2MDQ3YWI5Yjk5NmRk
ZjcyZGYzNGYxMmExMGY0MzY1NTRkNzM4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0KQEAgLTE0NCwx
MSArMTQ0LDExIEBAIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzIGNvbXB1dGVkRm9udEF0dHJpYnV0ZUNo
YW5nZXMoTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIsIGlkCiAgICAgaW50IGNvbnZlcnRlZFN1
cGVyc2NyaXB0QSA9IFtbY29udmVydGVkQXR0cmlidXRlc0Egb2JqZWN0Rm9yS2V5Ok5TU3VwZXJz
Y3JpcHRBdHRyaWJ1dGVOYW1lXSBpbnRWYWx1ZV07CiAgICAgaWYgKGNvbnZlcnRlZFN1cGVyc2Ny
aXB0QSA9PSBbW2NvbnZlcnRlZEF0dHJpYnV0ZXNCIG9iamVjdEZvcktleTpOU1N1cGVyc2NyaXB0
QXR0cmlidXRlTmFtZV0gaW50VmFsdWVdKSB7CiAgICAgICAgIGlmIChjb252ZXJ0ZWRTdXBlcnNj
cmlwdEEgPiAwKQotICAgICAgICAgICAgY2hhbmdlcy5zZXRWZXJ0aWNhbEFsaWduKFZlcnRpY2Fs
QWxpZ246OlN1cGVyKTsKKyAgICAgICAgICAgIGNoYW5nZXMuc2V0VmVydGljYWxBbGlnbihWZXJ0
aWNhbEFsaWduQ2hhbmdlOjpTdXBlcnNjcmlwdCk7CiAgICAgICAgIGVsc2UgaWYgKGNvbnZlcnRl
ZFN1cGVyc2NyaXB0QSA8IDApCi0gICAgICAgICAgICBjaGFuZ2VzLnNldFZlcnRpY2FsQWxpZ24o
VmVydGljYWxBbGlnbjo6U3ViKTsKKyAgICAgICAgICAgIGNoYW5nZXMuc2V0VmVydGljYWxBbGln
bihWZXJ0aWNhbEFsaWduQ2hhbmdlOjpTdWJzY3JpcHQpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBjaGFuZ2VzLnNldFZlcnRpY2FsQWxpZ24oVmVydGljYWxBbGlnbjo6QmFzZWxpbmUpOwor
ICAgICAgICAgICAgY2hhbmdlcy5zZXRWZXJ0aWNhbEFsaWduKFZlcnRpY2FsQWxpZ25DaGFuZ2U6
OkJhc2VsaW5lKTsKICAgICB9CiAKICAgICBpbnQgY29udmVydGVkU3RyaWtlVGhyb3VnaEEgPSBb
W2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVjdEZvcktleTpOU1N0cmlrZXRocm91Z2hTdHlsZUF0
dHJpYnV0ZU5hbWVdIGludFZhbHVlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDQ5ZjUxODBlZDMzNjAzYTQ1NGM1MWY0MDFhN2ViNzU0
ZjJmNjdkMGMuLjY2YzI4ZWJmZmNkNTIzYjcwNDVjMTVhZGIyNzU0ZjQyYTBjZDgyNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMzM1
OSw2ICszMzU5LDExIEBAIFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogICAgIF9pbXBs
LT5jaGFuZ2VGb250RnJvbUZvbnRNYW5hZ2VyKCk7CiB9CiAKKy0gKHZvaWQpY2hhbmdlQXR0cmli
dXRlczooaWQpc2VuZGVyCit7CisgICAgX2ltcGwtPmNoYW5nZUZvbnRBdHRyaWJ1dGVzRnJvbVNl
bmRlcihzZW5kZXIpOworfQorCiAtIChJQkFjdGlvbilzdGFydFNwZWFraW5nOihpZClzZW5kZXIK
IHsKICAgICBfaW1wbC0+c3RhcnRTcGVha2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLmgKaW5kZXggYzlmM2I4OTVjN2JhOGU3N2YwZGE2MzlmYWQyZWI5
NzFiZjczNDdkZC4uNzk2YzkyOGQwOTFjMGE2NmI5OGI0Y2UyNzIxOTU1YzRiMDNmMzJiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCkBAIC0zMTYsNiAr
MzE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQmVjb21lRWRpdGFibGUoKTsKICAgICB2b2lk
IHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkKCk7CiAgICAgdm9pZCBjaGFuZ2VGb250RnJvbUZvbnRN
YW5hZ2VyKCk7CisgICAgdm9pZCBjaGFuZ2VGb250QXR0cmlidXRlc0Zyb21TZW5kZXIoaWQpOwog
ICAgIGJvb2wgdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbShpZCA8TlNWYWxpZGF0ZWRVc2VySW50
ZXJmYWNlSXRlbT4pOwogICAgIHZvaWQgc2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4
IGMyNWVkZjM0ZjY1MGFiZWVjYzUyOTQ4NWI2MzZhMzk5YzY1OWQ1OTMuLjU1MmQ2NTA1ZDI1Mzhi
ODZjNWZjZWVlNzdkOTUwYmE4YzI1YTQwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yNzM0LDYgKzI3MzQsMTYgQEAgdm9pZCBXZWJWaWV3
SW1wbDo6dXBkYXRlRm9udFBhbmVsSWZOZWVkZWQoKQogICAgIH0KIH0KIAordm9pZCBXZWJWaWV3
SW1wbDo6Y2hhbmdlRm9udEF0dHJpYnV0ZXNGcm9tU2VuZGVyKGlkIHNlbmRlcikKK3sKKyAgICBh
dXRvJiBlZGl0b3JTdGF0ZSA9IG1fcGFnZS0+ZWRpdG9yU3RhdGUoKTsKKyAgICBpZiAoIWVkaXRv
clN0YXRlLmlzQ29udGVudEVkaXRhYmxlIHx8IGVkaXRvclN0YXRlLnNlbGVjdGlvbklzTm9uZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9wYWdlLT5jaGFuZ2VGb250QXR0cmlidXRlcyhXZWJD
b3JlOjpjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKE5TRm9udE1hbmFnZXIuc2hhcmVkRm9u
dE1hbmFnZXIsIHNlbmRlcikpOworICAgIHVwZGF0ZUZvbnRQYW5lbElmTmVlZGVkKCk7Cit9CisK
IHZvaWQgV2ViVmlld0ltcGw6OmNoYW5nZUZvbnRGcm9tRm9udE1hbmFnZXIoKQogewogICAgIGF1
dG8mIGVkaXRvclN0YXRlID0gbV9wYWdlLT5lZGl0b3JTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5NGIwNDMzZjg0ZmUwMWJmOTNlYjhhMzZiYjM1YzNh
ZmIxYjY3OTYwLi5hOThmZDcyZWVlNGJmN2EwNTA4NmI1ODVhYmJlNzNhMWQ2NjM1NWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTYyLDYgKzE2Miw3IEBAIGNs
YXNzIENlcnRpZmljYXRlSW5mbzsKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIERyYWdEYXRhOwogY2xh
c3MgRmxvYXRSZWN0OworY2xhc3MgRm9udEF0dHJpYnV0ZUNoYW5nZXM7CiBjbGFzcyBGb250Q2hh
bmdlczsKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBJbnRTaXplOwpAQCAtNjgxLDYgKzY4
Miw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbnNlcnREaWN0YXRl
ZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFj
ZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgYm9vbCByZWdpc3RlclVuZG9Hcm91cCk7CiAgICAg
dm9pZCBhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0
aW5nUmFuZ2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmLCBj
b25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CisgICAgdm9pZCBj
aGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmKTsKICAg
ICB2b2lkIGNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJik7CiAgICAgdm9pZCBmb250
QXRTZWxlY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJv
b2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggMTQ0NmFlMGQxMmYxMzViY2QyZmEyNTM4
N2EwZmJiYWE5NzlkZDMzYi4uNWQwY2VkYzA4OWZkZjkxMDYyOWVlOTY5MDI1YTczYzBjM2Y4NWQ1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CkBAIC02MjYsNiArNjI2LDE0IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphcHBsZU1haWxMaW5lc0Ns
YW1wRW5hYmxlZCgpCiB7CiAgICAgcmV0dXJuIE1hY0FwcGxpY2F0aW9uOjppc0FwcGxlTWFpbCgp
OwogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQoreworICAgIGlmICghaXNWYWxpZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2hhbmdlRm9udEF0dHJpYnV0ZXMoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFnZUlEKTsKK30KICAg
ICAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYg
Y2hhbmdlcykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCBmYmFmNzgwZGIzZjhjYjc2NjljMjg1NGUyODEwNGUyZDIyMjkyM2VkLi4xNDQ5OTQ4MDI5
M2M1ZTQyZWFlZTg3Yjc1YTQzNWVlOGQxZmU1MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMzUsNiArMTM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ2FwdHVyZURldmljZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3Mg
RHJhZ0RhdGE7CitjbGFzcyBGb250QXR0cmlidXRlQ2hhbmdlczsKIGNsYXNzIEZvbnRDaGFuZ2Vz
OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKQEAgLTEzNjMsNiArMTM2NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKTsKICAgICB2
b2lkIGltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCk7CiAgICAgdm9pZCBjaGFuZ2VGb250KFdl
YkNvcmU6OkZvbnRDaGFuZ2VzJiYpOworICAgIHZvaWQgY2hhbmdlRm9udEF0dHJpYnV0ZXMoV2Vi
Q29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJik7CiAKICAgICB2b2lkIGRhdGFEZXRlY3RvcnNE
aWRQcmVzZW50VUkoV2ViQ29yZTo6UGFnZU92ZXJsYXk6OlBhZ2VPdmVybGF5SUQpOwogICAgIHZv
aWQgZGF0YURldGVjdG9yc0RpZENoYW5nZVVJKFdlYkNvcmU6OlBhZ2VPdmVybGF5OjpQYWdlT3Zl
cmxheUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IDcwZjIyMGRkMzc1YWE5NWE4ZDIxMGZlOGU3MTA1ZGYyMTU5
MmYxYzQuLmMzNGFmZWIxZDA4YTlhZTdkNDg3OWI0NDQ3YWUyZjdiODJiMTUyZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtMTkxLDYgKzE5MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVu
dFNlbGVjdGlvbigpCiAgICAgQ2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyBjaGFuZ2Vz
KQorICAgIENoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2Vz
IGNoYW5nZXMpCiAjZW5kaWYKIAogICAgIFByZWZlcmVuY2VzRGlkQ2hhbmdlKHN0cnVjdCBXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDhkMjBkMmVmZjA2YmM0NmIw
Y2ZjOTkxNTljOGU5ODlmNWRiM2YzODcuLjhlMjAwMmQ0ZTAzODA1MTk1NjY0OTYzMzEzNzEzYzA5
ZjNhMjk3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCkBAIC0xMTE1LDYgKzExMTUsMTMgQEAgdm9pZCBXZWJQYWdlOjpkYXRh
RGV0ZWN0b3JzRGlkSGlkZVVJKFBhZ2VPdmVybGF5OjpQYWdlT3ZlcmxheUlEIG92ZXJsYXlJRCkK
ICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQoreworICAgIGF1dG8mIGZyYW1lID0gbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoZnJh
bWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAg
ZnJhbWUuZWRpdG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKGNoYW5nZXMuY3JlYXRlRWRpdGlu
Z1N0eWxlKCksIEVkaXRBY3Rpb25DaGFuZ2VBdHRyaWJ1dGVzLCBFZGl0b3I6OkNvbG9yRmlsdGVy
TW9kZTo6SW52ZXJ0Q29sb3IpOworfQorCiB2b2lkIFdlYlBhZ2U6OmNoYW5nZUZvbnQoV2ViQ29y
ZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMmQzZGMwOTEyNDFkNDYxYjAzN2Vm
YzI5NWVjZWE3MWRjZjMzOGNjLi5lYzAxMmQ3MGIzOWQxN2Y5YjM4ODJlMmFlMTZhZGM2MDEyZjIw
M2NhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTQgQEAKKzIwMTgtMDktMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgW21hY09TXSBbV0syXSBTdXBwb3J0IGNoYW5naW5nIGF0dHJp
YnV0ZXMgZm9yIHNlbGVjdGVkIHRleHQgKHRleHQgc2hhZG93LCB1bmRlcmxpbmUsIHN0cmlrZS10
aHJvdWdoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg5MzU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NDE4NTY3ND4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IEFQSSB0ZXN0IHRv
IHZlcmlmeSB0aGF0IHNvbWUgZm9udCBhdHRyaWJ1dGVzICh0ZXh0IHNoYWRvdywgdW5kZXJsaW5l
LCBhbmQgc3RyaWtlLXRocm91Z2gpIGNhbiBiZQorICAgICAgICBhZGRlZCBhbmQgcmVtb3ZlZCB1
c2luZyBOU0ZvbnRQYW5lbC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW06CisKKyAgICAgICAgQWRkIHRoZSBuZXcgQVBJIHRl
c3QuCisKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbWFj
L05TRm9udFBhbmVsVGVzdGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21h
Yy9OU0ZvbnRQYW5lbFRlc3RpbmcubW06IEFkZGVkLgorCisgICAgICAgIEludHJvZHVjZSBhIG5l
dyBmaWxlIHRoYXQgZXh0ZW5kcyBOU0ZvbnRQYW5lbCB3aXRoIHNvbWUgYWRkaXRpb25hbCB0ZXN0
aW5nIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaW5jbHVkZXMgdGhlCisgICAgICAgIGFiaWxpdHkgdG8g
aW50ZXJhY3Qgd2l0aCB0aGUgdGV4dCBzaGFkb3cgdG9nZ2xlIGJ1dHRvbiwgY2hvb3NlIHRoZSB0
ZXh0IHNoYWRvdyBibHVyIHJhZGl1cyBhbmQgb3BhY2l0eSwgYW5kCisgICAgICAgIGNoYW5nZSB1
bmRlcmxpbmUgYW5kIHN0cmlrZS10aHJvdWdoIHN0eWxlcy4KKworICAgICAgICAoZmluZFN1YnZp
ZXdPZkNsYXNzKToKKyAgICAgICAgKGZpbmRNZW51SXRlbVdpdGhUaXRsZSk6CisgICAgICAgICgt
W05TRm9udFBhbmVsIGZvbnRFZmZlY3RzQm94XSk6CisKKyAgICAgICAgTlNGb250RWZmZWN0c0Jv
eCAoYW4gaW50ZXJuYWwgQXBwS2l0IGNsYXNzKSBpcyB0aGUgc2VuZGVyIGluIHRoZSBjYXNlIHdo
ZXJlIC1jaGFuZ2VBdHRyaWJ1dGVzOiBpcyBpbnZva2VkCisgICAgICAgIHRocm91Z2ggaW50ZXJh
Y3Rpb24gd2l0aCB0aGUgZm9udCBwYW5lbC4gVG8gc2ltdWxhdGUgdGhpcyBmb3IgdGVzdGluZywg
Z3JhYiB0aGlzIGZvbnQgZWZmZWN0cyBib3ggYW5kIHBhc3MgaXQKKyAgICAgICAgZGlyZWN0b3J5
IHRvIC1jaGFuZ2VBdHRyaWJ1dGVzOi4KKworICAgICAgICAoLVtOU0ZvbnRQYW5lbCBjaG9vc2VV
bmRlcmxpbmVNZW51SXRlbVdpdGhUaXRsZTpdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgY2hv
b3NlU3RyaWtlVGhyb3VnaE1lbnVJdGVtV2l0aFRpdGxlOl0pOgorCisgICAgICAgIFRoZSBzdXBw
b3J0ZWQgdmFsdWVzIGZvciB0aGVzZSBtZW51IGl0ZW1zIGFyZSAibm9uZSIgYW5kICJzaW5nbGUi
LCB3aGljaCBhZGRzIGEgc2luZ2xlIHVuZGVybGluZSBvcgorICAgICAgICBzdHJpa2UtdGhyb3Vn
aCB0byBzZWxlY3RlZCB0ZXh0LiBXZSBncmFiIHRoZXNlIG1lbnUgaXRlbXMgYnkgYXNraW5nIGZv
ciB0aGUgZm9udCBwYW5lbCdzIE5TVG9vbGJhciwgYW5kIGZpbmRpbmcKKyAgICAgICAgdGhlIHJl
bGV2YW50IG1lbnUgaXRlbXMgdmlhIHRvb2xiYXIgaXRlbSBpZGVudGlmaWVycy4KKworICAgICAg
ICAoLVtOU0ZvbnRQYW5lbCBfZGlkQ2hhbmdlQXR0cmlidXRlc10pOgorICAgICAgICAoLVtOU0Zv
bnRQYW5lbCBzaGFkb3dCbHVyU2xpZGVyXSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNoYWRv
d09wYWNpdHlTbGlkZXJdKToKKyAgICAgICAgKC1bTlNGb250UGFuZWwgc2hhZG93VG9nZ2xlQnV0
dG9uXSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHRvZ2dsZVNoYWRvd10pOgorICAgICAgICAo
LVtOU0ZvbnRQYW5lbCBzaGFkb3dPcGFjaXR5XSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNl
dFNoYWRvd09wYWNpdHk6XSk6CisgICAgICAgICgtW05TRm9udFBhbmVsIHNoYWRvd0JsdXJdKToK
KyAgICAgICAgKC1bTlNGb250UGFuZWwgc2V0U2hhZG93Qmx1cjpdKToKKyAgICAgICAgKC1bTlNG
b250UGFuZWwgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6XSk6CisKIDIwMTgtMDktMDYgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBD
YW5ub3QgY2hhbmdlIGZvbnQgc2l6ZSBhdCBzZWxlY3Rpb24gdW50aWwgZm9udCBwYW5lbCBpcyBz
aG93bgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMzY3NzdhODM1OGVjZTMyNzYxMWI3Y2U1
YjY1MmY5MmNjMWMwMzc5Li40Y2I1ZWNjYTRjNGE3MTkwY2QxZTM0ZWFjNmYxNDQxYzliN2QxNWM0
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzk0LDYgKzc5NCw3IEBACiAJCUY0MkRBNTE2
MUQ4Q0VGRTQwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDJE
QTUxNTFEOENFRkRCMDAzMzZGNDAgLyogbGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0
bWwgKi87IH07CiAJCUY0M0UzQkJGMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0M0Uz
QkJFMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5tbSAqLzsgfTsKIAkJRjQz
RTNCQzEyMERBREJDNTAwQTRFN0VEIC8qIGZpeGVkLW5hdi1iYXIuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDNFM0JDMDIwREFEQjgw
MDBBNEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovOyB9OworCQlGNDQyODUxRDIxNDBERjI5
MDBDQ0RBMjIgLyogTlNGb250UGFuZWxUZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Mjg1MUMyMTQwREYyOTAwQ0NEQTIyIC8qIE5TRm9u
dFBhbmVsVGVzdGluZy5tbSAqLzsgfTsKIAkJRjQ0NTFDNzYxRUI4RkQ4OTAwMjBDNURBIC8qIHR3
by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0NTFDNzUxRUI4RkQ3QzAwMjBDNURBIC8q
IHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgKi87IH07CiAJCUY0NEM3OUZGMjBG
OUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRDNzlGRTIwRjlFODcxMDAxNDQ3OEMg
LyogUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tICovOyB9OwogCQlGNDRDN0EwMDIwRjlFRUJGMDAx
NDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEM3OUZCMjBGOUU1MEMwMDE0NDc4QyAvKiBQYXJz
ZXJZaWVsZFRva2VuUGx1Z0luLm1tICovOyB9OwpAQCAtMjAzNSw2ICsyMDM2LDggQEAKIAkJRjQy
REE1MTUxRDhDRUZEQjAwMzM2RjQwIC8qIGxhcmdlLWlucHV0LWZpZWxkLWZvY3VzLW9ubG9hZC5o
dG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBuYW1lID0gImxhcmdlLWlucHV0LWZpZWxkLWZvY3Vz
LW9ubG9hZC5odG1sIjsgcGF0aCA9ICJUZXN0cy9XZWJLaXRDb2NvYS9sYXJnZS1pbnB1dC1maWVs
ZC1mb2N1cy1vbmxvYWQuaHRtbCI7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJRjQz
RTNCQkUyMERBREExRTAwQTRFN0VEIC8qIFdLU2Nyb2xsVmlld1Rlc3RzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tTY3JvbGxWaWV3VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0M0UzQkMwMjBEQURCODAwMEE0RTdFRCAvKiBmaXhlZC1uYXYtYmFyLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiZml4ZWQtbmF2LWJhci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjQ0Mjg1MUIyMTQwREYyOTAwQ0NEQTIyIC8qIE5TRm9udFBhbmVsVGVzdGluZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOU0ZvbnRQYW5lbFRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjQ0Mjg1MUMyMTQwREYyOTAwQ0NEQTIyIC8qIE5TRm9udFBhbmVsVGVzdGluZy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5TRm9udFBhbmVsVGVzdGluZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0NTFDNzUxRUI4RkQ3QzAwMjBDNURBIC8qIHR3by1wYXJhZ3Jh
cGgtY29udGVudGVkaXRhYmxlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidHdv
LXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0NEM3OUZCMjBGOUU1MEMwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0lu
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0Qzc5RkQyMEY5RTg3MTAwMTQ0NzhDIC8qIFBh
cnNlcllpZWxkVG9rZW5UZXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJZaWVsZFRva2VuVGVz
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNDksNiArMzE1Miw4IEBACiAJ
CQkJMUFFREUyMjQxM0U1RTdBMDAwRTYyRkU4IC8qIEluamVjdGVkQnVuZGxlQ29udHJvbGxlck1h
Yy5tbSAqLywKIAkJCQlDMDgxMjI0MDEzRkMxNzI0MDBEQzM5QUUgLyogSmF2YVNjcmlwdFRlc3RN
YWMubW0gKi8sCiAJCQkJMkU3NzY1Q0UxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gKi8s
CisJCQkJRjQ0Mjg1MUIyMTQwREYyOTAwQ0NEQTIyIC8qIE5TRm9udFBhbmVsVGVzdGluZy5oICov
LAorCQkJCUY0NDI4NTFDMjE0MERGMjkwMENDREEyMiAvKiBOU0ZvbnRQYW5lbFRlc3RpbmcubW0g
Ki8sCiAJCQkJQkMxMzE4ODQxMTcxMTRCNjAwQjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzTWFj
Lm1tICovLAogCQkJCUJDOTA5NTVDMTI1NTQ4QUEwMDA4Mzc1NiAvKiBQbGF0Zm9ybVdlYlZpZXdN
YWMubW0gKi8sCiAJCQkJQzA4MTIyNDMxM0ZDMTlFQzAwREMzOUFFIC8qIFN5bnRoZXRpY0JhY2tp
bmdTY2FsZUZhY3RvcldpbmRvdy5oICovLApAQCAtMzg4MCw2ICszODg1LDcgQEAKIAkJCQlDRDJE
MEQxQTIxMzQ2NTU2MDAxOEM3ODQgLyogTm93UGxheWluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTJFQ0ZGNTU1MUQ5QjEyRjgwMEI1NTM5NCAvKiBOb3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUExMEYwNDdFMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5h
Z2VyRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0Mjg1MUQyMTQwREYyOTAwQ0NEQTIy
IC8qIE5TRm9udFBhbmVsVGVzdGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3QTIyQUE3MURD
QUEyNzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0ZXJDcmFz
aC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI1MUE0MTFBRjYwMDQ0N0M0QyAvKiBPcGVu
QW5kQ2xvc2VXaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRUJDQTEyRjFFM0E2NjAxMDBD
NzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVz
dHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Gb250TWFuYWdlclRlc3RzLm1t
CmluZGV4IGQxNWEwYzM1YTY5OGQxZDYwMTc0NzM3ZWFjNjI5M2NkOWM4M2NjZDguLjIyYmY4N2M2
YWJlNWIwY2MwMzMxOTA2NmJiMDFiMGNlMTBhNzE4Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0ZvbnRNYW5hZ2VyVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9tYWMvRm9udE1hbmFnZXJUZXN0cy5tbQpAQCAtMjcsNiArMjcsOCBAQAog
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJBcHBLaXRT
UEkuaCIKKyNpbXBvcnQgIk5TRm9udFBhbmVsVGVzdGluZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+CkBAIC0xNzgsNiArMTgwLDc0IEBAIFRFU1QoRm9udE1hbmFnZXJU
ZXN0cywgQ2hhbmdlRm9udFdpdGhQYW5lbCkKICAgICBFWFBFQ1RfRVEobGFyZ2VJdGFsaWNMaWdo
dEF2ZW5pckZvbnQsIGZvbnRNYW5hZ2VyLnNlbGVjdGVkRm9udCk7CiB9CiAKK1RFU1QoRm9udE1h
bmFnZXJUZXN0cywgQ2hhbmdlQXR0cmlidXRlc1dpdGhGb250RWZmZWN0c0JveCkKK3sKKyAgICBO
U0ZvbnRNYW5hZ2VyICpmb250TWFuYWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5h
Z2VyXTsKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yRm9udE1hbmFnZXJUZXN0aW5nKGZv
bnRNYW5hZ2VyKTsKKworICAgIE5TRm9udFBhbmVsICpmb250UGFuZWwgPSBbZm9udE1hbmFnZXIg
Zm9udFBhbmVsOllFU107CisgICAgW2ZvbnRQYW5lbCBzZXRJc1Zpc2libGU6WUVTXTsKKworICAg
IGF1dG8gdGV4dERlY29yYXRpb25zQXJvdW5kU2VsZWN0aW9uID0gW3dlYlZpZXddIHsKKyAgICAg
ICAgTlNTdHJpbmcgKmRlY29yYXRpb25zQXRTdGFydCA9IFt3ZWJWaWV3IHN0eWxlUHJvcGVydHlB
dFNlbGVjdGlvblN0YXJ0OkAiLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCJdOwor
ICAgICAgICBOU1N0cmluZyAqZGVjb3JhdGlvbnNBdEVuZCA9IFt3ZWJWaWV3IHN0eWxlUHJvcGVy
dHlBdFNlbGVjdGlvbkVuZDpAIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QiXTsK
KyAgICAgICAgaWYgKFtkZWNvcmF0aW9uc0F0U3RhcnQgaXNFcXVhbFRvU3RyaW5nOmRlY29yYXRp
b25zQXRFbmRdIHx8IGRlY29yYXRpb25zQXRTdGFydCA9PSBkZWNvcmF0aW9uc0F0RW5kKQorICAg
ICAgICAgICAgcmV0dXJuIGRlY29yYXRpb25zQXRTdGFydDsKKyAgICAgICAgcmV0dXJuIFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiKCVALCAlQCkiLCBkZWNvcmF0aW9uc0F0U3RhcnQsIGRl
Y29yYXRpb25zQXRFbmRdOworICAgIH07CisKKyAgICBhdXRvIHRleHRTaGFkb3dBcm91bmRTZWxl
Y3Rpb24gPSBbd2ViVmlld10geworICAgICAgICBOU1N0cmluZyAqc2hhZG93QXRTdGFydCA9IFt3
ZWJWaWV3IHN0eWxlUHJvcGVydHlBdFNlbGVjdGlvblN0YXJ0OkAidGV4dC1zaGFkb3ciXTsKKyAg
ICAgICAgTlNTdHJpbmcgKnNoYWRvd0F0RW5kID0gW3dlYlZpZXcgc3R5bGVQcm9wZXJ0eUF0U2Vs
ZWN0aW9uRW5kOkAidGV4dC1zaGFkb3ciXTsKKyAgICAgICAgaWYgKFtzaGFkb3dBdFN0YXJ0IGlz
RXF1YWxUb1N0cmluZzpzaGFkb3dBdEVuZF0gfHwgc2hhZG93QXRTdGFydCA9PSBzaGFkb3dBdEVu
ZCkKKyAgICAgICAgICAgIHJldHVybiBzaGFkb3dBdFN0YXJ0OworICAgICAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIoJUAsICVAKSIsIHNoYWRvd0F0U3RhcnQsIHNoYWRv
d0F0RW5kXTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgc2VsZWN0V29yZDpuaWxdOworICAgIFtm
b250UGFuZWwgY2hvb3NlVW5kZXJsaW5lTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoImZvbyIsIFt3ZWJWaWV3IHNlbGVjdGVkVGV4dF0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgidW5kZXJsaW5lIiwgdGV4dERlY29yYXRpb25zQXJvdW5kU2VsZWN0aW9u
KCkpOworCisgICAgW2ZvbnRQYW5lbCBjaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdpdGhUaXRsZTpA
Im5vbmUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIm5vbmUiLCB0ZXh0RGVjb3JhdGlvbnNBcm91
bmRTZWxlY3Rpb24oKSk7CisKKyAgICBbd2ViVmlldyBzZWxlY3ROZXh0V29yZF07CisgICAgW2Zv
bnRQYW5lbCBjaG9vc2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoImJhciIsIFt3ZWJWaWV3IHNlbGVjdGVkVGV4dF0pOworICAg
IEVYUEVDVF9XS19TVFJFUSgibGluZS10aHJvdWdoIiwgdGV4dERlY29yYXRpb25zQXJvdW5kU2Vs
ZWN0aW9uKCkpOworCisgICAgW2ZvbnRQYW5lbCBjaG9vc2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1X
aXRoVGl0bGU6QCJub25lIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJub25lIiwgdGV4dERlY29y
YXRpb25zQXJvdW5kU2VsZWN0aW9uKCkpOworCisgICAgW3dlYlZpZXcgc2VsZWN0TmV4dFdvcmRd
OworICAgIGZvbnRQYW5lbC5zaGFkb3dCbHVyID0gODsKKyAgICBmb250UGFuZWwuc2hhZG93T3Bh
Y2l0eSA9IDE7CisgICAgW2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOworICAgIEVYUEVDVF9XS19T
VFJFUSgiYmF6IiwgW3dlYlZpZXcgc2VsZWN0ZWRUZXh0XSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCJyZ2IoMCwgMCwgMCkgMHB4IDFweCA4cHgiLCB0ZXh0U2hhZG93QXJvdW5kU2VsZWN0aW9uKCkp
OworCisgICAgW2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOworICAgIEVYUEVDVF9XS19TVFJFUSgi
bm9uZSIsIHRleHRTaGFkb3dBcm91bmRTZWxlY3Rpb24oKSk7CisKKyAgICAvLyBOb3cgY29tYmlu
ZSBhbGwgdGhyZWUgYXR0cmlidXRlcyB0b2dldGhlci4KKyAgICBbd2ViVmlldyBzZWxlY3RBbGw6
bmlsXTsKKyAgICBmb250UGFuZWwuc2hhZG93Qmx1ciA9IDU7CisgICAgZm9udFBhbmVsLnNoYWRv
d09wYWNpdHkgPSAwLjI7CisgICAgW2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOworICAgIFtmb250
UGFuZWwgY2hvb3NlVW5kZXJsaW5lTWVudUl0ZW1XaXRoVGl0bGU6QCJzaW5nbGUiXTsKKyAgICBb
Zm9udFBhbmVsIGNob29zZVN0cmlrZVRocm91Z2hNZW51SXRlbVdpdGhUaXRsZTpAInNpbmdsZSJd
OworICAgIEVYUEVDVF9XS19TVFJFUSgiZm9vIGJhciBiYXoiLCBbd2ViVmlldyBzZWxlY3RlZFRl
eHRdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInJnYmEoMCwgMCwgMCwgMC4yKSAwcHggMXB4IDVw
eCIsIHRleHRTaGFkb3dBcm91bmRTZWxlY3Rpb24oKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ1
bmRlcmxpbmUgbGluZS10aHJvdWdoIiwgdGV4dERlY29yYXRpb25zQXJvdW5kU2VsZWN0aW9uKCkp
OworCisgICAgW2ZvbnRQYW5lbCB0b2dnbGVTaGFkb3ddOworICAgIFtmb250UGFuZWwgY2hvb3Nl
VW5kZXJsaW5lTWVudUl0ZW1XaXRoVGl0bGU6QCJub25lIl07CisgICAgW2ZvbnRQYW5lbCBjaG9v
c2VTdHJpa2VUaHJvdWdoTWVudUl0ZW1XaXRoVGl0bGU6QCJub25lIl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKCJub25lIiwgdGV4dFNoYWRvd0Fyb3VuZFNlbGVjdGlvbigpKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIm5vbmUiLCB0ZXh0RGVjb3JhdGlvbnNBcm91bmRTZWxlY3Rpb24oKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykg
JiYgV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
LmgKaW5kZXggNjEzZGZhZThhYTFkZmY3NjRjNzczY2ZjNTAxNGU1YzNlMTYzODE2Ni4uNWYxNjlk
OWI0ZDc0ZGE1NzEzZTNlYTNjODE4NWEyYTcyYThhZDU5MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTM3LDYgKzM3LDcgQEAKIEBpbnRlcmZhY2UgV0tX
ZWJWaWV3IChBZGRpdGlvbmFsRGVjbGFyYXRpb25zKQogI2lmIFBMQVRGT1JNKE1BQykKIC0gKHZv
aWQpcGFzdGU6KGlkKXNlbmRlcjsKKy0gKHZvaWQpY2hhbmdlQXR0cmlidXRlczooaWQpc2VuZGVy
OwogI2VuZGlmCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05T
Rm9udFBhbmVsVGVzdGluZy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvTlNGb250UGFuZWxU
ZXN0aW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIwNGQ0OGYzZTk4NWZhMjIxZGE2MWM2OWRhMWJlYjI4NjE0
MWQ5YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL05TRm9udFBh
bmVsVGVzdGluZy5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8QXBwS2l0
L0FwcEtpdC5oPgorCitAaW50ZXJmYWNlIE5TRm9udFBhbmVsIChUZXN0V2ViS2l0QVBJKQorCitA
cHJvcGVydHkgKG5vbmF0b21pYykgZG91YmxlIHNoYWRvd09wYWNpdHk7CitAcHJvcGVydHkgKG5v
bmF0b21pYykgZG91YmxlIHNoYWRvd0JsdXI7CisKKy0gKHZvaWQpdG9nZ2xlU2hhZG93OworLSAo
dm9pZCljaG9vc2VVbmRlcmxpbmVNZW51SXRlbVdpdGhUaXRsZTooTlNTdHJpbmcgKilpdGVtVGl0
bGU7CistICh2b2lkKWNob29zZVN0cmlrZVRocm91Z2hNZW51SXRlbVdpdGhUaXRsZTooTlNTdHJp
bmcgKilpdGVtVGl0bGU7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL21hYy9OU0ZvbnRQYW5lbFRlc3RpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L21hYy9OU0ZvbnRQYW5lbFRlc3RpbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjgxZDFkNTc4YjBhMmZmNDQx
ZmQxOTBlNzc5MTliMTdjYmRkZWQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL05TRm9udFBhbmVsVGVzdGluZy5tbQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOU0ZvbnRQYW5lbFRlc3Rpbmcu
aCIKKworI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CisKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDEz
MDAKK3N0YXRpYyBjb25zdCBOU0NlbGxTdGF0ZVZhbHVlIE5TQ29udHJvbFN0YXRlVmFsdWVPZmYg
PSBOU09mZlN0YXRlOworc3RhdGljIGNvbnN0IE5TQ2VsbFN0YXRlVmFsdWUgTlNDb250cm9sU3Rh
dGVWYWx1ZU9uID0gTlNPblN0YXRlOworI2VuZGlmCisKK0BpbnRlcmZhY2UgTlNCb3ggKE5TRm9u
dEVmZmVjdHNCb3gpCisvLyBJbnZva2VkIGFmdGVyIGEgZm9udCBlZmZlY3QgKGUuZy4gc2luZ2xl
IHN0cmlrZS10aHJvdWdoKSBpcyBjaG9zZW4uCistICh2b2lkKV9vcGVuRWZmZWN0c0J1dHRvbjoo
aWQpc2VuZGVyOworQGVuZAorCitzdGF0aWMgTlNWaWV3ICpmaW5kU3Vidmlld09mQ2xhc3MoTlNW
aWV3ICp2aWV3LCBDbGFzcyB0YXJnZXRDbGFzcykKK3sKKyAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZD
bGFzczp0YXJnZXRDbGFzc10pCisgICAgICAgIHJldHVybiB2aWV3OworCisgICAgZm9yIChOU1Zp
ZXcgKnN1YnZpZXcgaW4gdmlldy5zdWJ2aWV3cykgeworICAgICAgICBpZiAoTlNWaWV3ICp0YXJn
ZXRWaWV3ID0gZmluZFN1YnZpZXdPZkNsYXNzKHN1YnZpZXcsIHRhcmdldENsYXNzKSkKKyAgICAg
ICAgICAgIHJldHVybiB0YXJnZXRWaWV3OworICAgIH0KKyAgICByZXR1cm4gbmlsOworfQorCitz
dGF0aWMgTlNNZW51SXRlbSAqZmluZE1lbnVJdGVtV2l0aFRpdGxlKE5TUG9wVXBCdXR0b24gKmJ1
dHRvbiwgTlNTdHJpbmcgKnRpdGxlKQoreworICAgIGZvciAoTlNNZW51SXRlbSAqaXRlbSBpbiBi
dXR0b24uaXRlbUFycmF5KSB7CisgICAgICAgIGlmIChbaXRlbS50aXRsZS5sb3dlcmNhc2VTdHJp
bmcgaXNFcXVhbFRvU3RyaW5nOnRpdGxlLmxvd2VyY2FzZVN0cmluZ10pCisgICAgICAgICAgICBy
ZXR1cm4gaXRlbTsKKyAgICB9CisgICAgcmV0dXJuIG5pbDsKK30KKworQGltcGxlbWVudGF0aW9u
IE5TRm9udFBhbmVsIChUZXN0V2ViS2l0QVBJKQorCistIChOU0JveCAqKWZvbnRFZmZlY3RzQm94
Cit7CisgICAgdm9pZCogcmVzdWx0ID0gbnVsbHB0cjsKKyAgICBvYmplY3RfZ2V0SW5zdGFuY2VW
YXJpYWJsZShzZWxmLCAiX2ZvbnRFZmZlY3RzQm94IiwgJnJlc3VsdCk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE5TQm94ICo+KHJlc3VsdCk7Cit9CisKKy0gKHZvaWQpY2hvb3NlVW5kZXJsaW5l
TWVudUl0ZW1XaXRoVGl0bGU6KE5TU3RyaW5nICopaXRlbVRpdGxlCit7CisgICAgTlNQb3BVcEJ1
dHRvbiAqYnV0dG9uID0gKE5TUG9wVXBCdXR0b24gKilbc2VsZiBfdG9vbGJhckl0ZW1XaXRoSWRl
bnRpZmllcjpAIk5TRm9udFBhbmVsVW5kZXJsaW5lVG9vbGJhckl0ZW0iXS52aWV3OworICAgIFti
dXR0b24gc2VsZWN0SXRlbTpmaW5kTWVudUl0ZW1XaXRoVGl0bGUoYnV0dG9uLCBpdGVtVGl0bGUp
XTsKKyAgICBbc2VsZi5mb250RWZmZWN0c0JveCBfb3BlbkVmZmVjdHNCdXR0b246YnV0dG9uXTsK
KyAgICBbc2VsZiBfZGlkQ2hhbmdlQXR0cmlidXRlc107Cit9CisKKy0gKHZvaWQpY2hvb3NlU3Ry
aWtlVGhyb3VnaE1lbnVJdGVtV2l0aFRpdGxlOihOU1N0cmluZyAqKWl0ZW1UaXRsZQoreworICAg
IE5TUG9wVXBCdXR0b24gKmJ1dHRvbiA9IChOU1BvcFVwQnV0dG9uICopW3NlbGYgX3Rvb2xiYXJJ
dGVtV2l0aElkZW50aWZpZXI6QCJOU0ZvbnRQYW5lbFN0cmlrZXRocm91Z2hUb29sYmFySXRlbSJd
LnZpZXc7CisgICAgW2J1dHRvbiBzZWxlY3RJdGVtOmZpbmRNZW51SXRlbVdpdGhUaXRsZShidXR0
b24sIGl0ZW1UaXRsZSldOworICAgIFtzZWxmLmZvbnRFZmZlY3RzQm94IF9vcGVuRWZmZWN0c0J1
dHRvbjpidXR0b25dOworICAgIFtzZWxmIF9kaWRDaGFuZ2VBdHRyaWJ1dGVzXTsKK30KKworLSAo
dm9pZClfZGlkQ2hhbmdlQXR0cmlidXRlcworeworICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5h
Z2VyID0gTlNGb250TWFuYWdlci5zaGFyZWRGb250TWFuYWdlcjsKKyAgICBpZiAoc2VsZiA9PSBb
Zm9udE1hbmFnZXIgZm9udFBhbmVsOk5PXSkKKyAgICAgICAgW2ZvbnRNYW5hZ2VyLnRhcmdldCBj
aGFuZ2VBdHRyaWJ1dGVzOnNlbGYuZm9udEVmZmVjdHNCb3hdOworfQorCistIChOU1NsaWRlciAq
KXNoYWRvd0JsdXJTbGlkZXIKK3sKKyAgICByZXR1cm4gKE5TU2xpZGVyICopZmluZFN1YnZpZXdP
ZkNsYXNzKFtzZWxmIF90b29sYmFySXRlbVdpdGhJZGVudGlmaWVyOkAiTlNGb250UGFuZWxTaGFk
b3dCbHVyVG9vbGJhckl0ZW0iXS52aWV3LCBOU1NsaWRlci5jbGFzcyk7Cit9CisKKy0gKE5TU2xp
ZGVyICopc2hhZG93T3BhY2l0eVNsaWRlcgoreworICAgIHJldHVybiAoTlNTbGlkZXIgKilmaW5k
U3Vidmlld09mQ2xhc3MoW3NlbGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6QCJOU0ZvbnRQ
YW5lbFNoYWRvd09wYWNpdHlUb29sYmFySXRlbSJdLnZpZXcsIE5TU2xpZGVyLmNsYXNzKTsKK30K
KworLSAoTlNCdXR0b24gKilzaGFkb3dUb2dnbGVCdXR0b24KK3sKKyAgICByZXR1cm4gKE5TQnV0
dG9uICopW3NlbGYgX3Rvb2xiYXJJdGVtV2l0aElkZW50aWZpZXI6QCJOU0ZvbnRQYW5lbFNoYWRv
d1RvZ2dsZVRvb2xiYXJJdGVtIl0udmlldzsKK30KKworLSAodm9pZCl0b2dnbGVTaGFkb3cKK3sK
KyAgICBOU0J1dHRvbiAqc2hhZG93VG9nZ2xlQnV0dG9uID0gc2VsZi5zaGFkb3dUb2dnbGVCdXR0
b247CisgICAgc2hhZG93VG9nZ2xlQnV0dG9uLnN0YXRlID0gc2hhZG93VG9nZ2xlQnV0dG9uLnN0
YXRlID09IE5TQ29udHJvbFN0YXRlVmFsdWVPZmYgPyBOU0NvbnRyb2xTdGF0ZVZhbHVlT24gOiBO
U0NvbnRyb2xTdGF0ZVZhbHVlT2ZmOworICAgIFtzZWxmIF9kaWRDaGFuZ2VBdHRyaWJ1dGVzXTsK
K30KKworLSAoZG91YmxlKXNoYWRvd09wYWNpdHkKK3sKKyAgICByZXR1cm4gc2VsZi5zaGFkb3dP
cGFjaXR5U2xpZGVyLmRvdWJsZVZhbHVlOworfQorCistICh2b2lkKXNldFNoYWRvd09wYWNpdHk6
KGRvdWJsZSlzaGFkb3dPcGFjaXR5Cit7CisgICAgc2VsZi5zaGFkb3dPcGFjaXR5U2xpZGVyLmRv
dWJsZVZhbHVlID0gc2hhZG93T3BhY2l0eTsKKyAgICBpZiAoc2VsZi5zaGFkb3dUb2dnbGVCdXR0
b24uc3RhdGUgPT0gTlNDb250cm9sU3RhdGVWYWx1ZU9uKQorICAgICAgICBbc2VsZiBfZGlkQ2hh
bmdlQXR0cmlidXRlc107Cit9CisKKy0gKGRvdWJsZSlzaGFkb3dCbHVyCit7CisgICAgcmV0dXJu
IHNlbGYuc2hhZG93Qmx1clNsaWRlci5kb3VibGVWYWx1ZTsKK30KKworLSAodm9pZClzZXRTaGFk
b3dCbHVyOihkb3VibGUpc2hhZG93Qmx1cgoreworICAgIHNlbGYuc2hhZG93Qmx1clNsaWRlci5k
b3VibGVWYWx1ZSA9IHNoYWRvd0JsdXI7CisgICAgaWYgKHNlbGYuc2hhZG93VG9nZ2xlQnV0dG9u
LnN0YXRlID09IE5TQ29udHJvbFN0YXRlVmFsdWVPbikKKyAgICAgICAgW3NlbGYgX2RpZENoYW5n
ZUF0dHJpYnV0ZXNdOworfQorCistIChOU1Rvb2xiYXJJdGVtICopX3Rvb2xiYXJJdGVtV2l0aElk
ZW50aWZpZXI6KE5TU3RyaW5nICopaXRlbUlkZW50aWZpZXIKK3sKKyAgICBmb3IgKE5TVG9vbGJh
ckl0ZW0gKml0ZW0gaW4gc2VsZi50b29sYmFyLml0ZW1zKSB7CisgICAgICAgIGlmIChbaXRlbS5p
dGVtSWRlbnRpZmllciBpc0VxdWFsVG9TdHJpbmc6aXRlbUlkZW50aWZpZXJdKQorICAgICAgICAg
ICAgcmV0dXJuIGl0ZW07CisgICAgfQorICAgIHJldHVybiBuaWw7Cit9CisKK0BlbmQKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
      

    </bug>

</bugzilla>