<?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>140840</bug_id>
          
          <creation_ts>2015-01-23 15:06:19 -0800</creation_ts>
          <short_desc>Implement system fonts FontDescription caching at RenderTheme level</short_desc>
          <delta_ts>2015-01-23 17:41:39 -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>CSS</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140577</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1063781</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-23 15:06:19 -0800</bug_when>
    <thetext>Implement system fonts FontDescription caching at RenderTheme level instead of duplicating the logic in its subclasses for each platform. This reduces duplication and reduces the amount of platform-specific code. This will also make the refactoring at Bug 140577 a lot easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063787</commentid>
    <comment_count>1</comment_count>
      <attachid>245253</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-23 15:25:05 -0800</bug_when>
    <thetext>Created attachment 245253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063794</commentid>
    <comment_count>2</comment_count>
      <attachid>245255</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-23 15:40:09 -0800</bug_when>
    <thetext>Created attachment 245255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063806</commentid>
    <comment_count>3</comment_count>
      <attachid>245255</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-23 16:34:16 -0800</bug_when>
    <thetext>Comment on attachment 245255
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063819</commentid>
    <comment_count>4</comment_count>
      <attachid>245261</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-23 16:54:39 -0800</bug_when>
    <thetext>Created attachment 245261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063840</commentid>
    <comment_count>5</comment_count>
      <attachid>245261</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-23 17:41:35 -0800</bug_when>
    <thetext>Comment on attachment 245261
Patch

Clearing flags on attachment: 245261

Committed r179050: &lt;http://trac.webkit.org/changeset/179050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1063841</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-23 17:41:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245253</attachid>
            <date>2015-01-23 15:25:05 -0800</date>
            <delta_ts>2015-01-23 15:40:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140840-20150123152504.patch</filename>
            <type>text/plain</type>
            <size>35513</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2MwODI1YWJhYWNkYTAy
