<?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>233979</bug_id>
          
          <creation_ts>2021-12-07 22:30:11 -0800</creation_ts>
          <short_desc>Make FontCascade::s_codePath thread safe</short_desc>
          <delta_ts>2022-09-11 16:21:50 -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>Layout and Rendering</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          
          <blocked>233488</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron McCormack (:heycam)">heycam</reporter>
          <assigned_to name="Matt Woodrow">mattwoodrow</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821395</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 22:30:11 -0800</bug_when>
    <thetext>Make FontCascade::s_codePath thread safe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821407</commentid>
    <comment_count>1</comment_count>
      <attachid>446305</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-07 22:40:30 -0800</bug_when>
    <thetext>Created attachment 446305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821992</commentid>
    <comment_count>2</comment_count>
      <attachid>446305</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-12-08 21:09:07 -0800</bug_when>
    <thetext>Comment on attachment 446305
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Make FontCascade::s_codePath thread safe

Can we just delete it instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822509</commentid>
    <comment_count>3</comment_count>
      <attachid>446658</attachid>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-09 21:48:31 -0800</bug_when>
    <thetext>Created attachment 446658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822510</commentid>
    <comment_count>4</comment_count>
    <who name="Cameron McCormack (:heycam)">heycam</who>
    <bug_when>2021-12-09 21:49:19 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #2)
&gt; Can we just delete it instead?

Let&apos;s try.  It involves more code removal than I thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824255</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-14 22:31:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/86506735&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1896954</commentid>
    <comment_count>6</comment_count>
      <attachid>446658</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-09-07 19:43:27 -0700</bug_when>
    <thetext>Comment on attachment 446658
Patch

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

I think this is right but I think we should run this by a GTK port contributor before landing.

&gt; Source/WebCore/ChangeLog:14
&gt; +        - making the Gtk port go back to effectively using CodePath::Auto

I thought the GTK port _only_ had the complex text codepath. Maybe I&apos;m misinformed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1897750</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2022-09-11 16:21:50 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/4242</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446305</attachid>
            <date>2021-12-07 22:40:30 -0800</date>
            <delta_ts>2021-12-09 21:48:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233979-20211208174029.patch</filename>
            <type>text/plain</type>
            <size>2460</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWUxOGUwYzliNDI2YmMx
Yjk4MzQzMzIyYzA2YWE4MjIxMTBhNzQ0Mi4uODQ2MTliNjBlNzAwNGQwM2E2ZDc3ZWY2M2ZlNDZi
ZTJjNmQ1NjNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEyLTAyICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBGb250Q2Fz
Y2FkZTo6c19jb2RlUGF0aCB0aHJlYWQgc2FmZQorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChP
T1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rm9udENhc2NhZGU6OnNfY29kZVBhdGggY2FuIGJlIHJlYWQgb24gd29ya2VyIHRocmVhZHMgd2l0
aAorICAgICAgICBPZmZzY3JlZW5DYW52YXMgYW5kIHdyaXR0ZW4gb24gdGhlIG1haW4gdGhyZWFk
LiBNYWtlIHRoaXMgYXRvbWljIHRvCisgICAgICAgIGF2b2lkIHJhY2VzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisKIDIwMjEtMTItMDIgIENhbWVyb24gTWNDb3JtYWNrICA8
aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEZvbnRDYXNjYWRlOjpzZXRTaG91bGRV
c2VTbW9vdGhpbmcvc2hvdWxkVXNlU21vb3RoaW5nIHRocmVhZCBzYWZlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNzIwNTdhMWRi
YzBjN2Y3M2M4YWEzNTBiZmIwZWE4NGI2Y2VjMjAyZC4uYzE5OTAyMTU1ZjEwNTExODJjODMwYmJm
OTZmYmNmZmZhOWU5ZTRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7CiAKLUZvbnRDYXNjYWRlOjpDb2RlUGF0
aCBGb250Q2FzY2FkZTo6c19jb2RlUGF0aCA9IENvZGVQYXRoOjpBdXRvOworc3RkOjphdG9taWM8
Rm9udENhc2NhZGU6OkNvZGVQYXRoPiBGb250Q2FzY2FkZTo6c19jb2RlUGF0aCA9IENvZGVQYXRo
OjpBdXRvOwogCiAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLy8gRm9u
dENhc2NhZGUgSW1wbGVtZW50YXRpb24gKENyb3NzLVBsYXRmb3JtIFBvcnRpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA2YWY1ODEy
ZDhhNzIyYjhmZGJkMzkzODFiZDY0ODMyNzY5ZTRmYTNhLi4yYmU4ZDBjNDI1YzUxYTVlMTM4NWJm
NDVkY2M2YjE4YjczNTg4YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTI1Niw3ICsyNTYsNiBAQCBwdWJsaWM6CiAgICAgLy8gVXNl
ZnVsIGZvciBkZWJ1Z2dpbmcgdGhlIGRpZmZlcmVudCBmb250IHJlbmRlcmluZyBjb2RlIHBhdGhz
LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldENvZGVQYXRoKENvZGVQYXRoKTsK
ICAgICBzdGF0aWMgQ29kZVBhdGggY29kZVBhdGgoKTsKLSAgICBzdGF0aWMgQ29kZVBhdGggc19j
b2RlUGF0aDsKIAogICAgIEZvbnRTZWxlY3RvciogZm9udFNlbGVjdG9yKCkgY29uc3Q7CiAgICAg
c3RhdGljIGJvb2wgdHJlYXRBc1NwYWNlKFVDaGFyMzIgYykgeyByZXR1cm4gYyA9PSAnICcgfHwg
YyA9PSAnXHQnIHx8IGMgPT0gJ1xuJyB8fCBjID09IG5vQnJlYWtTcGFjZTsgfQpAQCAtMzE5LDYg
KzMxOCw4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBhZHZhbmNlZFRleHRSZW5kZXJpbmdN
b2RlKCk7CiAgICAgfQogCisgICAgc3RhdGljIHN0ZDo6YXRvbWljPENvZGVQYXRoPiBzX2NvZGVQ
YXRoOworCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0cpCiAgICAgc3RhdGljIGRvdWJsZSBz
X2ZvbnRTbW9vdGhpbmdDb250cmFzdDsKICAgICBzdGF0aWMgdWludDMyX3Qgc19mb250U21vb3Ro
aW5nVHlwZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446658</attachid>
            <date>2021-12-09 21:48:31 -0800</date>
            <delta_ts>2022-09-07 19:43:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233979-20211210164830.patch</filename>
            <type>text/plain</type>
            <size>31882</size>
            <attacher name="Cameron McCormack (:heycam)">heycam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThjZWI0MGRjM2QwNmQ2
