<?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>204393</bug_id>
          
          <creation_ts>2019-11-19 20:02:04 -0800</creation_ts>
          <short_desc>[LFC][IFC] TextUtil::width should use FontCascade::widthForSimpleText when applicable</short_desc>
          <delta_ts>2019-11-20 07:19:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</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>1591857</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-11-19 20:02:04 -0800</bug_when>
    <thetext>just like SLL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591858</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-19 20:02:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/57347144&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591864</commentid>
    <comment_count>2</comment_count>
      <attachid>383939</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-11-19 20:13:04 -0800</bug_when>
    <thetext>Created attachment 383939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591983</commentid>
    <comment_count>3</comment_count>
      <attachid>383959</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-11-20 06:34:15 -0800</bug_when>
    <thetext>Created attachment 383959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591991</commentid>
    <comment_count>4</comment_count>
      <attachid>383959</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-20 07:19:02 -0800</bug_when>
    <thetext>Comment on attachment 383959
Patch

Clearing flags on attachment: 383959

Committed r252686: &lt;https://trac.webkit.org/changeset/252686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591992</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-20 07:19:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383939</attachid>
            <date>2019-11-19 20:13:04 -0800</date>
            <delta_ts>2019-11-20 06:34:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204393-20191119201243.patch</filename>
            <type>text/plain</type>
            <size>22669</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ5ZGZkZjM1NjNmMmY5