NTYxOTM3NWJkMmQwZjE3NzA2OGI4NDc4Zi4uZGJmNmU1MWE3NWRmNzQ0OTlmOTM2ZDQ0NTM4NTY5
NTMzN2ZmNGQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTAxLTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHN5c3RlbSBm
b250cyBGb250RGVzY3JpcHRpb24gY2FjaGluZyBhdCBSZW5kZXJUaGVtZSBsZXZlbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwODQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHN5c3Rl
bSBmb250cyBGb250RGVzY3JpcHRpb24gY2FjaGluZyBhdCBSZW5kZXJUaGVtZSBsZXZlbAorICAg
ICAgICBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBsb2dpYyBpbiBpdHMgc3ViY2xhc3NlcyBm
b3IgZWFjaCBwbGF0Zm9ybS4KKyAgICAgICAgVGhpcyByZWR1Y2VzIGNvZGUgLyBsb2dpYyBkdXBs
aWNhdGlvbiBhbmQgcmVkdWNlcyB0aGUgYW1vdW50IG9mCisgICAgICAgIHBsYXRmb3JtLXNwZWNp
ZmljIGNvZGUuIFRoaXMgd2lsbCBhbHNvIG1ha2UgdGhlIHJlZmFjdG9yaW5nIGF0CisgICAgICAg
IEJ1ZyAxNDA1NzcgYSBsb3QgZWFzaWVyLgorCisgICAgICAgIFRoZSBjYWNoaW5nIGxvZ2ljIHJl
bWFpbnMgaW4gUmVuZGVyVGhlbWVJT1MgY2xhc3MgZm9yIGlPUyBiZWNhdXNlOgorICAgICAgICAt
IEl0IHN1cHBvcnRzIGRpZmZlcmVudCBzeXN0ZW0gZm9udCB2YWx1ZXMgdGhhbiBhbGwgb3RoZXIg
cGxhdGZvcm1zCisgICAgICAgIC0gSXQgcmVxdWlyZXMgY2FjaGUgaW52YWxpZGF0aW9uIGluIHNv
bWUgY2FzZXMgd2hpbGUgb3RoZXIgcGxhdGZvcm1zCisgICAgICAgICAgZG8gbm90LgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgaW5zcGlyZWQgYnkgdGhlIGZvbGxvd2luZyBCbGluayByZXZpc2lv
bjoKKyAgICAgICAgaHR0cHM6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9ibGluaz92aWV3PXJl
diZyZXZpc2lvbj0xODQ0NDkKKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9jc3MyLXN5c3RlbS1m
b250cy5odG1sCisKIDIwMTUtMDEtMjMgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIERvY3VtZW50IHNob3VsZCBiZSBhIEZvbnRTZWxlY3RvckNsaWVudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4IGEz
NWI4ODBkMzFhNzBkZDU0ZTIzNGQ5YTEwNjBlOWRiMGYxZDRhOWEuLjI4YWRjYjBiMjQ0NGY2OGZj
ZTNiMmQzMTQ2ODQzNGU0YTY0ODY2OTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgUmVuZGVyVGhl
bWVFZmw6OnNldERlZmF1bHRGb250U2l6ZShpbnQgc2l6ZSkKICAgICBkZWZhdWx0Rm9udFNpemUg
PSBzaXplOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjpzeXN0ZW1Gb250KENTU1ZhbHVlSUQs
IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKSBjb25zdAordm9pZCBSZW5kZXJUaGVt
ZUVmbDo6dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQsIEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKSBjb25zdAogewogICAgIC8vIEl0IHdhcyBjYWxs
ZWQgYnkgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQgdG8gcmVuZGVyIGFsdGVy
bmF0aXZlIHN0cmluZy4KICAgICAvLyBUbyBhdm9pZCBjYWlyb19lcnJvciB3aGlsZSByZW5kZXJp
bmcsIGZvbnREZXNjcmlwdGlvbiBzaG91bGQgYmUgcGFzc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaAppbmRleCBmZmU0MDhiOGVjOTNmNzc0MmM5NDA4
MWU4NGIzMWI5MTJmZTJiZWQ1Li4xZDI5OTM5ODM5ZGJkYTc3YjI0ZmFhZmFmN2E0OGRkMjMzZDU5
Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaApA
QCAtMTA0LDkgKzEwNCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRqdXN0U2l6ZUNvbnN0cmFp
bnRzKFJlbmRlclN0eWxlJiwgRm9ybVR5cGUpIGNvbnN0OwogCi0gICAgLy8gU3lzdGVtIGZvbnRz
LgotICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQsIEZvbnREZXNjcmlwdGlv
biYpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdENoZWNrYm94U3R5
bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIApAQCAtMTg5LDYgKzE4
Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2VkamUgfHwgKCFtX3RoZW1lUGF0aC5p
c0VtcHR5KCkgJiYgY29uc3RfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KHRoaXMpLT5sb2FkVGhlbWUo
KSk7CiAgICAgfQogCisgICAgLy8gU3lzdGVtIGZvbnRzLgorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9u
JikgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBBTFdBWVNfSU5MSU5FIEVjb3JlX0V2YXMqIGNhbnZh
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzLmdldCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBF
dmFzX09iamVjdCogZWRqZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRqZS5nZXQoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBjM2NkOTA2YTdmNDI1Nzdm
YWEzNzY5MDBjOWMzOTE5OTgzZDI2ZjQ4Li43ZTE3MjBmYjRkMTUzNzZlYzIwMjYyMzI0ZTk4YWYz
ZGUyN2I1MDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAg
LTEsNyArMSw4IEBACi0vKioKKy8qCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGhlbWUg
aW1wbGVtZW50YXRpb24gZm9yIGZvcm0gY29udHJvbHMgaW4gV2ViQ29yZS4KICAqCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTIgQXBwbGUg
SW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTAsIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ1LDYgKzQ2LDcgQEAK
ICNpbmNsdWRlICJTcGluQnV0dG9uRWxlbWVudC5oIgogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRv
ci5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCiAjaW5jbHVk
ZSAiSFRNTE1ldGVyRWxlbWVudC5oIgpAQCAtMTEzMCw2ICsxMTMyLDU1IEBAIHZvaWQgUmVuZGVy
VGhlbWU6OnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCkKICAgICBQYWdlOjp1cGRhdGVTdHlsZUZv
ckFsbFBhZ2VzQWZ0ZXJHbG9iYWxDaGFuZ2VJbkVudmlyb25tZW50KCk7CiB9CiAKK0ZvbnREZXNj
cmlwdGlvbiYgUmVuZGVyVGhlbWU6OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1
ZUlEIHN5c3RlbUZvbnRJRCkgY29uc3QKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9u
dERlc2NyaXB0aW9uPiBjYXB0aW9uOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250RGVz
Y3JpcHRpb24+IGljb247CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNjcmlwdGlv
bj4gbWVudTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udERlc2NyaXB0aW9uPiBtZXNz
YWdlQm94OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250RGVzY3JpcHRpb24+IHNtYWxs
Q2FwdGlvbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udERlc2NyaXB0aW9uPiBzdGF0
dXNCYXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNjcmlwdGlvbj4gd2Via2l0
TWluaUNvbnRyb2w7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNjcmlwdGlvbj4g
d2Via2l0U21hbGxDb250cm9sOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250RGVzY3Jp
cHRpb24+IHdlYmtpdENvbnRyb2w7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNj
cmlwdGlvbj4gZGVmYXVsdERlc2NyaXB0aW9uOworCisgICAgc3dpdGNoIChzeXN0ZW1Gb250SUQp
IHsKKyAgICBjYXNlIENTU1ZhbHVlQ2FwdGlvbjoKKyAgICAgICAgcmV0dXJuIGNhcHRpb247Cisg
ICAgY2FzZSBDU1NWYWx1ZUljb246CisgICAgICAgIHJldHVybiBpY29uOworICAgIGNhc2UgQ1NT
VmFsdWVNZW51OgorICAgICAgICByZXR1cm4gbWVudTsKKyAgICBjYXNlIENTU1ZhbHVlTWVzc2Fn
ZUJveDoKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2VCb3g7CisgICAgY2FzZSBDU1NWYWx1ZVNtYWxs
Q2FwdGlvbjoKKyAgICAgICAgcmV0dXJuIHNtYWxsQ2FwdGlvbjsKKyAgICBjYXNlIENTU1ZhbHVl
U3RhdHVzQmFyOgorICAgICAgICByZXR1cm4gc3RhdHVzQmFyOworICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRNaW5pQ29udHJvbDoKKyAgICAgICAgcmV0dXJuIHdlYmtpdE1pbmlDb250cm9sOworICAg
IGNhc2UgQ1NTVmFsdWVXZWJraXRTbWFsbENvbnRyb2w6CisgICAgICAgIHJldHVybiB3ZWJraXRT
bWFsbENvbnRyb2w7CisgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdENvbnRyb2w6CisgICAgICAgIHJl
dHVybiB3ZWJraXRDb250cm9sOworICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICByZXR1
cm4gZGVmYXVsdERlc2NyaXB0aW9uOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZGVmYXVsdERlc2NyaXB0aW9uOworICAgIH0KK30K
Kwordm9pZCBSZW5kZXJUaGVtZTo6c3lzdGVtRm9udChDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCwg
Rm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0Cit7CisgICAgZm9udERlc2Ny
aXB0aW9uID0gY2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKHN5c3RlbUZvbnRJRCk7CisgICAg
aWYgKGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oc3lzdGVtRm9udElELCBmb250
RGVzY3JpcHRpb24pOworfQorCiBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFs
dWVJRCBjc3NWYWx1ZUlkKSBjb25zdAogewogICAgIHN3aXRjaCAoY3NzVmFsdWVJZCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCBjNjRjNzNjMGViNjVhMDY1Y2I5
Y2NiZTlmYzM3OTQ0NjIwY2ZhMmY3Li5mZDQ5MGZiNjczNWQyNDgyZDliNGY5YTk0YjJiZWU0NDAy
MjZjNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMTcyLDcg
KzE3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBjYXJldEJsaW5rSW50ZXJ2YWwo
KSBjb25zdCB7IHJldHVybiAwLjU7IH0KIAogICAgIC8vIFN5c3RlbSBmb250cyBhbmQgY29sb3Jz
IGZvciBDU1MuCi0gICAgdmlydHVhbCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERl
c2NyaXB0aW9uJikgY29uc3QgPSAwOworICAgIHZvaWQgc3lzdGVtRm9udChDU1NWYWx1ZUlELCBG
b250RGVzY3JpcHRpb24mKSBjb25zdDsKICAgICB2aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKENT
U1ZhbHVlSUQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVMaXN0U2l6ZShS
ZW5kZXJTdHlsZSYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KQEAgLTI1Miw2ICsyNTIsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGRlZmF1bHRCdXR0b25IYXNBbmltYXRpb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBGb250RGVzY3JpcHRp
b24mIGNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCkg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlv
bihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCwgRm9udERlc2NyaXB0aW9uJikgY29uc3QgPSAwOwor
CiAgICAgLy8gVGhlIHBsYXRmb3JtIHNlbGVjdGlvbiBjb2xvci4KICAgICB2aXJ0dWFsIENvbG9y
IHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCAz
Yzk0ZGI2Y2FkNjc3ODNlZmFmYWY3MDUxMWRkMWJjMGRiMGIzM2ExLi43MmQ0Njg0OWI3ZWE1YTk1
Mjk5ZTE0ZDBlZDQ5ZmY2ZGYyY2E3OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGRvdWJsZSBnZXRTY3Jl
ZW5EUEkoKQogICAgIHJldHVybiBkcGk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OnN5c3Rl
bUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lR3RrOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24o
Q1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0CiB7CiAg
ICAgR3RrU2V0dGluZ3MqIHNldHRpbmdzID0gZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCk7CiAg
ICAgaWYgKCFzZXR0aW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3Rr
LmgKaW5kZXggMzc0NjhiYmMyZmY0MTFlZWVmZTcyYjMzMjBlZDQ2ZTUyMmU3YTkyNS4uODY1YjAx
ZGQyZjZhNTczM2NmNjM1MDI1Y2IxNjY0YzE2ZTc4ZDcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKQEAgLTM2LDkgKzM2LDYgQEAgY2xhc3MgUmVuZGVyVGhl
bWVHdGsgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKIAotICAgIC8vIFN5c3RlbSBmb250cy4K
LSAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24m
KSBjb25zdCBvdmVycmlkZTsKLQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIC8v
IFJldHVybnMgc2l6ZSBvZiBvbmUgc2xpZGVyIHRpY2sgbWFyayBmb3IgYSBob3Jpem9udGFsIHRy
YWNrLgogICAgIC8vIEZvciB2ZXJ0aWNhbCB0cmFja3Mgd2Ugcm90YXRlIGl0IGFuZCB1c2UgaXQu
IGkuZS4gV2lkdGggaXMgYWx3YXlzIGxlbmd0aCBhbG9uZyB0aGUgdHJhY2suCkBAIC0xMDQsNiAr
MTAxLDkgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZUd0aygpOwogICAgIHZpcnR1YWwgflJl
bmRlclRoZW1lR3RrKCk7CiAKKyAgICAvLyBTeXN0ZW0gZm9udHMuCisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlELCBGb250RGVzY3Jp
cHRpb24mKSBjb25zdCBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2hlY2tib3hTaXplKFJlbmRlclN0eWxlJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
LmgKaW5kZXggMWM4NDM1N2FjZGMzN2UzNmJkMGJlYThiYzliMTBjYzRiMTIyYTY4OC4uYjg2MzEw
Mzc4YzQ1MTNiODJmYWU3MmZiNjc2MGNjMzg1MTdjYjVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKQEAgLTQzLDEzICs0MywxMyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgdm9pZCBhZGp1c3RSb3VuZEJvcmRlclJhZGl1cyhSZW5kZXJTdHlsZSYsIFJlbmRl
ckJveCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERl
c2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29u
dGVudFNpemVDYXRlZ29yeSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
Q29udGVudFNpemVDYXRlZ29yeShjb25zdCBTdHJpbmcmKTsKIAogcHJvdGVjdGVkOgorICAgIHZp
cnR1YWwgRm9udERlc2NyaXB0aW9uJiBjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFs
dWVJRCBzeXN0ZW1Gb250SUQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9u
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihjb25z
dCBSZW5kZXJPYmplY3QmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBCb3JkZXJEYXRhJiwgY29uc3Qg
RmlsbExheWVyJiBiYWNrZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpp
bmRleCA2MWI1MGQ5ZGNkYmZlOGM3MTljOGJjNTEzMTM2Nzg1NTNhNjg0ZjQ5Li4zOWI0NGZiYTQ2
ZTA4ODdhMDc3MzIzMzZkNThjNTE3OGFlYzlkYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBzdGF0aWMgRm9udFdl
aWdodCBmcm9tQ1RGb250V2VpZ2h0KGZsb2F0IGZvbnRXZWlnaHQpCiAgICAgcmV0dXJuIEZvbnRX
ZWlnaHROb3JtYWw7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVJT1M6OnN5c3RlbUZvbnQoQ1NTVmFs
dWVJRCB2YWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKK0Zv
bnREZXNjcmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlv
bihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Rm9udERlc2NyaXB0aW9uPiBzeXN0ZW1Gb250OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxG
b250RGVzY3JpcHRpb24+IGhlYWRsaW5lRm9udDsKQEAgLTExNDMsMTIzICsxMTQzLDEzMCBAQCB2
b2lkIFJlbmRlclRoZW1lSU9TOjpzeXN0ZW1Gb250KENTU1ZhbHVlSUQgdmFsdWVJRCwgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcAogICAgICAgICB0YWxsQm9keUZvbnQuZ2V0KCkuc2V0SXNB
YnNvbHV0ZVNpemUoZmFsc2UpOwogICAgIH0KIAotICAgIEZvbnREZXNjcmlwdGlvbiogY2FjaGVk
RGVzYzsKKyAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKKyAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0
ZW1IZWFkbGluZToKKyAgICAgICAgcmV0dXJuIGhlYWRsaW5lRm9udDsKKyAgICBjYXNlIENTU1Zh
bHVlQXBwbGVTeXN0ZW1Cb2R5OgorICAgICAgICByZXR1cm4gYm9keUZvbnQ7CisjaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiA4MDIwMAorICAgIGNhc2UgQ1NTVmFsdWVBcHBs
ZVN5c3RlbVRpdGxlMToKKyAgICAgICAgcmV0dXJuIHRpdGxlMUZvbnQ7CisgICAgY2FzZSBDU1NW
YWx1ZUFwcGxlU3lzdGVtVGl0bGUyOgorICAgICAgICByZXR1cm4gdGl0bGUyRm9udDsKKyAgICBj
YXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTM6CisgICAgICAgIHJldHVybiB0aXRsZTNGb250
OworI2VuZGlmCisgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU3ViaGVhZGxpbmU6CisgICAg
ICAgIHJldHVybiBzdWJoZWFkbGluZUZvbnQ7CisgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVt
Rm9vdG5vdGU6CisgICAgICAgIHJldHVybiBmb290bm90ZUZvbnQ7CisgICAgY2FzZSBDU1NWYWx1
ZUFwcGxlU3lzdGVtQ2FwdGlvbjE6CisgICAgICAgIHJldHVybiBjYXB0aW9uMUZvbnQ7CisgICAg
Y2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQ2FwdGlvbjI6CisgICAgICAgIHJldHVybiBjYXB0aW9u
MkZvbnQ7CisgICAgICAgIC8vIFNob3J0IHZlcnNpb24uCisgICAgY2FzZSBDU1NWYWx1ZUFwcGxl
U3lzdGVtU2hvcnRIZWFkbGluZToKKyAgICAgICAgcmV0dXJuIHNob3J0SGVhZGxpbmVGb250Owor
ICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNob3J0Qm9keToKKyAgICAgICAgcmV0dXJuIHNo
b3J0Qm9keUZvbnQ7CisgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2hvcnRTdWJoZWFkbGlu
ZToKKyAgICAgICAgcmV0dXJuIHNob3J0U3ViaGVhZGxpbmVGb250OworICAgIGNhc2UgQ1NTVmFs
dWVBcHBsZVN5c3RlbVNob3J0Rm9vdG5vdGU6CisgICAgICAgIHJldHVybiBzaG9ydEZvb3Rub3Rl
Rm9udDsKKyAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TaG9ydENhcHRpb24xOgorICAgICAg
ICByZXR1cm4gc2hvcnRDYXB0aW9uMUZvbnQ7CisgICAgICAgIC8vIFRhbGwgdmVyc2lvbi4KKyAg
ICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UYWxsQm9keToKKyAgICAgICAgcmV0dXJuIHRhbGxC
b2R5Rm9udDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc3lzdGVtRm9udDsKKyAgICB9
Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVJT1M6OnVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlw
dGlvbihDU1NWYWx1ZUlEIHZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
KSBjb25zdAorewogICAgIFJldGFpblB0cjxDVEZvbnREZXNjcmlwdG9yUmVmPiBmb250RGVzY3Jp
cHRvcjsKICAgICBDRlN0cmluZ1JlZiB0ZXh0U3R5bGU7CiAgICAgc3dpdGNoICh2YWx1ZUlEKSB7
CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtSGVhZGxpbmU6Ci0gICAgICAgIGNhY2hlZERl
c2MgPSAmaGVhZGxpbmVGb250LmdldCgpOwogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRU
ZXh0U3R5bGVIZWFkbGluZTsKLSAgICAgICAgaWYgKCFoZWFkbGluZUZvbnQuZ2V0KCkuaXNBYnNv
bHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRE
ZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIHVzZXJUZXh0U2l6ZSwgMCkp
OworICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0
ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtQm9keToKLSAgICAgICAg
Y2FjaGVkRGVzYyA9ICZib2R5Rm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlG
b250VGV4dFN0eWxlQm9keTsKLSAgICAgICAgaWYgKCFib2R5Rm9udC5nZXQoKS5pc0Fic29sdXRl
U2l6ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2Ny
aXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7Cisg
ICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0
aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAg
ICBicmVhazsKICNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDgwMjAwCiAg
ICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUxOgotICAgICAgICBjYWNoZWREZXNjID0g
JnRpdGxlMUZvbnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHls
ZVRpdGxlMTsKLSAgICAgICAgaWYgKCF0aXRsZTFGb250LmdldCgpLmlzQWJzb2x1dGVTaXplKCkp
Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNy
ZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsKKyAgICAgICAg
Zm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0
eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMjoKLSAgICAgICAgY2FjaGVkRGVz
YyA9ICZ0aXRsZTJGb250LmdldCgpOwogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0
U3R5bGVUaXRsZTI7Ci0gICAgICAgIGlmICghdGl0bGUyRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6
ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0
b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAg
ICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRl
eHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTM6Ci0gICAgICAgIGNhY2hl
ZERlc2MgPSAmdGl0bGUzRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250
VGV4dFN0eWxlVGl0bGUzOwotICAgICAgICBpZiAoIXRpdGxlM0ZvbnQuZ2V0KCkuaXNBYnNvbHV0
ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNj
cmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIHVzZXJUZXh0U2l6ZSwgMCkpOwor
ICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdp
dGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsKICAgICAg
ICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TdWJoZWFkbGlu
ZToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzdWJoZWFkbGluZUZvbnQuZ2V0KCk7CiAgICAgICAg
IHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVN1YmhlYWQ7Ci0gICAgICAgIGlmICghc3Vi
aGVhZGxpbmVGb250LmdldCgpLmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICBmb250RGVz
Y3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4
dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsKKyAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9w
dENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVu
dFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVB
cHBsZVN5c3RlbUZvb3Rub3RlOgotICAgICAgICBjYWNoZWREZXNjID0gJmZvb3Rub3RlRm9udC5n
ZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlRm9vdG5vdGU7Ci0g
ICAgICAgIGlmICghZm9vdG5vdGVGb250LmdldCgpLmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAg
ICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhU
ZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsKKyAgICAgICAgZm9udERlc2Ny
aXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRT
dHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUNhcHRpb24xOgotICAgICAgICBjYWNoZWREZXNjID0gJmNh
cHRpb24xRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxl
Q2FwdGlvbjE7Ci0gICAgICAgIGlmICghY2FwdGlvbjFGb250LmdldCgpLmlzQWJzb2x1dGVTaXpl
KCkpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRv
ckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsKKyAgICAg
ICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4
dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUNhcHRpb24yOgotICAgICAgICBjYWNo
ZWREZXNjID0gJmNhcHRpb24yRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlG
b250VGV4dFN0eWxlQ2FwdGlvbjI7Ci0gICAgICAgIGlmICghY2FwdGlvbjJGb250LmdldCgpLmlz
QWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RG
b250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUs
IDApKTsKKyAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JD
cmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7
CiAgICAgICAgIGJyZWFrOwogCiAgICAgLy8gU2hvcnQgdmVyc2lvbi4KICAgICBjYXNlIENTU1Zh
bHVlQXBwbGVTeXN0ZW1TaG9ydEhlYWRsaW5lOgotICAgICAgICBjYWNoZWREZXNjID0gJnNob3J0
SGVhZGxpbmVGb250LmdldCgpOwogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5
bGVTaG9ydEhlYWRsaW5lOwotICAgICAgICBpZiAoIXNob3J0SGVhZGxpbmVGb250LmdldCgpLmlz
QWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RG
b250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUs
IDApKTsKKyAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JD
cmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNob3J0Qm9keToK
LSAgICAgICAgY2FjaGVkRGVzYyA9ICZzaG9ydEJvZHlGb250LmdldCgpOwogICAgICAgICB0ZXh0
U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVTaG9ydEJvZHk7Ci0gICAgICAgIGlmICghc2hvcnRC
b2R5Rm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHls
ZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihD
VEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXpl
Q2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVT
eXN0ZW1TaG9ydFN1YmhlYWRsaW5lOgotICAgICAgICBjYWNoZWREZXNjID0gJnNob3J0U3ViaGVh
ZGxpbmVGb250LmdldCgpOwogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVT
aG9ydFN1YmhlYWQ7Ci0gICAgICAgIGlmICghc2hvcnRTdWJoZWFkbGluZUZvbnQuZ2V0KCkuaXNB
YnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZv
bnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIHVzZXJUZXh0U2l6ZSwg
MCkpOworICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNy
ZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2hvcnRGb290bm90
ZToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzaG9ydEZvb3Rub3RlRm9udC5nZXQoKTsKICAgICAg
ICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlU2hvcnRGb290bm90ZTsKLSAgICAgICAg
aWYgKCFzaG9ydEZvb3Rub3RlRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAg
ICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4
dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZvbnREZXNjcmlw
dG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5
bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENTU1ZhbHVlQXBwbGVTeXN0ZW1TaG9ydENhcHRpb24xOgotICAgICAgICBjYWNoZWREZXNjID0g
JnNob3J0Q2FwdGlvbjFGb250LmdldCgpOwogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRU
ZXh0U3R5bGVTaG9ydENhcHRpb24xOwotICAgICAgICBpZiAoIXNob3J0Q2FwdGlvbjFGb250Lmdl
dCgpLmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0
Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4
dFNpemUsIDApKTsKKyAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2Ny
aXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgp
LCAwKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgLy8gVGFsbCB2ZXJzaW9uLgogICAgIGNhc2Ug
Q1NTVmFsdWVBcHBsZVN5c3RlbVRhbGxCb2R5OgotICAgICAgICBjYWNoZWREZXNjID0gJnRhbGxC
b2R5Rm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlVGFs
bEJvZHk7Ci0gICAgICAgIGlmICghdGFsbEJvZHlGb250LmdldCgpLmlzQWJzb2x1dGVTaXplKCkp
Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNy
ZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsKKyAgICAgICAg
Zm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0
eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAgICAgIGJyZWFr
OwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgdGV4dFN0eWxlID0ga0NURm9udERlc2NyaXB0b3JU
ZXh0U3R5bGVFbXBoYXNpemVkOwogICAgICAgICBjYWNoZWREZXNjID0gJnN5c3RlbUZvbnQuZ2V0
KCk7Ci0gICAgICAgIGlmICghc3lzdGVtRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAg
ICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVG
b3JVSVR5cGUoa0NURm9udFN5c3RlbUZvbnRUeXBlLCAwLCBudWxscHRyKSk7CisgICAgICAgIGZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlRm9yVUlUeXBlKGtD
VEZvbnRTeXN0ZW1Gb250VHlwZSwgMCwgbnVsbHB0cikpOwogICAgIH0KIAotICAgIGlmIChmb250
RGVzY3JpcHRvcikgewotICAgICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBmb250ID0gYWRvcHRD
RihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IuZ2V0KCksIDAs
IG51bGxwdHIpKTsKLSAgICAgICAgY2FjaGVkRGVzYy0+c2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7
Ci0gICAgICAgIGNhY2hlZERlc2MtPnNldE9uZUZhbWlseSh0ZXh0U3R5bGUpOwotICAgICAgICBj
YWNoZWREZXNjLT5zZXRTcGVjaWZpZWRTaXplKENURm9udEdldFNpemUoZm9udC5nZXQoKSkpOwot
ICAgICAgICBjYWNoZWREZXNjLT5zZXRXZWlnaHQoZnJvbUNURm9udFdlaWdodChGb250Q2FjaGU6
OndlaWdodE9mQ1RGb250KGZvbnQuZ2V0KCkpKSk7Ci0gICAgICAgIGNhY2hlZERlc2MtPnNldEl0
YWxpYyhGb250SXRhbGljT2ZmKTsKLSAgICB9Ci0gICAgZm9udERlc2NyaXB0aW9uID0gKmNhY2hl
ZERlc2M7CisgICAgQVNTRVJUKGZvbnREZXNjcmlwdG9yKTsKKyAgICBSZXRhaW5QdHI8Q1RGb250
UmVmPiBmb250ID0gYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERl
c2NyaXB0b3IuZ2V0KCksIDAsIG51bGxwdHIpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0SXNB
YnNvbHV0ZVNpemUodHJ1ZSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSh0ZXh0
U3R5bGUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKENURm9udEdldFNp
emUoZm9udC5nZXQoKSkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRXZWlnaHQoZnJvbUNURm9u
dFdlaWdodChGb250Q2FjaGU6OndlaWdodE9mQ1RGb250KGZvbnQuZ2V0KCkpKSk7CisgICAgZm9u
dERlc2NyaXB0aW9uLnNldEl0YWxpYyhGb250SXRhbGljT2ZmKTsKIH0KIAogI2lmIEVOQUJMRShW
SURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgKaW5kZXggZDRj
YzYzNmQyMmFhZmQzNzc4MGZkMDMxMDAxZTI2MDk2NDZhYWVkOS4uNWY1NGViNWI0YjA4MjMxNDJi
MzkyYjIwN2MyOTY2YTliY2VhNjk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLmgKQEAgLTY2LDkgKzY2LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBTeXN0ZW0gZm9u
dHMuCi0gICAgdmlydHVhbCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0
aW9uJikgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICB2aXJ0dWFsIGludCBtaW5pbXVtTWVudUxpc3RT
aXplKFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRq
dXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRl
OwpAQCAtMTEyLDYgKzEwOSw5IEBAIHByb3RlY3RlZDoKICAgICBSZW5kZXJUaGVtZU1hYygpOwog
ICAgIHZpcnR1YWwgflJlbmRlclRoZW1lTWFjKCk7CiAKKyAgICAvLyBTeXN0ZW0gZm9udHMuCisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1
ZUlELCBGb250RGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKKwogI2lmIEVOQUJMRShWSURF
TykKICAgICAvLyBNZWRpYSBjb250cm9scwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhQ29udHJv
bHNTdHlsZVNoZWV0KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KaW5kZXggYTMxZjgzMGY2NmI5ZjI5OTYwM2NlYmU5NWUwY2EyYmE4NmM0MTZm
NS4uYjJkYTZjMjlmOTVmNjM3N2Y0ZDQ3ZjNmMTc1ZGViYjk0ZDM3YWMzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMzM4LDY0ICszMzgsNDEgQEAg
c3RhdGljIEZvbnRXZWlnaHQgdG9Gb250V2VpZ2h0KE5TSW50ZWdlciBhcHBLaXRGb250V2VpZ2h0
KQogICAgIHJldHVybiBmb250V2VpZ2h0c1thcHBLaXRGb250V2VpZ2h0IC0gMV07CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVNYWM6OnN5c3RlbUZvbnQoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkLCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKLXsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoRm9udERlc2NyaXB0aW9uLCBzeXN0ZW1Gb250LCAoKSk7Ci0gICAg
REVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnREZXNjcmlwdGlvbiwgc21hbGxTeXN0
ZW1Gb250LCAoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnREZXNj
cmlwdGlvbiwgbWVudUZvbnQsICgpKTsKLSAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoRm9udERlc2NyaXB0aW9uLCBsYWJlbEZvbnQsICgpKTsKLSAgICBERVBSRUNBVEVEX0RFRklO
RV9TVEFUSUNfTE9DQUwoRm9udERlc2NyaXB0aW9uLCBtaW5pQ29udHJvbEZvbnQsICgpKTsKLSAg
ICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoRm9udERlc2NyaXB0aW9uLCBzbWFsbENv
bnRyb2xGb250LCAoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnRE
ZXNjcmlwdGlvbiwgY29udHJvbEZvbnQsICgpKTsKLQotICAgIEZvbnREZXNjcmlwdGlvbiogY2Fj
aGVkRGVzYzsKLSAgICBOU0ZvbnQqIGZvbnQgPSBuaWw7Cit2b2lkIFJlbmRlclRoZW1lTWFjOjp1
cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkLCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKK3sKKyAgICBOU0ZvbnQqIGZv
bnQ7CiAgICAgc3dpdGNoIChjc3NWYWx1ZUlkKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVTbWFs
bENhcHRpb246Ci0gICAgICAgICAgICBjYWNoZWREZXNjID0gJnNtYWxsU3lzdGVtRm9udDsKLSAg
ICAgICAgICAgIGlmICghc21hbGxTeXN0ZW1Gb250LmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAg
ICAgICAgICAgZm9udCA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNGb250IHNtYWxsU3lz
dGVtRm9udFNpemVdXTsKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNp
emU6W05TRm9udCBzbWFsbFN5c3RlbUZvbnRTaXplXV07CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6Ci0gICAgICAgICAgICBjYWNoZWREZXNjID0gJm1lbnVG
b250OwotICAgICAgICAgICAgaWYgKCFtZW51Rm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAg
ICAgICAgICAgIGZvbnQgPSBbTlNGb250IG1lbnVGb250T2ZTaXplOltOU0ZvbnQgc3lzdGVtRm9u
dFNpemVdXTsKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IG1lbnVGb250T2ZTaXplOltOU0Zv
bnQgc3lzdGVtRm9udFNpemVdXTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U1ZhbHVlU3RhdHVzQmFyOgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZsYWJlbEZvbnQ7Ci0g
ICAgICAgICAgICBpZiAoIWxhYmVsRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAg
ICAgIGZvbnQgPSBbTlNGb250IGxhYmVsRm9udE9mU2l6ZTpbTlNGb250IGxhYmVsRm9udFNpemVd
XTsKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IGxhYmVsRm9udE9mU2l6ZTpbTlNGb250IGxh
YmVsRm9udFNpemVdXTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1ZhbHVl
V2Via2l0TWluaUNvbnRyb2w6Ci0gICAgICAgICAgICBjYWNoZWREZXNjID0gJm1pbmlDb250cm9s
Rm9udDsKLSAgICAgICAgICAgIGlmICghbWluaUNvbnRyb2xGb250LmlzQWJzb2x1dGVTaXplKCkp
Ci0gICAgICAgICAgICAgICAgZm9udCA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNGb250
IHN5c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemU6TlNNaW5pQ29udHJvbFNpemVdXTsKKyAgICAg
ICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6W05TRm9udCBzeXN0ZW1Gb250
U2l6ZUZvckNvbnRyb2xTaXplOk5TTWluaUNvbnRyb2xTaXplXV07CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFNtYWxsQ29udHJvbDoKLSAgICAgICAgICAg
IGNhY2hlZERlc2MgPSAmc21hbGxDb250cm9sRm9udDsKLSAgICAgICAgICAgIGlmICghc21hbGxD
b250cm9sRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgICAgIGZvbnQgPSBbTlNG
b250IHN5c3RlbUZvbnRPZlNpemU6W05TRm9udCBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXpl
Ok5TU21hbGxDb250cm9sU2l6ZV1dOworICAgICAgICAgICAgZm9udCA9IFtOU0ZvbnQgc3lzdGVt
Rm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemU6TlNTbWFsbENv
bnRyb2xTaXplXV07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVdl
YmtpdENvbnRyb2w6Ci0gICAgICAgICAgICBjYWNoZWREZXNjID0gJmNvbnRyb2xGb250OwotICAg
ICAgICAgICAgaWYgKCFjb250cm9sRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAg
ICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6W05TRm9udCBzeXN0ZW1Gb250U2l6
ZUZvckNvbnRyb2xTaXplOk5TUmVndWxhckNvbnRyb2xTaXplXV07CisgICAgICAgICAgICBmb250
ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVtRm9udFNpemVGb3JDb250
cm9sU2l6ZTpOU1JlZ3VsYXJDb250cm9sU2l6ZV1dOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjYWNoZWREZXNjID0gJnN5c3RlbUZvbnQ7Ci0gICAg
ICAgICAgICBpZiAoIXN5c3RlbUZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgICAg
ICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVtRm9udFNpemVd
XTsKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6W05TRm9udCBz
eXN0ZW1Gb250U2l6ZV1dOwogICAgIH0KIAotICAgIGlmIChmb250KSB7Ci0gICAgICAgIE5TRm9u
dE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJd
OwotICAgICAgICBjYWNoZWREZXNjLT5zZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKLSAgICAgICAg
Y2FjaGVkRGVzYy0+c2V0T25lRmFtaWx5KFtmb250IHdlYkNvcmVGYW1pbHlOYW1lXSk7Ci0gICAg
ICAgIGNhY2hlZERlc2MtPnNldFNwZWNpZmllZFNpemUoW2ZvbnQgcG9pbnRTaXplXSk7Ci0gICAg
ICAgIGNhY2hlZERlc2MtPnNldFdlaWdodCh0b0ZvbnRXZWlnaHQoW2ZvbnRNYW5hZ2VyIHdlaWdo
dE9mRm9udDpmb250XSkpOwotICAgICAgICBjYWNoZWREZXNjLT5zZXRJc0l0YWxpYyhbZm9udE1h
bmFnZXIgdHJhaXRzT2ZGb250OmZvbnRdICYgTlNJdGFsaWNGb250TWFzayk7Ci0gICAgfQotICAg
IGZvbnREZXNjcmlwdGlvbiA9ICpjYWNoZWREZXNjOworICAgIGlmICghZm9udCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIgPSBbTlNGb250TWFuYWdl
ciBzaGFyZWRGb250TWFuYWdlcl07CisgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVT
aXplKHRydWUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoW2ZvbnQgd2ViQ29y
ZUZhbWlseU5hbWVdKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShbZm9u
dCBwb2ludFNpemVdKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KHRvRm9udFdlaWdo
dChbZm9udE1hbmFnZXIgd2VpZ2h0T2ZGb250OmZvbnRdKSk7CisgICAgZm9udERlc2NyaXB0aW9u
LnNldElzSXRhbGljKFtmb250TWFuYWdlciB0cmFpdHNPZkZvbnQ6Zm9udF0gJiBOU0l0YWxpY0Zv
bnRNYXNrKTsKIH0KIAogc3RhdGljIFJHQkEzMiBjb252ZXJ0TlNDb2xvclRvQ29sb3IoTlNDb2xv
ciAqY29sb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJp
LmNwcAppbmRleCAxMGU0MzQ3YzQxNjhkYzE3NTJkM2RmMDJjNDQ5YjUzODdjZWM1NGM3Li5hNTZl
YjQzYTlmZjJkMGNmYjhkNDQ0NmE1MTM5OGMyNTJhOTU5OGUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTE5Miw2MyArMTkyLDQwIEBA
IHN0YXRpYyBmbG9hdCBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplKE5TQ29udHJvbFNpemUg
Y29udHJvbFNpemUpCiAgICAgcmV0dXJuIHNpemVzW2NvbnRyb2xTaXplXTsKIH0KIAotdm9pZCBS
ZW5kZXJUaGVtZVNhZmFyaTo6c3lzdGVtRm9udChDU1NWYWx1ZUlEIHZhbHVlSUQsIEZvbnREZXNj
cmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKSBjb25zdAotewotICAgIHN0YXRpYyBGb250RGVzY3Jp
cHRpb24gc3lzdGVtRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIHNtYWxsU3lzdGVt
Rm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIG1lbnVGb250OwotICAgIHN0YXRpYyBG
b250RGVzY3JpcHRpb24gbGFiZWxGb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gbWlu
aUNvbnRyb2xGb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gc21hbGxDb250cm9sRm9u
dDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIGNvbnRyb2xGb250OwotCi0gICAgRm9udERl
c2NyaXB0aW9uKiBjYWNoZWREZXNjOwotICAgIGZsb2F0IGZvbnRTaXplID0gMDsKK3ZvaWQgUmVu
ZGVyVGhlbWVTYWZhcmk6OnVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1
ZUlEIHZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKSBjb25zdAorewor
ICAgIGZsb2F0IGZvbnRTaXplOwogICAgIHN3aXRjaCAodmFsdWVJRCkgewogICAgIGNhc2UgQ1NT
VmFsdWVTbWFsbENhcHRpb246Ci0gICAgICAgIGNhY2hlZERlc2MgPSAmc21hbGxTeXN0ZW1Gb250
OwotICAgICAgICBpZiAoIXNtYWxsU3lzdGVtRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAg
ICAgICAgZm9udFNpemUgPSBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplKE5TU21hbGxDb250
cm9sU2l6ZSk7CisgICAgICAgIGZvbnRTaXplID0gc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6
ZShOU1NtYWxsQ29udHJvbFNpemUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVl
TWVudToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZtZW51Rm9udDsKLSAgICAgICAgaWYgKCFtZW51
Rm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udFNpemUgPSBzeXN0ZW1Gb250
U2l6ZUZvckNvbnRyb2xTaXplKE5TUmVndWxhckNvbnRyb2xTaXplKTsKKyAgICAgICAgZm9udFNp
emUgPSBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplKE5TUmVndWxhckNvbnRyb2xTaXplKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVN0YXR1c0JhcjoKLSAgICAgICAgY2Fj
aGVkRGVzYyA9ICZsYWJlbEZvbnQ7Ci0gICAgICAgIGlmICghbGFiZWxGb250LmlzQWJzb2x1dGVT
aXplKCkpCi0gICAgICAgICAgICBmb250U2l6ZSA9IDEwLjBmOworICAgICAgICBmb250U2l6ZSA9
IDEwLjBmOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TWluaUNvbnRy
b2w6Ci0gICAgICAgIGNhY2hlZERlc2MgPSAmbWluaUNvbnRyb2xGb250OwotICAgICAgICBpZiAo
IW1pbmlDb250cm9sRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udFNpemUg
PSBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplKE5TTWluaUNvbnRyb2xTaXplKTsKKyAgICAg
ICAgZm9udFNpemUgPSBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplKE5TTWluaUNvbnRyb2xT
aXplKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFNtYWxsQ29udHJv
bDoKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzbWFsbENvbnRyb2xGb250OwotICAgICAgICBpZiAo
IXNtYWxsQ29udHJvbEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnRTaXpl
ID0gc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU1NtYWxsQ29udHJvbFNpemUpOworICAg
ICAgICBmb250U2l6ZSA9IHN5c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemUoTlNTbWFsbENvbnRy
b2xTaXplKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdENvbnRyb2w6
Ci0gICAgICAgIGNhY2hlZERlc2MgPSAmY29udHJvbEZvbnQ7Ci0gICAgICAgIGlmICghY29udHJv
bEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnRTaXplID0gc3lzdGVtRm9u
dFNpemVGb3JDb250cm9sU2l6ZShOU1JlZ3VsYXJDb250cm9sU2l6ZSk7CisgICAgICAgIGZvbnRT
aXplID0gc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU1JlZ3VsYXJDb250cm9sU2l6ZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNhY2hlZERlc2MgPSAmc3lz
dGVtRm9udDsKLSAgICAgICAgaWYgKCFzeXN0ZW1Gb250LmlzQWJzb2x1dGVTaXplKCkpCi0gICAg
ICAgICAgICBmb250U2l6ZSA9IDEzLjBmOworICAgICAgICBmb250U2l6ZSA9IDEzLjBmOwogICAg
IH0KIAotICAgIGlmIChmb250U2l6ZSkgewotICAgICAgICBjYWNoZWREZXNjLT5zZXRJc0Fic29s
dXRlU2l6ZSh0cnVlKTsKLSAgICAgICAgY2FjaGVkRGVzYy0+c2V0T25lRmFtaWx5KCJMdWNpZGEg
R3JhbmRlIik7Ci0gICAgICAgIGNhY2hlZERlc2MtPnNldFNwZWNpZmllZFNpemUoZm9udFNpemUp
OwotICAgICAgICBjYWNoZWREZXNjLT5zZXRXZWlnaHQoRm9udFdlaWdodE5vcm1hbCk7Ci0gICAg
ICAgIGNhY2hlZERlc2MtPnNldEl0YWxpYyhGb250SXRhbGljT2ZmKTsKLSAgICB9Ci0gICAgZm9u
dERlc2NyaXB0aW9uID0gKmNhY2hlZERlc2M7CisgICAgaWYgKCFmb250U2l6ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHRydWUpOwor
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkx1Y2lkYSBHcmFuZGUiKTsKKyAgICBm
b250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShmb250U2l6ZSk7CisgICAgZm9udERlc2Ny
aXB0aW9uLnNldFdlaWdodChGb250V2VpZ2h0Tm9ybWFsKTsKKyAgICBmb250RGVzY3JpcHRpb24u
c2V0SXRhbGljKEZvbnRJdGFsaWNPZmYpOwogfQogCiBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpp
c0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCb3JkZXJEYXRh
JiBib3JkZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVTYWZhcmkuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5o
CmluZGV4IGNkMTA2MjM0MzIzYTIyOTk5YmNkNjFkNjA2YTI1MDA3OTYwNjNhYTYuLmVmZDM5YmVi
N2IxYjE0NTdiMzk3YWEwNGYxMGQzNGRlYTc3YmRlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5oCkBAIC03MSw5ICs3MSw2IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0OwogCi0gICAg
Ly8gU3lzdGVtIGZvbnRzLgotICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQs
IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0OwotCiAgICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVM
aXN0U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNs
aWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdDsKQEAgLTg1LDYgKzgy
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nQm90dG9t
KFJlbmRlclN0eWxlJikgY29uc3Q7CiAKIHByb3RlY3RlZDoKKyAgICAvLyBTeXN0ZW0gZm9udHMu
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NW
YWx1ZUlELCBGb250RGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKKwogICAgIC8vIE1ldGhv
ZHMgZm9yIGVhY2ggYXBwZWFyYW5jZSB2YWx1ZS4KICAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVj
a2JveChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jik7CiAgICAgdmlydHVhbCB2b2lkIHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggOTU5
ZWEzZWVmY2Q2M2I0MmZjNDhkMjk2NjNmOTk2NzIwODY5YTljMi4uMGU0M2NmY2E1YzQyMjU0NDAy
NDAzYWE1YjQyZTVlN2NhZGY3N2RjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVXaW4uY3BwCkBAIC0zMjksMjIgKzMyOSw4IEBAIHN0YXRpYyB2b2lkIGZpbGxGb250
RGVzY3JpcHRpb24oRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIExPR0ZPTlQmIGxv
Z0ZvCiAgICAgZm9udERlc2NyaXB0aW9uLnNldElzSXRhbGljKGxvZ0ZvbnQubGZJdGFsaWMpOwog
fQogCi1zdGF0aWMgdm9pZCBmaWxsRm9udERlc2NyaXB0aW9uKEZvbnREZXNjcmlwdGlvbiYgZm9u
dERlc2NyaXB0aW9uLCBMT0dGT05UJiBsb2dGb250KQoteyAgIAotICAgIGZpbGxGb250RGVzY3Jp
cHRpb24oZm9udERlc2NyaXB0aW9uLCBsb2dGb250LCBhYnMobG9nRm9udC5sZkhlaWdodCkpOwot
fQotCi12b2lkIFJlbmRlclRoZW1lV2luOjpzeXN0ZW1Gb250KENTU1ZhbHVlSUQgdmFsdWVJRCwg
Rm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
V2luOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCB2YWx1ZUlE
LCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKIHsKLSAgICBzdGF0aWMg
Rm9udERlc2NyaXB0aW9uIGNhcHRpb25Gb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24g
Y29udHJvbEZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBzbWFsbENhcHRpb25Gb250
OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gbWVudUZvbnQ7Ci0gICAgc3RhdGljIEZvbnRE
ZXNjcmlwdGlvbiBpY29uRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIG1lc3NhZ2VC
b3hGb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gc3RhdHVzQmFyRm9udDsKLSAgICBz
dGF0aWMgRm9udERlc2NyaXB0aW9uIHN5c3RlbUZvbnQ7Ci0gICAgCiAgICAgc3RhdGljIGJvb2wg
aW5pdGlhbGl6ZWQ7CiAgICAgc3RhdGljIE5PTkNMSUVOVE1FVFJJQ1MgbmNtOwogCkBAIC0zNTQs
NjYgKzM0MCw0MSBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjpzeXN0ZW1Gb250KENTU1ZhbHVlSUQg
dmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcAogICAgICAgICA6OlN5c3RlbVBh
cmFtZXRlcnNJbmZvKFNQSV9HRVROT05DTElFTlRNRVRSSUNTLCBzaXplb2YobmNtKSwgJm5jbSwg
MCk7CiAgICAgfQogIAorICAgIExPR0ZPTlQgbG9nRm9udDsKKyAgICBib29sIHNob3VsZFVzZURl
ZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9IGZhbHNlOwogICAgIHN3aXRjaCAodmFsdWVJRCkg
ewotICAgIGNhc2UgQ1NTVmFsdWVJY29uOiB7Ci0gICAgICAgIGlmICghaWNvbkZvbnQuaXNBYnNv
bHV0ZVNpemUoKSkgewotICAgICAgICAgICAgTE9HRk9OVCBsb2dGb250OwotICAgICAgICAgICAg
OjpTeXN0ZW1QYXJhbWV0ZXJzSW5mbyhTUElfR0VUSUNPTlRJVExFTE9HRk9OVCwgc2l6ZW9mKGxv
Z0ZvbnQpLCAmbG9nRm9udCwgMCk7Ci0gICAgICAgICAgICBmaWxsRm9udERlc2NyaXB0aW9uKGlj
b25Gb250LCBsb2dGb250KTsKLSAgICAgICAgfQotICAgICAgICBmb250RGVzY3JpcHRpb24gPSBp
Y29uRm9udDsKKyAgICBjYXNlIENTU1ZhbHVlSWNvbjoKKyAgICAgICAgOjpTeXN0ZW1QYXJhbWV0
ZXJzSW5mbyhTUElfR0VUSUNPTlRJVExFTE9HRk9OVCwgc2l6ZW9mKGxvZ0ZvbnQpLCAmbG9nRm9u
dCwgMCk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNlIENTU1ZhbHVlTWVudToKLSAg
ICAgICAgaWYgKCFtZW51Rm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZmlsbEZv
bnREZXNjcmlwdGlvbihtZW51Rm9udCwgbmNtLmxmTWVudUZvbnQpOwotICAgICAgICBmb250RGVz
Y3JpcHRpb24gPSBtZW51Rm9udDsKKyAgICAgICAgbG9nRm9udCA9IG5jbS5sZk1lbnVGb250Owog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlTWVzc2FnZUJveDoKLSAgICAgICAgaWYg
KCFtZXNzYWdlQm94Rm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZmlsbEZvbnRE
ZXNjcmlwdGlvbihtZXNzYWdlQm94Rm9udCwgbmNtLmxmTWVzc2FnZUZvbnQpOwotICAgICAgICBm
b250RGVzY3JpcHRpb24gPSBtZXNzYWdlQm94Rm9udDsKKyAgICAgICAgbG9nRm9udCA9IG5jbS5s
Zk1lc3NhZ2VGb250OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlU3RhdHVzQmFy
OgotICAgICAgICBpZiAoIXN0YXR1c0JhckZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAg
ICAgIGZpbGxGb250RGVzY3JpcHRpb24oc3RhdHVzQmFyRm9udCwgbmNtLmxmU3RhdHVzRm9udCk7
Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbiA9IHN0YXR1c0JhckZvbnQ7CisgICAgICAgIGxvZ0Zv
bnQgPSBuY20ubGZTdGF0dXNGb250OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVl
Q2FwdGlvbjoKLSAgICAgICAgaWYgKCFjYXB0aW9uRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAg
ICAgICAgICAgZmlsbEZvbnREZXNjcmlwdGlvbihjYXB0aW9uRm9udCwgbmNtLmxmQ2FwdGlvbkZv
bnQpOwotICAgICAgICBmb250RGVzY3JpcHRpb24gPSBjYXB0aW9uRm9udDsKKyAgICAgICAgbG9n
Rm9udCA9IG5jbS5sZkNhcHRpb25Gb250OwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Zh
bHVlU21hbGxDYXB0aW9uOgotICAgICAgICBpZiAoIXNtYWxsQ2FwdGlvbkZvbnQuaXNBYnNvbHV0
ZVNpemUoKSkKLSAgICAgICAgICAgIGZpbGxGb250RGVzY3JpcHRpb24oc21hbGxDYXB0aW9uRm9u
dCwgbmNtLmxmU21DYXB0aW9uRm9udCk7Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbiA9IHNtYWxs
Q2FwdGlvbkZvbnQ7CisgICAgICAgIGxvZ0ZvbnQgPSBuY20ubGZTbUNhcHRpb25Gb250OwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0U21hbGxDb250cm9sOgogICAgIGNh
c2UgQ1NTVmFsdWVXZWJraXRNaW5pQ29udHJvbDogLy8gSnVzdCBtYXAgdG8gc21hbGwuCiAgICAg
Y2FzZSBDU1NWYWx1ZVdlYmtpdENvbnRyb2w6IC8vIEp1c3QgbWFwIHRvIHNtYWxsLgotICAgICAg
ICBpZiAoIWNvbnRyb2xGb250LmlzQWJzb2x1dGVTaXplKCkpIHsKLSAgICAgICAgICAgIEhHRElP
QkogaEdESSA9IDo6R2V0U3RvY2tPYmplY3QoREVGQVVMVF9HVUlfRk9OVCk7Ci0gICAgICAgICAg
ICBpZiAoaEdESSkgewotICAgICAgICAgICAgICAgIExPR0ZPTlQgbG9nRm9udDsKLSAgICAgICAg
ICAgICAgICBpZiAoOjpHZXRPYmplY3QoaEdESSwgc2l6ZW9mKGxvZ0ZvbnQpLCAmbG9nRm9udCkg
PiAwKQotICAgICAgICAgICAgICAgICAgICBmaWxsRm9udERlc2NyaXB0aW9uKGNvbnRyb2xGb250
LCBsb2dGb250LCBkZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemUpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGZvbnREZXNjcmlwdGlvbiA9IGNvbnRyb2xGb250OwotICAgICAg
ICBicmVhazsKKyAgICAgICAgc2hvdWxkVXNlRGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXplID0g
dHJ1ZTsKKyAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgZGVmYXVsdDogeyAvLyBFdmVyeXRoaW5n
IGVsc2UgdXNlcyB0aGUgc3RvY2sgR1VJIGZvbnQuCi0gICAgICAgIGlmICghc3lzdGVtRm9udC5p
c0Fic29sdXRlU2l6ZSgpKSB7Ci0gICAgICAgICAgICBIR0RJT0JKIGhHREkgPSA6OkdldFN0b2Nr
T2JqZWN0KERFRkFVTFRfR1VJX0ZPTlQpOwotICAgICAgICAgICAgaWYgKGhHREkpIHsKLSAgICAg
ICAgICAgICAgICBMT0dGT05UIGxvZ0ZvbnQ7Ci0gICAgICAgICAgICAgICAgaWYgKDo6R2V0T2Jq
ZWN0KGhHREksIHNpemVvZihsb2dGb250KSwgJmxvZ0ZvbnQpID4gMCkKLSAgICAgICAgICAgICAg
ICAgICAgZmlsbEZvbnREZXNjcmlwdGlvbihzeXN0ZW1Gb250LCBsb2dGb250KTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBmb250RGVzY3JpcHRpb24gPSBzeXN0ZW1Gb250Owor
ICAgICAgICBIR0RJT0JKIGhHREkgPSA6OkdldFN0b2NrT2JqZWN0KERFRkFVTFRfR1VJX0ZPTlQp
OworICAgICAgICBpZiAoIWhHREkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICg6
OkdldE9iamVjdChoR0RJLCBzaXplb2YobG9nRm9udCksICZsb2dGb250KSA8PSAwKQorICAgICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICB9CisgICAgZmlsbEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24sIGxvZ0ZvbnQsIHNob3VsZFVzZURlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6
ZSA/IGRlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA6IGFicyhsb2dGb250LmxmSGVpZ2h0KSk7
CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVXaW46OnN1cHBvcnRzRm9jdXMoQ29udHJvbFBhcnQgYXBw
ZWFyYW5jZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgK
aW5kZXggY2M4MzhlZjE0M2I5YzBiY2VmNmU0ZGJkNDExNTJiN2JhOWU3ODViOC4uNGUxOTQ5ODcw
ODdlYjNlMmQ5NDA4Y2UxMzc5YjE0MWEwMjI0ZGQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lV2luLmgKQEAgLTYyLDggKzYyLDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIFN5c3RlbSBmb250cy4KLSAg
ICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKENTU1ZhbHVlSUQp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3goY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpIG92
ZXJyaWRlCkBAIC0xNDgsNiArMTQ2LDkgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJUaGVtZVdpbigp
OwogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lV2luKCk7CiAKKyAgICAvLyBTeXN0ZW0gZm9udHMu
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NW
YWx1ZUlELCBGb250RGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKKwogICAgIHZvaWQgYWRk
SW50cmluc2ljTWFyZ2lucyhSZW5kZXJTdHlsZSYpIGNvbnN0OwogICAgIHZvaWQgY2xvc2UoKTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245255</attachid>
            <date>2015-01-23 15:40:09 -0800</date>
            <delta_ts>2015-01-23 16:54:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140840-20150123154008.patch</filename>
            <type>text/plain</type>
            <size>35508</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2MwODI1YWJhYWNkYTAy