OGQ2YTliZDU5ODk5Y2JiZWViN2UxODU1Ny4uNWU1YWU5ODU2YmFhZjY2OWRhNmY1NzEyOGVkYmEy
ODlmMmVhOTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEyLTAyICBDYW1l
cm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEZvbnRD
YXNjYWRlOjpzX2NvZGVQYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGb250Q2FzY2FkZTo6c19jb2RlUGF0aCBjYW4gYmUgcmVhZCBvbiB3b3JrZXIg
dGhyZWFkcyB3aXRoCisgICAgICAgIE9mZnNjcmVlbkNhbnZhcyBhbmQgd3JpdHRlbiBvbiB0aGUg
bWFpbiB0aHJlYWQuIFJhdGhlciB0aGFuIG1ha2UKKyAgICAgICAgaXQgdGhyZWFkIHNhZmUsIGxl
dCdzIHRyeSByZW1vdmluZyBpdC4gVGhpcyBtZWFuczoKKworICAgICAgICAtIHJlbW92aW5nIHRo
ZSBjb3JyZXNwb25kaW5nIERlYnVnIG1lbnUgb3B0aW9uCisgICAgICAgIC0gcmVtb3ZpbmcgdGhl
IC0tY29tcGxleC10ZXh0IFdLVFIvRFJUIGFyZ3VtZW50CisgICAgICAgIC0gbWFraW5nIHRoZSBH
dGsgcG9ydCBnbyBiYWNrIHRvIGVmZmVjdGl2ZWx5IHVzaW5nIENvZGVQYXRoOjpBdXRvCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6Y29kZVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhc2NhZGU6OnNldENvZGVQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpjb2RlUGF0aCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0
Q29kZVBhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFsd2F5c1VzZXND
b21wbGV4VGV4dENvZGVQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2Vi
Q29yZVRleHRSZW5kZXJlci5oOgorCiAyMDIxLTEyLTAyICBDYW1lcm9uIE1jQ29ybWFjayAgPGhl
eWNhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBGb250Q2FzY2FkZTo6c2V0U2hvdWxkVXNl
U21vb3RoaW5nL3Nob3VsZFVzZVNtb290aGluZyB0aHJlYWQgc2FmZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiZjEx
NzFlYTlkZTljNDE1OGI2YTVhNWVhN2Y4OGJlNWY0YzRjMTA5Li42NTQ4MGM2NWY5YjRiNjYzOTk0
ODBlYmE0MzJkYWY1ZDQxMTNmNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTEy
LTA5ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVt
b3ZlIEZvbnRDYXNjYWRlOjpzX2NvZGVQYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIGFiaWxpdHkgdG8gc2V0IHRoZSB0ZXh0IGNv
ZGUgcGF0aC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAg
ICAgICAoV0tDb250ZXh0U2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldEFsd2F5c1VzZXNDb21wbGV4
VGV4dENvZGVQYXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjEt
MTItMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBh
IGBET01QYXN0ZUFjY2Vzc0NhdGVnb3J5YCB0byBjb250cm9sIHdoaWNoIHBhc3RlYm9hcmQgdGhl
IFdlYlByb2Nlc3MgaXMgZ3JhbnRlZCBhY2Nlc3MgdG8gd2hlbiBwYXN0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggNmZkMDM1YTEwODIxMWQxNmM3N2UzNmJkNDA5ZGRkODU2Y2Fi
NTM5MC4uZGEyYjQ1NTQxMjI2M2NmMjcwMjUxZWVhZjg1NmQ2MzRjOGNkMzE0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEyLTA5ICBDYW1lcm9u
IE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEZvbnRDYXNj
YWRlOjpzX2NvZGVQYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzM5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgdGhlIGFiaWxpdHkgdG8gc2V0IHRoZSB0ZXh0IGNvZGUgcGF0aC4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyBfc2V0QWx3
YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGg6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAyMDIxLTEyLTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeWAgdG8g
Y29udHJvbCB3aGljaCBwYXN0ZWJvYXJkIHRoZSBXZWJQcm9jZXNzIGlzIGdyYW50ZWQgYWNjZXNz
IHRvIHdoZW4gcGFzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGQwNzFhNzI1
ZDVjYTg5NTlkMjFmMDAzZTMwZjg5MDNlNmMyM2ZkN2YuLjFmMWQ5OWZjMTM0ZTFmMzE1ZDkxYTIy
YmMwMDNhZmNlOTI3N2UwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAyMS0xMi0wOSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBGb250Q2FzY2FkZTo6c19jb2RlUGF0aAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBhYmlsaXR5IHRv
IHNldCB0aGUgdGV4dCBjb2RlIHBhdGguCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJWaWV3
UHJpdmF0ZS5pZGw6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpz
ZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJW
aWV3OjphbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViVmlldy5oOgorCiAyMDIxLTEyLTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYSBgRE9NUGFzdGVBY2Nlc3NDYXRlZ29yeWAgdG8gY29udHJvbCB3
aGljaCBwYXN0ZWJvYXJkIHRoZSBXZWJQcm9jZXNzIGlzIGdyYW50ZWQgYWNjZXNzIHRvIHdoZW4g
cGFzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwCmluZGV4IDcyMDU3YTFkYmMwYzdmNzNjOGFhMzUwYmZiMGVhODRiNmNlYzIwMmQuLjll
MTExNDZlNzUxMTA2MzcyNzAyZjA0YjlmYTgwNzFlYzEyMzVlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTQ2LDggKzQ2LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwog
Ci1Gb250Q2FzY2FkZTo6Q29kZVBhdGggRm9udENhc2NhZGU6OnNfY29kZVBhdGggPSBDb2RlUGF0
aDo6QXV0bzsKLQogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vIEZv
bnRDYXNjYWRlIEltcGxlbWVudGF0aW9uIChDcm9zcy1QbGF0Zm9ybSBQb3J0aW9uKQogLy8gPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTQ1OCwyMSArNDU2LDggQEAgYm9v
bCBGb250Q2FzY2FkZTo6aXNTdWJwaXhlbEFudGlhbGlhc2luZ0F2YWlsYWJsZSgpCiB9CiAjZW5k
aWYKIAotdm9pZCBGb250Q2FzY2FkZTo6c2V0Q29kZVBhdGgoQ29kZVBhdGggcCkKLXsKLSAgICBz
X2NvZGVQYXRoID0gcDsKLX0KLQotRm9udENhc2NhZGU6OkNvZGVQYXRoIEZvbnRDYXNjYWRlOjpj
b2RlUGF0aCgpCi17Ci0gICAgcmV0dXJuIHNfY29kZVBhdGg7Ci19Ci0KIEZvbnRDYXNjYWRlOjpD
b2RlUGF0aCBGb250Q2FzY2FkZTo6Y29kZVBhdGgoY29uc3QgVGV4dFJ1biYgcnVuLCBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBmcm9tLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0bykgY29uc3QK
IHsKLSAgICBpZiAoc19jb2RlUGF0aCAhPSBDb2RlUGF0aDo6QXV0bykKLSAgICAgICAgcmV0dXJu
IHNfY29kZVBhdGg7Ci0KICNpZiAhVVNFKEZSRUVUWVBFKQogICAgIC8vIEZJWE1FOiBVc2UgdGhl
IGZhc3QgY29kZSBwYXRoIG9uY2UgaXQgaGFuZGxlcyBwYXJ0aWFsIHJ1bnMgd2l0aCBrZXJuaW5n
IGFuZCBsaWdhdHVyZXMuIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMDA1MAogICAgIGlmICgo
ZW5hYmxlS2VybmluZygpIHx8IHJlcXVpcmVzU2hhcGluZygpKSAmJiAoZnJvbS52YWx1ZV9vcigw
KSB8fCB0by52YWx1ZV9vcihydW4ubGVuZ3RoKCkpICE9IHJ1bi5sZW5ndGgoKSkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA2YWY1ODEy
ZDhhNzIyYjhmZGJkMzkzODFiZDY0ODMyNzY5ZTRmYTNhLi42YzJkYWZjOWI1NDM5OTU1ZDE3MzQ2
NjU5MjJjY2VmODk4YjIyMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmgKQEAgLTE5Nyw3ICsxOTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgYm9vbCBpc1N1YnBpeGVsQW50aWFsaWFzaW5nQXZhaWxhYmxlKCk7CiAKLSAgICBlbnVtIGNs
YXNzIENvZGVQYXRoIDogdWludDhfdCB7IEF1dG8sIFNpbXBsZSwgQ29tcGxleCwgU2ltcGxlV2l0
aEdseXBoT3ZlcmZsb3cgfTsKKyAgICBlbnVtIGNsYXNzIENvZGVQYXRoIDogdWludDhfdCB7IFNp
bXBsZSwgQ29tcGxleCwgU2ltcGxlV2l0aEdseXBoT3ZlcmZsb3cgfTsKICAgICBDb2RlUGF0aCBj
b2RlUGF0aChjb25zdCBUZXh0UnVuJiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gZnJvbSA9IHN0
ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdG8gPSBzdGQ6Om51bGxvcHQpIGNv
bnN0OwogICAgIHN0YXRpYyBDb2RlUGF0aCBjaGFyYWN0ZXJSYW5nZUNvZGVQYXRoKGNvbnN0IExD
aGFyKiwgdW5zaWduZWQpIHsgcmV0dXJuIENvZGVQYXRoOjpTaW1wbGU7IH0KICAgICBzdGF0aWMg
Q29kZVBhdGggY2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bik7CkBAIC0yNTMsMTEgKzI1Myw2IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIC8v
IFVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBkaWZmZXJlbnQgZm9udCByZW5kZXJpbmcgY29kZSBw
YXRocy4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRDb2RlUGF0aChDb2RlUGF0
aCk7Ci0gICAgc3RhdGljIENvZGVQYXRoIGNvZGVQYXRoKCk7Ci0gICAgc3RhdGljIENvZGVQYXRo
IHNfY29kZVBhdGg7Ci0KICAgICBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcigpIGNvbnN0Owog
ICAgIHN0YXRpYyBib29sIHRyZWF0QXNTcGFjZShVQ2hhcjMyIGMpIHsgcmV0dXJuIGMgPT0gJyAn
IHx8IGMgPT0gJ1x0JyB8fCBjID09ICdcbicgfHwgYyA9PSBub0JyZWFrU3BhY2U7IH0KICAgICBz
dGF0aWMgYm9vbCB0cmVhdEFzWmVyb1dpZHRoU3BhY2UoVUNoYXIzMiBjKSB7IHJldHVybiB0cmVh
dEFzWmVyb1dpZHRoU3BhY2VJbkNvbXBsZXhTY3JpcHQoYykgfHwgYyA9PSAweDIwMGMgfHwgYyA9
PSAweDIwMGQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJD
b3JlVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3Jl
VGV4dFJlbmRlcmVyLmNwcAppbmRleCBlOWMzYzlhZWYwMGJmMDdkMzEwYzZhOTRjNjA3NGMyOWYz
YzczM2YyLi4xMjZkZWVmOGRlZDc2Njg5YzRjZWViZGEwZTk1ZDY2MjE0YWExNDllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3Bw
CkBAIC0xMDQsMTQgKzEwNCw0IEBAIGJvb2wgV2ViQ29yZVNob3VsZFVzZUZvbnRTbW9vdGhpbmco
KQogICAgIHJldHVybiBzaG91bGRVc2VGb250U21vb3RoaW5nOwogfQogCi12b2lkIFdlYkNvcmVT
ZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sIGNvbXBsZXgpCi17Ci0gICAgRm9u
dENhc2NhZGU6OnNldENvZGVQYXRoKGNvbXBsZXggPyBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNv
bXBsZXggOiBGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkF1dG8pOwotfQotCi1ib29sIFdlYkNvcmVB
bHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aCgpCi17Ci0gICAgcmV0dXJuIEZvbnRDYXNjYWRl
Ojpjb2RlUGF0aCgpID09IEZvbnRDYXNjYWRlOjpDb2RlUGF0aDo6Q29tcGxleDsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9X
ZWJDb3JlVGV4dFJlbmRlcmVyLmgKaW5kZXggYjg0M2Y3NjBiZjBjZDQ1OTgzY2YwYTg1YjM3MTky
ZTQ4ZWNkMmQ3Ni4uNmM0OWFiNThjMzY5YWY2NTcyNWQyNjNmNjlkZTQ0ZTUyMWI1ZmIxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5o
CkBAIC00MSw5ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB2b2lkIFdlYkNvcmVT
ZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wpOwogICAgIGJvb2wgV2ViQ29yZVNob3VsZFVz
ZUZvbnRTbW9vdGhpbmcoKTsKIAotICAgIHZvaWQgV2ViQ29yZVNldEFsd2F5c1VzZXNDb21wbGV4
VGV4dENvZGVQYXRoKGJvb2wpOwotICAgIGJvb2wgV2ViQ29yZUFsd2F5c1VzZXNDb21wbGV4VGV4
dENvZGVQYXRoKCk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFdlYkNv
cmVUZXh0UmVuZGVyZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAKaW5kZXggYzI5YWY4MTdmZDhiMGVjYWIzYTc3OTZhMTIyZGI2NDJjZjA5MGY3My4uYWQ3
YWFiMWI1YzQ1ZmY5ZjVjMjIxMjRlMDQyMWU0ZjU5NDRiMWFiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC0zMjIsMTEgKzMyMiw2IEBAIHVuc2ln
bmVkIFdLQ29udGV4dEdldE1heGltdW1OdW1iZXJPZlByb2Nlc3NlcyhXS0NvbnRleHRSZWYpCiAg
ICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKIH0KIAotdm9p
ZCBXS0NvbnRleHRTZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoKQotewotICAgIFdl
YktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0
aChhbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoKTsKLX0KLQogdm9pZCBXS0NvbnRleHRTZXRT
aG91bGRVc2VGb250U21vb3RoaW5nKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBib29sIHVzZUZv
bnRTbW9vdGhpbmcpCiB7CiAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldFNob3Vs
ZFVzZUZvbnRTbW9vdGhpbmcodXNlRm9udFNtb290aGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKaW5kZXggNWUxYmM1OTY4NGIxZDA5
MzM1OGY4MWU4YWM4OWEyNTY5MDRkYjNiNC4uYjM0MzNiNTZlNWJjMDYyNzc1ZmIxODM0MjU4NTgy
MTQwMWQwMTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dFByaXZhdGUuaApAQCAtNDYsOCArNDYsNiBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRT
ZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdAog
CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzRW1wdHlEb2N1bWVu
dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgdXJsU2NoZW1lKTsKIAotV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoV0tDb250
ZXh0UmVmIGNvbnRleHQsIGJvb2wgYWx3YXlzVXNlQ29tcGxleFRleHRDb2RlUGF0aCk7Ci0KIFdL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoV0tDb250ZXh0
UmVmIGNvbnRleHQsIGJvb2wgdXNlRm9udFNtb290aGluZyk7CiAKIFdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNTZWN1cmUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
U3RyaW5nUmVmIHVybFNjaGVtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggYTk0ZTdiMjdjOGVhOTU1ZWNiZjRjMTdhNDMyMTFmNjQ5NGUzZDY5Zi4u
Zjg2N2IxNjYyODMwMWE0NDUxMDNhNDA1MDFjZWZlNGM4ZjEzZDM0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtODEwLDcgKzgxMCw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgV2Vic2l0ZURhCiAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFz
Q2FjaGVQYXJ0aXRpb25lZCA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDYWNo
ZVBhcnRpdGlvbmVkKTsKICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYW5E
aXNwbGF5T25seUlmQ2FuUmVxdWVzdCA9IGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVy
QXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdCk7CiAKLSAgICBwYXJhbWV0ZXJzLnNob3VsZEFs
d2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGggPSBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQ
YXRoOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZyA9IG1fc2hvdWxkVXNl
Rm9udFNtb290aGluZzsKIAogICAgIHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0ID0gMF9z
OwpAQCAtMTI4OCwxMiArMTI4Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmFjdGl2ZVBhZ2Vz
T3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3RpbmcoUHJvY2Vzc0lEIHBpZCwgQ29tCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QWx3YXlz
VXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4dCkKLXsKLSAg
ICBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoID0gYWx3YXlzVXNlQ29tcGxleFRleHQ7
Ci0gICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRBbHdheXNV
c2VzQ29tcGxleFRleHRDb2RlUGF0aChhbHdheXNVc2VDb21wbGV4VGV4dCkpOwotfQotCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wgdXNlRm9udFNt
b290aGluZykKIHsKICAgICBtX3Nob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSB1c2VGb250U21vb3Ro
aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggM2I0MzAz
YjIxNDUyZjM1N2NiZjZjMmY4NTk3ZWM0MWU2YzBjYTkxOC4uMTRmMTFjZDY5Njk2MmMwYzU5ZjVj
MGZlOWZlYjVjM2ViNmFmNzQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCkBAIC0yNDcsNyArMjQ3LDYgQEAgcHVibGljOgogCiAgICAgV2ViUGFnZUdyb3VwJiBk
ZWZhdWx0UGFnZUdyb3VwKCkgeyByZXR1cm4gbV9kZWZhdWx0UGFnZUdyb3VwLmdldCgpOyB9CiAK
LSAgICB2b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZv
aWQgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKICAgICAKICAgICB2b2lkIHJlZ2lz
dGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KGNvbnN0IFN0cmluZyYpOwpAQCAtNjQ1LDcgKzY0
NCw2IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJB
c0NhY2hlUGFydGl0aW9uZWQ7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0
ZXJBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0OwogCi0gICAgYm9vbCBtX2Fsd2F5c1VzZXND
b21wbGV4VGV4dENvZGVQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkVXNlRm9udFNt
b290aGluZyB7IHRydWUgfTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fZm9udEFsbG93TGlzdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGli
LmNwcAppbmRleCBmOTEwYmVkNDY5MzI5NzZkMWJjODUyNWZhYzU2OTJmNzU4ZGViNDU2Li42ZGFm
NDdhMmJiMTU2ZTNjMDhjNGQyOWM4ZTUxZDMwOTJiZDM1OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCkBAIC01NSwxMiAr
NTUsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplKCkKIHsKLSNpZiBQTEFURk9STShHVEspCi0gICAgbV9hbHdheXNVc2VzQ29t
cGxleFRleHRDb2RlUGF0aCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAoY29uc3QgY2hhciogZm9y
Y2VDb21wbGV4VGV4dCA9IGdldGVudigiV0VCS0lUX0ZPUkNFX0NPTVBMRVhfVEVYVCIpKQotICAg
ICAgICBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoID0gIXN0cmNtcChmb3JjZUNvbXBs
ZXhUZXh0LCAiMSIpOwotCiAjaWYgT1MoTElOVVgpCiAgICAgaWYgKCFNZW1vcnlQcmVzc3VyZU1v
bml0b3I6OmRpc2FibGVkKCkpCiAgICAgICAgIGluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRsZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAxMDViYzZmZjhh
MjQ1ZmZjMTBmZDQ4NzEzOTMxNmM0OGFjZjJiMDA1Li44MGU5MTg1MzM1OWJlZTJlODlkMzFjZTNi
Mjc0NzY4YmZkMDBiNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CkBAIC01MzksOCArNTM5LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vz
cyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIAogICAgIHNldEJh
Y2tGb3J3YXJkQ2FjaGVDYXBhY2l0eShwYXJhbWV0ZXJzLmJhY2tGb3J3YXJkQ2FjaGVDYXBhY2l0
eSk7CiAKLSAgICBzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChwYXJhbWV0ZXJzLnNo
b3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGgpOwotCiAgICAgc2V0U2hvdWxkVXNlRm9u
dFNtb290aGluZyhwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhpbmcpOwogCiAgICAgc2V0
VGVybWluYXRpb25UaW1lb3V0KHBhcmFtZXRlcnMudGVybWluYXRpb25UaW1lb3V0KTsKQEAgLTc1
MSwxMSArNzQ5LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJ
bnRlcnZhbChkb3VibGUgdGltZW91dEludGVydmFsKQogICAgIFJlc291cmNlUmVxdWVzdDo6c2V0
RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogfQogCi12b2lkIFdlYlBy
b2Nlc3M6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29t
cGxleFRleHQpCi17Ci0gICAgV2ViQ29yZTo6Rm9udENhc2NhZGU6OnNldENvZGVQYXRoKGFsd2F5
c1VzZUNvbXBsZXhUZXh0ID8gV2ViQ29yZTo6Rm9udENhc2NhZGU6OkNvZGVQYXRoOjpDb21wbGV4
IDogV2ViQ29yZTo6Rm9udENhc2NhZGU6OkNvZGVQYXRoOjpBdXRvKTsKLX0KLQogdm9pZCBXZWJQ
cm9jZXNzOjpzZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wgdXNlRm9udFNtb290aGluZykK
IHsKICAgICBXZWJDb3JlOjpGb250Q2FzY2FkZTo6c2V0U2hvdWxkVXNlU21vb3RoaW5nKHVzZUZv
bnRTbW9vdGhpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMTRj
ZGY3NTE1YzYyYzQ1ZGFiOWY5ZGI4MTZmZGNiMmQ4ODVjZjMzYy4uOGZhMDIzY2YzMTBkOWJhZjUw
MDlmYzIzMGQ2MmUxNGZiZDI2YzMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCkBAIC00NTAsNyArNDUwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2No
ZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdChjb25zdCBTdHJpbmcmKSBjb25zdDsKIAog
ICAgIHZvaWQgc2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwoZG91YmxlKTsKLSAgICB2
b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZvaWQgc2V0
U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDc0OTNjM2Y4ZjQ2NTFkZGZiZDUwNDExZTdlMjA1NjZhZDkwZDkyZmUuLmQwMzQ1
MWI3NTQ1MmMyN2M5OTQ2MjY2NTZlN2RhODY0NWEyZjdjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00Myw3ICs0Myw2IEBAIG1l
c3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAg
UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KFN0cmluZyBzY2hl
bWUpCiAKICAgICBTZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUgdGltZW91
dEludGVydmFsKQotICAgIFNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3
YXlzVXNlQ29tcGxleFRleHQpCiAgICAgU2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sIHVz
ZUZvbnRTbW9vdGhpbmcpCiAgICAgU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9v
bCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7CiAgICAgQ2xlYXJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggNTY2NDJjMjIyZDZiYzU0M2FmOWU3NTliNjM5MzJhYTZlZDgzODY4NC4uNzEzM2MwNTVk
OWQ0N2UzYzgyZjYyNzNmNTgxOWY0ODdhYmE3ODgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjI2MCwxMSArMjI2MCw2IEBAIC0gKEJPT0wpX3Zp
ZXdDbGFzczooQ2xhc3MgKil2Q2xhc3MgYW5kUmVwcmVzZW50YXRpb25DbGFzczooQ2xhc3MgKily
Q2xhc3MgZm9yTUlNCiAgICAgcmV0dXJuIE5POwogfQogCi0rICh2b2lkKV9zZXRBbHdheXNVc2Vz
Q29tcGxleFRleHRDb2RlUGF0aDooQk9PTClmCi17Ci0gICAgV2ViQ29yZTo6Rm9udENhc2NhZGU6
OnNldENvZGVQYXRoKGYgPyBXZWJDb3JlOjpGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkNvbXBsZXgg
OiBXZWJDb3JlOjpGb250Q2FzY2FkZTo6Q29kZVBhdGg6OkF1dG8pOwotfQotCiArIChCT09MKWNh
bkNsb3NlQWxsV2ViVmlld3MKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6RE9NV2luZG93OjpkaXNw
YXRjaEFsbFBlbmRpbmdCZWZvcmVVbmxvYWRFdmVudHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCAxNmM1MTE5YjhjNGZlMGRk
ZjMzMjRiODkyODVjNDgyM2UxYWE1ZjhiLi5iYmZlYWQ0MzQ5YjBmYzQ2MDY3MTBhMzM3OTcyZDAz
MTg4MDJiZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3UHJpdmF0ZS5oCkBAIC01NDQsOCArNTQ0LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRv
IHRoZSBBUEkuCiAKICsgKE5TU3RyaW5nICopX2RlY29kZURhdGE6KE5TRGF0YSAqKWRhdGE7CiAK
LSsgKHZvaWQpX3NldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoOihCT09MKWY7Ci0KICNp
ZiAhVEFSR0VUX09TX0lQSE9ORQogLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKV9jYWNoZWRSZXNw
b25zZUZvclVSTDooTlNVUkwgKilVUkw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0ludGVyZmFjZXMvSVdlYlZpZXdQcml2YXRlLmlkbAppbmRleCA5Njc0NTdm
Y2U0ZTVmY2Y1YzRlZWFmMmExZTFkMDIyMjAzM2M4NzU0Li5kMmY5Y2ZlYWE5ZGI2NDM2OWY3ZWY1
OWM2ODhiNjllMDkzZWZhOWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9J
bnRlcmZhY2VzL0lXZWJWaWV3UHJpdmF0ZS5pZGwKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vSW50ZXJmYWNlcy9JV2ViVmlld1ByaXZhdGUuaWRsCkBAIC0xNTcsOSArMTU3LDYgQEAgaW50
ZXJmYWNlIElXZWJWaWV3UHJpdmF0ZSA6IElVbmtub3duCiAgICAgSFJFU1VMVCBzZXRUcmFuc3Bh
cmVudChbaW5dIEJPT0wgdHJhbnNwYXJlbnQpOwogICAgIEhSRVNVTFQgdHJhbnNwYXJlbnQoW291
dCwgcmV0dmFsXSBCT09MKiB0cmFuc3BhcmVudCk7CiAKLSAgICBIUkVTVUxUIHNldEFsd2F5c1Vz
ZXNDb21wbGV4VGV4dENvZGVQYXRoKFtpbl0gQk9PTCBjb21wbGV4KTsKLSAgICBIUkVTVUxUIGFs
d2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKFtvdXQsIHJldHZhbF0gQk9PTCogY29tcGxleCk7
Ci0KICAgICBIUkVTVUxUIHNldENvb2tpZUVuYWJsZWQoW2luXSBCT09MIGVuYWJsZSk7CiAgICAg
SFJFU1VMVCBjb29raWVFbmFibGVkKFtvdXQsIHJldHZhbF0gQk9PTCogZW5hYmxlZCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggNGZmY2RlOWM1MzI3MDJkOTM0ZDNjN2Mx
MzU1MzdjZWIyNjE1ZjExNS4uZTE0Y2EwOTZhMmZlZDA1NWU3OGYxZGVmODM0MDkxNWQ2MDJmZjE5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTY3NjksMjIgKzY3NjksNiBA
QCBIUkVTVUxUIFdlYlZpZXc6Omdsb2JhbEhpc3RvcnlJdGVtKF9DT01fT3V0cHRyX29wdF8gSVdl
Ykhpc3RvcnlJdGVtKiogaXRlbSkKICAgICByZXR1cm4gU19PSzsKIH0KIAotSFJFU1VMVCBXZWJW
aWV3OjpzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChCT09MIGNvbXBsZXgpCi17Ci0g
ICAgV2ViQ29yZVNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGNvbXBsZXgpOwotCi0g
ICAgcmV0dXJuIFNfT0s7Ci19Ci0KLUhSRVNVTFQgV2ViVmlldzo6YWx3YXlzVXNlc0NvbXBsZXhU
ZXh0Q29kZVBhdGgoX091dF8gQk9PTCogY29tcGxleCkKLXsKLSAgICBpZiAoIWNvbXBsZXgpCi0g
ICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0KLSAgICAqY29tcGxleCA9IFdlYkNvcmVBbHdheXNV
c2VzQ29tcGxleFRleHRDb2RlUGF0aCgpOwotICAgIHJldHVybiBTX09LOwotfQotCiBIUkVTVUxU
IFdlYlZpZXc6OnJlZ2lzdGVyRW1iZWRkZWRWaWV3TUlNRVR5cGUoX0luXyBCU1RSIG1pbWVUeXBl
KQogewogICAgIGlmICghbWltZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXgg
MzlkYTZlODkwZDI1ZGQwOGZiYjI3N2IxYmFkY2MwZmViNDFmZDA3Zi4uODZhZWYwMzk5ZWYwZDY0
MDEzYjc5MzEzY2I0NWQ1ZDMxYjY1ZjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApA
QCAtMzM2LDggKzMzNiw2IEBAIHB1YmxpYzoKICAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldERlZmVyc0NhbGxiYWNrcyhCT09MKSBvdmVycmlkZTsKICAgICBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRlZmVyc0NhbGxiYWNrcyhfT3V0XyBCT09MKikgb3ZlcnJpZGU7CiAgICAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnbG9iYWxIaXN0b3J5SXRlbShfQ09NX091dHB0cl9vcHRf
IElXZWJIaXN0b3J5SXRlbSoqKSBvdmVycmlkZTsKLSAgICBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKEJPT0wpIG92ZXJyaWRlOwotICAg
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgo
X091dF8gQk9PTCopIG92ZXJyaWRlOwogICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
Q29va2llRW5hYmxlZChCT09MKSBvdmVycmlkZTsKICAgICBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNvb2tpZUVuYWJsZWQoX091dF8gQk9PTCopIG92ZXJyaWRlOwogICAgIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0TWVkaWFWb2x1bWUoZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQzNTFiMTNmYTFmMmYz
N2ZkMjc1YTI4YjVjNWUxNTcyM2FlNWMwMjEuLmRhN2I1YWMyOWMxOTA0MGJmYTdlYzE5YmYyODkw
ZmFhM2I2YWY0MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMS0xMi0wOSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxo
ZXljYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBGb250Q2FzY2FkZTo6c19jb2RlUGF0
aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zl
IHN1cHBvcnQgZm9yIHRoZSAtLWNvbXBsZXgtdGV4dCBhcmd1bWVudCB3aGVuIHJ1bm5pbmcgdGVz
dHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06Cisg
ICAgICAgIChpbml0aWFsaXplR2xvYmFsc0Zyb21Db21tYW5kTGluZU9wdGlvbnMpOgorICAgICAg
ICAoZHVtcFJlbmRlclRyZWUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHA6CisgICAgICAgIChjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC10b29scy1jb21wbGV0aW9uLnNoOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAg
ICAgIChwYXJzZV9hcmdzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weToKKyAgICAgICAgKFJ1blRlc3Qu
c2VyaWFsX3Rlc3RfY2hlY2tfZm9yX3dvcmxkX2xlYWtzKToKKyAgICAgICAgKFJ1blRlc3Quc2Vy
aWFsX3Rlc3RfY29tcGxleF90ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoRHJpdmVyLmNtZF9saW5lKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL09wdGlvbnMuY3BwOgorICAgICAgICAoV1RSOjpPcHRpb25zSGFu
ZGxlcjo6T3B0aW9uc0hhbmRsZXIpOgorICAgICAgICAoV1RSOjpoYW5kbGVPcHRpb25Db21wbGV4
VGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9PcHRpb25zLmg6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24pOgorCiAyMDIxLTEyLTA3ICBZb3VzdWtl
IEtpbW90byAgPFlvdXN1a2UuS2ltb3RvQHNvbnkuY29tPgogCiAgICAgICAgIFt3ZWJraXRjb3Jl
cHldIEZhaWwgdG8gaW5zdGFsbCBweXRob24gbW9kdWxlIHdoZW4gYSB3b3JraW5nIGRpcmVjdG9y
eSBpcyBub3Qgb24gQyBkcml2ZSBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KaW5kZXggZjMzOWE0MzMzYzBhOTBmNWE0ZGUzZWU2ZjdjNzA4NmU3
NjAxOGZjNS4uZmMwOTU3NGQ0YWFiY2UzMjYwNjdhOTJhOWE2ZTEwOTQ0MWRlZTM3NiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMjY0LDcgKzI2NCw2
IEBAIHN0YXRpYyBib29sIGR1bXBQaXhlbHNGb3JDdXJyZW50VGVzdDsKIHN0YXRpYyBpbnQgdGhy
ZWFkZWQ7CiBzdGF0aWMgaW50IGR1bXBUcmVlID0gWUVTOwogc3RhdGljIGludCB1c2VUaW1lb3V0
V2F0Y2hkb2cgPSBZRVM7Ci1zdGF0aWMgaW50IGZvcmNlQ29tcGxleFRleHQ7CiBzdGF0aWMgaW50
IHVzZUFjY2VsZXJhdGVkRHJhd2luZzsKIHN0YXRpYyBpbnQgZ2NCZXR3ZWVuVGVzdHM7CiBzdGF0
aWMgaW50IGFsbG93QW55SFRUUFNDZXJ0aWZpY2F0ZUZvckFsbG93ZWRIb3N0czsKQEAgLTk5NSw3
ICs5OTQsNiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplR2xvYmFsc0Zyb21Db21tYW5kTGluZU9w
dGlvbnMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXQogICAgICAgICB7InBpeGVsLXRlc3Rz
Iiwgbm9fYXJndW1lbnQsICZkdW1wUGl4ZWxzRm9yQWxsVGVzdHMsIFlFU30sCiAgICAgICAgIHsi
dHJlZSIsIG5vX2FyZ3VtZW50LCAmZHVtcFRyZWUsIFlFU30sCiAgICAgICAgIHsidGhyZWFkZWQi
LCBub19hcmd1bWVudCwgJnRocmVhZGVkLCBZRVN9LAotICAgICAgICB7ImNvbXBsZXgtdGV4dCIs
IG5vX2FyZ3VtZW50LCAmZm9yY2VDb21wbGV4VGV4dCwgWUVTfSwKICAgICAgICAgeyJhY2NlbGVy
YXRlZC1kcmF3aW5nIiwgbm9fYXJndW1lbnQsICZ1c2VBY2NlbGVyYXRlZERyYXdpbmcsIFlFU30s
CiAgICAgICAgIHsiZ2MtYmV0d2Vlbi10ZXN0cyIsIG5vX2FyZ3VtZW50LCAmZ2NCZXR3ZWVuVGVz
dHMsIFlFU30sCiAgICAgICAgIHsibm8tdGltZW91dCIsIG5vX2FyZ3VtZW50LCAmdXNlVGltZW91
dFdhdGNoZG9nLCBOT30sCkBAIC0xMTYzLDkgKzExNjEsNiBAQCB2b2lkIGR1bXBSZW5kZXJUcmVl
KGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCiAgICAgV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZCgpOwogICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6cG9wdWxhdGVKSVRPcGVyYXRpb25zKCk7
CiAKLSAgICBpZiAoZm9yY2VDb21wbGV4VGV4dCkKLSAgICAgICAgW1dlYlZpZXcgX3NldEFsd2F5
c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoOllFU107Ci0KICNpZiBVU0UoQVBQS0lUKQogICAgIFtO
U1NvdW5kIF9zZXRBbGVydFR5cGU6MF07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDRkNzM5Yjc2YTQ4MjZmZDA5ZTc5YTFlN2YxZDZk
OTQ0ZDM1YzA0MjguLmEwMzllOTM1NmM0NzAwNWNlM2NlOWM0ZTRkMTQ3NDRjYWVlYTJlODYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMTAxLDcg
KzEwMSw2IEBAIHN0YXRpYyBib29sIGR1bXBQaXhlbHNGb3JBbGxUZXN0cyA9IGZhbHNlOwogc3Rh
dGljIGJvb2wgZHVtcFBpeGVsc0ZvckN1cnJlbnRUZXN0ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB0
aHJlYWRlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgZHVtcFRyZWUgPSB0cnVlOwotc3RhdGljIGJv
b2wgZm9yY2VDb21wbGV4VGV4dCA9IGZhbHNlOwogc3RhdGljIGJvb2wgZHVtcEFsbFBpeGVsczsK
IHN0YXRpYyBib29sIHVzZUFjY2VsZXJhdGVkRHJhd2luZyA9IHRydWU7IC8vIE5vdCB1c2VkCiAv
LyBGSVhNRTogZ2NCZXR3ZWVuVGVzdHMgc2hvdWxkIGluaXRpYWxseSBiZSBmYWxzZSwgYnV0IHdl
IGN1cnJlbnRseSBzZXQgaXQgdG8gdHJ1ZSwgdG8gbWFrZSBzdXJlCkBAIC0xNDA2LDcgKzE0MDUs
NiBAQCBJV2ViVmlldyogY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyhIV05EKiB3ZWJW
aWV3V2luZG93KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHZpZXdQcml2YXRlLT5z
ZXRTaG91bGRBcHBseU1hY0ZvbnRBc2NlbnRIYWNrKFRSVUUpOwotICAgIHZpZXdQcml2YXRlLT5z
ZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChmb3JjZUNvbXBsZXhUZXh0KTsKICAgICB2
aWV3UHJpdmF0ZS0+c2V0Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yKDEuMCk7CiAKICAgICBfYnN0
cl90IHBsdWdpblBhdGggPSBfYnN0cl90KGV4ZVBhdGgoKS5kYXRhKCkpICsgVGVzdFBsdWdpbkRp
cjsKQEAgLTE0OTYsMTEgKzE0OTQsNiBAQCBzdGF0aWMgVmVjdG9yPGNvbnN0IGNoYXIqPiBpbml0
aWFsaXplR2xvYmFsc0Zyb21Db21tYW5kTGluZU9wdGlvbnMoaW50IGFyZ2MsIGNvbgogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXN0cmljbXAoYXJndltp
XSwgIi0tY29tcGxleC10ZXh0IikpIHsKLSAgICAgICAgICAgIGZvcmNlQ29tcGxleFRleHQgPSB0
cnVlOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoIXN0
cmljbXAoYXJndltpXSwgIi0tYWNjZWxlcmF0ZWQtZHJhd2luZyIpKSB7CiAgICAgICAgICAgICB1
c2VBY2NlbGVyYXRlZERyYXdpbmcgPSB0cnVlOwogICAgICAgICAgICAgY29udGludWU7CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdC10b29scy1jb21wbGV0aW9uLnNoIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXQtdG9vbHMtY29tcGxldGlvbi5zaAppbmRleCAxYzE3MzA1NGFiMmRhN2Jj
NDBmYTBhYWE2YWI2NmQ0OWNhYWMzNjdiLi4yYzk1YzhhYjZiYWZkMWExMGM2MTY2YTQ3ZWJkMTVl
NTVjMzcwNmFmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdC10b29scy1jb21wbGV0
aW9uLnNoCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0LXRvb2xzLWNvbXBsZXRpb24uc2gKQEAg
LTExMSw0ICsxMTEsNCBAQCBjb21wbGV0ZSAtRiBfd2Via2l0LXBhdGNoX2NvbXBsZXRlIHdlYmtp
dC1wYXRjaAogY29tcGxldGUgLW8gZGVmYXVsdCAtVyAiLS1jb250aW51ZSAtLWZpeC1tZXJnZWQg
LS1oZWxwIC0tbm8tY29udGludWUgLS1uby13YXJuaW5ncyAtLXdhcm5pbmdzIC1jIC1mIC1oIC13
IiByZXNvbHZlLUNoYW5nZUxvZ3MKIGNvbXBsZXRlIC1vIGRlZmF1bHQgLVcgIi0tYnVnIC0tZGlm
ZiAtLWdpdC1jb21taXQgLS1naXQtaW5kZXggLS1naXQtcmV2aWV3ZXIgLS1oZWxwIC0tbm8tc3R5
bGUgLS1uby11cGRhdGUgLS1uby13cml0ZSAtLW9wZW4gLS1zdHlsZSAtLXVwZGF0ZSAtLXdyaXRl
IC1kIC1oIC1vIiBwcmVwYXJlLUNoYW5nZUxvZwogY29tcGxldGUgLVcgIi0tY2xlYW4gLS1kZWJ1
ZyAtLWhlbHAgLWgiIGJ1aWxkLXdlYmtpdAotY29tcGxldGUgLW8gZGVmYXVsdCAtVyAiLS1hZGQt
cGxhdGZvcm0tZXhjZXB0aW9ucyAtLWNvbXBsZXgtdGV4dCAtLWNvbmZpZ3VyYXRpb24gLS1ndWFy
ZC1tYWxsb2MgLS1oZWxwIC0taHR0cCAtLWlnbm9yZS10ZXN0cyAtLWxhdW5jaC1zYWZhcmkgLS1s
ZWFrcyAtLW1lcmdlLWxlYWstZGVwdGggLS1uZXctdGVzdC1yZXN1bHRzIC0tbm8taHR0cCAtLW5v
LXNob3ctcmVzdWx0cyAtLW5vLW5ldy10ZXN0LXJlc3VsdHMgLS1uby1zYW1wbGUtb24tdGltZW91
dCAtLW5vLXN0cmlwLWVkaXRpbmctY2FsbGJhY2tzIC0tcGl4ZWwtdGVzdHMgLS1wbGF0Zm9ybSAt
LXBvcnQgLS1xdWlldCAtLXJhbmRvbSAtLXJlc2V0LXJlc3VsdHMgLS1yZXN1bHRzLWRpcmVjdG9y
eSAtLXJldmVyc2UgLS1yb290IC0tc2FtcGxlLW9uLXRpbWVvdXQgLS1zaW5nbHkgLS1za2lwcGVk
IC0tc2xvd2VzdCAtLXN0cmljdCAtLXN0cmlwLWVkaXRpbmctY2FsbGJhY2tzIC0tdGhyZWFkZWQg
LS10aW1lb3V0IC0tdG9sZXJhbmNlIC0tdXNlLXJlbW90ZS1saW5rcy10by10ZXN0cyAtLXZhbGdy
aW5kIC0tdmVyYm9zZSAtMSAtYyAtZyAtaCAtaSAtbCAtbSAtbyAtcCAtcSAtdCAtdiIgcnVuLXdl
YmtpdC10ZXN0cworY29tcGxldGUgLW8gZGVmYXVsdCAtVyAiLS1hZGQtcGxhdGZvcm0tZXhjZXB0
aW9ucyAtLWNvbmZpZ3VyYXRpb24gLS1ndWFyZC1tYWxsb2MgLS1oZWxwIC0taHR0cCAtLWlnbm9y
ZS10ZXN0cyAtLWxhdW5jaC1zYWZhcmkgLS1sZWFrcyAtLW1lcmdlLWxlYWstZGVwdGggLS1uZXct
dGVzdC1yZXN1bHRzIC0tbm8taHR0cCAtLW5vLXNob3ctcmVzdWx0cyAtLW5vLW5ldy10ZXN0LXJl
c3VsdHMgLS1uby1zYW1wbGUtb24tdGltZW91dCAtLW5vLXN0cmlwLWVkaXRpbmctY2FsbGJhY2tz
IC0tcGl4ZWwtdGVzdHMgLS1wbGF0Zm9ybSAtLXBvcnQgLS1xdWlldCAtLXJhbmRvbSAtLXJlc2V0
LXJlc3VsdHMgLS1yZXN1bHRzLWRpcmVjdG9yeSAtLXJldmVyc2UgLS1yb290IC0tc2FtcGxlLW9u
LXRpbWVvdXQgLS1zaW5nbHkgLS1za2lwcGVkIC0tc2xvd2VzdCAtLXN0cmljdCAtLXN0cmlwLWVk
aXRpbmctY2FsbGJhY2tzIC0tdGhyZWFkZWQgLS10aW1lb3V0IC0tdG9sZXJhbmNlIC0tdXNlLXJl
bW90ZS1saW5rcy10by10ZXN0cyAtLXZhbGdyaW5kIC0tdmVyYm9zZSAtMSAtYyAtZyAtaCAtaSAt
bCAtbSAtbyAtcCAtcSAtdCAtdiIgcnVuLXdlYmtpdC10ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXgg
NjBiOTQyZTJiMjEyZjdkYmQwODg5MzYyYWMzYWMzZGMxNjUzZWIzYy4uZDYwZTJmYWY1NGZmYTYz
ODBhMmU0YjZmOTE5MDdlYjExMjVkMjljNCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0xMTUsOCArMTE1
LDYgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncyk6CiAgICAgb3B0aW9uX2dyb3VwX2RlZmluaXRpb25z
LmFwcGVuZCgoIlByaW50aW5nIE9wdGlvbnMiLCBwcmludGluZy5wcmludF9vcHRpb25zKCkpKQog
CiAgICAgb3B0aW9uX2dyb3VwX2RlZmluaXRpb25zLmFwcGVuZCgoIkZlYXR1cmUgU3dpdGNoZXMi
LCBbCi0gICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWNvbXBsZXgtdGV4dCIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICBoZWxwPSJVc2UgdGhl
IGNvbXBsZXggdGV4dCBjb2RlIHBhdGggZm9yIGFsbCB0ZXh0IChPUyBYIGFuZCBXaW5kb3dzIG9u
bHkpIiksCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWFjY2VsZXJhdGVkLWRyYXdp
bmciLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgaGVs
cD0iVXNlIGFjY2VsZXJhdGVkIGRyYXdpbmcgKE9TIFggb25seSkiKSwKICAgICAgICAgb3B0cGFy
c2UubWFrZV9vcHRpb24oIi0tcmVtb3RlLWxheWVyLXRyZWUiLCBhY3Rpb249InN0b3JlX3RydWUi
LCBkZWZhdWx0PUZhbHNlLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVz
dC5weQppbmRleCA4MDEzZDJkMjA1MWVlNTVjZDg0NGI5M2EwZGQxNzczZDk3MGNmM2JmLi4zNWVi
YTIyYjg5NmMwZmNjNzkyZmE3MmRhNTNhYTE1ZWM5MjFjMWZkIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9u
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQpAQCAtMzEyLDkgKzMxMiw2IEBAIGNsYXNzIFJ1
blRlc3QodW5pdHRlc3QuVGVzdENhc2UsIFN0cmVhbVRlc3RpbmdNaXhpbik6CiAgICAgZGVmIHNl
cmlhbF90ZXN0X2NoZWNrX2Zvcl93b3JsZF9sZWFrcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHBhc3NpbmdfcnVuKFsnLS13b3JsZC1sZWFrcyddKSkKIAotICAgIGRlZiBzZXJpYWxf
dGVzdF9jb21wbGV4X3RleHQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5n
X3J1bihbJy0tY29tcGxleC10ZXh0J10pKQotCiAgICAgZGVmIHNlcmlhbF90ZXN0X3RocmVhZGVk
KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocGFzc2luZ19ydW4oWyctLXRocmVhZGVk
J10pKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQppbmRleCAzMGU4MGI1MDhi
NmZhY2YzMmYyYzk3OWNhZjE1ZWU4Y2M0ZjM3MzdjLi4xZjgyMTgyYzBiZWYyYjk1YWRjMDNlODVh
ZWMxZTljYzNkOWYxZWMyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZHJpdmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkKQEAg
LTUyNSw4ICs1MjUsNiBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgY21kLmFwcGVu
ZChzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpKQogICAgICAgICBpZiBzZWxmLl9wb3J0Lmdl
dF9vcHRpb24oJ2djX2JldHdlZW5fdGVzdHMnKToKICAgICAgICAgICAgIGNtZC5hcHBlbmQoJy0t
Z2MtYmV0d2Vlbi10ZXN0cycpCi0gICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignY29t
cGxleF90ZXh0Jyk6Ci0gICAgICAgICAgICBjbWQuYXBwZW5kKCctLWNvbXBsZXgtdGV4dCcpCiAg
ICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYWNjZWxlcmF0ZWRfZHJhd2luZycpOgog
ICAgICAgICAgICAgY21kLmFwcGVuZCgnLS1hY2NlbGVyYXRlZC1kcmF3aW5nJykKICAgICAgICAg
aWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdyZW1vdGVfbGF5ZXJfdHJlZScpOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9PcHRpb25zLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvT3B0aW9ucy5jcHAKaW5kZXggZDQ1ZTRiMDdhNmU2NDc2OThiY2NiZDg0MjkzZDgxZDg5
YWUwZTYzYS4uOThmNDlkMzgwNjViOTJmNDBkMzYxOGYyMDFhNjRmMWMwYWUwMjE2ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9PcHRpb25zLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL09wdGlvbnMuY3BwCkBAIC01OCwxMiArNTgsNiBAQCBzdGF0aWMgYm9vbCBo
YW5kbGVPcHRpb25QaXhlbFRlc3RzKE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgaGFuZGxlT3B0aW9u
Q29tcGxleFRleHQoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQot
ewotICAgIG9wdGlvbnMuZm9yY2VDb21wbGV4VGV4dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KIHN0YXRpYyBib29sIGhhbmRsZU9wdGlvbkFjY2VsZXJhdGVkRHJhd2luZyhPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciopCiB7CiAgICAgb3B0aW9ucy5mZWF0
dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzLmluc2VydF9vcl9hc3NpZ24oIkFjY2VsZXJh
dGVkRHJhd2luZ0VuYWJsZWQiLCB0cnVlKTsKQEAgLTE2MCw3ICsxNTQsNiBAQCBPcHRpb25zSGFu
ZGxlcjo6T3B0aW9uc0hhbmRsZXIoT3B0aW9ucyYgbykKICAgICBvcHRpb25MaXN0LmFwcGVuZChP
cHRpb24oIi0tZ2MtYmV0d2Vlbi10ZXN0cyIsICJHYXJiYWdlIGNvbGxlY3Rpb24gYmV0d2VlbiB0
ZXN0cy4iLCBoYW5kbGVPcHRpb25HY0JldHdlZW5UZXN0cykpOwogICAgIG9wdGlvbkxpc3QuYXBw
ZW5kKE9wdGlvbigiLS1waXhlbC10ZXN0cyIsICJDaGVjayBwaXhlbHMuIiwgaGFuZGxlT3B0aW9u
UGl4ZWxUZXN0cykpOwogICAgIG9wdGlvbkxpc3QuYXBwZW5kKE9wdGlvbigiLXAiLCAiQ2hlY2sg
cGl4ZWxzLiIsIGhhbmRsZU9wdGlvblBpeGVsVGVzdHMpKTsKLSAgICBvcHRpb25MaXN0LmFwcGVu
ZChPcHRpb24oIi0tY29tcGxleC10ZXh0IiwgIkZvcmNlIGNvbXBsZXggdGVzdHMuIiwgaGFuZGxl
T3B0aW9uQ29tcGxleFRleHQpKTsKICAgICBvcHRpb25MaXN0LmFwcGVuZChPcHRpb24oIi0tYWNj
ZWxlcmF0ZWQtZHJhd2luZyIsICJVc2UgYWNjZWxlcmF0ZWQgZHJhd2luZy4iLCBoYW5kbGVPcHRp
b25BY2NlbGVyYXRlZERyYXdpbmcpKTsKICAgICBvcHRpb25MaXN0LmFwcGVuZChPcHRpb24oIi0t
cmVtb3RlLWxheWVyLXRyZWUiLCAiVXNlIHJlbW90ZSBsYXllciB0cmVlLiIsIGhhbmRsZU9wdGlv
blJlbW90ZUxheWVyVHJlZSkpOwogICAgIG9wdGlvbkxpc3QuYXBwZW5kKE9wdGlvbigiLS1hbGxv
d2VkLWhvc3QiLCAiQWxsb3dzIGFjY2VzcyB0byB0aGUgc3BlY2lmaWVkIGhvc3QgZnJvbSB0ZXN0
cy4iLCBoYW5kbGVPcHRpb25BbGxvd2VkSG9zdCwgdHJ1ZSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9PcHRpb25zLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL09wdGlv
bnMuaAppbmRleCA4ZWZlZDUyZmJlZDQzMjlhN2IwNGYxYzI1MDk2MjJkYzAyZjFjOGZkLi4yMWM2
MjBjMmQyMGZjZWE5N2FlMGZlODMwZDdkNjFmN2VlYjdiYjIwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL09wdGlvbnMuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL09w
dGlvbnMuaApAQCAtNDYsNyArNDYsNiBAQCBzdHJ1Y3QgT3B0aW9ucyB7CiAgICAgYm9vbCB2ZXJi
b3NlIHsgZmFsc2UgfTsKICAgICBib29sIGdjQmV0d2VlblRlc3RzIHsgZmFsc2UgfTsKICAgICBi
b29sIHNob3VsZER1bXBQaXhlbHNGb3JBbGxUZXN0cyB7IGZhbHNlIH07Ci0gICAgYm9vbCBmb3Jj
ZUNvbXBsZXhUZXh0IHsgZmFsc2UgfTsKICAgICBib29sIGNoZWNrRm9yV29ybGRMZWFrcyB7IGZh
bHNlIH07CiAgICAgYm9vbCBhbGxvd0FueUhUVFBTQ2VydGlmaWNhdGVGb3JBbGxvd2VkSG9zdHMg
eyBmYWxzZSB9OwogICAgIGJvb2wgZW5hYmxlQWxsRXhwZXJpbWVudGFsRmVhdHVyZXMgeyB0cnVl
IH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGVkMjgw
MmZiMWU3NjZkYzVkZTY3YzQ0ZDE1NzY2MTYzMmMzOTMxYTMuLjE1M2Y1NTc3NzMxYTEwZGM1NDYx
ZGIyNTQ1NTc4NWE5YWE4YThhYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC01NDUsNyArNTQ1LDYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5pdGlh
bGl6ZShpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQogICAgIG1fdmVyYm9zZSA9IG9wdGlv
bnMudmVyYm9zZTsKICAgICBtX2djQmV0d2VlblRlc3RzID0gb3B0aW9ucy5nY0JldHdlZW5UZXN0
czsKICAgICBtX3Nob3VsZER1bXBQaXhlbHNGb3JBbGxUZXN0cyA9IG9wdGlvbnMuc2hvdWxkRHVt
cFBpeGVsc0ZvckFsbFRlc3RzOwotICAgIG1fZm9yY2VDb21wbGV4VGV4dCA9IG9wdGlvbnMuZm9y
Y2VDb21wbGV4VGV4dDsKICAgICBtX3BhdGhzID0gb3B0aW9ucy5wYXRoczsKICAgICBtX2FsbG93
ZWRIb3N0cyA9IG9wdGlvbnMuYWxsb3dlZEhvc3RzOwogICAgIG1fY2hlY2tGb3JXb3JsZExlYWtz
ID0gb3B0aW9ucy5jaGVja0ZvcldvcmxkTGVha3M7CkBAIC02OTEsOSArNjkwLDYgQEAgV0tSZXRh
aW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gVGVzdENvbnRyb2xsZXI6OmdlbmVyYXRlUGFn
ZUNvbmZpZ3VyYXRpb24oY28KICAgICBpZiAodGVzdFBsdWdpbkRpcmVjdG9yeSgpKQogICAgICAg
ICBXS0NvbnRleHRTZXRBZGRpdGlvbmFsUGx1Z2luc0RpcmVjdG9yeShtX2NvbnRleHQuZ2V0KCks
IHRlc3RQbHVnaW5EaXJlY3RvcnkoKSk7CiAKLSAgICBpZiAobV9mb3JjZUNvbXBsZXhUZXh0KQot
ICAgICAgICBXS0NvbnRleHRTZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChtX2NvbnRl
eHQuZ2V0KCksIHRydWUpOwotCiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IGFkb3B0V0so
V0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKICAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0
Q29udGV4dChwYWdlQ29uZmlndXJhdGlvbi5nZXQoKSwgbV9jb250ZXh0LmdldCgpKTsKICAgICBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0UGFnZUdyb3VwKHBhZ2VDb25maWd1cmF0aW9uLmdldCgpLCBt
X3BhZ2VHcm91cC5nZXQoKSk7Cg==
</data>
<flag name="review"
          id="490891"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
    <flag name="commit-queue"
          id="472125"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>