YTUzNmZkYzJhZjAwZDlhOWJlYmJlNzIxMi4uYWU2NTM0ZWU3Y2IxMzc4NjE4NmVlNmNiZWYwN2Iy
ZmIwYTUyM2Y5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTExLTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBUZXh0VXRp
bDo6d2lkdGggc2hvdWxkIHVzZSBGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0IHdoZW4g
YXBwbGljYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA0MzkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzM0NzE0ND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIG9uZSBvZiByZWFz
b25zIHdoeSBzaW1wbGUgbGluZSBsYXlvdXQgcGVyZm9ybXMgYmV0dGVyIHRoYW4gY29tcGxleCBs
aW5lIGxheW91dC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVu
OjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRUZXh0Q29u
dGVudCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojptb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OmNyZWF0
ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
dGV4dC9UZXh0VXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRleHRVdGlsOjp3
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRleHRVdGlsOjpmaXhlZFBpdGNoV2lk
dGgpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0aWwuaDoK
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCb3g6OkJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6
c2V0VGV4dENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6Omhhc1RleHRD
b250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojp0ZXh0Q29udGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6c2V0VGV4dENvbnRlbnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OnRleHRDb250ZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaDoK
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dExheW91dEJveCk6CisKIDIwMTktMTEtMTkg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIERp
c3BsYXk6OlJ1bjpUZXh0Q29udGV4dCBzaG91bGQgdXNlIFN0cmluZ1ZpZXcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhYzY5NjEz
Y2VhMzQzYjhlODY2NmRiMDczOTZkNmIzYjk3OWYxOTk0Li5mMWU2MjNlYmRjYjlkYTY1MzI4ZjYx
OWM3NTAxNTkyMjdmYmI3NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDIxLDYgKzIwMjEsNyBAQAogCQk2RUU4QTc3MzEw
RjgwM0YzMDA1QTRBMjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUU4QTc3MTEwRjgwM0YzMDA1QTRB
MjQgLyogSlNXZWJHTENvbnRleHRBdHRyaWJ1dGVzLmggKi87IH07CiAJCTZGMENENjk1MjI5RUQz
MjcwMEM1OTk0RSAvKiBJbmxpbmVMaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RjBDRDY5NDIyOUVEMzI3MDBDNTk5NEUgLyogSW5saW5lTGluZS5o
ICovOyB9OwogCQk2RjFDQzFERTIyNUY4QjQ5MDA3MjBBRDIgLyogSW5saW5lVGV4dEl0ZW0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMUNDMUREMjI1
RjhCNDIwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTZGMUQyOTQ4MjM4NEMxREYwMDA4RjUwQiAvKiBU
ZXh0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkYxRDI5NDYyMzg0QzFERjAwMDhGNTBCIC8qIFRleHRDb250ZXh0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkYyNkJCNkMyMzM0M0U2RjAw
MkYyQkVBIC8qIExheW91dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGMjZCQjZCMjMzNDNFNUIwMDJGMkJFQSAvKiBMYXlvdXRDb250ZXh0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkYy
NkVCNDgyMzQwMDRBNTAwNjkwNkUyIC8qIElubGluZUxpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGMjZFQjQ2MjM0MDA0QTUwMDY5MDZF
MiAvKiBJbmxpbmVMaW5lTGF5b3V0LmggKi87IH07CiAJCTZGM0UxRjYyMjEzNjE0MjAwMEE2NUEw
OCAvKiBGbG9hdEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkYzRTFGNjEyMTM2MTQxNzAwQTY1QTA4IC8qIEZsb2F0Qm94LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkyNDcsNiArOTI0OCw3IEBA
CiAJCTZGMTBCMDg2MjJCODU2OEQwMDkwRTY5QyAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1
aXJrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJr
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMUNDMURDMjI1RjhCNDEwMDcy
MEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVUZXh0
SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMUNDMUREMjI1RjhCNDIw
MDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0SXRl
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RjFEMjk0NjIzODRDMURGMDAwOEY1
MEIgLyogVGV4dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkYyMjJCNzQxQUI1MkQ2
NDAwOTQ2NTFBIC8qIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZGMjIyQjc1MUFCNTJEOEEwMDk0NjUxQSAvKiBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGMjVCMjAw
MjIwQTg1QUIwMDAwMDExQiAvKiBJbmxpbmVMaW5lTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElubGluZUxpbmVMYXlvdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTY2NTEsNiArMTY2NTMsNyBAQAogCQkJCTExMUM2MTU2MjBBRDFBRTEwMDVCODJGQSAvKiBMYXlv
dXRSZXBsYWNlZC5oICovLAogCQkJCTExMTAwRkQ1MjA5NTE0REUwMDgxQUE2QyAvKiBMYXlvdXRU
cmVlQnVpbGRlci5jcHAgKi8sCiAJCQkJMTExMDBGRDcyMDk1MTRERjAwODFBQTZDIC8qIExheW91
dFRyZWVCdWlsZGVyLmggKi8sCisJCQkJNkYxRDI5NDYyMzg0QzFERjAwMDhGNTBCIC8qIFRleHRD
b250ZXh0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGxheW91dHRyZWU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMjkzMTUsNyArMjkzMTgsNiBAQAogCQkJCUFBMjFFQ0NEMEFCRjBG
QzYwMDJCODM0QyAvKiBDU1NDdXJzb3JJbWFnZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NDQ0Q0JFNDFEODg2MTk5MDA3M0EwNzQgLyogQ1NTQ3VzdG9tSWRlbnRWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM3NzlFMTQxQkIyMTVCQjAwQ0FBOEJGIC8qIENTU0N1c3RvbVByb3BlcnR5
VmFsdWUuaCBpbiBIZWFkZXJzICovLAotCQkJCTRBOUNDODE4MTZCQjlBQzYwMEVDNjQ1QSAvKiBV
c2VyQWdlbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ0NzZCREIxREZDQUMwMzAwNjkw
RTIzIC8qIENTU0RlZmVycmVkUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGQkIwQzVCODE3
QkJENjI5MDAzRDM2NzcgLyogQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM2NEI0RDYwQ0I0Mjk4QTAwNUYyQjYyIC8qIENTU0ZvbnRGYWNlLmggaW4gSGVhZGVycyAq
LywKQEAgLTI5NTM5LDcgKzI5NTQxLDYgQEAKIAkJCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUg
LyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGQkFF
ODBCNTE1MkVEMDAwMUYxRDcgLyogRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFEMkY4RTAzMjM0NDc0RUYwMDk5M0I2OCAvKiBEb2N1bWVudFBpY3R1cmVJblBpY3R1cmUuaCBp
biBIZWFkZXJzICovLAotCQkJCTRBNEY0OEFBMTZCMERGQzAwMEVEQkIyOSAvKiBTdHlsZVNjb3Bl
UnVsZVNldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUFENkU3MUFEMTY2ODg5OUQwMDMyMEMxMyAv
KiBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTZCREI1REMy
MjI3QkQzQjgwMDkxOTc3MCAvKiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBCOTA1NjFBMEYyNTc4QkYwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzEyMjMsNyArMzEyMjQsNiBAQAogCQkJCUU0NUJBNkFB
MjM3NDkyNkMwMDRERkMwNyAvKiBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZBQkU3MkY1MTA1OUMxRUIwMEQ4ODhDQyAvKiBNYXRoTUxBbm5vdGF0aW9uRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjUxMDU5QzFFQjAwRDk5OUREIC8qIE1h
dGhNTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0ODYzQ0ZFMjM4NDJFOUUwMDk3MjE1
OCAvKiBSdWxlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5
MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQkNGODNG
NzEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRnJhY3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlGQUJFNzJGOTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMzE5NzIsNiArMzE5NzIsNyBAQAogCQkJCTA3OEUwOTQ3MTdEMTZF
MUMwMDQyMEFBMSAvKiBSVENWb2lkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgyNEFC
QTMxQUU4MTExNjAwOTA3NEI3IC8qIFJ1YnlFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
ODI0QUJBNzFBRTgxMzg0MDA5MDc0QjcgLyogUnVieVRleHRFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlFNDg2M0NGRTIzODQyRTlFMDA5NzIxNTggLyogUnVsZURhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3OUJBREEyMTYxRTdGM0YwMEMyRTY1MiAvKiBSdWxlRmVhdHVyZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTc5QkFEQTQxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzIyNzUsNiArMzIyNzYsNyBAQAogCQkJCUU0OTQ2RUFG
MTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGOTRGMzdFMjM2NjE2MjYwMDNBQTVDNyAvKiBTdHlsZVJ1bGVUeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDYxRDY1RjFCQjBDODBEMDBDQjU2NDUgLyogU3R5bGVTY29wZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNEE0RjQ4QUExNkIwREZDMDAwRURCQjI5IC8qIFN0eWxlU2NvcGVSdWxlU2V0
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ3QTVFM0UxOTVCOEM4QTAwNDgzMTAwIC8qIFN0eWxl
U2Nyb2xsU25hcFBvaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUQ2MzgwMTAxQUYxNzMyMjAw
MzFBMTVDIC8qIFN0eWxlU2VsZkFsaWdubWVudERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0
N0EzQUM2MUM1RUFDOUQwMENDQkZBNyAvKiBTdHlsZVNoYXJpbmdSZXNvbHZlci5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMjYzOSw2ICszMjY0MSw3IEBACiAJCQkJODY4MTYwRDYxODc2NkExMzAwMjFF
NzlEIC8qIFVzZXJBY3Rpdml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTNBRjlEODYyMDMyNjg2
MTAwNkNBRDA2IC8qIFVzZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBQjZEMzExN0M5
MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlwdHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTRB
OUNDODE4MTZCQjlBQzYwMEVDNjQ1QSAvKiBVc2VyQWdlbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjU2NTgxQjIwOUQxNEVFNjAwMEU2MUQ3IC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUU3OUQ0MzE4OERCNjFGMDAyMjM5QzIgLyogVXNlckNvbnRl
bnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzNGMDFDMTFDOEU1QUJBMDBBREQ5
NjIgLyogVXNlckNvbnRlbnRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4
IDY4NzczZDMzYTgzNTI4Y2NkZjczNjIyMWE5MWZkMTc2YmMwZDc5NDMuLjU3MDUzMzVkMjRmYjU0
OTVlNDhmYjNiMTAzZGM2NTkwMmRhMWFkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuY3BwCkBAIC0xMzEsNyArMTMxLDcg
QEAgdm9pZCBMaW5lOjpSdW46OmV4cGFuZChjb25zdCBJbmxpbmVJdGVtUnVuJiBuZXh0UnVuKQog
CiAgICAgbV9sb2dpY2FsUmVjdC5leHBhbmRIb3Jpem9udGFsbHkobmV4dFJ1bi5sb2dpY2FsUmVj
dCgpLndpZHRoKCkpOwogICAgIGF1dG8gZXhwYW5kZWRMZW5ndGggPSBtX3RleHRDb250ZXh0LT5s
ZW5ndGgoKSArIG5leHRSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCk7Ci0gICAgbV90ZXh0Q29u
dGV4dC0+ZXhwYW5kKFN0cmluZ1ZpZXcobGF5b3V0Qm94KCkudGV4dENvbnRlbnQoKSkuc3Vic3Ry
aW5nKG1fdGV4dENvbnRleHQtPnN0YXJ0KCksIGV4cGFuZGVkTGVuZ3RoKSwgZXhwYW5kZWRMZW5n
dGgpOworICAgIG1fdGV4dENvbnRleHQtPmV4cGFuZChsYXlvdXRCb3goKS50ZXh0Q29udGV4dCgp
LmNvbnRlbnQuc3Vic3RyaW5nKG1fdGV4dENvbnRleHQtPnN0YXJ0KCksIGV4cGFuZGVkTGVuZ3Ro
KSwgZXhwYW5kZWRMZW5ndGgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB2ZXJ5IHNpbXBs
ZSBleHBhbnNpb24gbWVyZ2UuIFdlIHNob3VsZCBldmVudHVhbGx5IHN3aXRjaCBvdmVyIHRvIEZv
bnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50LiAKICAgICBpZiAoaGFzRXhwYW5z
aW9uT3Bwb3J0dW5pdHkoKSAmJiBuZXh0UnVuLmhhc0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkpIHsK
QEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIExpbmU6OmFwcGVuZFRleHRDb250ZW50KGNvbnN0IElu
bGluZVRleHRJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYQogICAgIGF1dG8gY29s
bGFwc2VkUnVuID0gaW5saW5lSXRlbS5pc0NvbGxhcHNpYmxlKCkgJiYgaW5saW5lSXRlbS5sZW5n
dGgoKSA+IDE7CiAgICAgYXV0byBjb250ZW50U3RhcnQgPSBpbmxpbmVJdGVtLnN0YXJ0KCk7CiAg
ICAgYXV0byBjb250ZW50TGVuZ3RoID0gIGNvbGxhcHNlZFJ1biA/IDEgOiBpbmxpbmVJdGVtLmxl
bmd0aCgpOwotICAgIGF1dG8gbGluZVJ1biA9IG1ha2VVbmlxdWU8SW5saW5lSXRlbVJ1bj4oaW5s
aW5lSXRlbSwgbG9naWNhbFJlY3QsIERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgeyBjb250ZW50
U3RhcnQsIGNvbnRlbnRMZW5ndGgsIFN0cmluZ1ZpZXcoaW5saW5lSXRlbS5sYXlvdXRCb3goKS50
ZXh0Q29udGVudCgpKS5zdWJzdHJpbmcoY29udGVudFN0YXJ0LCBjb250ZW50TGVuZ3RoKSB9KTsK
KyAgICBhdXRvIGxpbmVSdW4gPSBtYWtlVW5pcXVlPElubGluZUl0ZW1SdW4+KGlubGluZUl0ZW0s
IGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46OlRleHRDb250ZXh0IHsgY29udGVudFN0YXJ0LCBj
b250ZW50TGVuZ3RoLCBpbmxpbmVJdGVtLmxheW91dEJveCgpLnRleHRDb250ZXh0KCkuY29udGVu
dC5zdWJzdHJpbmcoY29udGVudFN0YXJ0LCBjb250ZW50TGVuZ3RoKSB9KTsKIAogICAgIGF1dG8g
Y29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoID0gd2lsbENvbGxhcHNlQ29tcGxldGVseSgpOwog
ICAgIGlmIChjb2xsYXBzZXNUb1plcm9BZHZhbmNlV2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKaW5k
ZXggNDc4YTk3N2Q3MGM1ZTE5MWIxNDFmMjUyNGMyNTUxN2FjZDFmYzczMC4uNjE1ZDY5ODg5NWIz
MTA3ZWZjN2E2Njc3ZjBkZTcyYzNhZGM2N2RlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVRleHRJdGVtLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKGNoYXIg
Y2hhcmFjdGVyKQogICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJyAnIHx8IGNoYXJhY3RlciA9PSAn
XHQnOwogfQogCi1zdGF0aWMgdW5zaWduZWQgbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlv
bihTdHJpbmcgdGV4dENvbnRlbnQsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCitzdGF0aWMgdW5z
aWduZWQgbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbihjb25zdCBTdHJpbmdWaWV3JiB0
ZXh0Q29udGVudCwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbikKIHsKICAgICBhdXRvIG5leHROb25X
aGl0ZVNwYWNlUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwogICAgIHdoaWxlIChuZXh0Tm9uV2hp
dGVTcGFjZVBvc2l0aW9uIDwgdGV4dENvbnRlbnQubGVuZ3RoKCkgJiYgaXNXaGl0ZXNwYWNlQ2hh
cmFjdGVyKHRleHRDb250ZW50W25leHROb25XaGl0ZVNwYWNlUG9zaXRpb25dKSkKQEAgLTgyLDcg
KzgyLDcgQEAgc3RhdGljIHVuc2lnbmVkIG1vdmVUb05leHRCcmVha2FibGVQb3NpdGlvbih1bnNp
Z25lZCBzdGFydFBvc2l0aW9uLCBMYXp5TGluZUJyZWEKIAogdm9pZCBJbmxpbmVUZXh0SXRlbTo6
Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25z
dCBCb3gmIGlubGluZUJveCkKIHsKLSAgICBhdXRvIHRleHQgPSBpbmxpbmVCb3gudGV4dENvbnRl
bnQoKTsKKyAgICBhdXRvIHRleHQgPSBpbmxpbmVCb3gudGV4dENvbnRleHQoKS5jb250ZW50Owog
ICAgIGlmICghdGV4dC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGlubGluZUNvbnRlbnQuYXBw
ZW5kKElubGluZVRleHRJdGVtOjpjcmVhdGVFbXB0eUl0ZW0oaW5saW5lQm94KSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0
aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0
VXRpbC5jcHAKaW5kZXggZDMxMmU3MGRmOTQyMTk0OWMzMGEyMGIwZTFlOGExZjMwZGUwZTNlNi4u
MDUxNTk2NzNlOTc3NzgwMWNjMTM4OWMwZTczMmRmZjQ3ZjRiOTBiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5j
cHAKQEAgLTQ2LDcgKzQ2LDggQEAgTGF5b3V0VW5pdCBUZXh0VXRpbDo6d2lkdGgoY29uc3QgQm94
JiBpbmxpbmVCb3gsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBMYXkKICAgICBpZiAoIWZv
bnQuc2l6ZSgpIHx8IGZyb20gPT0gdG8pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXV0byB0
ZXh0ID0gaW5saW5lQm94LnRleHRDb250ZW50KCk7CisgICAgYXV0byYgdGV4dENvbnRleHQgPSBp
bmxpbmVCb3gudGV4dENvbnRleHQoKTsKKyAgICBhdXRvJiB0ZXh0ID0gdGV4dENvbnRleHQuY29u
dGVudDsKICAgICBBU1NFUlQodG8gPD0gdGV4dC5sZW5ndGgoKSk7CiAKICAgICBpZiAoZm9udC5p
c0ZpeGVkUGl0Y2goKSkKQEAgLTU3LDEyICs1OCwxNSBAQCBMYXlvdXRVbml0IFRleHRVdGlsOjp3
aWR0aChjb25zdCBCb3gmIGlubGluZUJveCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIExh
eQogICAgIGlmIChtZWFzdXJlV2l0aEVuZFNwYWNlKQogICAgICAgICArK3RvOwogICAgIExheW91
dFVuaXQgd2lkdGg7Ci0gICAgYXV0byB0YWJXaWR0aCA9IHN0eWxlLmNvbGxhcHNlV2hpdGVTcGFj
ZSgpID8gVGFiU2l6ZSgwKSA6IHN0eWxlLnRhYlNpemUoKTsKLQotICAgIFdlYkNvcmU6OlRleHRS
dW4gcnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKGZyb20sIHRvIC0gZnJvbSksIGNvbnRl
bnRMb2dpY2FsTGVmdCk7Ci0gICAgaWYgKHRhYldpZHRoKQotICAgICAgICBydW4uc2V0VGFiU2l6
ZSh0cnVlLCB0YWJXaWR0aCk7Ci0gICAgd2lkdGggPSBmb250LndpZHRoKHJ1bik7CisgICAgaWYg
KHRleHRDb250ZXh0LmNhblVzZVNpbXBsaWZpZWRDb250ZW50TWVhc3VyaW5nKQorICAgICAgICB3
aWR0aCA9IGZvbnQud2lkdGhGb3JTaW1wbGVUZXh0KHRleHQuc3Vic3RyaW5nKGZyb20sIHRvIC0g
ZnJvbSkpOworICAgIGVsc2UgeworICAgICAgICBhdXRvIHRhYldpZHRoID0gc3R5bGUuY29sbGFw
c2VXaGl0ZVNwYWNlKCkgPyBUYWJTaXplKDApIDogc3R5bGUudGFiU2l6ZSgpOworICAgICAgICBX
ZWJDb3JlOjpUZXh0UnVuIHJ1bih0ZXh0LnN1YnN0cmluZyhmcm9tLCB0byAtIGZyb20pLCBjb250
ZW50TG9naWNhbExlZnQpOworICAgICAgICBpZiAodGFiV2lkdGgpCisgICAgICAgICAgICBydW4u
c2V0VGFiU2l6ZSh0cnVlLCB0YWJXaWR0aCk7CisgICAgICAgIHdpZHRoID0gZm9udC53aWR0aChy
dW4pOworICAgIH0KIAogICAgIGlmIChtZWFzdXJlV2l0aEVuZFNwYWNlKQogICAgICAgICB3aWR0
aCAtPSAoZm9udC5zcGFjZVdpZHRoKCkgKyBmb250LndvcmRTcGFjaW5nKCkpOwpAQCAtNzAsNyAr
NzQsNyBAQCBMYXlvdXRVbml0IFRleHRVdGlsOjp3aWR0aChjb25zdCBCb3gmIGlubGluZUJveCwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIExheQogICAgIHJldHVybiBzdGQ6Om1heDxMYXlv
dXRVbml0PigwLCB3aWR0aCk7CiB9CiAKLUxheW91dFVuaXQgVGV4dFV0aWw6OmZpeGVkUGl0Y2hX
aWR0aChTdHJpbmcgdGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCB0bywgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQpCitMYXlvdXRVbml0
IFRleHRVdGlsOjpmaXhlZFBpdGNoV2lkdGgoY29uc3QgU3RyaW5nVmlldyYgdGV4dCwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgTGF5b3V0VW5p
dCBjb250ZW50TG9naWNhbExlZnQpCiB7CiAgICAgYXV0byYgZm9udCA9IHN0eWxlLmZvbnRDYXNj
YWRlKCk7CiAgICAgYXV0byBtb25vc3BhY2VDaGFyYWN0ZXJXaWR0aCA9IGZvbnQuc3BhY2VXaWR0
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
dGV4dC9UZXh0VXRpbC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
dGV4dC9UZXh0VXRpbC5oCmluZGV4IDczMTI4ZTI1YjVhNTdmODQ0YTQ1YTZlMjg3ZGFhMDNiNTQy
NWM1YzQuLmE2YzkwYzIyMGNjOTQ5ODkyNjc2MDZmZjJjMTYxZGQ3NTdiYTEyNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0aWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0L1RleHRV
dGlsLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTcGxpdERhdGEgc3Bs
aXQoY29uc3QgQm94JiwgdW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBM
YXlvdXRVbml0IHRleHRXaWR0aCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgTGF5b3V0VW5p
dCBjb250ZW50TG9naWNhbExlZnQpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBMYXlvdXRVbml0
IGZpeGVkUGl0Y2hXaWR0aChTdHJpbmcsIGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgdG8sIExheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KTsKKyAgICBzdGF0
aWMgTGF5b3V0VW5pdCBmaXhlZFBpdGNoV2lkdGgoY29uc3QgU3RyaW5nVmlldyYsIGNvbnN0IFJl
bmRlclN0eWxlJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIExheW91dFVuaXQgY29udGVu
dExvZ2ljYWxMZWZ0KTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDhmNjFhODk5ZDRkZmU4N2E1N2EyODNkZDhkNTQyOThj
NWFmMTI0MjQuLmJiM2IzMzM3MzBiOTNmMzkxMzJmOTgxMDhjNjE2MWVhNTM3NzAyYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtNTQs
MTAgKzU0LDEwIEBAIEJveDo6Qm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1
dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogewogfQogCi1Cb3g6OkJveChTdHJpbmcgdGV4dENv
bnRlbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCitCb3g6OkJveChUZXh0Q29udGV4dCYmIHRleHRD
b250ZXh0LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogQm94KHsgfSwgV1RGTW92ZShzdHls
ZSksIEJhc2VUeXBlRmxhZzo6Qm94RmxhZykKIHsKLSAgICBzZXRUZXh0Q29udGVudCh0ZXh0Q29u
dGVudCk7CisgICAgc2V0VGV4dENvbnRleHQoV1RGTW92ZSh0ZXh0Q29udGV4dCkpOwogfQogCiBC
b3g6On5Cb3goKQpAQCAtMzg2LDIzICszODYsMjMgQEAgYm9vbCBCb3g6OmlzUGFkZGluZ0FwcGxp
Y2FibGUoKSBjb25zdAogICAgICAgICAmJiAhaXNUYWJsZUNvbHVtbigpOwogfQogCi12b2lkIEJv
eDo6c2V0VGV4dENvbnRlbnQoU3RyaW5nIHRleHRDb250ZW50KQordm9pZCBCb3g6OnNldFRleHRD
b250ZXh0KFRleHRDb250ZXh0JiYgdGV4dENvbnRleHQpCiB7CiAgICAgQVNTRVJUKGlzSW5saW5l
TGV2ZWxCb3goKSk7Ci0gICAgZW5zdXJlUmFyZURhdGEoKS50ZXh0Q29udGVudCA9IHRleHRDb250
ZW50OworICAgIGVuc3VyZVJhcmVEYXRhKCkudGV4dENvbnRleHQgPSBXVEZNb3ZlKHRleHRDb250
ZXh0KTsKIH0KIAogYm9vbCBCb3g6Omhhc1RleHRDb250ZW50KCkgY29uc3QKIHsKICAgICBBU1NF
UlQoaXNJbmxpbmVMZXZlbEJveCgpKTsKLSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiAhcmFy
ZURhdGEoKS50ZXh0Q29udGVudC5pc051bGwoKTsKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAm
JiAhcmFyZURhdGEoKS50ZXh0Q29udGV4dC5jb250ZW50LmlzTnVsbCgpOwogfQogCi1TdHJpbmcg
Qm94Ojp0ZXh0Q29udGVudCgpIGNvbnN0Citjb25zdCBUZXh0Q29udGV4dCYgQm94Ojp0ZXh0Q29u
dGV4dCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwogICAgIEFTU0VSVChp
c0lubGluZUxldmVsQm94KCkpOwotICAgIHJldHVybiByYXJlRGF0YSgpLnRleHRDb250ZW50Owor
ICAgIHJldHVybiByYXJlRGF0YSgpLnRleHRDb250ZXh0OwogfQogCiBjb25zdCBSZXBsYWNlZCog
Qm94OjpyZXBsYWNlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveC5oCmluZGV4IDRhYzIyOGM1ZTBhYWI2OWYyMzFjNTUwOGEyZGZhYzlhNDJhYzNm
YTkuLjYxOWFmYWRmMzgxNjU5MWJkMGQ4Y2NlMWY1Yzc1NjY0Yzg5MTBkNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJMYXlvdXRSZXBsYWNlZC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgi
CisjaW5jbHVkZSAiVGV4dENvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNjMsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiB1bnNpZ25lZCBCYXNlVHlwZUZsYWdzOwogCiAgICAgQm94KE9wdGlvbmFsPEVsZW1l
bnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJik7Ci0gICAgQm94KFN0cmluZyB0ZXh0Q29udGVu
dCwgUmVuZGVyU3R5bGUmJik7CisgICAgQm94KFRleHRDb250ZXh0JiYsIFJlbmRlclN0eWxlJiYp
OwogICAgIHZpcnR1YWwgfkJveCgpOwogCiAgICAgYm9vbCBlc3RhYmxpc2hlc0Zvcm1hdHRpbmdD
b250ZXh0KCkgY29uc3Q7CkBAIC0xNDMsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1F
OiBUZW1wb3JhcnkgdW50aWwgYWZ0ZXIgaW50cmluc2ljIHNpemUgY2hhbmdlIGlzIHRyYWNrZWQg
YnkgUmVwbGFjZWQuCiAgICAgUmVwbGFjZWQqIHJlcGxhY2VkKCk7CiAgICAgYm9vbCBoYXNUZXh0
Q29udGVudCgpIGNvbnN0OwotICAgIFN0cmluZyB0ZXh0Q29udGVudCgpIGNvbnN0OworICAgIGNv
bnN0IFRleHRDb250ZXh0JiB0ZXh0Q29udGV4dCgpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IEZp
bmQgYSBiZXR0ZXIgcGxhY2UgZm9yIHJhbmRvbSBET00gdGhpbmdzLgogICAgIHZvaWQgc2V0Um93
U3Bhbih1bnNpZ25lZCk7CkBAIC0xNjUsMTQgKzE2NiwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgQm94
KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFn
cyk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRUZXh0Q29udGVudChTdHJpbmcpOworICAgIHZv
aWQgc2V0VGV4dENvbnRleHQoVGV4dENvbnRleHQmJik7CiAKICAgICBjbGFzcyBCb3hSYXJlRGF0
YSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAg
ICAgQm94UmFyZURhdGEoKSA9IGRlZmF1bHQ7CiAKLSAgICAgICAgU3RyaW5nIHRleHRDb250ZW50
OworICAgICAgICBUZXh0Q29udGV4dCB0ZXh0Q29udGV4dDsKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFJlcGxhY2VkPiByZXBsYWNlZDsKICAgICAgICAgdW5zaWduZWQgcm93U3BhbiB7IDEgfTsK
ICAgICAgICAgdW5zaWduZWQgY29sdW1uU3BhbiB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCAzZmQy
ZTI4NmQ2ZjExZDIzYzgzZTdiZTlkNzViMjQwZDcxNDA5ZjJjLi5lNmUyZWI1NmIwNzJhNDdmODVm
NGE5YjY0ZjU3MzA0MDU3MGI5NjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC0xMTAsNiArMTEwLDIxIEBA
IHN0YXRpYyBTdHJpbmcgYXBwbHlUZXh0VHJhbnNmb3JtKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiB0ZXh0OwogfQogCitzdGF0aWMgYm9v
bCBjYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmluZyhjb25zdCBTdHJpbmdWaWV3JiBjb250ZW50
LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9vbCB3aGl0ZXNwYWNlSXNDb2xsYXBzZWQpCit7
CisgICAgaWYgKCFjb250ZW50LmlzOEJpdCgpICYmICFjb250ZW50LmlzQWxsQVNDSUkoKSAmJiBG
b250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjb250ZW50LmNoYXJhY3RlcnMxNigp
LCBjb250ZW50Lmxlbmd0aCgpKSAhPSBGb250Q2FzY2FkZTo6U2ltcGxlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoZm9udC53b3JkU3BhY2luZygpIHx8IGZvbnQubGV0dGVyU3Bh
Y2luZygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY29udGVudC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmICgoIXdoaXRlc3BhY2VJ
c0NvbGxhcHNlZCAmJiBjb250ZW50W2ldID09ICdcdCcpIHx8IGNvbnRlbnRbaV0gPT0gbm9CcmVh
a1NwYWNlIHx8IGNvbnRlbnRbaV0gPj0gSGlyYWdhbmFMZXR0ZXJTbWFsbEEpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBzdGQ6OnVuaXF1
ZV9wdHI8TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudD4gVHJlZUJ1aWxkZXI6OmJ1aWxkTGF5b3V0
VHJlZShjb25zdCBSZW5kZXJWaWV3JiByZW5kZXJWaWV3KQogewogICAgIFBoYXNlU2NvcGUgc2Nv
cGUoUGhhc2U6OlR5cGU6OlRyZWVCdWlsZGluZyk7CkBAIC0xNTYsMTIgKzE3MSwxMyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRl
ckVsZW1lbnQmIHBhcmVudFJlbgogICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGNoaWxkTGF5b3V0
Qm94OwogICAgIGlmIChpczxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKSkgewogICAgICAgICBh
dXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKTsK
LSAgICAgICAgYXV0byB0ZXh0Q29udGVudCA9IGFwcGx5VGV4dFRyYW5zZm9ybSh0ZXh0UmVuZGVy
ZXIub3JpZ2luYWxUZXh0KCksIHBhcmVudFJlbmRlcmVyLnN0eWxlKCkpOworICAgICAgICBhdXRv
IHRleHQgPSBhcHBseVRleHRUcmFuc2Zvcm0odGV4dFJlbmRlcmVyLm9yaWdpbmFsVGV4dCgpLCBw
YXJlbnRSZW5kZXJlci5zdHlsZSgpKTsKICAgICAgICAgLy8gRklYTUU6IENsZWFybHkgdGhlcmUg
bXVzdCBiZSBhIGhlbHBlciBmdW5jdGlvbiBmb3IgdGhpcy4KKyAgICAgICAgYXV0byB0ZXh0Q29u
dGVudCA9IFRleHRDb250ZXh0IHsgdGV4dCwgY2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmco
dGV4dCwgcGFyZW50UmVuZGVyZXIuc3R5bGUoKS5mb250Q2FzY2FkZSgpLCBwYXJlbnRSZW5kZXJl
ci5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpKSB9OwogICAgICAgICBpZiAocGFyZW50UmVu
ZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OklubGluZSkKLSAgICAgICAg
ICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KHRleHRDb250ZW50LCBSZW5kZXJT
dHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5bGUoKSkpOworICAgICAgICAgICAgY2hpbGRM
YXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oV1RGTW92ZSh0ZXh0Q29udGVudCksIFJlbmRlclN0
eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHlsZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1ZTxCb3g+KHRleHRDb250ZW50LCBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5z
dHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7CisgICAgICAgICAgICBjaGlsZExheW91dEJv
eCA9IG1ha2VVbmlxdWU8Qm94PihXVEZNb3ZlKHRleHRDb250ZW50KSwgUmVuZGVyU3R5bGU6OmNy
ZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkocGFyZW50UmVuZGVyZXIuc3R5bGUoKSwgRGlz
cGxheVR5cGU6OklubGluZSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGF1dG8mIHJlbmRlcmVy
ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hpbGRSZW5kZXJlcik7CiAgICAgICAgIGF1dG8g
ZGlzcGxheVR5cGUgPSByZW5kZXJlci5zdHlsZSgpLmRpc3BsYXkoKTsKQEAgLTM3Miw3ICszODgs
NyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25z
dCBCb3gmIGxheW91dEJveCwgY29uc3QgRGlzcAogICAgICAgICBzdHJlYW0gPDwgIiBhdCAoIiA8
PCBkaXNwbGF5Qm94LT5sZWZ0KCkgPDwgIiwiIDw8IGRpc3BsYXlCb3gtPnRvcCgpIDw8ICIpIHNp
emUgIiA8PCBkaXNwbGF5Qm94LT53aWR0aCgpIDw8ICJ4IiA8PCBkaXNwbGF5Qm94LT5oZWlnaHQo
KTsKICAgICBzdHJlYW0gPDwgIiBsYXlvdXQgYm94LT4oIiA8PCAmbGF5b3V0Qm94IDw8ICIpIjsK
ICAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lTGV2ZWxCb3goKSAmJiBsYXlvdXRCb3guaXNBbm9u
eW1vdXMoKSkKLSAgICAgICAgc3RyZWFtIDw8ICIgdGV4dCBjb250ZW50IFtcIiIgPDwgbGF5b3V0
Qm94LnRleHRDb250ZW50KCkudXRmOCgpLmRhdGEoKSA8PCAiXCJdIjsKKyAgICAgICAgc3RyZWFt
IDw8ICIgdGV4dCBjb250ZW50IFtcIiIgPDwgbGF5b3V0Qm94LnRleHRDb250ZXh0KCkuY29udGVu
dC51dGY4KCkuZGF0YSgpIDw8ICJcIl0iOwogCiAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9UZXh0Q29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvVGV4dENvbnRleHQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNjA0ODBiMTlmNTJlMjE0ZjBiZmFhOTk4MTU2OWY2N2ExZmQzNDEyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvVGV4dENvbnRleHQuaApA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK3N0cnVj
dCBUZXh0Q29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgU3RyaW5nVmlldyBjb250ZW50OworICAgIGJvb2wgY2FuVXNlU2ltcGxpZmllZENvbnRlbnRN
ZWFzdXJpbmcgeyBmYWxzZSB9OworfTsKKworfQorfQorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383959</attachid>
            <date>2019-11-20 06:34:15 -0800</date>
            <delta_ts>2019-11-20 07:19:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204393-20191120063414.patch</filename>
            <type>text/plain</type>
            <size>22354</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNjg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQ0NDk2ODkzNmViYmI2