NTYxOTM3NWJkMmQwZjE3NzA2OGI4NDc4Zi4uZGJmNmU1MWE3NWRmNzQ0OTlmOTM2ZDQ0NTM4NTY5
NTMzN2ZmNGQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTAxLTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHN5c3RlbSBm
b250cyBGb250RGVzY3JpcHRpb24gY2FjaGluZyBhdCBSZW5kZXJUaGVtZSBsZXZlbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwODQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHN5c3Rl
bSBmb250cyBGb250RGVzY3JpcHRpb24gY2FjaGluZyBhdCBSZW5kZXJUaGVtZSBsZXZlbAorICAg
ICAgICBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBsb2dpYyBpbiBpdHMgc3ViY2xhc3NlcyBm
b3IgZWFjaCBwbGF0Zm9ybS4KKyAgICAgICAgVGhpcyByZWR1Y2VzIGNvZGUgLyBsb2dpYyBkdXBs
aWNhdGlvbiBhbmQgcmVkdWNlcyB0aGUgYW1vdW50IG9mCisgICAgICAgIHBsYXRmb3JtLXNwZWNp
ZmljIGNvZGUuIFRoaXMgd2lsbCBhbHNvIG1ha2UgdGhlIHJlZmFjdG9yaW5nIGF0CisgICAgICAg
IEJ1ZyAxNDA1NzcgYSBsb3QgZWFzaWVyLgorCisgICAgICAgIFRoZSBjYWNoaW5nIGxvZ2ljIHJl
bWFpbnMgaW4gUmVuZGVyVGhlbWVJT1MgY2xhc3MgZm9yIGlPUyBiZWNhdXNlOgorICAgICAgICAt
IEl0IHN1cHBvcnRzIGRpZmZlcmVudCBzeXN0ZW0gZm9udCB2YWx1ZXMgdGhhbiBhbGwgb3RoZXIg
cGxhdGZvcm1zCisgICAgICAgIC0gSXQgcmVxdWlyZXMgY2FjaGUgaW52YWxpZGF0aW9uIGluIHNv
bWUgY2FzZXMgd2hpbGUgb3RoZXIgcGxhdGZvcm1zCisgICAgICAgICAgZG8gbm90LgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgaW5zcGlyZWQgYnkgdGhlIGZvbGxvd2luZyBCbGluayByZXZpc2lv
bjoKKyAgICAgICAgaHR0cHM6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9ibGluaz92aWV3PXJl
diZyZXZpc2lvbj0xODQ0NDkKKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9jc3MyLXN5c3RlbS1m
b250cy5odG1sCisKIDIwMTUtMDEtMjMgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIERvY3VtZW50IHNob3VsZCBiZSBhIEZvbnRTZWxlY3RvckNsaWVudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4IGEz
NWI4ODBkMzFhNzBkZDU0ZTIzNGQ5YTEwNjBlOWRiMGYxZDRhOWEuLjI4YWRjYjBiMjQ0NGY2OGZj
ZTNiMmQzMTQ2ODQzNGU0YTY0ODY2OTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1JlbmRlclRoZW1lRWZsLmNwcApAQCAtOTg0LDcgKzk4NCw3IEBAIHZvaWQgUmVuZGVyVGhl
bWVFZmw6OnNldERlZmF1bHRGb250U2l6ZShpbnQgc2l6ZSkKICAgICBkZWZhdWx0Rm9udFNpemUg
PSBzaXplOwogfQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjpzeXN0ZW1Gb250KENTU1ZhbHVlSUQs
IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKSBjb25zdAordm9pZCBSZW5kZXJUaGVt
ZUVmbDo6dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQsIEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKSBjb25zdAogewogICAgIC8vIEl0IHdhcyBjYWxs
ZWQgYnkgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQgdG8gcmVuZGVyIGFsdGVy
bmF0aXZlIHN0cmluZy4KICAgICAvLyBUbyBhdm9pZCBjYWlyb19lcnJvciB3aGlsZSByZW5kZXJp
bmcsIGZvbnREZXNjcmlwdGlvbiBzaG91bGQgYmUgcGFzc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaAppbmRleCBmZmU0MDhiOGVjOTNmNzc0MmM5NDA4
MWU4NGIzMWI5MTJmZTJiZWQ1Li4xZDI5OTM5ODM5ZGJkYTc3YjI0ZmFhZmFmN2E0OGRkMjMzZDU5
Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaApA
QCAtMTA0LDkgKzEwNCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRqdXN0U2l6ZUNvbnN0cmFp
bnRzKFJlbmRlclN0eWxlJiwgRm9ybVR5cGUpIGNvbnN0OwogCi0gICAgLy8gU3lzdGVtIGZvbnRz
LgotICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQsIEZvbnREZXNjcmlwdGlv
biYpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdENoZWNrYm94U3R5
bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIApAQCAtMTg5LDYgKzE4
Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2VkamUgfHwgKCFtX3RoZW1lUGF0aC5p
c0VtcHR5KCkgJiYgY29uc3RfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KHRoaXMpLT5sb2FkVGhlbWUo
KSk7CiAgICAgfQogCisgICAgLy8gU3lzdGVtIGZvbnRzLgorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9u
JikgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBBTFdBWVNfSU5MSU5FIEVjb3JlX0V2YXMqIGNhbnZh
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzLmdldCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBF
dmFzX09iamVjdCogZWRqZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRqZS5nZXQoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBjM2NkOTA2YTdmNDI1Nzdm
YWEzNzY5MDBjOWMzOTE5OTgzZDI2ZjQ4Li43ZTE3MjBmYjRkMTUzNzZlYzIwMjYyMzI0ZTk4YWYz
ZGUyN2I1MDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAg
LTEsNyArMSw4IEBACi0vKioKKy8qCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdGhlbWUg
aW1wbGVtZW50YXRpb24gZm9yIGZvcm0gY29udHJvbHMgaW4gV2ViQ29yZS4KICAqCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTIgQXBwbGUg
SW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTAsIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ1LDYgKzQ2LDcgQEAK
ICNpbmNsdWRlICJTcGluQnV0dG9uRWxlbWVudC5oIgogI2luY2x1ZGUgIlN0cmluZ1RydW5jYXRv
ci5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCiAjaW5jbHVk
ZSAiSFRNTE1ldGVyRWxlbWVudC5oIgpAQCAtMTEzMCw2ICsxMTMyLDU1IEBAIHZvaWQgUmVuZGVy
VGhlbWU6OnBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCkKICAgICBQYWdlOjp1cGRhdGVTdHlsZUZv
ckFsbFBhZ2VzQWZ0ZXJHbG9iYWxDaGFuZ2VJbkVudmlyb25tZW50KCk7CiB9CiAKK0ZvbnREZXNj
cmlwdGlvbiYgUmVuZGVyVGhlbWU6OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1
ZUlEIHN5c3RlbUZvbnRJRCkgY29uc3QKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9u
dERlc2NyaXB0aW9uPiBjYXB0aW9uOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250RGVz
Y3JpcHRpb24+IGljb247CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNjcmlwdGlv
bj4gbWVudTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udERlc2NyaXB0aW9uPiBtZXNz
YWdlQm94OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250RGVzY3JpcHRpb24+IHNtYWxs
Q2FwdGlvbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udERlc2NyaXB0aW9uPiBzdGF0
dXNCYXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNjcmlwdGlvbj4gd2Via2l0
TWluaUNvbnRyb2w7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNjcmlwdGlvbj4g
d2Via2l0U21hbGxDb250cm9sOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250RGVzY3Jp
cHRpb24+IHdlYmtpdENvbnRyb2w7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNj
cmlwdGlvbj4gZGVmYXVsdERlc2NyaXB0aW9uOworCisgICAgc3dpdGNoIChzeXN0ZW1Gb250SUQp
IHsKKyAgICBjYXNlIENTU1ZhbHVlQ2FwdGlvbjoKKyAgICAgICAgcmV0dXJuIGNhcHRpb247Cisg
ICAgY2FzZSBDU1NWYWx1ZUljb246CisgICAgICAgIHJldHVybiBpY29uOworICAgIGNhc2UgQ1NT
VmFsdWVNZW51OgorICAgICAgICByZXR1cm4gbWVudTsKKyAgICBjYXNlIENTU1ZhbHVlTWVzc2Fn
ZUJveDoKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2VCb3g7CisgICAgY2FzZSBDU1NWYWx1ZVNtYWxs
Q2FwdGlvbjoKKyAgICAgICAgcmV0dXJuIHNtYWxsQ2FwdGlvbjsKKyAgICBjYXNlIENTU1ZhbHVl
U3RhdHVzQmFyOgorICAgICAgICByZXR1cm4gc3RhdHVzQmFyOworICAgIGNhc2UgQ1NTVmFsdWVX
ZWJraXRNaW5pQ29udHJvbDoKKyAgICAgICAgcmV0dXJuIHdlYmtpdE1pbmlDb250cm9sOworICAg
IGNhc2UgQ1NTVmFsdWVXZWJraXRTbWFsbENvbnRyb2w6CisgICAgICAgIHJldHVybiB3ZWJraXRT
bWFsbENvbnRyb2w7CisgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdENvbnRyb2w6CisgICAgICAgIHJl
dHVybiB3ZWJraXRDb250cm9sOworICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICByZXR1
cm4gZGVmYXVsdERlc2NyaXB0aW9uOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZGVmYXVsdERlc2NyaXB0aW9uOworICAgIH0KK30K
Kwordm9pZCBSZW5kZXJUaGVtZTo6c3lzdGVtRm9udChDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCwg
Rm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0Cit7CisgICAgZm9udERlc2Ny
aXB0aW9uID0gY2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKHN5c3RlbUZvbnRJRCk7CisgICAg
aWYgKGZvbnREZXNjcmlwdGlvbi5pc0Fic29sdXRlU2l6ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oc3lzdGVtRm9udElELCBmb250
RGVzY3JpcHRpb24pOworfQorCiBDb2xvciBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoQ1NTVmFs
dWVJRCBjc3NWYWx1ZUlkKSBjb25zdAogewogICAgIHN3aXRjaCAoY3NzVmFsdWVJZCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCBjNjRjNzNjMGViNjVhMDY1Y2I5
Y2NiZTlmYzM3OTQ0NjIwY2ZhMmY3Li5mZDQ5MGZiNjczNWQyNDgyZDliNGY5YTk0YjJiZWU0NDAy
MjZjNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApAQCAtMTcyLDcg
KzE3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBjYXJldEJsaW5rSW50ZXJ2YWwo
KSBjb25zdCB7IHJldHVybiAwLjU7IH0KIAogICAgIC8vIFN5c3RlbSBmb250cyBhbmQgY29sb3Jz
IGZvciBDU1MuCi0gICAgdmlydHVhbCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERl
c2NyaXB0aW9uJikgY29uc3QgPSAwOworICAgIHZvaWQgc3lzdGVtRm9udChDU1NWYWx1ZUlELCBG
b250RGVzY3JpcHRpb24mKSBjb25zdDsKICAgICB2aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKENT
U1ZhbHVlSUQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVMaXN0U2l6ZShS
ZW5kZXJTdHlsZSYpIGNvbnN0IHsgcmV0dXJuIDA7IH0KQEAgLTI1Miw2ICsyNTIsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGRlZmF1bHRCdXR0b25IYXNBbmltYXRpb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBGb250RGVzY3JpcHRp
b24mIGNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCkg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlv
bihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCwgRm9udERlc2NyaXB0aW9uJikgY29uc3QgPSAwOwor
CiAgICAgLy8gVGhlIHBsYXRmb3JtIHNlbGVjdGlvbiBjb2xvci4KICAgICB2aXJ0dWFsIENvbG9y
IHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCAz
Yzk0ZGI2Y2FkNjc3ODNlZmFmYWY3MDUxMWRkMWJjMGRiMGIzM2ExLi43MmQ0Njg0OWI3ZWE1YTk1
Mjk5ZTE0ZDBlZDQ5ZmY2ZGYyY2E3OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIGRvdWJsZSBnZXRTY3Jl
ZW5EUEkoKQogICAgIHJldHVybiBkcGk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVHdGs6OnN5c3Rl
bUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lR3RrOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24o
Q1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0CiB7CiAg
ICAgR3RrU2V0dGluZ3MqIHNldHRpbmdzID0gZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCk7CiAg
ICAgaWYgKCFzZXR0aW5ncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3Rr
LmgKaW5kZXggMzc0NjhiYmMyZmY0MTFlZWVmZTcyYjMzMjBlZDQ2ZTUyMmU3YTkyNS4uYmIwNGZm
NDlhYjI1OTQyM2ZhNWFmNTE0MjVjZjQ3Y2VjN2NjYzk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKQEAgLTM2LDkgKzM2LDYgQEAgY2xhc3MgUmVuZGVyVGhl
bWVHdGsgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlbmRlclRoZW1lPiBjcmVhdGUoKTsKIAotICAgIC8vIFN5c3RlbSBmb250cy4K
LSAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24m
KSBjb25zdCBvdmVycmlkZTsKLQogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogICAgIC8v
IFJldHVybnMgc2l6ZSBvZiBvbmUgc2xpZGVyIHRpY2sgbWFyayBmb3IgYSBob3Jpem9udGFsIHRy
YWNrLgogICAgIC8vIEZvciB2ZXJ0aWNhbCB0cmFja3Mgd2Ugcm90YXRlIGl0IGFuZCB1c2UgaXQu
IGkuZS4gV2lkdGggaXMgYWx3YXlzIGxlbmd0aCBhbG9uZyB0aGUgdHJhY2suCkBAIC00Nyw2ICs0
NCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2xpZGVyVGlja09mZnNldEZyb21UcmFj
a0NlbnRlcigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKK3ByaXZhdGU6CisgICAgLy8gU3lz
dGVtIGZvbnRzLgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3Jp
cHRpb24oQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisKK3B1
YmxpYzoKICNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKIAogICAgIC8vIEEgbWV0aG9kIGFza2lu
ZyBpZiB0aGUgdGhlbWUncyBjb250cm9scyBhY3R1YWxseSBjYXJlIGFib3V0IHJlZHJhd2luZyB3
aGVuIGhvdmVyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCmlu
ZGV4IDFjODQzNTdhY2RjMzdlMzZiZDBiZWE4YmM5YjEwY2M0YjEyMmE2ODguLmI4NjMxMDM3OGM0
NTEzYjgyZmFlNzJmYjY3NjBjYzM4NTE3Y2I1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5oCkBAIC00MywxMyArNDMsMTMgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIHZvaWQgYWRqdXN0Um91bmRCb3JkZXJSYWRpdXMoUmVuZGVyU3R5bGUmLCBSZW5kZXJCb3gm
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQsIEZvbnREZXNjcmlw
dGlvbiYpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGNvbnRlbnRT
aXplQ2F0ZWdvcnkoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldENvbnRl
bnRTaXplQ2F0ZWdvcnkoY29uc3QgU3RyaW5nJik7CiAKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IEZvbnREZXNjcmlwdGlvbiYgY2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQg
c3lzdGVtRm9udElEKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2Fj
aGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oY29uc3QgUmVu
ZGVyT2JqZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9s
U3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgQm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxM
YXllciYgYmFja2dyb3VuZCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXgg
NjFiNTBkOWRjZGJmZThjNzE5YzhiYzUxMzEzNjc4NTUzYTY4NGY0OS4uMzliNDRmYmE0NmUwODg3
YTA3NzMyMzM2ZDU4YzUxNzhhZWM5ZGJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgc3RhdGljIEZvbnRXZWlnaHQg
ZnJvbUNURm9udFdlaWdodChmbG9hdCBmb250V2VpZ2h0KQogICAgIHJldHVybiBGb250V2VpZ2h0
Tm9ybWFsOwogfQogCi12b2lkIFJlbmRlclRoZW1lSU9TOjpzeXN0ZW1Gb250KENTU1ZhbHVlSUQg
dmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0CitGb250RGVz
Y3JpcHRpb24mIFJlbmRlclRoZW1lSU9TOjpjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NT
VmFsdWVJRCBzeXN0ZW1Gb250SUQpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRE
ZXNjcmlwdGlvbj4gc3lzdGVtRm9udDsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udERl
c2NyaXB0aW9uPiBoZWFkbGluZUZvbnQ7CkBAIC0xMTQzLDEyMyArMTE0MywxMzAgQEAgdm9pZCBS
ZW5kZXJUaGVtZUlPUzo6c3lzdGVtRm9udChDU1NWYWx1ZUlEIHZhbHVlSUQsIEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXAKICAgICAgICAgdGFsbEJvZHlGb250LmdldCgpLnNldElzQWJzb2x1
dGVTaXplKGZhbHNlKTsKICAgICB9CiAKLSAgICBGb250RGVzY3JpcHRpb24qIGNhY2hlZERlc2M7
CisgICAgc3dpdGNoICh2YWx1ZUlEKSB7CisgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtSGVh
ZGxpbmU6CisgICAgICAgIHJldHVybiBoZWFkbGluZUZvbnQ7CisgICAgY2FzZSBDU1NWYWx1ZUFw
cGxlU3lzdGVtQm9keToKKyAgICAgICAgcmV0dXJuIGJvZHlGb250OworI2lmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gODAyMDAKKyAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0
ZW1UaXRsZTE6CisgICAgICAgIHJldHVybiB0aXRsZTFGb250OworICAgIGNhc2UgQ1NTVmFsdWVB
cHBsZVN5c3RlbVRpdGxlMjoKKyAgICAgICAgcmV0dXJuIHRpdGxlMkZvbnQ7CisgICAgY2FzZSBD
U1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUzOgorICAgICAgICByZXR1cm4gdGl0bGUzRm9udDsKKyNl
bmRpZgorICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVN1YmhlYWRsaW5lOgorICAgICAgICBy
ZXR1cm4gc3ViaGVhZGxpbmVGb250OworICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUZvb3Ru
b3RlOgorICAgICAgICByZXR1cm4gZm9vdG5vdGVGb250OworICAgIGNhc2UgQ1NTVmFsdWVBcHBs
ZVN5c3RlbUNhcHRpb24xOgorICAgICAgICByZXR1cm4gY2FwdGlvbjFGb250OworICAgIGNhc2Ug
Q1NTVmFsdWVBcHBsZVN5c3RlbUNhcHRpb24yOgorICAgICAgICByZXR1cm4gY2FwdGlvbjJGb250
OworICAgICAgICAvLyBTaG9ydCB2ZXJzaW9uLgorICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3Rl
bVNob3J0SGVhZGxpbmU6CisgICAgICAgIHJldHVybiBzaG9ydEhlYWRsaW5lRm9udDsKKyAgICBj
YXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TaG9ydEJvZHk6CisgICAgICAgIHJldHVybiBzaG9ydEJv
ZHlGb250OworICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNob3J0U3ViaGVhZGxpbmU6Cisg
ICAgICAgIHJldHVybiBzaG9ydFN1YmhlYWRsaW5lRm9udDsKKyAgICBjYXNlIENTU1ZhbHVlQXBw
bGVTeXN0ZW1TaG9ydEZvb3Rub3RlOgorICAgICAgICByZXR1cm4gc2hvcnRGb290bm90ZUZvbnQ7
CisgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2hvcnRDYXB0aW9uMToKKyAgICAgICAgcmV0
dXJuIHNob3J0Q2FwdGlvbjFGb250OworICAgICAgICAvLyBUYWxsIHZlcnNpb24uCisgICAgY2Fz
ZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGFsbEJvZHk6CisgICAgICAgIHJldHVybiB0YWxsQm9keUZv
bnQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN5c3RlbUZvbnQ7CisgICAgfQorfQor
Cit2b2lkIFJlbmRlclRoZW1lSU9TOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24o
Q1NTVmFsdWVJRCB2YWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29u
c3QKK3sKICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9udERlc2NyaXB0b3I7
CiAgICAgQ0ZTdHJpbmdSZWYgdGV4dFN0eWxlOwogICAgIHN3aXRjaCAodmFsdWVJRCkgewogICAg
IGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUhlYWRsaW5lOgotICAgICAgICBjYWNoZWREZXNjID0g
JmhlYWRsaW5lRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0
eWxlSGVhZGxpbmU7Ci0gICAgICAgIGlmICghaGVhZGxpbmVGb250LmdldCgpLmlzQWJzb2x1dGVT
aXplKCkpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3Jp
cHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsKKyAg
ICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRo
VGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUJvZHk6Ci0gICAgICAgIGNhY2hl
ZERlc2MgPSAmYm9keUZvbnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRl
eHRTdHlsZUJvZHk7Ci0gICAgICAgIGlmICghYm9keUZvbnQuZ2V0KCkuaXNBYnNvbHV0ZVNpemUo
KSkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9y
Q3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIHVzZXJUZXh0U2l6ZSwgMCkpOworICAgICAg
ICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0
U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsKICAgICAgICAgYnJl
YWs7CiAjaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiA4MDIwMAogICAgIGNh
c2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZ0aXRs
ZTFGb250LmdldCgpOwogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRs
ZTE7Ci0gICAgICAgIGlmICghdGl0bGUxRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAg
ICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVX
aXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0
ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTI6Ci0gICAgICAgIGNhY2hlZERlc2MgPSAm
dGl0bGUyRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxl
VGl0bGUyOwotICAgICAgICBpZiAoIXRpdGxlMkZvbnQuZ2V0KCkuaXNBYnNvbHV0ZVNpemUoKSkK
LSAgICAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3Jl
YXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIHVzZXJUZXh0U2l6ZSwgMCkpOworICAgICAgICBm
b250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5
bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUzOgotICAgICAgICBjYWNoZWREZXNj
ID0gJnRpdGxlM0ZvbnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRT
dHlsZVRpdGxlMzsKLSAgICAgICAgaWYgKCF0aXRsZTNGb250LmdldCgpLmlzQWJzb2x1dGVTaXpl
KCkpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRv
ckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsKKyAgICAg
ICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4
dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU3ViaGVhZGxpbmU6Ci0g
ICAgICAgIGNhY2hlZERlc2MgPSAmc3ViaGVhZGxpbmVGb250LmdldCgpOwogICAgICAgICB0ZXh0
U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVTdWJoZWFkOwotICAgICAgICBpZiAoIXN1YmhlYWRs
aW5lRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHls
ZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihD
VEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXpl
Q2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVT
eXN0ZW1Gb290bm90ZToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZmb290bm90ZUZvbnQuZ2V0KCk7
CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZUZvb3Rub3RlOwotICAgICAg
ICBpZiAoIWZvb3Rub3RlRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAg
Zm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0
eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZvbnREZXNjcmlwdG9y
ID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUs
IGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENT
U1ZhbHVlQXBwbGVTeXN0ZW1DYXB0aW9uMToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZjYXB0aW9u
MUZvbnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZUNhcHRp
b24xOwotICAgICAgICBpZiAoIWNhcHRpb24xRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQot
ICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVh
dGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHls
ZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1DYXB0aW9uMjoKLSAgICAgICAgY2FjaGVkRGVz
YyA9ICZjYXB0aW9uMkZvbnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRl
eHRTdHlsZUNhcHRpb24yOwotICAgICAgICBpZiAoIWNhcHRpb24yRm9udC5nZXQoKS5pc0Fic29s
dXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERl
c2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7
CisgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRl
V2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAg
ICAgICBicmVhazsKIAogICAgIC8vIFNob3J0IHZlcnNpb24uCiAgICAgY2FzZSBDU1NWYWx1ZUFw
cGxlU3lzdGVtU2hvcnRIZWFkbGluZToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzaG9ydEhlYWRs
aW5lRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlU2hv
cnRIZWFkbGluZTsKLSAgICAgICAgaWYgKCFzaG9ydEhlYWRsaW5lRm9udC5nZXQoKS5pc0Fic29s
dXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERl
c2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7
CisgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRl
V2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TaG9ydEJvZHk6Ci0gICAg
ICAgIGNhY2hlZERlc2MgPSAmc2hvcnRCb2R5Rm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxl
ID0ga0NUVUlGb250VGV4dFN0eWxlU2hvcnRCb2R5OwotICAgICAgICBpZiAoIXNob3J0Qm9keUZv
bnQuZ2V0KCkuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdG9yID0g
YWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIHVz
ZXJUZXh0U2l6ZSwgMCkpOworICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250
RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVn
b3J5KCksIDApKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVt
U2hvcnRTdWJoZWFkbGluZToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzaG9ydFN1YmhlYWRsaW5l
Rm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlU2hvcnRT
dWJoZWFkOwotICAgICAgICBpZiAoIXNob3J0U3ViaGVhZGxpbmVGb250LmdldCgpLmlzQWJzb2x1
dGVTaXplKCkpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVz
Y3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsK
KyAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVX
aXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNob3J0Rm9vdG5vdGU6Ci0g
ICAgICAgIGNhY2hlZERlc2MgPSAmc2hvcnRGb290bm90ZUZvbnQuZ2V0KCk7CiAgICAgICAgIHRl
eHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVNob3J0Rm9vdG5vdGU7Ci0gICAgICAgIGlmICgh
c2hvcnRGb290bm90ZUZvbnQuZ2V0KCkuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHls
ZSh0ZXh0U3R5bGUsIHVzZXJUZXh0U2l6ZSwgMCkpOworICAgICAgICBmb250RGVzY3JpcHRvciA9
IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBj
b250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NW
YWx1ZUFwcGxlU3lzdGVtU2hvcnRDYXB0aW9uMToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzaG9y
dENhcHRpb24xRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0
eWxlU2hvcnRDYXB0aW9uMTsKLSAgICAgICAgaWYgKCFzaG9ydENhcHRpb24xRm9udC5nZXQoKS5p
c0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENU
Rm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXpl
LCAwKSk7CisgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9y
Q3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkp
OwogICAgICAgICBicmVhazsKIAogICAgIC8vIFRhbGwgdmVyc2lvbi4KICAgICBjYXNlIENTU1Zh
bHVlQXBwbGVTeXN0ZW1UYWxsQm9keToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZ0YWxsQm9keUZv
bnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRhbGxCb2R5
OwotICAgICAgICBpZiAoIXRhbGxCb2R5Rm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAg
ICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVX
aXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0
ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsKIAog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRleHRTdHlsZSA9IGtDVEZvbnREZXNjcmlwdG9yVGV4dFN0
eWxlRW1waGFzaXplZDsKICAgICAgICAgY2FjaGVkRGVzYyA9ICZzeXN0ZW1Gb250LmdldCgpOwot
ICAgICAgICBpZiAoIXN5c3RlbUZvbnQuZ2V0KCkuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAg
ICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlRm9yVUlU
eXBlKGtDVEZvbnRTeXN0ZW1Gb250VHlwZSwgMCwgbnVsbHB0cikpOworICAgICAgICBmb250RGVz
Y3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUZvclVJVHlwZShrQ1RGb250
U3lzdGVtRm9udFR5cGUsIDAsIG51bGxwdHIpKTsKICAgICB9CiAKLSAgICBpZiAoZm9udERlc2Ny
aXB0b3IpIHsKLSAgICAgICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RG
b250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgpLCAwLCBudWxs
cHRyKSk7Ci0gICAgICAgIGNhY2hlZERlc2MtPnNldElzQWJzb2x1dGVTaXplKHRydWUpOwotICAg
ICAgICBjYWNoZWREZXNjLT5zZXRPbmVGYW1pbHkodGV4dFN0eWxlKTsKLSAgICAgICAgY2FjaGVk
RGVzYy0+c2V0U3BlY2lmaWVkU2l6ZShDVEZvbnRHZXRTaXplKGZvbnQuZ2V0KCkpKTsKLSAgICAg
ICAgY2FjaGVkRGVzYy0+c2V0V2VpZ2h0KGZyb21DVEZvbnRXZWlnaHQoRm9udENhY2hlOjp3ZWln
aHRPZkNURm9udChmb250LmdldCgpKSkpOwotICAgICAgICBjYWNoZWREZXNjLT5zZXRJdGFsaWMo
Rm9udEl0YWxpY09mZik7Ci0gICAgfQotICAgIGZvbnREZXNjcmlwdGlvbiA9ICpjYWNoZWREZXNj
OworICAgIEFTU0VSVChmb250RGVzY3JpcHRvcik7CisgICAgUmV0YWluUHRyPENURm9udFJlZj4g
Zm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlw
dG9yLmdldCgpLCAwLCBudWxscHRyKSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1
dGVTaXplKHRydWUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkodGV4dFN0eWxl
KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShDVEZvbnRHZXRTaXplKGZv
bnQuZ2V0KCkpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KGZyb21DVEZvbnRXZWln
aHQoRm9udENhY2hlOjp3ZWlnaHRPZkNURm9udChmb250LmdldCgpKSkpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRJdGFsaWMoRm9udEl0YWxpY09mZik7CiB9CiAKICNpZiBFTkFCTEUoVklERU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4IGQ0Y2M2MzZk
MjJhYWZkMzc3ODBmZDAzMTAwMWUyNjA5NjQ2YWFlZDkuLjVmNTRlYjViNGIwODIzMTQyYjM5MmIy
MDdjMjk2NmE5YmNlYTY5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5oCkBAIC02Niw5ICs2Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUNvbG9yc0RpZENoYW5nZSgpIG92ZXJyaWRlOwogCi0gICAgLy8gU3lzdGVtIGZvbnRzLgot
ICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVMaXN0U2l6ZShS
ZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNs
aWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKQEAg
LTExMiw2ICsxMDksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyVGhlbWVNYWMoKTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJUaGVtZU1hYygpOwogCisgICAgLy8gU3lzdGVtIGZvbnRzLgorICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCwg
Rm9udERlc2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisKICNpZiBFTkFCTEUoVklERU8pCiAg
ICAgLy8gTWVkaWEgY29udHJvbHMKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUNvbnRyb2xzU3R5
bGVTaGVldCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tCmluZGV4IGEzMWY4MzBmNjZiOWYyOTk2MDNjZWJlOTVlMGNhMmJhODZjNDE2ZjUuLmIy
ZGE2YzI5Zjk1ZjYzNzdmNGQ0N2YzZjE3NWRlYmI5NGQzN2FjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTMzOCw2NCArMzM4LDQxIEBAIHN0YXRp
YyBGb250V2VpZ2h0IHRvRm9udFdlaWdodChOU0ludGVnZXIgYXBwS2l0Rm9udFdlaWdodCkKICAg
ICByZXR1cm4gZm9udFdlaWdodHNbYXBwS2l0Rm9udFdlaWdodCAtIDFdOwogfQogCi12b2lkIFJl
bmRlclRoZW1lTWFjOjpzeXN0ZW1Gb250KENTU1ZhbHVlSUQgY3NzVmFsdWVJZCwgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0Ci17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEZvbnREZXNjcmlwdGlvbiwgc3lzdGVtRm9udCwgKCkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGb250RGVzY3JpcHRpb24sIHNtYWxsU3lzdGVtRm9u
dCwgKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGb250RGVzY3JpcHRp
b24sIG1lbnVGb250LCAoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZv
bnREZXNjcmlwdGlvbiwgbGFiZWxGb250LCAoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEZvbnREZXNjcmlwdGlvbiwgbWluaUNvbnRyb2xGb250LCAoKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnREZXNjcmlwdGlvbiwgc21hbGxDb250cm9s
Rm9udCwgKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGb250RGVzY3Jp
cHRpb24sIGNvbnRyb2xGb250LCAoKSk7Ci0KLSAgICBGb250RGVzY3JpcHRpb24qIGNhY2hlZERl
c2M7Ci0gICAgTlNGb250KiBmb250ID0gbmlsOwordm9pZCBSZW5kZXJUaGVtZU1hYzo6dXBkYXRl
Q2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCwgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0Cit7CisgICAgTlNGb250KiBmb250Owog
ICAgIHN3aXRjaCAoY3NzVmFsdWVJZCkgewogICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGxDYXB0
aW9uOgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZzbWFsbFN5c3RlbUZvbnQ7Ci0gICAgICAg
ICAgICBpZiAoIXNtYWxsU3lzdGVtRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAg
ICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6W05TRm9udCBzbWFsbFN5c3RlbUZv
bnRTaXplXV07CisgICAgICAgICAgICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltO
U0ZvbnQgc21hbGxTeXN0ZW1Gb250U2l6ZV1dOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVNZW51OgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZtZW51Rm9udDsK
LSAgICAgICAgICAgIGlmICghbWVudUZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAg
ICAgICBmb250ID0gW05TRm9udCBtZW51Rm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZvbnRTaXpl
XV07CisgICAgICAgICAgICBmb250ID0gW05TRm9udCBtZW51Rm9udE9mU2l6ZTpbTlNGb250IHN5
c3RlbUZvbnRTaXplXV07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NWYWx1
ZVN0YXR1c0JhcjoKLSAgICAgICAgICAgIGNhY2hlZERlc2MgPSAmbGFiZWxGb250OwotICAgICAg
ICAgICAgaWYgKCFsYWJlbEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgICAgICBm
b250ID0gW05TRm9udCBsYWJlbEZvbnRPZlNpemU6W05TRm9udCBsYWJlbEZvbnRTaXplXV07Cisg
ICAgICAgICAgICBmb250ID0gW05TRm9udCBsYWJlbEZvbnRPZlNpemU6W05TRm9udCBsYWJlbEZv
bnRTaXplXV07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtp
dE1pbmlDb250cm9sOgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZtaW5pQ29udHJvbEZvbnQ7
Ci0gICAgICAgICAgICBpZiAoIW1pbmlDb250cm9sRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAg
ICAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6W05TRm9udCBzeXN0
ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplOk5TTWluaUNvbnRyb2xTaXplXV07CisgICAgICAgICAg
ICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVtRm9udFNpemVG
b3JDb250cm9sU2l6ZTpOU01pbmlDb250cm9sU2l6ZV1dOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRTbWFsbENvbnRyb2w6Ci0gICAgICAgICAgICBjYWNo
ZWREZXNjID0gJnNtYWxsQ29udHJvbEZvbnQ7Ci0gICAgICAgICAgICBpZiAoIXNtYWxsQ29udHJv
bEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgICAgICBmb250ID0gW05TRm9udCBz
eXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZTpOU1Nt
YWxsQ29udHJvbFNpemVdXTsKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRP
ZlNpemU6W05TRm9udCBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplOk5TU21hbGxDb250cm9s
U2l6ZV1dOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRD
b250cm9sOgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZjb250cm9sRm9udDsKLSAgICAgICAg
ICAgIGlmICghY29udHJvbEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgICAgICBm
b250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVtRm9udFNpemVGb3JD
b250cm9sU2l6ZTpOU1JlZ3VsYXJDb250cm9sU2l6ZV1dOworICAgICAgICAgICAgZm9udCA9IFtO
U0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZvbnRTaXplRm9yQ29udHJvbFNp
emU6TlNSZWd1bGFyQ29udHJvbFNpemVdXTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZzeXN0ZW1Gb250OwotICAgICAgICAg
ICAgaWYgKCFzeXN0ZW1Gb250LmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICAgICAgZm9u
dCA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZvbnRTaXplXV07Cisg
ICAgICAgICAgICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVt
Rm9udFNpemVdXTsKICAgICB9CiAKLSAgICBpZiAoZm9udCkgewotICAgICAgICBOU0ZvbnRNYW5h
Z2VyICpmb250TWFuYWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXTsKLSAg
ICAgICAgY2FjaGVkRGVzYy0+c2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7Ci0gICAgICAgIGNhY2hl
ZERlc2MtPnNldE9uZUZhbWlseShbZm9udCB3ZWJDb3JlRmFtaWx5TmFtZV0pOwotICAgICAgICBj
YWNoZWREZXNjLT5zZXRTcGVjaWZpZWRTaXplKFtmb250IHBvaW50U2l6ZV0pOwotICAgICAgICBj
YWNoZWREZXNjLT5zZXRXZWlnaHQodG9Gb250V2VpZ2h0KFtmb250TWFuYWdlciB3ZWlnaHRPZkZv
bnQ6Zm9udF0pKTsKLSAgICAgICAgY2FjaGVkRGVzYy0+c2V0SXNJdGFsaWMoW2ZvbnRNYW5hZ2Vy
IHRyYWl0c09mRm9udDpmb250XSAmIE5TSXRhbGljRm9udE1hc2spOwotICAgIH0KLSAgICBmb250
RGVzY3JpcHRpb24gPSAqY2FjaGVkRGVzYzsKKyAgICBpZiAoIWZvbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hh
cmVkRm9udE1hbmFnZXJdOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZSh0
cnVlKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KFtmb250IHdlYkNvcmVGYW1p
bHlOYW1lXSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoW2ZvbnQgcG9p
bnRTaXplXSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodCh0b0ZvbnRXZWlnaHQoW2Zv
bnRNYW5hZ2VyIHdlaWdodE9mRm9udDpmb250XSkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJ
c0l0YWxpYyhbZm9udE1hbmFnZXIgdHJhaXRzT2ZGb250OmZvbnRdICYgTlNJdGFsaWNGb250TWFz
ayk7CiB9CiAKIHN0YXRpYyBSR0JBMzIgY29udmVydE5TQ29sb3JUb0NvbG9yKE5TQ29sb3IgKmNv
bG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAK
aW5kZXggMTBlNDM0N2M0MTY4ZGMxNzUyZDNkZjAyYzQ0OWI1Mzg3Y2VjNTRjNy4uYTU2ZWI0M2E5
ZmYyZDBjZmI4ZDQ0NDZhNTEzOThjMjUyYTk1OThlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0xOTIsNjMgKzE5Miw0MCBAQCBzdGF0
aWMgZmxvYXQgc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU0NvbnRyb2xTaXplIGNvbnRy
b2xTaXplKQogICAgIHJldHVybiBzaXplc1tjb250cm9sU2l6ZV07CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWVTYWZhcmk6OnN5c3RlbUZvbnQoQ1NTVmFsdWVJRCB2YWx1ZUlELCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKLXsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9u
IHN5c3RlbUZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBzbWFsbFN5c3RlbUZvbnQ7
Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBtZW51Rm9udDsKLSAgICBzdGF0aWMgRm9udERl
c2NyaXB0aW9uIGxhYmVsRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIG1pbmlDb250
cm9sRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIHNtYWxsQ29udHJvbEZvbnQ7Ci0g
ICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBjb250cm9sRm9udDsKLQotICAgIEZvbnREZXNjcmlw
dGlvbiogY2FjaGVkRGVzYzsKLSAgICBmbG9hdCBmb250U2l6ZSA9IDA7Cit2b2lkIFJlbmRlclRo
ZW1lU2FmYXJpOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCB2
YWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKK3sKKyAgICBm
bG9hdCBmb250U2l6ZTsKICAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVl
U21hbGxDYXB0aW9uOgotICAgICAgICBjYWNoZWREZXNjID0gJnNtYWxsU3lzdGVtRm9udDsKLSAg
ICAgICAgaWYgKCFzbWFsbFN5c3RlbUZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAg
IGZvbnRTaXplID0gc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU1NtYWxsQ29udHJvbFNp
emUpOworICAgICAgICBmb250U2l6ZSA9IHN5c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemUoTlNT
bWFsbENvbnRyb2xTaXplKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6
Ci0gICAgICAgIGNhY2hlZERlc2MgPSAmbWVudUZvbnQ7Ci0gICAgICAgIGlmICghbWVudUZvbnQu
aXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnRTaXplID0gc3lzdGVtRm9udFNpemVG
b3JDb250cm9sU2l6ZShOU1JlZ3VsYXJDb250cm9sU2l6ZSk7CisgICAgICAgIGZvbnRTaXplID0g
c3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU1JlZ3VsYXJDb250cm9sU2l6ZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVTdGF0dXNCYXI6Ci0gICAgICAgIGNhY2hlZERl
c2MgPSAmbGFiZWxGb250OwotICAgICAgICBpZiAoIWxhYmVsRm9udC5pc0Fic29sdXRlU2l6ZSgp
KQotICAgICAgICAgICAgZm9udFNpemUgPSAxMC4wZjsKKyAgICAgICAgZm9udFNpemUgPSAxMC4w
ZjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1pbmlDb250cm9sOgot
ICAgICAgICBjYWNoZWREZXNjID0gJm1pbmlDb250cm9sRm9udDsKLSAgICAgICAgaWYgKCFtaW5p
Q29udHJvbEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnRTaXplID0gc3lz
dGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU01pbmlDb250cm9sU2l6ZSk7CisgICAgICAgIGZv
bnRTaXplID0gc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU01pbmlDb250cm9sU2l6ZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRTbWFsbENvbnRyb2w6Ci0g
ICAgICAgIGNhY2hlZERlc2MgPSAmc21hbGxDb250cm9sRm9udDsKLSAgICAgICAgaWYgKCFzbWFs
bENvbnRyb2xGb250LmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICBmb250U2l6ZSA9IHN5
c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemUoTlNTbWFsbENvbnRyb2xTaXplKTsKKyAgICAgICAg
Zm9udFNpemUgPSBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplKE5TU21hbGxDb250cm9sU2l6
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRDb250cm9sOgotICAg
ICAgICBjYWNoZWREZXNjID0gJmNvbnRyb2xGb250OwotICAgICAgICBpZiAoIWNvbnRyb2xGb250
LmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICBmb250U2l6ZSA9IHN5c3RlbUZvbnRTaXpl
Rm9yQ29udHJvbFNpemUoTlNSZWd1bGFyQ29udHJvbFNpemUpOworICAgICAgICBmb250U2l6ZSA9
IHN5c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemUoTlNSZWd1bGFyQ29udHJvbFNpemUpOwogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBjYWNoZWREZXNjID0gJnN5c3RlbUZv
bnQ7Ci0gICAgICAgIGlmICghc3lzdGVtRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAg
ICAgZm9udFNpemUgPSAxMy4wZjsKKyAgICAgICAgZm9udFNpemUgPSAxMy4wZjsKICAgICB9CiAK
LSAgICBpZiAoZm9udFNpemUpIHsKLSAgICAgICAgY2FjaGVkRGVzYy0+c2V0SXNBYnNvbHV0ZVNp
emUodHJ1ZSk7Ci0gICAgICAgIGNhY2hlZERlc2MtPnNldE9uZUZhbWlseSgiTHVjaWRhIEdyYW5k
ZSIpOwotICAgICAgICBjYWNoZWREZXNjLT5zZXRTcGVjaWZpZWRTaXplKGZvbnRTaXplKTsKLSAg
ICAgICAgY2FjaGVkRGVzYy0+c2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwotICAgICAgICBj
YWNoZWREZXNjLT5zZXRJdGFsaWMoRm9udEl0YWxpY09mZik7Ci0gICAgfQotICAgIGZvbnREZXNj
cmlwdGlvbiA9ICpjYWNoZWREZXNjOworICAgIGlmICghZm9udFNpemUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKKyAgICBm
b250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJMdWNpZGEgR3JhbmRlIik7CisgICAgZm9udERl
c2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOworICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRXZWlnaHQoRm9udFdlaWdodE5vcm1hbCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEl0
YWxpYyhGb250SXRhbGljT2ZmKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6aXNDb250
cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQm9yZGVyRGF0YSYgYm9y
ZGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAppbmRl
eCBjZDEwNjIzNDMyM2EyMjk5OWJjZDYxZDYwNmEyNTAwNzk2MDYzYWE2Li5lZmQzOWJlYjdiMWIx
NDU3YjM5N2FhMDRmMTBkMzRkZWE3N2JkZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVTYWZhcmkuaApAQCAtNzEsOSArNzEsNiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdDsKIAotICAgIC8vIFN5
c3RlbSBmb250cy4KLSAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250
RGVzY3JpcHRpb24mKSBjb25zdDsKLQogICAgIHZpcnR1YWwgaW50IG1pbmltdW1NZW51TGlzdFNp
emUoUmVuZGVyU3R5bGUmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJU
aHVtYlNpemUoUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7CkBAIC04NSw2ICs4Miw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0JvdHRvbShSZW5k
ZXJTdHlsZSYpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CisgICAgLy8gU3lzdGVtIGZvbnRzLgorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJ
RCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBNZXRob2RzIGZv
ciBlYWNoIGFwcGVhcmFuY2UgdmFsdWUuCiAgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3go
Y29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUmKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDk1OWVhM2Vl
ZmNkNjNiNDJmYzQ4ZDI5NjYzZjk5NjcyMDg2OWE5YzIuLjBlNDNjZmNhNWM0MjI1NDQwMjQwM2Fh
NWI0MmU1ZTdjYWRmNzdkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lV2luLmNwcApAQCAtMzI5LDIyICszMjksOCBAQCBzdGF0aWMgdm9pZCBmaWxsRm9udERlc2Ny
aXB0aW9uKEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBMT0dGT05UJiBsb2dGbwog
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhsb2dGb250LmxmSXRhbGljKTsKIH0KIAot
c3RhdGljIHZvaWQgZmlsbEZvbnREZXNjcmlwdGlvbihGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgTE9HRk9OVCYgbG9nRm9udCkKLXsgICAKLSAgICBmaWxsRm9udERlc2NyaXB0aW9u
KGZvbnREZXNjcmlwdGlvbiwgbG9nRm9udCwgYWJzKGxvZ0ZvbnQubGZIZWlnaHQpKTsKLX0KLQot
dm9pZCBSZW5kZXJUaGVtZVdpbjo6c3lzdGVtRm9udChDU1NWYWx1ZUlEIHZhbHVlSUQsIEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbjo6
dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgdmFsdWVJRCwgRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0CiB7Ci0gICAgc3RhdGljIEZvbnRE
ZXNjcmlwdGlvbiBjYXB0aW9uRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIGNvbnRy
b2xGb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gc21hbGxDYXB0aW9uRm9udDsKLSAg
ICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIG1lbnVGb250OwotICAgIHN0YXRpYyBGb250RGVzY3Jp
cHRpb24gaWNvbkZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBtZXNzYWdlQm94Rm9u
dDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIHN0YXR1c0JhckZvbnQ7Ci0gICAgc3RhdGlj
IEZvbnREZXNjcmlwdGlvbiBzeXN0ZW1Gb250OwotICAgIAogICAgIHN0YXRpYyBib29sIGluaXRp
YWxpemVkOwogICAgIHN0YXRpYyBOT05DTElFTlRNRVRSSUNTIG5jbTsKIApAQCAtMzU0LDY2ICsz
NDAsNDEgQEAgdm9pZCBSZW5kZXJUaGVtZVdpbjo6c3lzdGVtRm9udChDU1NWYWx1ZUlEIHZhbHVl
SUQsIEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXAKICAgICAgICAgOjpTeXN0ZW1QYXJhbWV0
ZXJzSW5mbyhTUElfR0VUTk9OQ0xJRU5UTUVUUklDUywgc2l6ZW9mKG5jbSksICZuY20sIDApOwog
ICAgIH0KICAKKyAgICBMT0dGT05UIGxvZ0ZvbnQ7CisgICAgYm9vbCBzaG91bGRVc2VEZWZhdWx0
Q29udHJvbEZvbnRQaXhlbFNpemUgPSBmYWxzZTsKICAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKLSAg
ICBjYXNlIENTU1ZhbHVlSWNvbjogewotICAgICAgICBpZiAoIWljb25Gb250LmlzQWJzb2x1dGVT
aXplKCkpIHsKLSAgICAgICAgICAgIExPR0ZPTlQgbG9nRm9udDsKLSAgICAgICAgICAgIDo6U3lz
dGVtUGFyYW1ldGVyc0luZm8oU1BJX0dFVElDT05USVRMRUxPR0ZPTlQsIHNpemVvZihsb2dGb250
KSwgJmxvZ0ZvbnQsIDApOwotICAgICAgICAgICAgZmlsbEZvbnREZXNjcmlwdGlvbihpY29uRm9u
dCwgbG9nRm9udCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9udERlc2NyaXB0aW9uID0gaWNvbkZv
bnQ7CisgICAgY2FzZSBDU1NWYWx1ZUljb246CisgICAgICAgIDo6U3lzdGVtUGFyYW1ldGVyc0lu
Zm8oU1BJX0dFVElDT05USVRMRUxPR0ZPTlQsIHNpemVvZihsb2dGb250KSwgJmxvZ0ZvbnQsIDAp
OwogICAgICAgICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6Ci0gICAgICAg
IGlmICghbWVudUZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZpbGxGb250RGVz
Y3JpcHRpb24obWVudUZvbnQsIG5jbS5sZk1lbnVGb250KTsKLSAgICAgICAgZm9udERlc2NyaXB0
aW9uID0gbWVudUZvbnQ7CisgICAgICAgIGxvZ0ZvbnQgPSBuY20ubGZNZW51Rm9udDsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZU1lc3NhZ2VCb3g6Ci0gICAgICAgIGlmICghbWVz
c2FnZUJveEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZpbGxGb250RGVzY3Jp
cHRpb24obWVzc2FnZUJveEZvbnQsIG5jbS5sZk1lc3NhZ2VGb250KTsKLSAgICAgICAgZm9udERl
c2NyaXB0aW9uID0gbWVzc2FnZUJveEZvbnQ7CisgICAgICAgIGxvZ0ZvbnQgPSBuY20ubGZNZXNz
YWdlRm9udDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVN0YXR1c0JhcjoKLSAg
ICAgICAgaWYgKCFzdGF0dXNCYXJGb250LmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICBm
aWxsRm9udERlc2NyaXB0aW9uKHN0YXR1c0JhckZvbnQsIG5jbS5sZlN0YXR1c0ZvbnQpOwotICAg
ICAgICBmb250RGVzY3JpcHRpb24gPSBzdGF0dXNCYXJGb250OworICAgICAgICBsb2dGb250ID0g
bmNtLmxmU3RhdHVzRm9udDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUNhcHRp
b246Ci0gICAgICAgIGlmICghY2FwdGlvbkZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAg
ICAgIGZpbGxGb250RGVzY3JpcHRpb24oY2FwdGlvbkZvbnQsIG5jbS5sZkNhcHRpb25Gb250KTsK
LSAgICAgICAgZm9udERlc2NyaXB0aW9uID0gY2FwdGlvbkZvbnQ7CisgICAgICAgIGxvZ0ZvbnQg
PSBuY20ubGZDYXB0aW9uRm9udDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVNt
YWxsQ2FwdGlvbjoKLSAgICAgICAgaWYgKCFzbWFsbENhcHRpb25Gb250LmlzQWJzb2x1dGVTaXpl
KCkpCi0gICAgICAgICAgICBmaWxsRm9udERlc2NyaXB0aW9uKHNtYWxsQ2FwdGlvbkZvbnQsIG5j
bS5sZlNtQ2FwdGlvbkZvbnQpOwotICAgICAgICBmb250RGVzY3JpcHRpb24gPSBzbWFsbENhcHRp
b25Gb250OworICAgICAgICBsb2dGb250ID0gbmNtLmxmU21DYXB0aW9uRm9udDsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFNtYWxsQ29udHJvbDoKICAgICBjYXNlIENT
U1ZhbHVlV2Via2l0TWluaUNvbnRyb2w6IC8vIEp1c3QgbWFwIHRvIHNtYWxsLgogICAgIGNhc2Ug
Q1NTVmFsdWVXZWJraXRDb250cm9sOiAvLyBKdXN0IG1hcCB0byBzbWFsbC4KLSAgICAgICAgaWYg
KCFjb250cm9sRm9udC5pc0Fic29sdXRlU2l6ZSgpKSB7Ci0gICAgICAgICAgICBIR0RJT0JKIGhH
REkgPSA6OkdldFN0b2NrT2JqZWN0KERFRkFVTFRfR1VJX0ZPTlQpOwotICAgICAgICAgICAgaWYg
KGhHREkpIHsKLSAgICAgICAgICAgICAgICBMT0dGT05UIGxvZ0ZvbnQ7Ci0gICAgICAgICAgICAg
ICAgaWYgKDo6R2V0T2JqZWN0KGhHREksIHNpemVvZihsb2dGb250KSwgJmxvZ0ZvbnQpID4gMCkK
LSAgICAgICAgICAgICAgICAgICAgZmlsbEZvbnREZXNjcmlwdGlvbihjb250cm9sRm9udCwgbG9n
Rm9udCwgZGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXplKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBmb250RGVzY3JpcHRpb24gPSBjb250cm9sRm9udDsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgIHNob3VsZFVzZURlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9IHRydWU7
CisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGRlZmF1bHQ6IHsgLy8gRXZlcnl0aGluZyBlbHNl
IHVzZXMgdGhlIHN0b2NrIEdVSSBmb250LgotICAgICAgICBpZiAoIXN5c3RlbUZvbnQuaXNBYnNv
bHV0ZVNpemUoKSkgewotICAgICAgICAgICAgSEdESU9CSiBoR0RJID0gOjpHZXRTdG9ja09iamVj
dChERUZBVUxUX0dVSV9GT05UKTsKLSAgICAgICAgICAgIGlmIChoR0RJKSB7Ci0gICAgICAgICAg
ICAgICAgTE9HRk9OVCBsb2dGb250OwotICAgICAgICAgICAgICAgIGlmICg6OkdldE9iamVjdCho
R0RJLCBzaXplb2YobG9nRm9udCksICZsb2dGb250KSA+IDApCi0gICAgICAgICAgICAgICAgICAg
IGZpbGxGb250RGVzY3JpcHRpb24oc3lzdGVtRm9udCwgbG9nRm9udCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZm9udERlc2NyaXB0aW9uID0gc3lzdGVtRm9udDsKKyAgICAg
ICAgSEdESU9CSiBoR0RJID0gOjpHZXRTdG9ja09iamVjdChERUZBVUxUX0dVSV9GT05UKTsKKyAg
ICAgICAgaWYgKCFoR0RJKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoOjpHZXRP
YmplY3QoaEdESSwgc2l6ZW9mKGxvZ0ZvbnQpLCAmbG9nRm9udCkgPD0gMCkKKyAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgfQorICAgIGZpbGxGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uLCBsb2dGb250LCBzaG91bGRVc2VEZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemUgPyBk
ZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemUgOiBhYnMobG9nRm9udC5sZkhlaWdodCkpOwogfQog
CiBib29sIFJlbmRlclRoZW1lV2luOjpzdXBwb3J0c0ZvY3VzKENvbnRyb2xQYXJ0IGFwcGVhcmFu
Y2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCmluZGV4
IGNjODM4ZWYxNDNiOWMwYmNlZjZlNGRiZDQxMTUyYjdiYTllNzg1YjguLjRlMTk0OTg3MDg3ZWIz
ZTJkOTQwOGNlMTM3OWIxNDFhMDIyNGRkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5oCkBAIC02Miw4ICs2Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENv
bG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICAvLyBTeXN0ZW0gZm9udHMuCi0gICAgdmly
dHVhbCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKSBvdmVycmlk
ZQpAQCAtMTQ4LDYgKzE0Niw5IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVXaW4oKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVdpbigpOwogCisgICAgLy8gU3lzdGVtIGZvbnRzLgorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJ
RCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisKICAgICB2b2lkIGFkZEludHJp
bnNpY01hcmdpbnMoUmVuZGVyU3R5bGUmKSBjb25zdDsKICAgICB2b2lkIGNsb3NlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245261</attachid>
            <date>2015-01-23 16:54:39 -0800</date>
            <delta_ts>2015-01-23 17:41:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140840-20150123165438.patch</filename>
            <type>text/plain</type>
            <size>35508</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2MwODI1YWJhYWNkYTAy
NTYxOTM3NWJkMmQwZjE3NzA2OGI4NDc4Zi4uMjcwMTk3MmM3M2I0NzU1OGNmY2FlOGM4YmQzNGYx
ZDUwNTAwYzI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTAxLTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHN5c3RlbSBm
b250cyBGb250RGVzY3JpcHRpb24gY2FjaGluZyBhdCBSZW5kZXJUaGVtZSBsZXZlbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwODQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICBJbXBsZW1lbnQgc3lzdGVt
IGZvbnRzIEZvbnREZXNjcmlwdGlvbiBjYWNoaW5nIGF0IFJlbmRlclRoZW1lIGxldmVsCisgICAg
ICAgIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGxvZ2ljIGluIGl0cyBzdWJjbGFzc2VzIGZv
ciBlYWNoIHBsYXRmb3JtLgorICAgICAgICBUaGlzIHJlZHVjZXMgY29kZSAvIGxvZ2ljIGR1cGxp
Y2F0aW9uIGFuZCByZWR1Y2VzIHRoZSBhbW91bnQgb2YKKyAgICAgICAgcGxhdGZvcm0tc3BlY2lm
aWMgY29kZS4gVGhpcyB3aWxsIGFsc28gbWFrZSB0aGUgcmVmYWN0b3JpbmcgYXQKKyAgICAgICAg
QnVnIDE0MDU3NyBhIGxvdCBlYXNpZXIuCisKKyAgICAgICAgVGhlIGNhY2hpbmcgbG9naWMgcmVt
YWlucyBpbiBSZW5kZXJUaGVtZUlPUyBjbGFzcyBmb3IgaU9TIGJlY2F1c2U6CisgICAgICAgIC0g
SXQgc3VwcG9ydHMgZGlmZmVyZW50IHN5c3RlbSBmb250IHZhbHVlcyB0aGFuIGFsbCBvdGhlciBw
bGF0Zm9ybXMKKyAgICAgICAgLSBJdCByZXF1aXJlcyBjYWNoZSBpbnZhbGlkYXRpb24gaW4gc29t
ZSBjYXNlcyB3aGlsZSBvdGhlciBwbGF0Zm9ybXMKKyAgICAgICAgICBkbyBub3QuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBpbnNwaXJlZCBieSB0aGUgZm9sbG93aW5nIEJsaW5rIHJldmlzaW9u
OgorICAgICAgICBodHRwczovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2JsaW5rP3ZpZXc9cmV2
JnJldmlzaW9uPTE4NDQ0OQorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2NzczItc3lzdGVtLWZv
bnRzLmh0bWwKKwogMjAxNS0wMS0yMyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgRG9jdW1lbnQgc2hvdWxkIGJlIGEgRm9udFNlbGVjdG9yQ2xpZW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggYTM1
Yjg4MGQzMWE3MGRkNTRlMjM0ZDlhMTA2MGU5ZGIwZjFkNGE5YS4uMjhhZGNiMGIyNDQ0ZjY4ZmNl
M2IyZDMxNDY4NDM0ZTRhNjQ4NjY5MyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUmVuZGVyVGhlbWVFZmwuY3BwCkBAIC05ODQsNyArOTg0LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZUVmbDo6c2V0RGVmYXVsdEZvbnRTaXplKGludCBzaXplKQogICAgIGRlZmF1bHRGb250U2l6ZSA9
IHNpemU7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OnN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwg
Rm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1l
RWZsOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCwgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0CiB7CiAgICAgLy8gSXQgd2FzIGNhbGxl
ZCBieSBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZCB0byByZW5kZXIgYWx0ZXJu
YXRpdmUgc3RyaW5nLgogICAgIC8vIFRvIGF2b2lkIGNhaXJvX2Vycm9yIHdoaWxlIHJlbmRlcmlu
ZywgZm9udERlc2NyaXB0aW9uIHNob3VsZCBiZSBwYXNzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCmluZGV4IGZmZTQwOGI4ZWM5M2Y3NzQyYzk0MDgx
ZTg0YjMxYjkxMmZlMmJlZDUuLjFkMjk5Mzk4MzlkYmRhNzdiMjRmYWFmYWY3YTQ4ZGQyMzNkNTk3
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVm
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5oCkBA
IC0xMDQsOSArMTA0LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGp1c3RTaXplQ29uc3RyYWlu
dHMoUmVuZGVyU3R5bGUmLCBGb3JtVHlwZSkgY29uc3Q7CiAKLSAgICAvLyBTeXN0ZW0gZm9udHMu
Ci0gICAgdmlydHVhbCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9u
JikgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0Q2hlY2tib3hTdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3goY29uc3QgUmVuZGVyT2JqZWN0JiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCkBAIC0xODksNiArMTg2
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fZWRqZSB8fCAoIW1fdGhlbWVQYXRoLmlz
RW1wdHkoKSAmJiBjb25zdF9jYXN0PFJlbmRlclRoZW1lRWZsKj4odGhpcyktPmxvYWRUaGVtZSgp
KTsKICAgICB9CiAKKyAgICAvLyBTeXN0ZW0gZm9udHMuCisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24m
KSBjb25zdCBvdmVycmlkZTsKKwogICAgIEFMV0FZU19JTkxJTkUgRWNvcmVfRXZhcyogY2FudmFz
KCkgY29uc3QgeyByZXR1cm4gbV9jYW52YXMuZ2V0KCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIEV2
YXNfT2JqZWN0KiBlZGplKCkgY29uc3QgeyByZXR1cm4gbV9lZGplLmdldCgpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCmluZGV4IGMzY2Q5MDZhN2Y0MjU3N2Zh
YTM3NjkwMGM5YzM5MTk5ODNkMjZmNDguLjdlMTcyMGZiNGQxNTM3NmVjMjAyNjIzMjRlOThhZjNk
ZTI3YjUwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAt
MSw3ICsxLDggQEAKLS8qKgorLyoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB0aGVtZSBp
bXBsZW1lbnRhdGlvbiBmb3IgZm9ybSBjb250cm9scyBpbiBXZWJDb3JlLgogICoKLSAqIENvcHly
aWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMCwgMjAxMiwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNDUsNiArNDYsNyBAQAog
I2luY2x1ZGUgIlNwaW5CdXR0b25FbGVtZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9y
LmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKICNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKICNpbmNsdWRl
ICJIVE1MTWV0ZXJFbGVtZW50LmgiCkBAIC0xMTMwLDYgKzExMzIsNTUgQEAgdm9pZCBSZW5kZXJU
aGVtZTo6cGxhdGZvcm1Db2xvcnNEaWRDaGFuZ2UoKQogICAgIFBhZ2U6OnVwZGF0ZVN0eWxlRm9y
QWxsUGFnZXNBZnRlckdsb2JhbENoYW5nZUluRW52aXJvbm1lbnQoKTsKIH0KIAorRm9udERlc2Ny
aXB0aW9uJiBSZW5kZXJUaGVtZTo6Y2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVl
SUQgc3lzdGVtRm9udElEKSBjb25zdAoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250
RGVzY3JpcHRpb24+IGNhcHRpb247CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNj
cmlwdGlvbj4gaWNvbjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udERlc2NyaXB0aW9u
PiBtZW51OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250RGVzY3JpcHRpb24+IG1lc3Nh
Z2VCb3g7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNjcmlwdGlvbj4gc21hbGxD
YXB0aW9uOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGb250RGVzY3JpcHRpb24+IHN0YXR1
c0JhcjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udERlc2NyaXB0aW9uPiB3ZWJraXRN
aW5pQ29udHJvbDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udERlc2NyaXB0aW9uPiB3
ZWJraXRTbWFsbENvbnRyb2w7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnREZXNjcmlw
dGlvbj4gd2Via2l0Q29udHJvbDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udERlc2Ny
aXB0aW9uPiBkZWZhdWx0RGVzY3JpcHRpb247CisKKyAgICBzd2l0Y2ggKHN5c3RlbUZvbnRJRCkg
eworICAgIGNhc2UgQ1NTVmFsdWVDYXB0aW9uOgorICAgICAgICByZXR1cm4gY2FwdGlvbjsKKyAg
ICBjYXNlIENTU1ZhbHVlSWNvbjoKKyAgICAgICAgcmV0dXJuIGljb247CisgICAgY2FzZSBDU1NW
YWx1ZU1lbnU6CisgICAgICAgIHJldHVybiBtZW51OworICAgIGNhc2UgQ1NTVmFsdWVNZXNzYWdl
Qm94OgorICAgICAgICByZXR1cm4gbWVzc2FnZUJveDsKKyAgICBjYXNlIENTU1ZhbHVlU21hbGxD
YXB0aW9uOgorICAgICAgICByZXR1cm4gc21hbGxDYXB0aW9uOworICAgIGNhc2UgQ1NTVmFsdWVT
dGF0dXNCYXI6CisgICAgICAgIHJldHVybiBzdGF0dXNCYXI7CisgICAgY2FzZSBDU1NWYWx1ZVdl
YmtpdE1pbmlDb250cm9sOgorICAgICAgICByZXR1cm4gd2Via2l0TWluaUNvbnRyb2w7CisgICAg
Y2FzZSBDU1NWYWx1ZVdlYmtpdFNtYWxsQ29udHJvbDoKKyAgICAgICAgcmV0dXJuIHdlYmtpdFNt
YWxsQ29udHJvbDsKKyAgICBjYXNlIENTU1ZhbHVlV2Via2l0Q29udHJvbDoKKyAgICAgICAgcmV0
dXJuIHdlYmtpdENvbnRyb2w7CisgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgIHJldHVy
biBkZWZhdWx0RGVzY3JpcHRpb247CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiBkZWZhdWx0RGVzY3JpcHRpb247CisgICAgfQorfQor
Cit2b2lkIFJlbmRlclRoZW1lOjpzeXN0ZW1Gb250KENTU1ZhbHVlSUQgc3lzdGVtRm9udElELCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKK3sKKyAgICBmb250RGVzY3Jp
cHRpb24gPSBjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oc3lzdGVtRm9udElEKTsKKyAgICBp
ZiAoZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihzeXN0ZW1Gb250SUQsIGZvbnRE
ZXNjcmlwdGlvbik7Cit9CisKIENvbG9yIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihDU1NWYWx1
ZUlEIGNzc1ZhbHVlSWQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChjc3NWYWx1ZUlkKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IGM2NGM3M2MwZWI2NWEwNjVjYjlj
Y2JlOWZjMzc5NDQ2MjBjZmEyZjcuLmZkNDkwZmI2NzM1ZDI0ODJkOWI0ZjlhOTRiMmJlZTQ0MDIy
NmM1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC0xNzIsNyAr
MTcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIGNhcmV0QmxpbmtJbnRlcnZhbCgp
IGNvbnN0IHsgcmV0dXJuIDAuNTsgfQogCiAgICAgLy8gU3lzdGVtIGZvbnRzIGFuZCBjb2xvcnMg
Zm9yIENTUy4KLSAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250RGVz
Y3JpcHRpb24mKSBjb25zdCA9IDA7CisgICAgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQsIEZv
bnREZXNjcmlwdGlvbiYpIGNvbnN0OwogICAgIHZpcnR1YWwgQ29sb3Igc3lzdGVtQ29sb3IoQ1NT
VmFsdWVJRCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGludCBtaW5pbXVtTWVudUxpc3RTaXplKFJl
bmRlclN0eWxlJikgY29uc3QgeyByZXR1cm4gMDsgfQpAQCAtMjUyLDYgKzI1Miw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgZGVmYXVsdEJ1dHRvbkhhc0FuaW1hdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIEZvbnREZXNjcmlwdGlv
biYgY2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgc3lzdGVtRm9udElEKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9u
KENTU1ZhbHVlSUQgc3lzdGVtRm9udElELCBGb250RGVzY3JpcHRpb24mKSBjb25zdCA9IDA7CisK
ICAgICAvLyBUaGUgcGxhdGZvcm0gc2VsZWN0aW9uIGNvbG9yLgogICAgIHZpcnR1YWwgQ29sb3Ig
cGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKICAgICB2aXJ0
dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDNj
OTRkYjZjYWQ2Nzc4M2VmYWZhZjcwNTExZGQxYmMwZGIwYjMzYTEuLjcyZDQ2ODQ5YjdlYTVhOTUy
OTllMTRkMGVkNDlmZjZkZjJjYTc5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lR3RrLmNwcApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgZG91YmxlIGdldFNjcmVl
bkRQSSgpCiAgICAgcmV0dXJuIGRwaTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUd0azo6c3lzdGVt
Rm9udChDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QK
K3ZvaWQgUmVuZGVyVGhlbWVHdGs6OnVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihD
U1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKIHsKICAg
ICBHdGtTZXR0aW5ncyogc2V0dGluZ3MgPSBndGtfc2V0dGluZ3NfZ2V0X2RlZmF1bHQoKTsKICAg
ICBpZiAoIXNldHRpbmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsu
aAppbmRleCAzNzQ2OGJiYzJmZjQxMWVlZWZlNzJiMzMyMGVkNDZlNTIyZTdhOTI1Li5iYjA0ZmY0
OWFiMjU5NDIzZmE1YWY1MTQyNWNmNDdjZWM3Y2NjOTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVHdGsuaApAQCAtMzYsOSArMzYsNiBAQCBjbGFzcyBSZW5kZXJUaGVt
ZUd0ayBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVuZGVyVGhlbWU+IGNyZWF0ZSgpOwogCi0gICAgLy8gU3lzdGVtIGZvbnRzLgot
ICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwotCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgLy8g
UmV0dXJucyBzaXplIG9mIG9uZSBzbGlkZXIgdGljayBtYXJrIGZvciBhIGhvcml6b250YWwgdHJh
Y2suCiAgICAgLy8gRm9yIHZlcnRpY2FsIHRyYWNrcyB3ZSByb3RhdGUgaXQgYW5kIHVzZSBpdC4g
aS5lLiBXaWR0aCBpcyBhbHdheXMgbGVuZ3RoIGFsb25nIHRoZSB0cmFjay4KQEAgLTQ3LDYgKzQ0
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNr
Q2VudGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAorcHJpdmF0ZToKKyAgICAvLyBTeXN0
ZW0gZm9udHMuCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlw
dGlvbihDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKKworcHVi
bGljOgogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgogCiAgICAgLy8gQSBtZXRob2QgYXNraW5n
IGlmIHRoZSB0aGVtZSdzIGNvbnRyb2xzIGFjdHVhbGx5IGNhcmUgYWJvdXQgcmVkcmF3aW5nIHdo
ZW4gaG92ZXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKaW5k
ZXggMWM4NDM1N2FjZGMzN2UzNmJkMGJlYThiYzliMTBjYzRiMTIyYTY4OC4uYjg2MzEwMzc4YzQ1
MTNiODJmYWU3MmZiNjc2MGNjMzg1MTdjYjVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLmgKQEAgLTQzLDEzICs0MywxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgdm9pZCBhZGp1c3RSb3VuZEJvcmRlclJhZGl1cyhSZW5kZXJTdHlsZSYsIFJlbmRlckJveCYp
OwogCi0gICAgdmlydHVhbCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0
aW9uJikgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29udGVudFNp
emVDYXRlZ29yeSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0Q29udGVu
dFNpemVDYXRlZ29yeShjb25zdCBTdHJpbmcmKTsKIAogcHJvdGVjdGVkOgorICAgIHZpcnR1YWwg
Rm9udERlc2NyaXB0aW9uJiBjYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCBz
eXN0ZW1Gb250SUQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNo
ZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihjb25zdCBSZW5k
ZXJPYmplY3QmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2xT
dHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBCb3JkZXJEYXRhJiwgY29uc3QgRmlsbExh
eWVyJiBiYWNrZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25zdCBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA2
MWI1MGQ5ZGNkYmZlOGM3MTljOGJjNTEzMTM2Nzg1NTNhNjg0ZjQ5Li4zMDk3YzhjM2ZhZmFjOWVj
MzdjYTM0OWZhNTVhZGNkMGRiYmMzZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBzdGF0aWMgRm9udFdlaWdodCBm
cm9tQ1RGb250V2VpZ2h0KGZsb2F0IGZvbnRXZWlnaHQpCiAgICAgcmV0dXJuIEZvbnRXZWlnaHRO
b3JtYWw7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVJT1M6OnN5c3RlbUZvbnQoQ1NTVmFsdWVJRCB2
YWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKK0ZvbnREZXNj
cmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OmNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NW
YWx1ZUlEIHZhbHVlSUQpIGNvbnN0CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRE
ZXNjcmlwdGlvbj4gc3lzdGVtRm9udDsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udERl
c2NyaXB0aW9uPiBoZWFkbGluZUZvbnQ7CkBAIC0xMTQzLDEyMyArMTE0MywxMzAgQEAgdm9pZCBS
ZW5kZXJUaGVtZUlPUzo6c3lzdGVtRm9udChDU1NWYWx1ZUlEIHZhbHVlSUQsIEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXAKICAgICAgICAgdGFsbEJvZHlGb250LmdldCgpLnNldElzQWJzb2x1
dGVTaXplKGZhbHNlKTsKICAgICB9CiAKLSAgICBGb250RGVzY3JpcHRpb24qIGNhY2hlZERlc2M7
CisgICAgc3dpdGNoICh2YWx1ZUlEKSB7CisgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtSGVh
ZGxpbmU6CisgICAgICAgIHJldHVybiBoZWFkbGluZUZvbnQ7CisgICAgY2FzZSBDU1NWYWx1ZUFw
cGxlU3lzdGVtQm9keToKKyAgICAgICAgcmV0dXJuIGJvZHlGb250OworI2lmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gODAyMDAKKyAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0
ZW1UaXRsZTE6CisgICAgICAgIHJldHVybiB0aXRsZTFGb250OworICAgIGNhc2UgQ1NTVmFsdWVB
cHBsZVN5c3RlbVRpdGxlMjoKKyAgICAgICAgcmV0dXJuIHRpdGxlMkZvbnQ7CisgICAgY2FzZSBD
U1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUzOgorICAgICAgICByZXR1cm4gdGl0bGUzRm9udDsKKyNl
bmRpZgorICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVN1YmhlYWRsaW5lOgorICAgICAgICBy
ZXR1cm4gc3ViaGVhZGxpbmVGb250OworICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUZvb3Ru
b3RlOgorICAgICAgICByZXR1cm4gZm9vdG5vdGVGb250OworICAgIGNhc2UgQ1NTVmFsdWVBcHBs
ZVN5c3RlbUNhcHRpb24xOgorICAgICAgICByZXR1cm4gY2FwdGlvbjFGb250OworICAgIGNhc2Ug
Q1NTVmFsdWVBcHBsZVN5c3RlbUNhcHRpb24yOgorICAgICAgICByZXR1cm4gY2FwdGlvbjJGb250
OworICAgICAgICAvLyBTaG9ydCB2ZXJzaW9uLgorICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3Rl
bVNob3J0SGVhZGxpbmU6CisgICAgICAgIHJldHVybiBzaG9ydEhlYWRsaW5lRm9udDsKKyAgICBj
YXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TaG9ydEJvZHk6CisgICAgICAgIHJldHVybiBzaG9ydEJv
ZHlGb250OworICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNob3J0U3ViaGVhZGxpbmU6Cisg
ICAgICAgIHJldHVybiBzaG9ydFN1YmhlYWRsaW5lRm9udDsKKyAgICBjYXNlIENTU1ZhbHVlQXBw
bGVTeXN0ZW1TaG9ydEZvb3Rub3RlOgorICAgICAgICByZXR1cm4gc2hvcnRGb290bm90ZUZvbnQ7
CisgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU2hvcnRDYXB0aW9uMToKKyAgICAgICAgcmV0
dXJuIHNob3J0Q2FwdGlvbjFGb250OworICAgICAgICAvLyBUYWxsIHZlcnNpb24uCisgICAgY2Fz
ZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGFsbEJvZHk6CisgICAgICAgIHJldHVybiB0YWxsQm9keUZv
bnQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN5c3RlbUZvbnQ7CisgICAgfQorfQor
Cit2b2lkIFJlbmRlclRoZW1lSU9TOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24o
Q1NTVmFsdWVJRCB2YWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29u
c3QKK3sKICAgICBSZXRhaW5QdHI8Q1RGb250RGVzY3JpcHRvclJlZj4gZm9udERlc2NyaXB0b3I7
CiAgICAgQ0ZTdHJpbmdSZWYgdGV4dFN0eWxlOwogICAgIHN3aXRjaCAodmFsdWVJRCkgewogICAg
IGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUhlYWRsaW5lOgotICAgICAgICBjYWNoZWREZXNjID0g
JmhlYWRsaW5lRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0
eWxlSGVhZGxpbmU7Ci0gICAgICAgIGlmICghaGVhZGxpbmVGb250LmdldCgpLmlzQWJzb2x1dGVT
aXplKCkpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3Jp
cHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsKKyAg
ICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRo
VGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUJvZHk6Ci0gICAgICAgIGNhY2hl
ZERlc2MgPSAmYm9keUZvbnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRl
eHRTdHlsZUJvZHk7Ci0gICAgICAgIGlmICghYm9keUZvbnQuZ2V0KCkuaXNBYnNvbHV0ZVNpemUo
KSkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9y
Q3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIHVzZXJUZXh0U2l6ZSwgMCkpOworICAgICAg
ICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0
U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsKICAgICAgICAgYnJl
YWs7CiAjaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiA4MDIwMAogICAgIGNh
c2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVRpdGxlMToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZ0aXRs
ZTFGb250LmdldCgpOwogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVUaXRs
ZTE7Ci0gICAgICAgIGlmICghdGl0bGUxRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAg
ICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVX
aXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0
ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1UaXRsZTI6Ci0gICAgICAgIGNhY2hlZERlc2MgPSAm
dGl0bGUyRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxl
VGl0bGUyOwotICAgICAgICBpZiAoIXRpdGxlMkZvbnQuZ2V0KCkuaXNBYnNvbHV0ZVNpemUoKSkK
LSAgICAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3Jl
YXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIHVzZXJUZXh0U2l6ZSwgMCkpOworICAgICAgICBm
b250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5
bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUzOgotICAgICAgICBjYWNoZWREZXNj
ID0gJnRpdGxlM0ZvbnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRT
dHlsZVRpdGxlMzsKLSAgICAgICAgaWYgKCF0aXRsZTNGb250LmdldCgpLmlzQWJzb2x1dGVTaXpl
KCkpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRv
ckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsKKyAgICAg
ICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4
dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtU3ViaGVhZGxpbmU6Ci0g
ICAgICAgIGNhY2hlZERlc2MgPSAmc3ViaGVhZGxpbmVGb250LmdldCgpOwogICAgICAgICB0ZXh0
U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVTdWJoZWFkOwotICAgICAgICBpZiAoIXN1YmhlYWRs
aW5lRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0
b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHls
ZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihD
VEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXpl
Q2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVT
eXN0ZW1Gb290bm90ZToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZmb290bm90ZUZvbnQuZ2V0KCk7
CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZUZvb3Rub3RlOwotICAgICAg
ICBpZiAoIWZvb3Rub3RlRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAg
Zm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0
eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZvbnREZXNjcmlwdG9y
ID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUs
IGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENT
U1ZhbHVlQXBwbGVTeXN0ZW1DYXB0aW9uMToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZjYXB0aW9u
MUZvbnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZUNhcHRp
b24xOwotICAgICAgICBpZiAoIWNhcHRpb24xRm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQot
ICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVh
dGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHls
ZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1DYXB0aW9uMjoKLSAgICAgICAgY2FjaGVkRGVz
YyA9ICZjYXB0aW9uMkZvbnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRl
eHRTdHlsZUNhcHRpb24yOwotICAgICAgICBpZiAoIWNhcHRpb24yRm9udC5nZXQoKS5pc0Fic29s
dXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERl
c2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7
CisgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRl
V2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAg
ICAgICBicmVhazsKIAogICAgIC8vIFNob3J0IHZlcnNpb24uCiAgICAgY2FzZSBDU1NWYWx1ZUFw
cGxlU3lzdGVtU2hvcnRIZWFkbGluZToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzaG9ydEhlYWRs
aW5lRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlU2hv
cnRIZWFkbGluZTsKLSAgICAgICAgaWYgKCFzaG9ydEhlYWRsaW5lRm9udC5nZXQoKS5pc0Fic29s
dXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERl
c2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7
CisgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRl
V2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TaG9ydEJvZHk6Ci0gICAg
ICAgIGNhY2hlZERlc2MgPSAmc2hvcnRCb2R5Rm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxl
ID0ga0NUVUlGb250VGV4dFN0eWxlU2hvcnRCb2R5OwotICAgICAgICBpZiAoIXNob3J0Qm9keUZv
bnQuZ2V0KCkuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdG9yID0g
YWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIHVz
ZXJUZXh0U2l6ZSwgMCkpOworICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250
RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVn
b3J5KCksIDApKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVt
U2hvcnRTdWJoZWFkbGluZToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzaG9ydFN1YmhlYWRsaW5l
Rm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlU2hvcnRT
dWJoZWFkOwotICAgICAgICBpZiAoIXNob3J0U3ViaGVhZGxpbmVGb250LmdldCgpLmlzQWJzb2x1
dGVTaXplKCkpCi0gICAgICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVz
Y3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCB1c2VyVGV4dFNpemUsIDApKTsK
KyAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVX
aXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVNob3J0Rm9vdG5vdGU6Ci0g
ICAgICAgIGNhY2hlZERlc2MgPSAmc2hvcnRGb290bm90ZUZvbnQuZ2V0KCk7CiAgICAgICAgIHRl
eHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVNob3J0Rm9vdG5vdGU7Ci0gICAgICAgIGlmICgh
c2hvcnRGb290bm90ZUZvbnQuZ2V0KCkuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZv
bnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHls
ZSh0ZXh0U3R5bGUsIHVzZXJUZXh0U2l6ZSwgMCkpOworICAgICAgICBmb250RGVzY3JpcHRvciA9
IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBj
b250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NW
YWx1ZUFwcGxlU3lzdGVtU2hvcnRDYXB0aW9uMToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzaG9y
dENhcHRpb24xRm9udC5nZXQoKTsKICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0
eWxlU2hvcnRDYXB0aW9uMTsKLSAgICAgICAgaWYgKCFzaG9ydENhcHRpb24xRm9udC5nZXQoKS5p
c0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENU
Rm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXpl
LCAwKSk7CisgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9y
Q3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkp
OwogICAgICAgICBicmVhazsKIAogICAgIC8vIFRhbGwgdmVyc2lvbi4KICAgICBjYXNlIENTU1Zh
bHVlQXBwbGVTeXN0ZW1UYWxsQm9keToKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZ0YWxsQm9keUZv
bnQuZ2V0KCk7CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVFVJRm9udFRleHRTdHlsZVRhbGxCb2R5
OwotICAgICAgICBpZiAoIXRhbGxCb2R5Rm9udC5nZXQoKS5pc0Fic29sdXRlU2l6ZSgpKQotICAg
ICAgICAgICAgZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVX
aXRoVGV4dFN0eWxlKHRleHRTdHlsZSwgdXNlclRleHRTaXplLCAwKSk7CisgICAgICAgIGZvbnRE
ZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0
ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkpOwogICAgICAgICBicmVhazsKIAog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIHRleHRTdHlsZSA9IGtDVEZvbnREZXNjcmlwdG9yVGV4dFN0
eWxlRW1waGFzaXplZDsKLSAgICAgICAgY2FjaGVkRGVzYyA9ICZzeXN0ZW1Gb250LmdldCgpOwot
ICAgICAgICBpZiAoIXN5c3RlbUZvbnQuZ2V0KCkuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAg
ICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ3JlYXRlRm9yVUlU
eXBlKGtDVEZvbnRTeXN0ZW1Gb250VHlwZSwgMCwgbnVsbHB0cikpOworICAgICAgICBmb250RGVz
Y3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0ZUZvclVJVHlwZShrQ1RGb250
U3lzdGVtRm9udFR5cGUsIDAsIG51bGxwdHIpKTsKICAgICB9CiAKLSAgICBpZiAoZm9udERlc2Ny
aXB0b3IpIHsKLSAgICAgICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udCA9IGFkb3B0Q0YoQ1RG
b250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLmdldCgpLCAwLCBudWxs
cHRyKSk7Ci0gICAgICAgIGNhY2hlZERlc2MtPnNldElzQWJzb2x1dGVTaXplKHRydWUpOwotICAg
ICAgICBjYWNoZWREZXNjLT5zZXRPbmVGYW1pbHkodGV4dFN0eWxlKTsKLSAgICAgICAgY2FjaGVk
RGVzYy0+c2V0U3BlY2lmaWVkU2l6ZShDVEZvbnRHZXRTaXplKGZvbnQuZ2V0KCkpKTsKLSAgICAg
ICAgY2FjaGVkRGVzYy0+c2V0V2VpZ2h0KGZyb21DVEZvbnRXZWlnaHQoRm9udENhY2hlOjp3ZWln
aHRPZkNURm9udChmb250LmdldCgpKSkpOwotICAgICAgICBjYWNoZWREZXNjLT5zZXRJdGFsaWMo
Rm9udEl0YWxpY09mZik7Ci0gICAgfQotICAgIGZvbnREZXNjcmlwdGlvbiA9ICpjYWNoZWREZXNj
OworICAgIEFTU0VSVChmb250RGVzY3JpcHRvcik7CisgICAgUmV0YWluUHRyPENURm9udFJlZj4g
Zm9udCA9IGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlw
dG9yLmdldCgpLCAwLCBudWxscHRyKSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1
dGVTaXplKHRydWUpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkodGV4dFN0eWxl
KTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShDVEZvbnRHZXRTaXplKGZv
bnQuZ2V0KCkpKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0V2VpZ2h0KGZyb21DVEZvbnRXZWln
aHQoRm9udENhY2hlOjp3ZWlnaHRPZkNURm9udChmb250LmdldCgpKSkpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRJdGFsaWMoRm9udEl0YWxpY09mZik7CiB9CiAKICNpZiBFTkFCTEUoVklERU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4IGQ0Y2M2MzZk
MjJhYWZkMzc3ODBmZDAzMTAwMWUyNjA5NjQ2YWFlZDkuLjVmNTRlYjViNGIwODIzMTQyYjM5MmIy
MDdjMjk2NmE5YmNlYTY5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5oCkBAIC02Niw5ICs2Niw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUNvbG9yc0RpZENoYW5nZSgpIG92ZXJyaWRlOwogCi0gICAgLy8gU3lzdGVtIGZvbnRzLgot
ICAgIHZpcnR1YWwgdm9pZCBzeXN0ZW1Gb250KENTU1ZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwotCiAgICAgdmlydHVhbCBpbnQgbWluaW11bU1lbnVMaXN0U2l6ZShS
ZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFNs
aWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKQEAg
LTExMiw2ICsxMDksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyVGhlbWVNYWMoKTsKICAgICB2
aXJ0dWFsIH5SZW5kZXJUaGVtZU1hYygpOwogCisgICAgLy8gU3lzdGVtIGZvbnRzLgorICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCwg
Rm9udERlc2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisKICNpZiBFTkFCTEUoVklERU8pCiAg
ICAgLy8gTWVkaWEgY29udHJvbHMKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUNvbnRyb2xzU3R5
bGVTaGVldCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tCmluZGV4IGEzMWY4MzBmNjZiOWYyOTk2MDNjZWJlOTVlMGNhMmJhODZjNDE2ZjUuLmIy
ZGE2YzI5Zjk1ZjYzNzdmNGQ0N2YzZjE3NWRlYmI5NGQzN2FjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTMzOCw2NCArMzM4LDQxIEBAIHN0YXRp
YyBGb250V2VpZ2h0IHRvRm9udFdlaWdodChOU0ludGVnZXIgYXBwS2l0Rm9udFdlaWdodCkKICAg
ICByZXR1cm4gZm9udFdlaWdodHNbYXBwS2l0Rm9udFdlaWdodCAtIDFdOwogfQogCi12b2lkIFJl
bmRlclRoZW1lTWFjOjpzeXN0ZW1Gb250KENTU1ZhbHVlSUQgY3NzVmFsdWVJZCwgRm9udERlc2Ny
aXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0Ci17Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVf
U1RBVElDX0xPQ0FMKEZvbnREZXNjcmlwdGlvbiwgc3lzdGVtRm9udCwgKCkpOwotICAgIERFUFJF
Q0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGb250RGVzY3JpcHRpb24sIHNtYWxsU3lzdGVtRm9u
dCwgKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGb250RGVzY3JpcHRp
b24sIG1lbnVGb250LCAoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZv
bnREZXNjcmlwdGlvbiwgbGFiZWxGb250LCAoKSk7Ci0gICAgREVQUkVDQVRFRF9ERUZJTkVfU1RB
VElDX0xPQ0FMKEZvbnREZXNjcmlwdGlvbiwgbWluaUNvbnRyb2xGb250LCAoKSk7Ci0gICAgREVQ
UkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKEZvbnREZXNjcmlwdGlvbiwgc21hbGxDb250cm9s
Rm9udCwgKCkpOwotICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NBTChGb250RGVzY3Jp
cHRpb24sIGNvbnRyb2xGb250LCAoKSk7Ci0KLSAgICBGb250RGVzY3JpcHRpb24qIGNhY2hlZERl
c2M7Ci0gICAgTlNGb250KiBmb250ID0gbmlsOwordm9pZCBSZW5kZXJUaGVtZU1hYzo6dXBkYXRl
Q2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCwgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0Cit7CisgICAgTlNGb250KiBmb250Owog
ICAgIHN3aXRjaCAoY3NzVmFsdWVJZCkgewogICAgICAgICBjYXNlIENTU1ZhbHVlU21hbGxDYXB0
aW9uOgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZzbWFsbFN5c3RlbUZvbnQ7Ci0gICAgICAg
ICAgICBpZiAoIXNtYWxsU3lzdGVtRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAgICAg
ICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6W05TRm9udCBzbWFsbFN5c3RlbUZv
bnRTaXplXV07CisgICAgICAgICAgICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltO
U0ZvbnQgc21hbGxTeXN0ZW1Gb250U2l6ZV1dOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVNZW51OgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZtZW51Rm9udDsK
LSAgICAgICAgICAgIGlmICghbWVudUZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAg
ICAgICBmb250ID0gW05TRm9udCBtZW51Rm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZvbnRTaXpl
XV07CisgICAgICAgICAgICBmb250ID0gW05TRm9udCBtZW51Rm9udE9mU2l6ZTpbTlNGb250IHN5
c3RlbUZvbnRTaXplXV07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NWYWx1
ZVN0YXR1c0JhcjoKLSAgICAgICAgICAgIGNhY2hlZERlc2MgPSAmbGFiZWxGb250OwotICAgICAg
ICAgICAgaWYgKCFsYWJlbEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgICAgICBm
b250ID0gW05TRm9udCBsYWJlbEZvbnRPZlNpemU6W05TRm9udCBsYWJlbEZvbnRTaXplXV07Cisg
ICAgICAgICAgICBmb250ID0gW05TRm9udCBsYWJlbEZvbnRPZlNpemU6W05TRm9udCBsYWJlbEZv
bnRTaXplXV07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtp
dE1pbmlDb250cm9sOgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZtaW5pQ29udHJvbEZvbnQ7
Ci0gICAgICAgICAgICBpZiAoIW1pbmlDb250cm9sRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAg
ICAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRPZlNpemU6W05TRm9udCBzeXN0
ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplOk5TTWluaUNvbnRyb2xTaXplXV07CisgICAgICAgICAg
ICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVtRm9udFNpemVG
b3JDb250cm9sU2l6ZTpOU01pbmlDb250cm9sU2l6ZV1dOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRTbWFsbENvbnRyb2w6Ci0gICAgICAgICAgICBjYWNo
ZWREZXNjID0gJnNtYWxsQ29udHJvbEZvbnQ7Ci0gICAgICAgICAgICBpZiAoIXNtYWxsQ29udHJv
bEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgICAgICBmb250ID0gW05TRm9udCBz
eXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZTpOU1Nt
YWxsQ29udHJvbFNpemVdXTsKKyAgICAgICAgICAgIGZvbnQgPSBbTlNGb250IHN5c3RlbUZvbnRP
ZlNpemU6W05TRm9udCBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplOk5TU21hbGxDb250cm9s
U2l6ZV1dOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRD
b250cm9sOgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZjb250cm9sRm9udDsKLSAgICAgICAg
ICAgIGlmICghY29udHJvbEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgICAgICBm
b250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVtRm9udFNpemVGb3JD
b250cm9sU2l6ZTpOU1JlZ3VsYXJDb250cm9sU2l6ZV1dOworICAgICAgICAgICAgZm9udCA9IFtO
U0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZvbnRTaXplRm9yQ29udHJvbFNp
emU6TlNSZWd1bGFyQ29udHJvbFNpemVdXTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgY2FjaGVkRGVzYyA9ICZzeXN0ZW1Gb250OwotICAgICAgICAg
ICAgaWYgKCFzeXN0ZW1Gb250LmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICAgICAgZm9u
dCA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZvbnRTaXplXV07Cisg
ICAgICAgICAgICBmb250ID0gW05TRm9udCBzeXN0ZW1Gb250T2ZTaXplOltOU0ZvbnQgc3lzdGVt
Rm9udFNpemVdXTsKICAgICB9CiAKLSAgICBpZiAoZm9udCkgewotICAgICAgICBOU0ZvbnRNYW5h
Z2VyICpmb250TWFuYWdlciA9IFtOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXTsKLSAg
ICAgICAgY2FjaGVkRGVzYy0+c2V0SXNBYnNvbHV0ZVNpemUodHJ1ZSk7Ci0gICAgICAgIGNhY2hl
ZERlc2MtPnNldE9uZUZhbWlseShbZm9udCB3ZWJDb3JlRmFtaWx5TmFtZV0pOwotICAgICAgICBj
YWNoZWREZXNjLT5zZXRTcGVjaWZpZWRTaXplKFtmb250IHBvaW50U2l6ZV0pOwotICAgICAgICBj
YWNoZWREZXNjLT5zZXRXZWlnaHQodG9Gb250V2VpZ2h0KFtmb250TWFuYWdlciB3ZWlnaHRPZkZv
bnQ6Zm9udF0pKTsKLSAgICAgICAgY2FjaGVkRGVzYy0+c2V0SXNJdGFsaWMoW2ZvbnRNYW5hZ2Vy
IHRyYWl0c09mRm9udDpmb250XSAmIE5TSXRhbGljRm9udE1hc2spOwotICAgIH0KLSAgICBmb250
RGVzY3JpcHRpb24gPSAqY2FjaGVkRGVzYzsKKyAgICBpZiAoIWZvbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyID0gW05TRm9udE1hbmFnZXIgc2hh
cmVkRm9udE1hbmFnZXJdOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZSh0
cnVlKTsKKyAgICBmb250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KFtmb250IHdlYkNvcmVGYW1p
bHlOYW1lXSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoW2ZvbnQgcG9p
bnRTaXplXSk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldFdlaWdodCh0b0ZvbnRXZWlnaHQoW2Zv
bnRNYW5hZ2VyIHdlaWdodE9mRm9udDpmb250XSkpOworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJ
c0l0YWxpYyhbZm9udE1hbmFnZXIgdHJhaXRzT2ZGb250OmZvbnRdICYgTlNJdGFsaWNGb250TWFz
ayk7CiB9CiAKIHN0YXRpYyBSR0JBMzIgY29udmVydE5TQ29sb3JUb0NvbG9yKE5TQ29sb3IgKmNv
bG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAK
aW5kZXggMTBlNDM0N2M0MTY4ZGMxNzUyZDNkZjAyYzQ0OWI1Mzg3Y2VjNTRjNy4uYTU2ZWI0M2E5
ZmYyZDBjZmI4ZDQ0NDZhNTEzOThjMjUyYTk1OThlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0xOTIsNjMgKzE5Miw0MCBAQCBzdGF0
aWMgZmxvYXQgc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU0NvbnRyb2xTaXplIGNvbnRy
b2xTaXplKQogICAgIHJldHVybiBzaXplc1tjb250cm9sU2l6ZV07CiB9CiAKLXZvaWQgUmVuZGVy
VGhlbWVTYWZhcmk6OnN5c3RlbUZvbnQoQ1NTVmFsdWVJRCB2YWx1ZUlELCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKLXsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9u
IHN5c3RlbUZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBzbWFsbFN5c3RlbUZvbnQ7
Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBtZW51Rm9udDsKLSAgICBzdGF0aWMgRm9udERl
c2NyaXB0aW9uIGxhYmVsRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIG1pbmlDb250
cm9sRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIHNtYWxsQ29udHJvbEZvbnQ7Ci0g
ICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBjb250cm9sRm9udDsKLQotICAgIEZvbnREZXNjcmlw
dGlvbiogY2FjaGVkRGVzYzsKLSAgICBmbG9hdCBmb250U2l6ZSA9IDA7Cit2b2lkIFJlbmRlclRo
ZW1lU2FmYXJpOjp1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCB2
YWx1ZUlELCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikgY29uc3QKK3sKKyAgICBm
bG9hdCBmb250U2l6ZTsKICAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKICAgICBjYXNlIENTU1ZhbHVl
U21hbGxDYXB0aW9uOgotICAgICAgICBjYWNoZWREZXNjID0gJnNtYWxsU3lzdGVtRm9udDsKLSAg
ICAgICAgaWYgKCFzbWFsbFN5c3RlbUZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAg
IGZvbnRTaXplID0gc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU1NtYWxsQ29udHJvbFNp
emUpOworICAgICAgICBmb250U2l6ZSA9IHN5c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemUoTlNT
bWFsbENvbnRyb2xTaXplKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6
Ci0gICAgICAgIGNhY2hlZERlc2MgPSAmbWVudUZvbnQ7Ci0gICAgICAgIGlmICghbWVudUZvbnQu
aXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnRTaXplID0gc3lzdGVtRm9udFNpemVG
b3JDb250cm9sU2l6ZShOU1JlZ3VsYXJDb250cm9sU2l6ZSk7CisgICAgICAgIGZvbnRTaXplID0g
c3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU1JlZ3VsYXJDb250cm9sU2l6ZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVTdGF0dXNCYXI6Ci0gICAgICAgIGNhY2hlZERl
c2MgPSAmbGFiZWxGb250OwotICAgICAgICBpZiAoIWxhYmVsRm9udC5pc0Fic29sdXRlU2l6ZSgp
KQotICAgICAgICAgICAgZm9udFNpemUgPSAxMC4wZjsKKyAgICAgICAgZm9udFNpemUgPSAxMC4w
ZjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdE1pbmlDb250cm9sOgot
ICAgICAgICBjYWNoZWREZXNjID0gJm1pbmlDb250cm9sRm9udDsKLSAgICAgICAgaWYgKCFtaW5p
Q29udHJvbEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZvbnRTaXplID0gc3lz
dGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU01pbmlDb250cm9sU2l6ZSk7CisgICAgICAgIGZv
bnRTaXplID0gc3lzdGVtRm9udFNpemVGb3JDb250cm9sU2l6ZShOU01pbmlDb250cm9sU2l6ZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRTbWFsbENvbnRyb2w6Ci0g
ICAgICAgIGNhY2hlZERlc2MgPSAmc21hbGxDb250cm9sRm9udDsKLSAgICAgICAgaWYgKCFzbWFs
bENvbnRyb2xGb250LmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICBmb250U2l6ZSA9IHN5
c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemUoTlNTbWFsbENvbnRyb2xTaXplKTsKKyAgICAgICAg
Zm9udFNpemUgPSBzeXN0ZW1Gb250U2l6ZUZvckNvbnRyb2xTaXplKE5TU21hbGxDb250cm9sU2l6
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRDb250cm9sOgotICAg
ICAgICBjYWNoZWREZXNjID0gJmNvbnRyb2xGb250OwotICAgICAgICBpZiAoIWNvbnRyb2xGb250
LmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICBmb250U2l6ZSA9IHN5c3RlbUZvbnRTaXpl
Rm9yQ29udHJvbFNpemUoTlNSZWd1bGFyQ29udHJvbFNpemUpOworICAgICAgICBmb250U2l6ZSA9
IHN5c3RlbUZvbnRTaXplRm9yQ29udHJvbFNpemUoTlNSZWd1bGFyQ29udHJvbFNpemUpOwogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBjYWNoZWREZXNjID0gJnN5c3RlbUZv
bnQ7Ci0gICAgICAgIGlmICghc3lzdGVtRm9udC5pc0Fic29sdXRlU2l6ZSgpKQotICAgICAgICAg
ICAgZm9udFNpemUgPSAxMy4wZjsKKyAgICAgICAgZm9udFNpemUgPSAxMy4wZjsKICAgICB9CiAK
LSAgICBpZiAoZm9udFNpemUpIHsKLSAgICAgICAgY2FjaGVkRGVzYy0+c2V0SXNBYnNvbHV0ZVNp
emUodHJ1ZSk7Ci0gICAgICAgIGNhY2hlZERlc2MtPnNldE9uZUZhbWlseSgiTHVjaWRhIEdyYW5k
ZSIpOwotICAgICAgICBjYWNoZWREZXNjLT5zZXRTcGVjaWZpZWRTaXplKGZvbnRTaXplKTsKLSAg
ICAgICAgY2FjaGVkRGVzYy0+c2V0V2VpZ2h0KEZvbnRXZWlnaHROb3JtYWwpOwotICAgICAgICBj
YWNoZWREZXNjLT5zZXRJdGFsaWMoRm9udEl0YWxpY09mZik7Ci0gICAgfQotICAgIGZvbnREZXNj
cmlwdGlvbiA9ICpjYWNoZWREZXNjOworICAgIGlmICghZm9udFNpemUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRlU2l6ZSh0cnVlKTsKKyAgICBm
b250RGVzY3JpcHRpb24uc2V0T25lRmFtaWx5KCJMdWNpZGEgR3JhbmRlIik7CisgICAgZm9udERl
c2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOworICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRXZWlnaHQoRm9udFdlaWdodE5vcm1hbCk7CisgICAgZm9udERlc2NyaXB0aW9uLnNldEl0
YWxpYyhGb250SXRhbGljT2ZmKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6aXNDb250
cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQm9yZGVyRGF0YSYgYm9y
ZGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2Fm
YXJpLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAppbmRl
eCBjZDEwNjIzNDMyM2EyMjk5OWJjZDYxZDYwNmEyNTAwNzk2MDYzYWE2Li5lZmQzOWJlYjdiMWIx
NDU3YjM5N2FhMDRmMTBkMzRkZWE3N2JkZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVTYWZhcmkuaApAQCAtNzEsOSArNzEsNiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdDsKIAotICAgIC8vIFN5
c3RlbSBmb250cy4KLSAgICB2aXJ0dWFsIHZvaWQgc3lzdGVtRm9udChDU1NWYWx1ZUlELCBGb250
RGVzY3JpcHRpb24mKSBjb25zdDsKLQogICAgIHZpcnR1YWwgaW50IG1pbmltdW1NZW51TGlzdFNp
emUoUmVuZGVyU3R5bGUmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJU
aHVtYlNpemUoUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Q7CkBAIC04NSw2ICs4Miw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFkZGluZ0JvdHRvbShSZW5k
ZXJTdHlsZSYpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CisgICAgLy8gU3lzdGVtIGZvbnRzLgorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJ
RCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisKICAgICAvLyBNZXRob2RzIGZv
ciBlYWNoIGFwcGVhcmFuY2UgdmFsdWUuCiAgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3go
Y29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUmKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDk1OWVhM2Vl
ZmNkNjNiNDJmYzQ4ZDI5NjYzZjk5NjcyMDg2OWE5YzIuLjBlNDNjZmNhNWM0MjI1NDQwMjQwM2Fh
NWI0MmU1ZTdjYWRmNzdkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lV2luLmNwcApAQCAtMzI5LDIyICszMjksOCBAQCBzdGF0aWMgdm9pZCBmaWxsRm9udERlc2Ny
aXB0aW9uKEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBMT0dGT05UJiBsb2dGbwog
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0l0YWxpYyhsb2dGb250LmxmSXRhbGljKTsKIH0KIAot
c3RhdGljIHZvaWQgZmlsbEZvbnREZXNjcmlwdGlvbihGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgTE9HRk9OVCYgbG9nRm9udCkKLXsgICAKLSAgICBmaWxsRm9udERlc2NyaXB0aW9u
KGZvbnREZXNjcmlwdGlvbiwgbG9nRm9udCwgYWJzKGxvZ0ZvbnQubGZIZWlnaHQpKTsKLX0KLQot
dm9pZCBSZW5kZXJUaGVtZVdpbjo6c3lzdGVtRm9udChDU1NWYWx1ZUlEIHZhbHVlSUQsIEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZVdpbjo6
dXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQgdmFsdWVJRCwgRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvbnN0CiB7Ci0gICAgc3RhdGljIEZvbnRE
ZXNjcmlwdGlvbiBjYXB0aW9uRm9udDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIGNvbnRy
b2xGb250OwotICAgIHN0YXRpYyBGb250RGVzY3JpcHRpb24gc21hbGxDYXB0aW9uRm9udDsKLSAg
ICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIG1lbnVGb250OwotICAgIHN0YXRpYyBGb250RGVzY3Jp
cHRpb24gaWNvbkZvbnQ7Ci0gICAgc3RhdGljIEZvbnREZXNjcmlwdGlvbiBtZXNzYWdlQm94Rm9u
dDsKLSAgICBzdGF0aWMgRm9udERlc2NyaXB0aW9uIHN0YXR1c0JhckZvbnQ7Ci0gICAgc3RhdGlj
IEZvbnREZXNjcmlwdGlvbiBzeXN0ZW1Gb250OwotICAgIAogICAgIHN0YXRpYyBib29sIGluaXRp
YWxpemVkOwogICAgIHN0YXRpYyBOT05DTElFTlRNRVRSSUNTIG5jbTsKIApAQCAtMzU0LDY2ICsz
NDAsNDEgQEAgdm9pZCBSZW5kZXJUaGVtZVdpbjo6c3lzdGVtRm9udChDU1NWYWx1ZUlEIHZhbHVl
SUQsIEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXAKICAgICAgICAgOjpTeXN0ZW1QYXJhbWV0
ZXJzSW5mbyhTUElfR0VUTk9OQ0xJRU5UTUVUUklDUywgc2l6ZW9mKG5jbSksICZuY20sIDApOwog
ICAgIH0KICAKKyAgICBMT0dGT05UIGxvZ0ZvbnQ7CisgICAgYm9vbCBzaG91bGRVc2VEZWZhdWx0
Q29udHJvbEZvbnRQaXhlbFNpemUgPSBmYWxzZTsKICAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKLSAg
ICBjYXNlIENTU1ZhbHVlSWNvbjogewotICAgICAgICBpZiAoIWljb25Gb250LmlzQWJzb2x1dGVT
aXplKCkpIHsKLSAgICAgICAgICAgIExPR0ZPTlQgbG9nRm9udDsKLSAgICAgICAgICAgIDo6U3lz
dGVtUGFyYW1ldGVyc0luZm8oU1BJX0dFVElDT05USVRMRUxPR0ZPTlQsIHNpemVvZihsb2dGb250
KSwgJmxvZ0ZvbnQsIDApOwotICAgICAgICAgICAgZmlsbEZvbnREZXNjcmlwdGlvbihpY29uRm9u
dCwgbG9nRm9udCk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9udERlc2NyaXB0aW9uID0gaWNvbkZv
bnQ7CisgICAgY2FzZSBDU1NWYWx1ZUljb246CisgICAgICAgIDo6U3lzdGVtUGFyYW1ldGVyc0lu
Zm8oU1BJX0dFVElDT05USVRMRUxPR0ZPTlQsIHNpemVvZihsb2dGb250KSwgJmxvZ0ZvbnQsIDAp
OwogICAgICAgICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBDU1NWYWx1ZU1lbnU6Ci0gICAgICAg
IGlmICghbWVudUZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZpbGxGb250RGVz
Y3JpcHRpb24obWVudUZvbnQsIG5jbS5sZk1lbnVGb250KTsKLSAgICAgICAgZm9udERlc2NyaXB0
aW9uID0gbWVudUZvbnQ7CisgICAgICAgIGxvZ0ZvbnQgPSBuY20ubGZNZW51Rm9udDsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZU1lc3NhZ2VCb3g6Ci0gICAgICAgIGlmICghbWVz
c2FnZUJveEZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAgICAgIGZpbGxGb250RGVzY3Jp
cHRpb24obWVzc2FnZUJveEZvbnQsIG5jbS5sZk1lc3NhZ2VGb250KTsKLSAgICAgICAgZm9udERl
c2NyaXB0aW9uID0gbWVzc2FnZUJveEZvbnQ7CisgICAgICAgIGxvZ0ZvbnQgPSBuY20ubGZNZXNz
YWdlRm9udDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVN0YXR1c0JhcjoKLSAg
ICAgICAgaWYgKCFzdGF0dXNCYXJGb250LmlzQWJzb2x1dGVTaXplKCkpCi0gICAgICAgICAgICBm
aWxsRm9udERlc2NyaXB0aW9uKHN0YXR1c0JhckZvbnQsIG5jbS5sZlN0YXR1c0ZvbnQpOwotICAg
ICAgICBmb250RGVzY3JpcHRpb24gPSBzdGF0dXNCYXJGb250OworICAgICAgICBsb2dGb250ID0g
bmNtLmxmU3RhdHVzRm9udDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZUNhcHRp
b246Ci0gICAgICAgIGlmICghY2FwdGlvbkZvbnQuaXNBYnNvbHV0ZVNpemUoKSkKLSAgICAgICAg
ICAgIGZpbGxGb250RGVzY3JpcHRpb24oY2FwdGlvbkZvbnQsIG5jbS5sZkNhcHRpb25Gb250KTsK
LSAgICAgICAgZm9udERlc2NyaXB0aW9uID0gY2FwdGlvbkZvbnQ7CisgICAgICAgIGxvZ0ZvbnQg
PSBuY20ubGZDYXB0aW9uRm9udDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVNt
YWxsQ2FwdGlvbjoKLSAgICAgICAgaWYgKCFzbWFsbENhcHRpb25Gb250LmlzQWJzb2x1dGVTaXpl
KCkpCi0gICAgICAgICAgICBmaWxsRm9udERlc2NyaXB0aW9uKHNtYWxsQ2FwdGlvbkZvbnQsIG5j
bS5sZlNtQ2FwdGlvbkZvbnQpOwotICAgICAgICBmb250RGVzY3JpcHRpb24gPSBzbWFsbENhcHRp
b25Gb250OworICAgICAgICBsb2dGb250ID0gbmNtLmxmU21DYXB0aW9uRm9udDsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFNtYWxsQ29udHJvbDoKICAgICBjYXNlIENT
U1ZhbHVlV2Via2l0TWluaUNvbnRyb2w6IC8vIEp1c3QgbWFwIHRvIHNtYWxsLgogICAgIGNhc2Ug
Q1NTVmFsdWVXZWJraXRDb250cm9sOiAvLyBKdXN0IG1hcCB0byBzbWFsbC4KLSAgICAgICAgaWYg
KCFjb250cm9sRm9udC5pc0Fic29sdXRlU2l6ZSgpKSB7Ci0gICAgICAgICAgICBIR0RJT0JKIGhH
REkgPSA6OkdldFN0b2NrT2JqZWN0KERFRkFVTFRfR1VJX0ZPTlQpOwotICAgICAgICAgICAgaWYg
KGhHREkpIHsKLSAgICAgICAgICAgICAgICBMT0dGT05UIGxvZ0ZvbnQ7Ci0gICAgICAgICAgICAg
ICAgaWYgKDo6R2V0T2JqZWN0KGhHREksIHNpemVvZihsb2dGb250KSwgJmxvZ0ZvbnQpID4gMCkK
LSAgICAgICAgICAgICAgICAgICAgZmlsbEZvbnREZXNjcmlwdGlvbihjb250cm9sRm9udCwgbG9n
Rm9udCwgZGVmYXVsdENvbnRyb2xGb250UGl4ZWxTaXplKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBmb250RGVzY3JpcHRpb24gPSBjb250cm9sRm9udDsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgIHNob3VsZFVzZURlZmF1bHRDb250cm9sRm9udFBpeGVsU2l6ZSA9IHRydWU7
CisgICAgICAgIEZBTExUSFJPVUdIOwogICAgIGRlZmF1bHQ6IHsgLy8gRXZlcnl0aGluZyBlbHNl
IHVzZXMgdGhlIHN0b2NrIEdVSSBmb250LgotICAgICAgICBpZiAoIXN5c3RlbUZvbnQuaXNBYnNv
bHV0ZVNpemUoKSkgewotICAgICAgICAgICAgSEdESU9CSiBoR0RJID0gOjpHZXRTdG9ja09iamVj
dChERUZBVUxUX0dVSV9GT05UKTsKLSAgICAgICAgICAgIGlmIChoR0RJKSB7Ci0gICAgICAgICAg
ICAgICAgTE9HRk9OVCBsb2dGb250OwotICAgICAgICAgICAgICAgIGlmICg6OkdldE9iamVjdCho
R0RJLCBzaXplb2YobG9nRm9udCksICZsb2dGb250KSA+IDApCi0gICAgICAgICAgICAgICAgICAg
IGZpbGxGb250RGVzY3JpcHRpb24oc3lzdGVtRm9udCwgbG9nRm9udCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZm9udERlc2NyaXB0aW9uID0gc3lzdGVtRm9udDsKKyAgICAg
ICAgSEdESU9CSiBoR0RJID0gOjpHZXRTdG9ja09iamVjdChERUZBVUxUX0dVSV9GT05UKTsKKyAg
ICAgICAgaWYgKCFoR0RJKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoOjpHZXRP
YmplY3QoaEdESSwgc2l6ZW9mKGxvZ0ZvbnQpLCAmbG9nRm9udCkgPD0gMCkKKyAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgfQorICAgIGZpbGxGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uLCBsb2dGb250LCBzaG91bGRVc2VEZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemUgPyBk
ZWZhdWx0Q29udHJvbEZvbnRQaXhlbFNpemUgOiBhYnMobG9nRm9udC5sZkhlaWdodCkpOwogfQog
CiBib29sIFJlbmRlclRoZW1lV2luOjpzdXBwb3J0c0ZvY3VzKENvbnRyb2xQYXJ0IGFwcGVhcmFu
Y2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCmluZGV4
IGNjODM4ZWYxNDNiOWMwYmNlZjZlNGRiZDQxMTUyYjdiYTllNzg1YjguLjRlMTk0OTg3MDg3ZWIz
ZTJkOTQwOGNlMTM3OWIxNDFhMDIyNGRkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5oCkBAIC02Miw4ICs2Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIENv
bG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICAvLyBTeXN0ZW0gZm9udHMuCi0gICAgdmly
dHVhbCB2b2lkIHN5c3RlbUZvbnQoQ1NTVmFsdWVJRCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94KGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKSBvdmVycmlk
ZQpAQCAtMTQ4LDYgKzE0Niw5IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyVGhlbWVXaW4oKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVdpbigpOwogCisgICAgLy8gU3lzdGVtIGZvbnRzLgorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJ
RCwgRm9udERlc2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisKICAgICB2b2lkIGFkZEludHJp
bnNpY01hcmdpbnMoUmVuZGVyU3R5bGUmKSBjb25zdDsKICAgICB2b2lkIGNsb3NlKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>