NmY2ZmVlY2Q3ZmY5MGFlMTY3YThhYTJlMi4uNDVkNTAyMjU3ZmMwZDg3NjQ3NjZkNTM4MDM3ZGU2
OWMxMWRiOTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTExLTIwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBUZXh0VXRp
bDo6d2lkdGggc2hvdWxkIHVzZSBGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0IHdoZW4g
YXBwbGljYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA0MzkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NzM0NzE0ND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBUaGlzIGlzIG9uZSBvZiByZWFz
b25zIHdoeSBzaW1wbGUgbGluZSBsYXlvdXQgcGVyZm9ybXMgYmV0dGVyIHRoYW4gY29tcGxleCBs
aW5lIGxheW91dC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6UnVu
OjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmRUZXh0Q29u
dGVudCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lVGV4dEl0ZW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojptb3ZlVG9OZXh0Tm9uV2hpdGVzcGFjZVBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lVGV4dEl0ZW06OmNyZWF0
ZUFuZEFwcGVuZFRleHRJdGVtcyk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
dGV4dC9UZXh0VXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRleHRVdGlsOjp3
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRleHRVdGlsOjpmaXhlZFBpdGNoV2lk
dGgpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0aWwuaDoK
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCb3g6OkJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6
c2V0VGV4dENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6Omhhc1RleHRD
b250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94Ojp0ZXh0Q29udGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6c2V0VGV4dENvbnRlbnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OnRleHRDb250ZW50IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaDoK
KyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OmNhblVzZVNpbXBsaWZpZWRUZXh0TWVhc3VyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dExheW91dEJveCk6CisKIDIwMTktMTEtMTkg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IERPTS5oaWdobGlnaHRTZWxlY3RvciBzaG91bGQgd29yayBmb3IgImRpdiwgZGl2OjpiZWZv
cmUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOTZhMTU2Yjk3NmFhZDY5M2JlODBjOGE1ZTRhY2M3MDU2YWQwOTEyNS4uMGY0OGNm
MGY3MzhlNzMwNzMzYzZjNDMzYjA4OWYwYzk4YjM1NGMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzc3LDYgKzM3Nyw3IEBA
CiAJCTExMzEwQ0Y2MjBCQTRBNTYwMDY1QThEMCAvKiBMYXlvdXRDaGlsZEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTEwMEZDOTIwOTI3
Q0JDMDA4MUFBNkMgLyogTGF5b3V0Q2hpbGRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTExMzEwQ0Y3MjBCQTRBNjIwMDY1QThEMCAv
KiBMYXlvdXRBbmNlc3Rvckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxMTEwMEZDQTIwOTI4NjhEMDA4MUFBNkMgLyogTGF5b3V0QW5jZXN0
b3JJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTExMzQwOURBMjAzRTAzODAwMEM2NjkxNSAvKiBSZW5kZXJUcmVlQnVpbGRlckNvbnRp
bnVhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTEzNDA5RDgyMDNFMDM4MDAwQzY2OTE1IC8qIFJlbmRlclRyZWVCdWlsZGVyQ29udGludWF0aW9u
LmggKi87IH07CisJCTExM0EzQ0I0MjM4NTg2MDEwMEFFM0VDRSAvKiBUZXh0Q29udGV4dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTEzQTNDQjIyMzg1
ODYwMDAwQUUzRUNFIC8qIFRleHRDb250ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTEzRDBCNTIxRjlGREQyQjAwRjYxMUJCIC8qIEZyYW1l
Vmlld0xheW91dENvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDExM0QwQjUwMUY5RkREMkIwMEY2MTFCQiAvKiBGcmFtZVZpZXdMYXlvdXRDb250
ZXh0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MTE1Q0ZBNkEyMDhBRjdEMDAwMUU2OTkxIC8qIEZvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTVDRkE2ODIwOEFGN0QwMDAx
RTY5OTEgLyogRm9ybWF0dGluZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxMTVDRkE2RTIwOEFGQUI3MDAxRTY5OTEgLyogQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTE1Q0ZBNkMyMDhBRkFCNjAwMUU2OTkxIC8qIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NTg2NCw2ICs1ODY1LDcgQEAKIAkJMTEyQjM0RDQxRTYwQjk4MzAwQkIzMTBBIC8qIFNpbXBsZUxp
bmVMYXlvdXRQYWdpbmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNp
bXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTExMzQwOUQ3MjAzRTAzODAwMEM2NjkxNSAvKiBSZW5kZXJUcmVlQnVpbGRlckNvbnRpbnVhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJUcmVlQnVpbGRlckNvbnRpbnVhdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExMzQwOUQ4MjAzRTAzODAwMEM2Njkx
NSAvKiBSZW5kZXJUcmVlQnVpbGRlckNvbnRpbnVhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJUcmVlQnVpbGRlckNvbnRpbnVhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxMTNBM0NCMjIzODU4NjAwMDBBRTNFQ0UgLyogVGV4dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dENvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTEzRDBCNEYxRjlGREQyQjAwRjYxMUJCIC8qIEZyYW1lVmlld0xheW91dENvbnRl
eHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExM0QwQjUwMUY5RkREMkIwMEY2MTFCQiAvKiBG
cmFtZVZpZXdMYXlvdXRDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lVmlld0xheW91dENv
bnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTE1Q0E4MzAyMzMyOEIxRTAw
RkQzQjA4IC8qIExheW91dFVuaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFVuaXRz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjU2LDYgKzE2NjU4LDcgQEAK
IAkJCQkxMTFDNjE1NjIwQUQxQUUxMDA1QjgyRkEgLyogTGF5b3V0UmVwbGFjZWQuaCAqLywKIAkJ
CQkxMTEwMEZENTIwOTUxNERFMDA4MUFBNkMgLyogTGF5b3V0VHJlZUJ1aWxkZXIuY3BwICovLAog
CQkJCTExMTAwRkQ3MjA5NTE0REYwMDgxQUE2QyAvKiBMYXlvdXRUcmVlQnVpbGRlci5oICovLAor
CQkJCTExM0EzQ0IyMjM4NTg2MDAwMEFFM0VDRSAvKiBUZXh0Q29udGV4dC5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBsYXlvdXR0cmVlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI5
MzIwLDcgKzI5MzIzLDYgQEAKIAkJCQlBQTIxRUNDRDBBQkYwRkM2MDAyQjgzNEMgLyogQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ0NENCRTQxRDg4NjE5OTAwNzNB
MDc0IC8qIENTU0N1c3RvbUlkZW50VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNzc5RTE0
MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0QTlDQzgxODE2QkI5QUM2MDBFQzY0NUEgLyogVXNlckFnZW50U3R5bGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk0NDc2QkRCMURGQ0FDMDMwMDY5MEUyMyAvKiBDU1NEZWZlcnJlZFBh
cnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJCMEM1QjgxN0JCRDYyOTAwM0QzNjc3IC8qIENT
U0ZpbHRlckltYWdlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjRCNEQ2MENCNDI5OEEw
MDVGMkI2MiAvKiBDU1NGb250RmFjZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTIyOCw3ICszMTIz
MCw2IEBACiAJCQkJRTQ1QkE2QUEyMzc0OTI2QzAwNERGQzA3IC8qIE1hdGNoZWREZWNsYXJhdGlv
bnNDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkFCRTcyRjUxMDU5QzFFQjAwRDg4OENDIC8q
IE1hdGhNTEFubm90YXRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQUJFNzJGNTEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQ4
NjNDRkUyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBCQ0Y4M0Y3MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxGcmFjdGlvbkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBQkU3MkY5MTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxNYXRoRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTk3Nyw2ICszMTk3OCw3IEBA
CiAJCQkJMDc4RTA5NDcxN0QxNkUxQzAwNDIwQUExIC8qIFJUQ1ZvaWRSZXF1ZXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1ODI0QUJBMzFBRTgxMTE2MDA5MDc0QjcgLyogUnVieUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTU4MjRBQkE3MUFFODEzODQwMDkwNzRCNyAvKiBSdWJ5VGV4dEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0ODYzQ0ZFMjM4NDJFOUUwMDk3MjE1OCAvKiBS
dWxlRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc5QkFEQTIxNjFFN0YzRjAwQzJFNjUyIC8q
IFJ1bGVGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzlCQURBNDE2MUU3RjNGMDBDMkU2
NTIgLyogUnVsZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3NkJCODIxOTQ1NjMyNDAwQ0ZE
MjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjUyNSw2ICszMjUy
Nyw3IEBACiAJCQkJQjJDM0RBNDAwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRDb2RlY1VzZXJEZWZp
bmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE0MjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4
dENvZGVjVVRGMTYuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVF
RSAvKiBUZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLywKKwkJCQkxMTNBM0NCNDIzODU4NjAx
MDBBRTNFQ0UgLyogVGV4dENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkI5N0NBMTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU4MkRFMzI1MUMzMEM4NTQwMEJFMDJBOCAvKiBUZXh0RGVjb3JhdGlvblBhaW50ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFDNzNBNzE1MjE4NTc1ODcwMDRDQ0VBNSAvKiBUZXh0RGVj
b3JhdGlvblRoaWNrbmVzcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjY0NSw2ICszMjY0OCw3IEBA
CiAJCQkJODY4MTYwRDYxODc2NkExMzAwMjFFNzlEIC8qIFVzZXJBY3Rpdml0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTNBRjlEODYyMDMyNjg2MTAwNkNBRDA2IC8qIFVzZXJBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RBQjZEMzExN0M5MjU5NTAwQzYwQjM0IC8qIFVzZXJBZ2VudFNjcmlw
dHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTRBOUNDODE4MTZCQjlBQzYwMEVDNjQ1QSAvKiBVc2Vy
QWdlbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgxQjIwOUQxNEVFNjAwMEU2MUQ3
IC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU3OUQ0MzE4
OERCNjFGMDAyMjM5QzIgLyogVXNlckNvbnRlbnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QzNGMDFDMTFDOEU1QUJBMDBBREQ5NjIgLyogVXNlckNvbnRlbnRQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmUuY3BwCmluZGV4IDY4NzczZDMzYTgzNTI4Y2NkZjczNjIyMWE5MWZk
MTc2YmMwZDc5NDMuLjU3MDUzMzVkMjRmYjU0OTVlNDhmYjNiMTAzZGM2NTkwMmRhMWFkYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmUuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBMaW5lOjpSdW46OmV4cGFuZChjb25z
dCBJbmxpbmVJdGVtUnVuJiBuZXh0UnVuKQogCiAgICAgbV9sb2dpY2FsUmVjdC5leHBhbmRIb3Jp
em9udGFsbHkobmV4dFJ1bi5sb2dpY2FsUmVjdCgpLndpZHRoKCkpOwogICAgIGF1dG8gZXhwYW5k
ZWRMZW5ndGggPSBtX3RleHRDb250ZXh0LT5sZW5ndGgoKSArIG5leHRSdW4udGV4dENvbnRleHQo
KS0+bGVuZ3RoKCk7Ci0gICAgbV90ZXh0Q29udGV4dC0+ZXhwYW5kKFN0cmluZ1ZpZXcobGF5b3V0
Qm94KCkudGV4dENvbnRlbnQoKSkuc3Vic3RyaW5nKG1fdGV4dENvbnRleHQtPnN0YXJ0KCksIGV4
cGFuZGVkTGVuZ3RoKSwgZXhwYW5kZWRMZW5ndGgpOworICAgIG1fdGV4dENvbnRleHQtPmV4cGFu
ZChsYXlvdXRCb3goKS50ZXh0Q29udGV4dCgpLmNvbnRlbnQuc3Vic3RyaW5nKG1fdGV4dENvbnRl
eHQtPnN0YXJ0KCksIGV4cGFuZGVkTGVuZ3RoKSwgZXhwYW5kZWRMZW5ndGgpOwogCiAgICAgLy8g
RklYTUU6IFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBleHBhbnNpb24gbWVyZ2UuIFdlIHNob3VsZCBl
dmVudHVhbGx5IHN3aXRjaCBvdmVyIHRvIEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0
eUNvdW50LiAKICAgICBpZiAoaGFzRXhwYW5zaW9uT3Bwb3J0dW5pdHkoKSAmJiBuZXh0UnVuLmhh
c0V4cGFuc2lvbk9wcG9ydHVuaXR5KCkpIHsKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIExpbmU6
OmFwcGVuZFRleHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVJdGVtLCBMYXlv
dXRVbml0IGxvZ2ljYQogICAgIGF1dG8gY29sbGFwc2VkUnVuID0gaW5saW5lSXRlbS5pc0NvbGxh
cHNpYmxlKCkgJiYgaW5saW5lSXRlbS5sZW5ndGgoKSA+IDE7CiAgICAgYXV0byBjb250ZW50U3Rh
cnQgPSBpbmxpbmVJdGVtLnN0YXJ0KCk7CiAgICAgYXV0byBjb250ZW50TGVuZ3RoID0gIGNvbGxh
cHNlZFJ1biA/IDEgOiBpbmxpbmVJdGVtLmxlbmd0aCgpOwotICAgIGF1dG8gbGluZVJ1biA9IG1h
a2VVbmlxdWU8SW5saW5lSXRlbVJ1bj4oaW5saW5lSXRlbSwgbG9naWNhbFJlY3QsIERpc3BsYXk6
OlJ1bjo6VGV4dENvbnRleHQgeyBjb250ZW50U3RhcnQsIGNvbnRlbnRMZW5ndGgsIFN0cmluZ1Zp
ZXcoaW5saW5lSXRlbS5sYXlvdXRCb3goKS50ZXh0Q29udGVudCgpKS5zdWJzdHJpbmcoY29udGVu
dFN0YXJ0LCBjb250ZW50TGVuZ3RoKSB9KTsKKyAgICBhdXRvIGxpbmVSdW4gPSBtYWtlVW5pcXVl
PElubGluZUl0ZW1SdW4+KGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0LCBEaXNwbGF5OjpSdW46OlRl
eHRDb250ZXh0IHsgY29udGVudFN0YXJ0LCBjb250ZW50TGVuZ3RoLCBpbmxpbmVJdGVtLmxheW91
dEJveCgpLnRleHRDb250ZXh0KCkuY29udGVudC5zdWJzdHJpbmcoY29udGVudFN0YXJ0LCBjb250
ZW50TGVuZ3RoKSB9KTsKIAogICAgIGF1dG8gY29sbGFwc2VzVG9aZXJvQWR2YW5jZVdpZHRoID0g
d2lsbENvbGxhcHNlQ29tcGxldGVseSgpOwogICAgIGlmIChjb2xsYXBzZXNUb1plcm9BZHZhbmNl
V2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVUZXh0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVUZXh0SXRlbS5jcHAKaW5kZXggNDc4YTk3N2Q3MGM1ZTE5MWIxNDFmMjUyNGMy
NTUxN2FjZDFmYzczMC4uNjE1ZDY5ODg5NWIzMTA3ZWZjN2E2Njc3ZjBkZTcyYzNhZGM2N2RlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
VGV4dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZVRleHRJdGVtLmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKGNoYXIgY2hhcmFjdGVyKQogICAgIHJldHVybiBjaGFyYWN0
ZXIgPT0gJyAnIHx8IGNoYXJhY3RlciA9PSAnXHQnOwogfQogCi1zdGF0aWMgdW5zaWduZWQgbW92
ZVRvTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbihTdHJpbmcgdGV4dENvbnRlbnQsIHVuc2lnbmVk
IHN0YXJ0UG9zaXRpb24pCitzdGF0aWMgdW5zaWduZWQgbW92ZVRvTmV4dE5vbldoaXRlc3BhY2VQ
b3NpdGlvbihjb25zdCBTdHJpbmdWaWV3JiB0ZXh0Q29udGVudCwgdW5zaWduZWQgc3RhcnRQb3Np
dGlvbikKIHsKICAgICBhdXRvIG5leHROb25XaGl0ZVNwYWNlUG9zaXRpb24gPSBzdGFydFBvc2l0
aW9uOwogICAgIHdoaWxlIChuZXh0Tm9uV2hpdGVTcGFjZVBvc2l0aW9uIDwgdGV4dENvbnRlbnQu
bGVuZ3RoKCkgJiYgaXNXaGl0ZXNwYWNlQ2hhcmFjdGVyKHRleHRDb250ZW50W25leHROb25XaGl0
ZVNwYWNlUG9zaXRpb25dKSkKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIHVuc2lnbmVkIG1vdmVU
b05leHRCcmVha2FibGVQb3NpdGlvbih1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBMYXp5TGluZUJy
ZWEKIAogdm9pZCBJbmxpbmVUZXh0SXRlbTo6Y3JlYXRlQW5kQXBwZW5kVGV4dEl0ZW1zKElubGlu
ZUl0ZW1zJiBpbmxpbmVDb250ZW50LCBjb25zdCBCb3gmIGlubGluZUJveCkKIHsKLSAgICBhdXRv
IHRleHQgPSBpbmxpbmVCb3gudGV4dENvbnRlbnQoKTsKKyAgICBhdXRvIHRleHQgPSBpbmxpbmVC
b3gudGV4dENvbnRleHQoKS5jb250ZW50OwogICAgIGlmICghdGV4dC5sZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIGlubGluZUNvbnRlbnQuYXBwZW5kKElubGluZVRleHRJdGVtOjpjcmVhdGVFbXB0
eUl0ZW0oaW5saW5lQm94KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5jcHAKaW5kZXggZDMxMmU3MGRmOTQyMTk0
OWMzMGEyMGIwZTFlOGExZjMwZGUwZTNlNi4uMDUxNTk2NzNlOTc3NzgwMWNjMTM4OWMwZTczMmRm
ZjQ3ZjRiOTBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvdGV4dC9UZXh0VXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5jcHAKQEAgLTQ2LDcgKzQ2LDggQEAgTGF5b3V0VW5p
dCBUZXh0VXRpbDo6d2lkdGgoY29uc3QgQm94JiBpbmxpbmVCb3gsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIHRvLCBMYXkKICAgICBpZiAoIWZvbnQuc2l6ZSgpIHx8IGZyb20gPT0gdG8pCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgYXV0byB0ZXh0ID0gaW5saW5lQm94LnRleHRDb250ZW50KCk7
CisgICAgYXV0byYgdGV4dENvbnRleHQgPSBpbmxpbmVCb3gudGV4dENvbnRleHQoKTsKKyAgICBh
dXRvJiB0ZXh0ID0gdGV4dENvbnRleHQuY29udGVudDsKICAgICBBU1NFUlQodG8gPD0gdGV4dC5s
ZW5ndGgoKSk7CiAKICAgICBpZiAoZm9udC5pc0ZpeGVkUGl0Y2goKSkKQEAgLTU3LDEyICs1OCwx
NSBAQCBMYXlvdXRVbml0IFRleHRVdGlsOjp3aWR0aChjb25zdCBCb3gmIGlubGluZUJveCwgdW5z
aWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIExheQogICAgIGlmIChtZWFzdXJlV2l0aEVuZFNwYWNl
KQogICAgICAgICArK3RvOwogICAgIExheW91dFVuaXQgd2lkdGg7Ci0gICAgYXV0byB0YWJXaWR0
aCA9IHN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpID8gVGFiU2l6ZSgwKSA6IHN0eWxlLnRhYlNp
emUoKTsKLQotICAgIFdlYkNvcmU6OlRleHRSdW4gcnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3Ry
aW5nKGZyb20sIHRvIC0gZnJvbSksIGNvbnRlbnRMb2dpY2FsTGVmdCk7Ci0gICAgaWYgKHRhYldp
ZHRoKQotICAgICAgICBydW4uc2V0VGFiU2l6ZSh0cnVlLCB0YWJXaWR0aCk7Ci0gICAgd2lkdGgg
PSBmb250LndpZHRoKHJ1bik7CisgICAgaWYgKHRleHRDb250ZXh0LmNhblVzZVNpbXBsaWZpZWRD
b250ZW50TWVhc3VyaW5nKQorICAgICAgICB3aWR0aCA9IGZvbnQud2lkdGhGb3JTaW1wbGVUZXh0
KHRleHQuc3Vic3RyaW5nKGZyb20sIHRvIC0gZnJvbSkpOworICAgIGVsc2UgeworICAgICAgICBh
dXRvIHRhYldpZHRoID0gc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCkgPyBUYWJTaXplKDApIDog
c3R5bGUudGFiU2l6ZSgpOworICAgICAgICBXZWJDb3JlOjpUZXh0UnVuIHJ1bih0ZXh0LnN1YnN0
cmluZyhmcm9tLCB0byAtIGZyb20pLCBjb250ZW50TG9naWNhbExlZnQpOworICAgICAgICBpZiAo
dGFiV2lkdGgpCisgICAgICAgICAgICBydW4uc2V0VGFiU2l6ZSh0cnVlLCB0YWJXaWR0aCk7Cisg
ICAgICAgIHdpZHRoID0gZm9udC53aWR0aChydW4pOworICAgIH0KIAogICAgIGlmIChtZWFzdXJl
V2l0aEVuZFNwYWNlKQogICAgICAgICB3aWR0aCAtPSAoZm9udC5zcGFjZVdpZHRoKCkgKyBmb250
LndvcmRTcGFjaW5nKCkpOwpAQCAtNzAsNyArNzQsNyBAQCBMYXlvdXRVbml0IFRleHRVdGlsOjp3
aWR0aChjb25zdCBCb3gmIGlubGluZUJveCwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIExh
eQogICAgIHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PigwLCB3aWR0aCk7CiB9CiAKLUxheW91
dFVuaXQgVGV4dFV0aWw6OmZpeGVkUGl0Y2hXaWR0aChTdHJpbmcgdGV4dCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCB0bywgTGF5b3V0VW5pdCBjb250
ZW50TG9naWNhbExlZnQpCitMYXlvdXRVbml0IFRleHRVdGlsOjpmaXhlZFBpdGNoV2lkdGgoY29u
c3QgU3RyaW5nVmlldyYgdGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQpCiB7CiAgICAg
YXV0byYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CiAgICAgYXV0byBtb25vc3BhY2VDaGFy
YWN0ZXJXaWR0aCA9IGZvbnQuc3BhY2VXaWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4dC9UZXh0VXRpbC5oCmluZGV4IDczMTI4ZTI1
YjVhNTdmODQ0YTQ1YTZlMjg3ZGFhMDNiNTQyNWM1YzQuLmE2YzkwYzIyMGNjOTQ5ODkyNjc2MDZm
ZjJjMTYxZGQ3NTdiYTEyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL3RleHQvVGV4dFV0aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy90ZXh0L1RleHRVdGlsLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBTcGxpdERhdGEgc3BsaXQoY29uc3QgQm94JiwgdW5zaWduZWQgc3RhcnRQ
b3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBMYXlvdXRVbml0IHRleHRXaWR0aCwgTGF5b3V0VW5p
dCBhdmFpbGFibGVXaWR0aCwgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQpOwogCiBwcml2
YXRlOgotICAgIHN0YXRpYyBMYXlvdXRVbml0IGZpeGVkUGl0Y2hXaWR0aChTdHJpbmcsIGNvbnN0
IFJlbmRlclN0eWxlJiwgdW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIExheW91dFVuaXQgY29u
dGVudExvZ2ljYWxMZWZ0KTsKKyAgICBzdGF0aWMgTGF5b3V0VW5pdCBmaXhlZFBpdGNoV2lkdGgo
Y29uc3QgU3RyaW5nVmlldyYsIGNvbnN0IFJlbmRlclN0eWxlJiwgdW5zaWduZWQgZnJvbSwgdW5z
aWduZWQgdG8sIExheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0KTsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDhmNjFh
ODk5ZDRkZmU4N2E1N2EyODNkZDhkNTQyOThjNWFmMTI0MjQuLmJiM2IzMzM3MzBiOTNmMzkxMzJm
OTgxMDhjNjE2MWVhNTM3NzAyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBAIEJveDo6Qm94KE9wdGlvbmFs
PEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogewog
fQogCi1Cb3g6OkJveChTdHJpbmcgdGV4dENvbnRlbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCitC
b3g6OkJveChUZXh0Q29udGV4dCYmIHRleHRDb250ZXh0LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQog
ICAgIDogQm94KHsgfSwgV1RGTW92ZShzdHlsZSksIEJhc2VUeXBlRmxhZzo6Qm94RmxhZykKIHsK
LSAgICBzZXRUZXh0Q29udGVudCh0ZXh0Q29udGVudCk7CisgICAgc2V0VGV4dENvbnRleHQoV1RG
TW92ZSh0ZXh0Q29udGV4dCkpOwogfQogCiBCb3g6On5Cb3goKQpAQCAtMzg2LDIzICszODYsMjMg
QEAgYm9vbCBCb3g6OmlzUGFkZGluZ0FwcGxpY2FibGUoKSBjb25zdAogICAgICAgICAmJiAhaXNU
YWJsZUNvbHVtbigpOwogfQogCi12b2lkIEJveDo6c2V0VGV4dENvbnRlbnQoU3RyaW5nIHRleHRD
b250ZW50KQordm9pZCBCb3g6OnNldFRleHRDb250ZXh0KFRleHRDb250ZXh0JiYgdGV4dENvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKGlzSW5saW5lTGV2ZWxCb3goKSk7Ci0gICAgZW5zdXJlUmFyZURh
dGEoKS50ZXh0Q29udGVudCA9IHRleHRDb250ZW50OworICAgIGVuc3VyZVJhcmVEYXRhKCkudGV4
dENvbnRleHQgPSBXVEZNb3ZlKHRleHRDb250ZXh0KTsKIH0KIAogYm9vbCBCb3g6Omhhc1RleHRD
b250ZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNJbmxpbmVMZXZlbEJveCgpKTsKLSAgICBy
ZXR1cm4gaGFzUmFyZURhdGEoKSAmJiAhcmFyZURhdGEoKS50ZXh0Q29udGVudC5pc051bGwoKTsK
KyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiAhcmFyZURhdGEoKS50ZXh0Q29udGV4dC5jb250
ZW50LmlzTnVsbCgpOwogfQogCi1TdHJpbmcgQm94Ojp0ZXh0Q29udGVudCgpIGNvbnN0Citjb25z
dCBUZXh0Q29udGV4dCYgQm94Ojp0ZXh0Q29udGV4dCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhh
c1JhcmVEYXRhKCkpOwogICAgIEFTU0VSVChpc0lubGluZUxldmVsQm94KCkpOwotICAgIHJldHVy
biByYXJlRGF0YSgpLnRleHRDb250ZW50OworICAgIHJldHVybiByYXJlRGF0YSgpLnRleHRDb250
ZXh0OwogfQogCiBjb25zdCBSZXBsYWNlZCogQm94OjpyZXBsYWNlZCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCmluZGV4IDRhYzIyOGM1ZTBh
YWI2OWYyMzFjNTUwOGEyZGZhYzlhNDJhYzNmYTkuLjYxOWFmYWRmMzgxNjU5MWJkMGQ4Y2NlMWY1
Yzc1NjY0Yzg5MTBkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJMYXlvdXRSZXBsYWNlZC5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiVGV4dENvbnRleHQuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAt
NjMsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBCYXNlVHlwZUZsYWdz
OwogCiAgICAgQm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwgUmVuZGVyU3R5bGUmJik7
Ci0gICAgQm94KFN0cmluZyB0ZXh0Q29udGVudCwgUmVuZGVyU3R5bGUmJik7CisgICAgQm94KFRl
eHRDb250ZXh0JiYsIFJlbmRlclN0eWxlJiYpOwogICAgIHZpcnR1YWwgfkJveCgpOwogCiAgICAg
Ym9vbCBlc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Q7CkBAIC0xNDMsNyArMTQ0
LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUZW1wb3JhcnkgdW50aWwgYWZ0ZXIgaW50cmlu
c2ljIHNpemUgY2hhbmdlIGlzIHRyYWNrZWQgYnkgUmVwbGFjZWQuCiAgICAgUmVwbGFjZWQqIHJl
cGxhY2VkKCk7CiAgICAgYm9vbCBoYXNUZXh0Q29udGVudCgpIGNvbnN0OwotICAgIFN0cmluZyB0
ZXh0Q29udGVudCgpIGNvbnN0OworICAgIGNvbnN0IFRleHRDb250ZXh0JiB0ZXh0Q29udGV4dCgp
IGNvbnN0OwogCiAgICAgLy8gRklYTUU6IEZpbmQgYSBiZXR0ZXIgcGxhY2UgZm9yIHJhbmRvbSBE
T00gdGhpbmdzLgogICAgIHZvaWQgc2V0Um93U3Bhbih1bnNpZ25lZCk7CkBAIC0xNjUsMTQgKzE2
NiwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgQm94KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiwg
UmVuZGVyU3R5bGUmJiwgQmFzZVR5cGVGbGFncyk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRU
ZXh0Q29udGVudChTdHJpbmcpOworICAgIHZvaWQgc2V0VGV4dENvbnRleHQoVGV4dENvbnRleHQm
Jik7CiAKICAgICBjbGFzcyBCb3hSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQm94UmFyZURhdGEoKSA9IGRlZmF1bHQ7CiAK
LSAgICAgICAgU3RyaW5nIHRleHRDb250ZW50OworICAgICAgICBUZXh0Q29udGV4dCB0ZXh0Q29u
dGV4dDsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlcGxhY2VkPiByZXBsYWNlZDsKICAgICAg
ICAgdW5zaWduZWQgcm93U3BhbiB7IDEgfTsKICAgICAgICAgdW5zaWduZWQgY29sdW1uU3BhbiB7
IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcAppbmRleCAzZmQyZTI4NmQ2ZjExZDIzYzgzZTdiZTlkNzViMjQwZDcx
NDA5ZjJjLi5lNmUyZWI1NmIwNzJhNDdmODVmNGE5YjY0ZjU3MzA0MDU3MGI5NjRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxk
ZXIuY3BwCkBAIC0xMTAsNiArMTEwLDIxIEBAIHN0YXRpYyBTdHJpbmcgYXBwbHlUZXh0VHJhbnNm
b3JtKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIHJl
dHVybiB0ZXh0OwogfQogCitzdGF0aWMgYm9vbCBjYW5Vc2VTaW1wbGlmaWVkVGV4dE1lYXN1cmlu
Zyhjb25zdCBTdHJpbmdWaWV3JiBjb250ZW50LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgYm9v
bCB3aGl0ZXNwYWNlSXNDb2xsYXBzZWQpCit7CisgICAgaWYgKCFjb250ZW50LmlzOEJpdCgpICYm
ICFjb250ZW50LmlzQWxsQVNDSUkoKSAmJiBGb250Q2FzY2FkZTo6Y2hhcmFjdGVyUmFuZ2VDb2Rl
UGF0aChjb250ZW50LmNoYXJhY3RlcnMxNigpLCBjb250ZW50Lmxlbmd0aCgpKSAhPSBGb250Q2Fz
Y2FkZTo6U2ltcGxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZm9udC53b3Jk
U3BhY2luZygpIHx8IGZvbnQubGV0dGVyU3BhY2luZygpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGVudC5sZW5ndGgoKTsgKytpKSB7
CisgICAgICAgIGlmICgoIXdoaXRlc3BhY2VJc0NvbGxhcHNlZCAmJiBjb250ZW50W2ldID09ICdc
dCcpIHx8IGNvbnRlbnRbaV0gPT0gbm9CcmVha1NwYWNlIHx8IGNvbnRlbnRbaV0gPj0gSGlyYWdh
bmFMZXR0ZXJTbWFsbEEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVu
dD4gVHJlZUJ1aWxkZXI6OmJ1aWxkTGF5b3V0VHJlZShjb25zdCBSZW5kZXJWaWV3JiByZW5kZXJW
aWV3KQogewogICAgIFBoYXNlU2NvcGUgc2NvcGUoUGhhc2U6OlR5cGU6OlRyZWVCdWlsZGluZyk7
CkBAIC0xNTYsMTIgKzE3MSwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBUcmVlQnVpbGRlcjo6
Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxCb3g+IGNoaWxkTGF5b3V0Qm94OwogICAgIGlmIChpczxSZW5kZXJUZXh0Pihj
aGlsZFJlbmRlcmVyKSkgewogICAgICAgICBhdXRvJiB0ZXh0UmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJUZXh0PihjaGlsZFJlbmRlcmVyKTsKLSAgICAgICAgYXV0byB0ZXh0Q29udGVudCA9IGFw
cGx5VGV4dFRyYW5zZm9ybSh0ZXh0UmVuZGVyZXIub3JpZ2luYWxUZXh0KCksIHBhcmVudFJlbmRl
cmVyLnN0eWxlKCkpOworICAgICAgICBhdXRvIHRleHQgPSBhcHBseVRleHRUcmFuc2Zvcm0odGV4
dFJlbmRlcmVyLm9yaWdpbmFsVGV4dCgpLCBwYXJlbnRSZW5kZXJlci5zdHlsZSgpKTsKICAgICAg
ICAgLy8gRklYTUU6IENsZWFybHkgdGhlcmUgbXVzdCBiZSBhIGhlbHBlciBmdW5jdGlvbiBmb3Ig
dGhpcy4KKyAgICAgICAgYXV0byB0ZXh0Q29udGVudCA9IFRleHRDb250ZXh0IHsgdGV4dCwgY2Fu
VXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcodGV4dCwgcGFyZW50UmVuZGVyZXIuc3R5bGUoKS5m
b250Q2FzY2FkZSgpLCBwYXJlbnRSZW5kZXJlci5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgp
KSB9OwogICAgICAgICBpZiAocGFyZW50UmVuZGVyZXIuc3R5bGUoKS5kaXNwbGF5KCkgPT0gRGlz
cGxheVR5cGU6OklubGluZSkKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVuaXF1
ZTxCb3g+KHRleHRDb250ZW50LCBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50UmVuZGVyZXIuc3R5
bGUoKSkpOworICAgICAgICAgICAgY2hpbGRMYXlvdXRCb3ggPSBtYWtlVW5pcXVlPEJveD4oV1RG
TW92ZSh0ZXh0Q29udGVudCksIFJlbmRlclN0eWxlOjpjbG9uZShwYXJlbnRSZW5kZXJlci5zdHls
ZSgpKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoaWxkTGF5b3V0Qm94ID0gbWFrZVVu
aXF1ZTxCb3g+KHRleHRDb250ZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVX
aXRoRGlzcGxheShwYXJlbnRSZW5kZXJlci5zdHlsZSgpLCBEaXNwbGF5VHlwZTo6SW5saW5lKSk7
CisgICAgICAgICAgICBjaGlsZExheW91dEJveCA9IG1ha2VVbmlxdWU8Qm94PihXVEZNb3ZlKHRl
eHRDb250ZW50KSwgUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXko
cGFyZW50UmVuZGVyZXIuc3R5bGUoKSwgRGlzcGxheVR5cGU6OklubGluZSkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oY2hp
bGRSZW5kZXJlcik7CiAgICAgICAgIGF1dG8gZGlzcGxheVR5cGUgPSByZW5kZXJlci5zdHlsZSgp
LmRpc3BsYXkoKTsKQEAgLTM3Miw3ICszODgsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRC
b3goVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgRGlzcAog
ICAgICAgICBzdHJlYW0gPDwgIiBhdCAoIiA8PCBkaXNwbGF5Qm94LT5sZWZ0KCkgPDwgIiwiIDw8
IGRpc3BsYXlCb3gtPnRvcCgpIDw8ICIpIHNpemUgIiA8PCBkaXNwbGF5Qm94LT53aWR0aCgpIDw8
ICJ4IiA8PCBkaXNwbGF5Qm94LT5oZWlnaHQoKTsKICAgICBzdHJlYW0gPDwgIiBsYXlvdXQgYm94
LT4oIiA8PCAmbGF5b3V0Qm94IDw8ICIpIjsKICAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lTGV2
ZWxCb3goKSAmJiBsYXlvdXRCb3guaXNBbm9ueW1vdXMoKSkKLSAgICAgICAgc3RyZWFtIDw8ICIg
dGV4dCBjb250ZW50IFtcIiIgPDwgbGF5b3V0Qm94LnRleHRDb250ZW50KCkudXRmOCgpLmRhdGEo
KSA8PCAiXCJdIjsKKyAgICAgICAgc3RyZWFtIDw8ICIgdGV4dCBjb250ZW50IFtcIiIgPDwgbGF5
b3V0Qm94LnRleHRDb250ZXh0KCkuY29udGVudC51dGY4KCkuZGF0YSgpIDw8ICJcIl0iOwogCiAg
ICAgc3RyZWFtLm5leHRMaW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9UZXh0Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvVGV4dENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjA0ODBiMTlmNTJlMjE0ZjBiZmFhOTk4
MTU2OWY2N2ExZmQzNDEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvVGV4dENvbnRleHQuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIExheW91dCB7CisKK3N0cnVjdCBUZXh0Q29udGV4dCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU3RyaW5nVmlldyBjb250ZW50OworICAgIGJv
b2wgY2FuVXNlU2ltcGxpZmllZENvbnRlbnRNZWFzdXJpbmcgeyBmYWxzZSB9OworfTsKKworfQor
fQorI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>