<?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>208382</bug_id>
          
          <creation_ts>2020-02-28 10:39:20 -0800</creation_ts>
          <short_desc>Garbage collection prevents FontFace.loaded promise from getting resolved</short_desc>
          <delta_ts>2020-02-29 12:40:45 -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>Text</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=208383</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1623996</commentid>
    <comment_count>0</comment_count>
      <attachid>391991</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-02-28 10:39:20 -0800</bug_when>
    <thetext>Created attachment 391991
layout test

We have some tests that use FontFace.loaded, and they fail (time out) when frequent garbage collection is forced with JSC_slowPathAllocsBetweenGCs=10. They also fail flakily on other bots.

Steps to reproduce:

Put attached test into LayoutTests, and run as:

run-webkit-tests --no-retry --dump-render-tree --additional-env-var=JSC_slowPathAllocsBetweenGCs=10 font-promises-gc.html

It should not time out, and should say &quot;SUCCESS&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624005</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-02-28 10:48:11 -0800</bug_when>
    <thetext>Presumably the promise needs to keep FontFace wrapper alive. I am not familiar with modern GC code enough to fix this in a reasonable amount of time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624025</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-28 11:17:35 -0800</bug_when>
    <thetext>FontFace probably needs to be an active DOM object and make it have a pending activity while there is font loading happening</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624031</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-28 11:18:49 -0800</bug_when>
    <thetext>We also need to make sure the promise object itself is kept alive in each DOM wrapper world too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624042</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-02-28 11:26:14 -0800</bug_when>
    <thetext>&gt; FontFace probably needs to be an active DOM object and make it have a pending activity while there is font loading happening

I&apos;m not sure if that would be sufficient. Doesn&apos;t promise resolving need to work even when loading isn&apos;t happening (either not started, or already finished)?

As an aside, I found that custom properties on FontFace wrappers don&apos;t survive GC either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624059</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-28 11:56:50 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #4)
&gt; &gt; FontFace probably needs to be an active DOM object and make it have a pending activity while there is font loading happening
&gt; 
&gt; I&apos;m not sure if that would be sufficient. Doesn&apos;t promise resolving need to
&gt; work even when loading isn&apos;t happening (either not started, or already
&gt; finished)?

Sure.

&gt; As an aside, I found that custom properties on FontFace wrappers don&apos;t
&gt; survive GC either.

Not surprised. Almost all DOM objects have this bug because people don&apos;t know how GC works. FontFace isn&apos;t an ActiveDOMObject nor is it reachable from anything so yeah, it&apos;d get GC&apos;ed immediately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624071</commentid>
    <comment_count>6</comment_count>
      <attachid>392005</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-28 12:21:52 -0800</bug_when>
    <thetext>Created attachment 392005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624075</commentid>
    <comment_count>7</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-02-28 12:41:56 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #5)
&gt; (In reply to Alexey Proskuryakov from comment #4)
&gt; &gt; As an aside, I found that custom properties on FontFace wrappers don&apos;t
&gt; &gt; survive GC either.
&gt; 
&gt; Not surprised. Almost all DOM objects have this bug because people don&apos;t
&gt; know how GC works. FontFace isn&apos;t an ActiveDOMObject nor is it reachable
&gt; from anything so yeah, it&apos;d get GC&apos;ed immediately.

I thought wrappers were handled by the wrapper map, which is careful to not GC wrappers when it would be observable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624082</commentid>
    <comment_count>8</comment_count>
      <attachid>392005</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-02-28 13:02:59 -0800</bug_when>
    <thetext>Comment on attachment 392005
Patch

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

&gt; LayoutTests/fast/text/font-promises-gc.html:46
&gt; +setInterval(function() {
&gt; +    document.fonts.forEach(function(f) {
&gt; +        console.log(&quot;Font status: &quot; + f.status);
&gt; +    });
&gt; +}, 5000);

Delete this? Five seconds is hard to hit, but not impossible on a very busy bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624102</commentid>
    <comment_count>9</comment_count>
      <attachid>392014</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-28 13:31:21 -0800</bug_when>
    <thetext>Created attachment 392014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624103</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-28 13:31:38 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #8)
&gt; Comment on attachment 392005 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392005&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/text/font-promises-gc.html:46
&gt; &gt; +setInterval(function() {
&gt; &gt; +    document.fonts.forEach(function(f) {
&gt; &gt; +        console.log(&quot;Font status: &quot; + f.status);
&gt; &gt; +    });
&gt; &gt; +}, 5000);
&gt; 
&gt; Delete this? Five seconds is hard to hit, but not impossible on a very busy
&gt; bot.

My bad :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624111</commentid>
    <comment_count>11</comment_count>
      <attachid>392014</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-28 13:41:10 -0800</bug_when>
    <thetext>Comment on attachment 392014
Patch

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

&gt; Source/WebCore/css/FontFace.cpp:490
&gt; +    return !isContextStopped() &amp;&amp; m_isScriptPotentiallyInterestedInLoad &amp;&amp; !m_loadedPromise-&gt;isFulfilled();

Should we clear m_isScriptPotentiallyInterestedInLoad when we&apos;re fulfilled the promise?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624114</commentid>
    <comment_count>12</comment_count>
      <attachid>392014</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-28 13:43:23 -0800</bug_when>
    <thetext>Comment on attachment 392014
Patch

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

&gt;&gt; Source/WebCore/css/FontFace.cpp:490
&gt;&gt; +    return !isContextStopped() &amp;&amp; m_isScriptPotentiallyInterestedInLoad &amp;&amp; !m_loadedPromise-&gt;isFulfilled();
&gt; 
&gt; Should we clear m_isScriptPotentiallyInterestedInLoad when we&apos;re fulfilled the promise?

It would not be observable since we call m_loadedPromise-&gt;isFulfilled() here. Are you concerned about someone using this boolean for something else later?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624117</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-28 13:52:20 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; Comment on attachment 392014 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392014&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/css/FontFace.cpp:490
&gt; &gt;&gt; +    return !isContextStopped() &amp;&amp; m_isScriptPotentiallyInterestedInLoad &amp;&amp; !m_loadedPromise-&gt;isFulfilled();
&gt; &gt; 
&gt; &gt; Should we clear m_isScriptPotentiallyInterestedInLoad when we&apos;re fulfilled the promise?
&gt; 
&gt; It would not be observable since we call m_loadedPromise-&gt;isFulfilled()
&gt; here. Are you concerned about someone using this boolean for something else
&gt; later?

Yeah. Also, I also thought it&apos;s a misleading.

Maybe we can rename the variable to something like m_isPromisePotentiallyScriptObservable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624118</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-28 13:52:56 -0800</bug_when>
    <thetext>I think the confusing part of m_isScriptPotentiallyInterestedInLoad is that it sort of implies the load hasn&apos;t happened yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624120</commentid>
    <comment_count>15</comment_count>
      <attachid>392015</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-28 13:55:33 -0800</bug_when>
    <thetext>Created attachment 392015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624175</commentid>
    <comment_count>16</comment_count>
      <attachid>392031</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-28 16:26:25 -0800</bug_when>
    <thetext>Created attachment 392031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624204</commentid>
    <comment_count>17</comment_count>
      <attachid>392031</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-28 17:48:32 -0800</bug_when>
    <thetext>Comment on attachment 392031
Patch

Clearing flags on attachment: 392031

Committed r257676: &lt;https://trac.webkit.org/changeset/257676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624205</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-28 17:48:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624206</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-28 17:49:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/59910670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624308</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-02-29 12:40:45 -0800</bug_when>
    <thetext>This also fixed fast/text/font-weight-fallback.html when running with JSC_slowPathAllocsBetweenGCs. It&apos;s using the same pattern, didn&apos;t notice it for he workaround in bug 208383.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>391991</attachid>
            <date>2020-02-28 10:39:20 -0800</date>
            <delta_ts>2020-02-28 10:39:20 -0800</delta_ts>
            <desc>layout test</desc>
            <filename>font-promises-gc.html</filename>
            <type>text/html</type>
            <size>1060</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHN0eWxlPgpAZm9udC1mYWNlIHsKICAgIGZv
bnQtZmFtaWx5OiAiQWhlbSI7CiAgICBzcmM6IHVybCgicmVzb3VyY2VzL0FoZW0udHRmIik7Cn0K
I2JveCB7CiAgICBmb250OiAxMDBweCAiQWhlbSI7Cn0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4K
PHByZT5QbGVhc2UgcHV0IHRoZSB0ZXN0IGludG8gTGF5b3V0VGVzdHMsIGFuZCBydW4gYXM6Cgpy
dW4td2Via2l0LXRlc3RzIC0tbm8tcmV0cnkgLS1kdW1wLXJlbmRlci10cmVlIC0tYWRkaXRpb25h
bC1lbnYtdmFyPUpTQ19zbG93UGF0aEFsbG9jc0JldHdlZW5HQ3M9MTAgZm9udC1wcm9taXNlcy1n
Yy5odG1sCgpJdCBzaG91bGQgbm90IHRpbWUgb3V0LCBhbmQgc2hvdWxkIHNheSAiU1VDQ0VTUyIu
CjwvcHJlPgo8ZGl2IGlkPSJib3giPkhlbGxvPC9kaXY+CjxkaXYgaWQ9InJlc3VsdCI+V2FpdGlu
Zy4uLjwvZGl2Pgo8c2NyaXB0PgoKaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Cgp2YXIgcHJvbWlzZXMgPSBbXTsKCmRvY3VtZW50LmZvbnRzLmZv
ckVhY2goZnVuY3Rpb24oZikgewogICAgY29uc29sZS5sb2coIkZvbnQgc3RhdHVzOiAiICsgZi5z
dGF0dXMpOwogICAgcHJvbWlzZXMucHVzaChmLmxvYWRlZCk7CiAgICBmLmxvYWRlZC50aGVuKGZ1
bmN0aW9uKCkgeyBjb25zb2xlLmxvZygiRm9udCBsb2FkZWQiKTsgfSk7Cn0pOwoKc2V0SW50ZXJ2
YWwoZnVuY3Rpb24oKSB7CiAgICBkb2N1bWVudC5mb250cy5mb3JFYWNoKGZ1bmN0aW9uKGYpIHsK
ICAgICAgICBjb25zb2xlLmxvZygiRm9udCBzdGF0dXM6ICIgKyBmLnN0YXR1cyk7CiAgICB9KTsK
fSwgNTAwMCk7CgpQcm9taXNlLmFsbChwcm9taXNlcykudGhlbihmdW5jdGlvbigpIHsKICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9ICJTVUNDRVNTIjsK
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKfSk7Cgo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392005</attachid>
            <date>2020-02-28 12:21:52 -0800</date>
            <delta_ts>2020-02-28 13:31:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208382-20200228122152.patch</filename>
            <type>text/plain</type>
            <size>11069</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODcyNjVhNTEwNmE4Mzcy
N2Y3OTZlYzZjMjkyMTdkNjgwZWFhN2Q5YS4uMmJiZmY0YTYxZGVlYWM5NjVmNmY3OTMzY2NiNjgz
OTc1NTAwYTgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAyLTI4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2FyYmFnZSBjb2xsZWN0aW9u
IHByZXZlbnRzIEZvbnRGYWNlLmxvYWRlZCBwcm9taXNlIGZyb20gZ2V0dGluZyByZXNvbHZlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJl
IHRoZSBGb250RmFjZSBKUyB3cmFwcGVyIHN0YXlzIGFsaXZlIGxvbmcgZW5vdWdoIHRvIHJlc29s
dmUgdGhlCisgICAgICAgIGxvYWRlZCBwcm9taXNlIHdoZW4gaXQgaXMgb2JzZXJ2YWJsZSBieSB0
aGUgcGFnZSdzIHNjcmlwdC4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQvZm9udC1wcm9taXNl
cy1nYy5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udEZhY2U6OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9u
dEZhY2UuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEZhY2U6OkZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmb250U3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpsb2FkRm9yQmluZGluZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmxvYWRlZEZvckJpbmRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYWNlOjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEZhY2U6OmxvYWQpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9Gb250
RmFjZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5pZGw6CisKIDIwMjAtMDItMjggIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiBy
MjU3NjEyOiBXaW5kb3dzIGJ1aWxkIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAK
aW5kZXggM2M1ZDBhZDE2OTNlNzQ3Yjk2M2Y1NDhkNTcyZGU2MzE1YTNmMzhmZi4uOWJjODMwYTdl
MzJkNjgyZGE1YTA0NmFmNjlkYzkxMzNiYTYzOTE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2UuY3BwCkBAIC00NDksNiArNDQ5LDExIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFkb3B0U291cmNl
KHN0ZDo6dW5pcXVlX3B0cjxDU1NGb250RmFjZVNvdXJjZT4mJiBzb3VyY2UpCiAgICAgQVNTRVJU
KCFtX3NvdXJjZXNQb3B1bGF0ZWQpOwogfQogCitEb2N1bWVudCogQ1NTRm9udEZhY2U6OmRvY3Vt
ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mb250U2VsZWN0b3IgPyBtX2ZvbnRTZWxlY3Rv
ci0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7Cit9CisKIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIENT
U0ZvbnRGYWNlOjphbGxvd1VzZXJJbnN0YWxsZWRGb250cygpIGNvbnN0CiB7CiAgICAgaWYgKG1f
Zm9udFNlbGVjdG9yICYmIG1fZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2UuaAppbmRleCBlM2QxNGJkZjY5NDllYjNlMGI0NTA4ZTkxYTM3YjEwYjQ3ZDNkMDA2
Li45MDdmNzkzNjE1OWMwYjNkMGI3NmExNzJkMWE0NTBhNGY5MjlkMjQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuaApAQCAtMTY1LDYgKzE2NSw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZv
aWQgc2V0RXJyb3JTdGF0ZSgpOwogCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgQ1NTRm9udEZhY2UoQ1NTRm9udFNlbGVjdG9yKiwgU3R5bGVSdWxlRm9u
dEZhY2UqLCBGb250RmFjZSosIGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5jcHAKaW5kZXggZTE4ZDZmNTQxNzFmMWM3NjAxY2FiZDA1YWU4Mjk4Zjc4NDY0NmNiNC4u
ODE2NTlmZjFiYWYzM2NkZjhjYTAyYmQyNGEyODA0NzNhYjFjOWRhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTb3VyY2UuaCIKICNpbmNsdWRlICJD
U1NGb250RmVhdHVyZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCiAjaW5j
bHVkZSAiQ1NTRm9udFN0eWxlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCkBAIC0xNDQsMTQgKzE0NSwxNiBAQCBS
ZWY8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoQ1NTRm9udEZhY2UmIGZhY2UpCiB9CiAKIEZv
bnRGYWNlOjpGb250RmFjZShDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikKLSAgICA6IG1f
YmFja2luZyhDU1NGb250RmFjZTo6Y3JlYXRlKCZmb250U2VsZWN0b3IsIG51bGxwdHIsIHRoaXMp
KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGZvbnRTZWxlY3Rvci5kb2N1bWVudCgpKQorICAgICwg
bV9iYWNraW5nKENTU0ZvbnRGYWNlOjpjcmVhdGUoJmZvbnRTZWxlY3RvciwgbnVsbHB0ciwgdGhp
cykpCiAgICAgLCBtX2xvYWRlZFByb21pc2UobWFrZVVuaXF1ZVJlZjxMb2FkZWRQcm9taXNlPigq
dGhpcywgJkZvbnRGYWNlOjpsb2FkZWRQcm9taXNlUmVzb2x2ZSkpCiB7CiAgICAgbV9iYWNraW5n
LT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiBGb250RmFjZTo6Rm9udEZhY2UoQ1NTRm9udEZhY2Um
IGZhY2UpCi0gICAgOiBtX2JhY2tpbmcoZmFjZSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChmYWNl
LmRvY3VtZW50KCkpCisgICAgLCBtX2JhY2tpbmcoZmFjZSkKICAgICAsIG1fbG9hZGVkUHJvbWlz
ZShtYWtlVW5pcXVlUmVmPExvYWRlZFByb21pc2U+KCp0aGlzLCAmRm9udEZhY2U6OmxvYWRlZFBy
b21pc2VSZXNvbHZlKSkKIHsKICAgICBtX2JhY2tpbmctPmFkZENsaWVudCgqdGhpcyk7CkBAIC00
MzYsOCArNDM5LDYgQEAgdm9pZCBGb250RmFjZTo6Zm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFj
ZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NTRm9udEYKICAgICBBU1NFUlRfVU5VU0VE
KGZhY2UsICZmYWNlID09IG1fYmFja2luZy5wdHIoKSk7CiAgICAgc3dpdGNoIChuZXdTdGF0ZSkg
ewogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGluZzoKLSAgICAgICAgLy8gV2Ug
c3RpbGwgbmVlZCB0byByZXNvbHZlIHByb21pc2VzIHdoZW4gbG9hZGluZyBjb21wbGV0ZXMsIGV2
ZW4gaWYgYWxsIHJlZmVyZW5jZXMgdG8gdXNlIGhhdmUgZmFsbGVuIG91dCBvZiBzY29wZS4KLSAg
ICAgICAgcmVmKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1
czo6VGltZWRPdXQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ2LDE0ICs0NDcsMTIgQEAgdm9pZCBG
b250RmFjZTo6Zm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6
OlN0YXR1cywgQ1NTRm9udEYKICAgICAgICAgLy8gZ29uZSB0aHJvdWdoIGEgbG9hZCBjeWNsZSwg
d2UgY2FuIHNvbWV0aW1lcyBjb21lIGJhY2sgdGhyb3VnaCBoZXJlIGFuZCB0cnkgdG8gcmVzb2x2
ZSB0aGUgcHJvbWlzZSBhZ2Fpbi4KICAgICAgICAgaWYgKCFtX2xvYWRlZFByb21pc2UtPmlzRnVs
ZmlsbGVkKCkpCiAgICAgICAgICAgICBtX2xvYWRlZFByb21pc2UtPnJlc29sdmUoKnRoaXMpOwot
ICAgICAgICBkZXJlZigpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NGb250RmFjZTo6
U3RhdHVzOjpGYWlsdXJlOgogICAgICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzaG91bGQgbm90
IGJlIG5lZWRlZCwgYnV0IGJlY2F1c2UgRm9udEZhY2UncyBhcmUgc29tZXRpbWVzIGFkb3B0ZWQg
YWZ0ZXIgdGhleSBoYXZlIGFscmVhZHkKICAgICAgICAgLy8gZ29uZSB0aHJvdWdoIGEgbG9hZCBj
eWNsZSwgd2UgY2FuIHNvbWV0aW1lcyBjb21lIGJhY2sgdGhyb3VnaCBoZXJlIGFuZCB0cnkgdG8g
cmVzb2x2ZSB0aGUgcHJvbWlzZSBhZ2Fpbi4KICAgICAgICAgaWYgKCFtX2xvYWRlZFByb21pc2Ut
PmlzRnVsZmlsbGVkKCkpCiAgICAgICAgICAgICBtX2xvYWRlZFByb21pc2UtPnJlamVjdChFeGNl
cHRpb24geyBOZXR3b3JrRXJyb3IgfSk7Ci0gICAgICAgIGRlcmVmKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0dXM6OlBlbmRpbmc6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDYxLDE1ICs0NjAsMzQgQEAgdm9pZCBGb250RmFjZTo6Zm9u
dFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NT
Rm9udEYKICAgICB9CiB9CiAKLWF1dG8gRm9udEZhY2U6OmxvYWQoKSAtPiBMb2FkZWRQcm9taXNl
JgorYXV0byBGb250RmFjZTo6bG9hZEZvckJpbmRpbmdzKCkgLT4gTG9hZGVkUHJvbWlzZSYKIHsK
KyAgICBtX2lzU2NyaXB0UG90ZW50aWFsbHlJbnRlcmVzdGVkSW5Mb2FkID0gdHJ1ZTsKICAgICBt
X2JhY2tpbmctPmxvYWQoKTsKICAgICByZXR1cm4gbV9sb2FkZWRQcm9taXNlLmdldCgpOwogfQog
CithdXRvIEZvbnRGYWNlOjpsb2FkZWRGb3JCaW5kaW5ncygpIC0+IExvYWRlZFByb21pc2UmCit7
CisgICAgbV9pc1NjcmlwdFBvdGVudGlhbGx5SW50ZXJlc3RlZEluTG9hZCA9IHRydWU7CisgICAg
cmV0dXJuIG1fbG9hZGVkUHJvbWlzZS5nZXQoKTsKK30KKwogRm9udEZhY2UmIEZvbnRGYWNlOjps
b2FkZWRQcm9taXNlUmVzb2x2ZSgpCiB7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCitjb25zdCBj
aGFyKiBGb250RmFjZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICJGb250RmFjZSI7Cit9CisKK2Jvb2wgRm9udEZhY2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0Cit7CisgICAgaWYgKEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAhaXNDb250ZXh0U3RvcHBlZCgpICYmIG1f
aXNTY3JpcHRQb3RlbnRpYWxseUludGVyZXN0ZWRJbkxvYWQgJiYgIW1fbG9hZGVkUHJvbWlzZS0+
aXNGdWxmaWxsZWQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCA3OWQwODgwMGZk
YjRjZDQ1Zjc3NWQyNDU4Yzg0NTVjOGRiMTlkZmFkLi4yODMyYThmYzEzODcyMTdiMGNiYTk3YTNi
ZTk3YjVkOGVlYmRkNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtMjUsNiArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUg
IkNTU0ZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IklETFR5cGVzLmgiCkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVD
YWxsYmFjazsKIAotY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250
RmFjZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxGb250RmFjZT4sIHByaXZhdGUgQ1NTRm9udEZh
Y2U6OkNsaWVudCB7CitjbGFzcyBGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZv
bnRGYWNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEZvbnRGYWNlPiwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHJpdmF0ZSBDU1NGb250RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdHJ1
Y3QgRGVzY3JpcHRvcnMgewogICAgICAgICBTdHJpbmcgc3R5bGU7CkBAIC03Nyw4ICs3OCw4IEBA
IHB1YmxpYzoKICAgICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCiAgICAgdXNpbmcgTG9h
ZGVkUHJvbWlzZSA9IERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s8SURMSW50ZXJm
YWNlPEZvbnRGYWNlPj47Ci0gICAgTG9hZGVkUHJvbWlzZSYgbG9hZGVkKCkgeyByZXR1cm4gbV9s
b2FkZWRQcm9taXNlLmdldCgpOyB9Ci0gICAgTG9hZGVkUHJvbWlzZSYgbG9hZCgpOworICAgIExv
YWRlZFByb21pc2UmIGxvYWRlZEZvckJpbmRpbmdzKCk7CisgICAgTG9hZGVkUHJvbWlzZSYgbG9h
ZEZvckJpbmRpbmdzKCk7CiAKICAgICB2b2lkIGFkb3B0KENTU0ZvbnRGYWNlJik7CiAKQEAgLTkx
LDE0ICs5MiwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWYoKSBmaW5hbCB7IFJlZkNvdW50ZWQ6
OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGZpbmFsIHsgUmVmQ291bnRlZDo6ZGVyZWYoKTsg
fQogCisgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBGb250RmFjZShDU1NGb250U2VsZWN0b3ImKTsKICAgICBleHBsaWNp
dCBGb250RmFjZShDU1NGb250RmFjZSYpOworCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworCiAgICAgLy8gQ2FsbGJhY2sgZm9yIExvYWRlZFByb21p
c2UuCiAgICAgRm9udEZhY2UmIGxvYWRlZFByb21pc2VSZXNvbHZlKCk7CiAgICAgdm9pZCBzZXRF
cnJvclN0YXRlKCk7CiAgICAgUmVmPENTU0ZvbnRGYWNlPiBtX2JhY2tpbmc7CiAgICAgVW5pcXVl
UmVmPExvYWRlZFByb21pc2U+IG1fbG9hZGVkUHJvbWlzZTsKKyAgICBib29sIG1faXNTY3JpcHRQ
b3RlbnRpYWxseUludGVyZXN0ZWRJbkxvYWQgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5pZGwKaW5kZXggYWFlZWM4NjFiZTFkNzI3NmEwYjU4MTE2YWZmOTFmZmExNjIyOTVh
My4uMTVmY2VhOGZkMDI4ZDEzNzg2OWVlNjQwNTU1MDQwMmVhOTJlN2FkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuaWRsCkBAIC00Miw2ICs0Miw3IEBAIGRpY3Rpb25hcnkgRm9udEZhY2VEZXNjcmlw
dG9ycyB7CiB9OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbnN0cnVjdG9yQ2Fs
bFdpdGg9RG9jdW1lbnQsCiAgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIGZhbWlseSwgKERPTVN0
cmluZyBvciBCaW5hcnlEYXRhKSBzb3VyY2UsIG9wdGlvbmFsIEZvbnRGYWNlRGVzY3JpcHRvcnMg
ZGVzY3JpcHRvcnMpCiBdIGludGVyZmFjZSBGb250RmFjZSB7CkBAIC01NSw2ICs1Niw2IEBAIGRp
Y3Rpb25hcnkgRm9udEZhY2VEZXNjcmlwdG9ycyB7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Rm9udEZhY2VMb2FkU3RhdHVzIHN0YXR1czsKIAotICAgIFtSZXR1cm5zT3duUHJvbWlzZSwgUHJv
bWlzZVByb3h5XSBQcm9taXNlPEZvbnRGYWNlPiBsb2FkKCk7Ci0gICAgcmVhZG9ubHkgYXR0cmli
dXRlIFByb21pc2U8Rm9udEZhY2U+IGxvYWRlZDsKKyAgICBbUmV0dXJuc093blByb21pc2UsIFBy
b21pc2VQcm94eSwgSW1wbGVtZW50ZWRBcz1sb2FkRm9yQmluZGluZ3NdIFByb21pc2U8Rm9udEZh
Y2U+IGxvYWQoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1sb2FkZWRGb3JCaW5kaW5nc10gcmVhZG9u
bHkgYXR0cmlidXRlIFByb21pc2U8Rm9udEZhY2U+IGxvYWRlZDsKIH07CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTJjOWVl
ZmNjMzM0Y2NjZDU4MGNlMTI1YTZhMTA4YTJhNDFkM2JiNy4uMGNlNzEwNTRhOGVjMTdhNzhlYzVk
OTJiZGE2ZDI5ZTM2ZGRjYWQ0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAyLTI4ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2FyYmFnZSBjb2xsZWN0
aW9uIHByZXZlbnRzIEZvbnRGYWNlLmxvYWRlZCBwcm9taXNlIGZyb20gZ2V0dGluZyByZXNvbHZl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4Mzgy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxh
eW91dCB0ZXN0IGNvdmVyYWdlLiBUaGFua3MgdG8gQWxleGV5IFByb3NrdXJ5YWtvdiBmb3Igd3Jp
dGluZyB0aGUgdGVzdC4KKworICAgICAgICAqIGZhc3QvdGV4dC9mb250LXByb21pc2VzLWdjLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ZvbnQtcHJvbWlzZXMtZ2Mu
aHRtbDogQWRkZWQuCisKIDIwMjAtMDItMjggIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBHYXJkZW5pbmcsIHVwZGF0ZSBUZXN0RXhwZWN0YXRp
b25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9udC1wcm9taXNlcy1nYy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9udC1wcm9taXNlcy1nYy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkwMTI1YTU5NzljY2JmYWVlZWY4OTlmNWM4MzNlYzIyNmVh
MGU0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LXByb21p
c2VzLWdjLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAzNDogRm9udCBzdGF0dXM6IHVubG9hZGVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzY6IEZv
bnQgbG9hZGVkCitUaGlzIHRlc3Qgc2hvdWxkIG5vdCB0aW1lIG91dCwgYW5kIHNob3VsZCBzYXkg
IlNVQ0NFU1MiLgorSGVsbG8KK1NVQ0NFU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC9mb250LXByb21pc2VzLWdjLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9udC1w
cm9taXNlcy1nYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0YjNkY2I5YzM0ZjM4Yzg2MDQ5NTZiMzBhYjA0
ZWUwMGUzYWNiYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9u
dC1wcm9taXNlcy1nYy5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzdHlsZT4KK0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5OiAiQWhl
bSI7CisgICAgc3JjOiB1cmwoIi4uLy4uL3Jlc291cmNlcy9BaGVtLnR0ZiIpOworfQorI2JveCB7
CisgICAgZm9udDogMTAwcHggIkFoZW0iOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PHByZT5UaGlzIHRlc3Qgc2hvdWxkIG5vdCB0aW1lIG91dCwgYW5kIHNob3VsZCBzYXkgIlNVQ0NF
U1MiLjwvcHJlPgorPGRpdiBpZD0iYm94Ij5IZWxsbzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij5X
YWl0aW5nLi4uPC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHR5
cGVvZiBHQ0NvbnRyb2xsZXIgIT09ICJ1bmRlZmluZWQiKQorICAgICAgICBHQ0NvbnRyb2xsZXIu
Y29sbGVjdCgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFy
IHByb21pc2VzID0gW107CisKK2RvY3VtZW50LmZvbnRzLmZvckVhY2goZnVuY3Rpb24oZikgewor
ICAgIGNvbnNvbGUubG9nKCJGb250IHN0YXR1czogIiArIGYuc3RhdHVzKTsKKyAgICBwcm9taXNl
cy5wdXNoKGYubG9hZGVkKTsKKyAgICBmLmxvYWRlZC50aGVuKGZ1bmN0aW9uKCkgeyBjb25zb2xl
LmxvZygiRm9udCBsb2FkZWQiKTsgfSk7CisgICAgZ2MoKTsKK30pOworCitzZXRJbnRlcnZhbChn
YywgMTApOworCitzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5mb250cy5m
b3JFYWNoKGZ1bmN0aW9uKGYpIHsKKyAgICAgICAgY29uc29sZS5sb2coIkZvbnQgc3RhdHVzOiAi
ICsgZi5zdGF0dXMpOworICAgIH0pOworfSwgNTAwMCk7CisKK1Byb21pc2UuYWxsKHByb21pc2Vz
KS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KS50ZXh0Q29udGVudCA9ICJTVUNDRVNTIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSk7CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392014</attachid>
            <date>2020-02-28 13:31:21 -0800</date>
            <delta_ts>2020-02-28 13:55:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208382-20200228133120.patch</filename>
            <type>text/plain</type>
            <size>10924</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWVlNzY0MzdhODlkZmRm
ZTZiYmExZjNiYTBlOTM1NDllZWRmMjYxNS4uMTQ1OTVlZjc0NjNiY2I5MmIwY2RjY2NkOGM5ZDRm
MmVjMzk2OGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAyLTI4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2FyYmFnZSBjb2xsZWN0aW9u
IHByZXZlbnRzIEZvbnRGYWNlLmxvYWRlZCBwcm9taXNlIGZyb20gZ2V0dGluZyByZXNvbHZlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJl
IHRoZSBGb250RmFjZSBKUyB3cmFwcGVyIHN0YXlzIGFsaXZlIGxvbmcgZW5vdWdoIHRvIHJlc29s
dmUgdGhlCisgICAgICAgIGxvYWRlZCBwcm9taXNlIHdoZW4gaXQgaXMgb2JzZXJ2YWJsZSBieSB0
aGUgcGFnZSdzIHNjcmlwdC4KKworICAgICAgICBUZXN0OiBmYXN0L3RleHQvZm9udC1wcm9taXNl
cy1nYy5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTRm9udEZhY2U6OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKiBjc3MvQ1NTRm9u
dEZhY2UuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEZhY2U6OkZvbnRGYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmb250U3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpsb2FkRm9yQmluZGluZ3Mp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmxvYWRlZEZvckJpbmRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYWNlOjphY3RpdmVET01PYmplY3ROYW1lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEZhY2U6OmxvYWQpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9Gb250
RmFjZS5oOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5pZGw6CisKIDIwMjAtMDItMjggIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVJlc291cmNlTG9hZGVy
IGxlYWtzIHJlc291cmNlIHJlc3BvbnNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKaW5k
ZXggM2M1ZDBhZDE2OTNlNzQ3Yjk2M2Y1NDhkNTcyZGU2MzE1YTNmMzhmZi4uOWJjODMwYTdlMzJk
NjgyZGE1YTA0NmFmNjlkYzkxMzNiYTYzOTE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
Y3BwCkBAIC00NDksNiArNDQ5LDExIEBAIHZvaWQgQ1NTRm9udEZhY2U6OmFkb3B0U291cmNlKHN0
ZDo6dW5pcXVlX3B0cjxDU1NGb250RmFjZVNvdXJjZT4mJiBzb3VyY2UpCiAgICAgQVNTRVJUKCFt
X3NvdXJjZXNQb3B1bGF0ZWQpOwogfQogCitEb2N1bWVudCogQ1NTRm9udEZhY2U6OmRvY3VtZW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mb250U2VsZWN0b3IgPyBtX2ZvbnRTZWxlY3Rvci0+
ZG9jdW1lbnQoKSA6IG51bGxwdHI7Cit9CisKIEFsbG93VXNlckluc3RhbGxlZEZvbnRzIENTU0Zv
bnRGYWNlOjphbGxvd1VzZXJJbnN0YWxsZWRGb250cygpIGNvbnN0CiB7CiAgICAgaWYgKG1fZm9u
dFNlbGVjdG9yICYmIG1fZm9udFNlbGVjdG9yLT5kb2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuaAppbmRleCBlM2QxNGJkZjY5NDllYjNlMGI0NTA4ZTkxYTM3YjEwYjQ3ZDNkMDA2Li45
MDdmNzkzNjE1OWMwYjNkMGI3NmExNzJkMWE0NTBhNGY5MjlkMjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2UuaApAQCAtMTY1LDYgKzE2NSw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQg
c2V0RXJyb3JTdGF0ZSgpOwogCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgQ1NTRm9udEZhY2UoQ1NTRm9udFNlbGVjdG9yKiwgU3R5bGVSdWxlRm9udEZh
Y2UqLCBGb250RmFjZSosIGJvb2wgaXNMb2NhbEZhbGxiYWNrKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZS5jcHAKaW5kZXggZTE4ZDZmNTQxNzFmMWM3NjAxY2FiZDA1YWU4Mjk4Zjc4NDY0NmNiNC4uODE2
NTlmZjFiYWYzM2NkZjhjYTAyYmQyNGEyODA0NzNhYjFjOWRhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2UuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VTb3VyY2UuaCIKICNpbmNsdWRlICJDU1NG
b250RmVhdHVyZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVk
ZSAiQ1NTRm9udFN0eWxlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRl
ICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCkBAIC0xNDQsMTQgKzE0NSwxNiBAQCBSZWY8
Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoQ1NTRm9udEZhY2UmIGZhY2UpCiB9CiAKIEZvbnRG
YWNlOjpGb250RmFjZShDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikKLSAgICA6IG1fYmFj
a2luZyhDU1NGb250RmFjZTo6Y3JlYXRlKCZmb250U2VsZWN0b3IsIG51bGxwdHIsIHRoaXMpKQor
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGZvbnRTZWxlY3Rvci5kb2N1bWVudCgpKQorICAgICwgbV9i
YWNraW5nKENTU0ZvbnRGYWNlOjpjcmVhdGUoJmZvbnRTZWxlY3RvciwgbnVsbHB0ciwgdGhpcykp
CiAgICAgLCBtX2xvYWRlZFByb21pc2UobWFrZVVuaXF1ZVJlZjxMb2FkZWRQcm9taXNlPigqdGhp
cywgJkZvbnRGYWNlOjpsb2FkZWRQcm9taXNlUmVzb2x2ZSkpCiB7CiAgICAgbV9iYWNraW5nLT5h
ZGRDbGllbnQoKnRoaXMpOwogfQogCiBGb250RmFjZTo6Rm9udEZhY2UoQ1NTRm9udEZhY2UmIGZh
Y2UpCi0gICAgOiBtX2JhY2tpbmcoZmFjZSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChmYWNlLmRv
Y3VtZW50KCkpCisgICAgLCBtX2JhY2tpbmcoZmFjZSkKICAgICAsIG1fbG9hZGVkUHJvbWlzZSht
YWtlVW5pcXVlUmVmPExvYWRlZFByb21pc2U+KCp0aGlzLCAmRm9udEZhY2U6OmxvYWRlZFByb21p
c2VSZXNvbHZlKSkKIHsKICAgICBtX2JhY2tpbmctPmFkZENsaWVudCgqdGhpcyk7CkBAIC00MzYs
OCArNDM5LDYgQEAgdm9pZCBGb250RmFjZTo6Zm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYg
ZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NTRm9udEYKICAgICBBU1NFUlRfVU5VU0VEKGZh
Y2UsICZmYWNlID09IG1fYmFja2luZy5wdHIoKSk7CiAgICAgc3dpdGNoIChuZXdTdGF0ZSkgewog
ICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGluZzoKLSAgICAgICAgLy8gV2Ugc3Rp
bGwgbmVlZCB0byByZXNvbHZlIHByb21pc2VzIHdoZW4gbG9hZGluZyBjb21wbGV0ZXMsIGV2ZW4g
aWYgYWxsIHJlZmVyZW5jZXMgdG8gdXNlIGhhdmUgZmFsbGVuIG91dCBvZiBzY29wZS4KLSAgICAg
ICAgcmVmKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6
VGltZWRPdXQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ2LDE0ICs0NDcsMTIgQEAgdm9pZCBGb250
RmFjZTo6Zm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0
YXR1cywgQ1NTRm9udEYKICAgICAgICAgLy8gZ29uZSB0aHJvdWdoIGEgbG9hZCBjeWNsZSwgd2Ug
Y2FuIHNvbWV0aW1lcyBjb21lIGJhY2sgdGhyb3VnaCBoZXJlIGFuZCB0cnkgdG8gcmVzb2x2ZSB0
aGUgcHJvbWlzZSBhZ2Fpbi4KICAgICAgICAgaWYgKCFtX2xvYWRlZFByb21pc2UtPmlzRnVsZmls
bGVkKCkpCiAgICAgICAgICAgICBtX2xvYWRlZFByb21pc2UtPnJlc29sdmUoKnRoaXMpOwotICAg
ICAgICBkZXJlZigpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3Rh
dHVzOjpGYWlsdXJlOgogICAgICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzaG91bGQgbm90IGJl
IG5lZWRlZCwgYnV0IGJlY2F1c2UgRm9udEZhY2UncyBhcmUgc29tZXRpbWVzIGFkb3B0ZWQgYWZ0
ZXIgdGhleSBoYXZlIGFscmVhZHkKICAgICAgICAgLy8gZ29uZSB0aHJvdWdoIGEgbG9hZCBjeWNs
ZSwgd2UgY2FuIHNvbWV0aW1lcyBjb21lIGJhY2sgdGhyb3VnaCBoZXJlIGFuZCB0cnkgdG8gcmVz
b2x2ZSB0aGUgcHJvbWlzZSBhZ2Fpbi4KICAgICAgICAgaWYgKCFtX2xvYWRlZFByb21pc2UtPmlz
RnVsZmlsbGVkKCkpCiAgICAgICAgICAgICBtX2xvYWRlZFByb21pc2UtPnJlamVjdChFeGNlcHRp
b24geyBOZXR3b3JrRXJyb3IgfSk7Ci0gICAgICAgIGRlcmVmKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0dXM6OlBlbmRpbmc6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtNDYxLDE1ICs0NjAsMzQgQEAgdm9pZCBGb250RmFjZTo6Zm9udFN0
YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NTRm9u
dEYKICAgICB9CiB9CiAKLWF1dG8gRm9udEZhY2U6OmxvYWQoKSAtPiBMb2FkZWRQcm9taXNlJgor
YXV0byBGb250RmFjZTo6bG9hZEZvckJpbmRpbmdzKCkgLT4gTG9hZGVkUHJvbWlzZSYKIHsKKyAg
ICBtX2lzU2NyaXB0UG90ZW50aWFsbHlJbnRlcmVzdGVkSW5Mb2FkID0gdHJ1ZTsKICAgICBtX2Jh
Y2tpbmctPmxvYWQoKTsKICAgICByZXR1cm4gbV9sb2FkZWRQcm9taXNlLmdldCgpOwogfQogCith
dXRvIEZvbnRGYWNlOjpsb2FkZWRGb3JCaW5kaW5ncygpIC0+IExvYWRlZFByb21pc2UmCit7Cisg
ICAgbV9pc1NjcmlwdFBvdGVudGlhbGx5SW50ZXJlc3RlZEluTG9hZCA9IHRydWU7CisgICAgcmV0
dXJuIG1fbG9hZGVkUHJvbWlzZS5nZXQoKTsKK30KKwogRm9udEZhY2UmIEZvbnRGYWNlOjpsb2Fk
ZWRQcm9taXNlUmVzb2x2ZSgpCiB7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCitjb25zdCBjaGFy
KiBGb250RmFjZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICJG
b250RmFjZSI7Cit9CisKK2Jvb2wgRm9udEZhY2U6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0
Cit7CisgICAgaWYgKEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiAhaXNDb250ZXh0U3RvcHBlZCgpICYmIG1faXNT
Y3JpcHRQb3RlbnRpYWxseUludGVyZXN0ZWRJbkxvYWQgJiYgIW1fbG9hZGVkUHJvbWlzZS0+aXNG
dWxmaWxsZWQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCA3OWQwODgwMGZkYjRj
ZDQ1Zjc3NWQyNDU4Yzg0NTVjOGRiMTlkZmFkLi4yODMyYThmYzEzODcyMTdiMGNiYTk3YTNiZTk3
YjVkOGVlYmRkNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNT
U0ZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIklE
TFR5cGVzLmgiCkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxs
YmFjazsKIAotY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFj
ZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxGb250RmFjZT4sIHByaXZhdGUgQ1NTRm9udEZhY2U6
OkNsaWVudCB7CitjbGFzcyBGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRG
YWNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEZvbnRGYWNlPiwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCwgcHJpdmF0ZSBDU1NGb250RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
RGVzY3JpcHRvcnMgewogICAgICAgICBTdHJpbmcgc3R5bGU7CkBAIC03Nyw4ICs3OCw4IEBAIHB1
YmxpYzoKICAgICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCiAgICAgdXNpbmcgTG9hZGVk
UHJvbWlzZSA9IERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s8SURMSW50ZXJmYWNl
PEZvbnRGYWNlPj47Ci0gICAgTG9hZGVkUHJvbWlzZSYgbG9hZGVkKCkgeyByZXR1cm4gbV9sb2Fk
ZWRQcm9taXNlLmdldCgpOyB9Ci0gICAgTG9hZGVkUHJvbWlzZSYgbG9hZCgpOworICAgIExvYWRl
ZFByb21pc2UmIGxvYWRlZEZvckJpbmRpbmdzKCk7CisgICAgTG9hZGVkUHJvbWlzZSYgbG9hZEZv
ckJpbmRpbmdzKCk7CiAKICAgICB2b2lkIGFkb3B0KENTU0ZvbnRGYWNlJik7CiAKQEAgLTkxLDE0
ICs5MiwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWYoKSBmaW5hbCB7IFJlZkNvdW50ZWQ6OnJl
ZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGZpbmFsIHsgUmVmQ291bnRlZDo6ZGVyZWYoKTsgfQog
CisgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBGb250RmFjZShDU1NGb250U2VsZWN0b3ImKTsKICAgICBleHBsaWNpdCBG
b250RmFjZShDU1NGb250RmFjZSYpOworCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOworCiAgICAgLy8gQ2FsbGJhY2sgZm9yIExvYWRlZFByb21pc2Uu
CiAgICAgRm9udEZhY2UmIGxvYWRlZFByb21pc2VSZXNvbHZlKCk7CiAgICAgdm9pZCBzZXRFcnJv
clN0YXRlKCk7CiAgICAgUmVmPENTU0ZvbnRGYWNlPiBtX2JhY2tpbmc7CiAgICAgVW5pcXVlUmVm
PExvYWRlZFByb21pc2U+IG1fbG9hZGVkUHJvbWlzZTsKKyAgICBib29sIG1faXNTY3JpcHRQb3Rl
bnRpYWxseUludGVyZXN0ZWRJbkxvYWQgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5pZGwKaW5kZXggYWFlZWM4NjFiZTFkNzI3NmEwYjU4MTE2YWZmOTFmZmExNjIyOTVhMy4u
MTVmY2VhOGZkMDI4ZDEzNzg2OWVlNjQwNTU1MDQwMmVhOTJlN2FkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuaWRsCkBAIC00Miw2ICs0Miw3IEBAIGRpY3Rpb25hcnkgRm9udEZhY2VEZXNjcmlwdG9y
cyB7CiB9OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbnN0cnVjdG9yQ2FsbFdp
dGg9RG9jdW1lbnQsCiAgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIGZhbWlseSwgKERPTVN0cmlu
ZyBvciBCaW5hcnlEYXRhKSBzb3VyY2UsIG9wdGlvbmFsIEZvbnRGYWNlRGVzY3JpcHRvcnMgZGVz
Y3JpcHRvcnMpCiBdIGludGVyZmFjZSBGb250RmFjZSB7CkBAIC01NSw2ICs1Niw2IEBAIGRpY3Rp
b25hcnkgRm9udEZhY2VEZXNjcmlwdG9ycyB7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRm9u
dEZhY2VMb2FkU3RhdHVzIHN0YXR1czsKIAotICAgIFtSZXR1cm5zT3duUHJvbWlzZSwgUHJvbWlz
ZVByb3h5XSBQcm9taXNlPEZvbnRGYWNlPiBsb2FkKCk7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IFByb21pc2U8Rm9udEZhY2U+IGxvYWRlZDsKKyAgICBbUmV0dXJuc093blByb21pc2UsIFByb21p
c2VQcm94eSwgSW1wbGVtZW50ZWRBcz1sb2FkRm9yQmluZGluZ3NdIFByb21pc2U8Rm9udEZhY2U+
IGxvYWQoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1sb2FkZWRGb3JCaW5kaW5nc10gcmVhZG9ubHkg
YXR0cmlidXRlIFByb21pc2U8Rm9udEZhY2U+IGxvYWRlZDsKIH07CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2RiNjcwYjEw
MzYyM2ZiYmNiMDkyNTM1NmRlMmRlOGZiNDI3ZDc2My4uZmJjOTQyYTJiYTc4NDY0MzkzYTI3YjRh
MDBiZWIwZDY5ODRmMzIyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAyLTI4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2FyYmFnZSBjb2xsZWN0aW9u
IHByZXZlbnRzIEZvbnRGYWNlLmxvYWRlZCBwcm9taXNlIGZyb20gZ2V0dGluZyByZXNvbHZlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91
dCB0ZXN0IGNvdmVyYWdlLiBUaGFua3MgdG8gQWxleGV5IFByb3NrdXJ5YWtvdiBmb3Igd3JpdGlu
ZyB0aGUgdGVzdC4KKworICAgICAgICAqIGZhc3QvdGV4dC9mb250LXByb21pc2VzLWdjLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ZvbnQtcHJvbWlzZXMtZ2MuaHRt
bDogQWRkZWQuCisKIDIwMjAtMDItMjggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVmbGFrZSBhbmltYXRpb25zL2ZvbnQtdmFyaWF0aW9ucyB0ZXN0cwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnQtcHJvbWlzZXMtZ2MtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnQtcHJvbWlzZXMtZ2MtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE5MDEyNWE1OTc5Y2NiZmFlZWVmODk5ZjVjODMzZWMyMjZlYTBlNGYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9udC1wcm9taXNlcy1n
Yy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzQ6
IEZvbnQgc3RhdHVzOiB1bmxvYWRlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM2OiBGb250IGxv
YWRlZAorVGhpcyB0ZXN0IHNob3VsZCBub3QgdGltZSBvdXQsIGFuZCBzaG91bGQgc2F5ICJTVUND
RVNTIi4KK0hlbGxvCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQv
Zm9udC1wcm9taXNlcy1nYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnQtcHJvbWlz
ZXMtZ2MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzBkYzE1ZDlkN2MzNWM5ZDk0MDhjYWYxODI0YWI0ZDc5
YTg0NGJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnQtcHJv
bWlzZXMtZ2MuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c3R5bGU+CitAZm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogIkFoZW0iOwor
ICAgIHNyYzogdXJsKCIuLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYiKTsKK30KKyNib3ggeworICAg
IGZvbnQ6IDEwMHB4ICJBaGVtIjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmU+
VGhpcyB0ZXN0IHNob3VsZCBub3QgdGltZSBvdXQsIGFuZCBzaG91bGQgc2F5ICJTVUNDRVNTIi48
L3ByZT4KKzxkaXYgaWQ9ImJveCI+SGVsbG88L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+V2FpdGlu
Zy4uLjwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh0eXBlb2Yg
R0NDb250cm9sbGVyICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgR0NDb250cm9sbGVyLmNvbGxl
Y3QoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBwcm9t
aXNlcyA9IFtdOworCitkb2N1bWVudC5mb250cy5mb3JFYWNoKGZ1bmN0aW9uKGYpIHsKKyAgICBj
b25zb2xlLmxvZygiRm9udCBzdGF0dXM6ICIgKyBmLnN0YXR1cyk7CisgICAgcHJvbWlzZXMucHVz
aChmLmxvYWRlZCk7CisgICAgZi5sb2FkZWQudGhlbihmdW5jdGlvbigpIHsgY29uc29sZS5sb2co
IkZvbnQgbG9hZGVkIik7IH0pOworICAgIGdjKCk7Cit9KTsKKworc2V0SW50ZXJ2YWwoZ2MsIDEw
KTsKKworUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gIlNVQ0NFU1MiOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Cit9KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392015</attachid>
            <date>2020-02-28 13:55:33 -0800</date>
            <delta_ts>2020-02-28 16:26:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208382-20200228135532.patch</filename>
            <type>text/plain</type>
            <size>10916</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWVlNzY0MzdhODlkZmRm
ZTZiYmExZjNiYTBlOTM1NDllZWRmMjYxNS4uYTE3ODAzOTE0MTI1MTgzNGI0YmM1ZTU1NTQ5OTZk
MWU3ZGI4MGZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAyLTI4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2FyYmFnZSBjb2xsZWN0aW9u
IHByZXZlbnRzIEZvbnRGYWNlLmxvYWRlZCBwcm9taXNlIGZyb20gZ2V0dGluZyByZXNvbHZlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIE1ha2Ugc3VyZSB0
aGUgRm9udEZhY2UgSlMgd3JhcHBlciBzdGF5cyBhbGl2ZSBsb25nIGVub3VnaCB0byByZXNvbHZl
IHRoZQorICAgICAgICBsb2FkZWQgcHJvbWlzZSB3aGVuIGl0IGlzIG9ic2VydmFibGUgYnkgdGhl
IHBhZ2UncyBzY3JpcHQuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ZvbnQtcHJvbWlzZXMt
Z2MuaHRtbAorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlOjpkb2N1bWVudCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRG
YWNlLmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRGYWNlOjpGb250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6Zm9udFN0YXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6bG9hZEZvckJpbmRpbmdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpsb2FkZWRGb3JCaW5kaW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpGb250RmFjZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGb250RmFjZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlOjpsb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvRm9udEZh
Y2UuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuaWRsOgorCiAyMDIwLTAyLTI4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFSZXNvdXJjZUxvYWRlciBs
ZWFrcyByZXNvdXJjZSByZXNwb25zZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4
IDNjNWQwYWQxNjkzZTc0N2I5NjNmNTQ4ZDU3MmRlNjMxNWEzZjM4ZmYuLjliYzgzMGE3ZTMyZDY4
MmRhNWEwNDZhZjY5ZGM5MTMzYmE2MzkxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNw
cApAQCAtNDQ5LDYgKzQ0OSwxMSBAQCB2b2lkIENTU0ZvbnRGYWNlOjphZG9wdFNvdXJjZShzdGQ6
OnVuaXF1ZV9wdHI8Q1NTRm9udEZhY2VTb3VyY2U+JiYgc291cmNlKQogICAgIEFTU0VSVCghbV9z
b3VyY2VzUG9wdWxhdGVkKTsKIH0KIAorRG9jdW1lbnQqIENTU0ZvbnRGYWNlOjpkb2N1bWVudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZm9udFNlbGVjdG9yID8gbV9mb250U2VsZWN0b3ItPmRv
Y3VtZW50KCkgOiBudWxscHRyOworfQorCiBBbGxvd1VzZXJJbnN0YWxsZWRGb250cyBDU1NGb250
RmFjZTo6YWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSBjb25zdAogewogICAgIGlmIChtX2ZvbnRT
ZWxlY3RvciAmJiBtX2ZvbnRTZWxlY3Rvci0+ZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlLmgKaW5kZXggZTNkMTRiZGY2OTQ5ZWIzZTBiNDUwOGU5MWEzN2IxMGI0N2QzZDAwNi4uOTA3
Zjc5MzYxNTljMGIzZDBiNzZhMTcyZDFhNDUwYTRmOTI5ZDI0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmgKQEAgLTE2NSw2ICsxNjUsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIHNl
dEVycm9yU3RhdGUoKTsKIAorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIENTU0ZvbnRGYWNlKENTU0ZvbnRTZWxlY3RvciosIFN0eWxlUnVsZUZvbnRGYWNl
KiwgRm9udEZhY2UqLCBib29sIGlzTG9jYWxGYWxsYmFjayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
Y3BwCmluZGV4IGUxOGQ2ZjU0MTcxZjFjNzYwMWNhYmQwNWFlODI5OGY3ODQ2NDZjYjQuLjdjYzZk
ZDVlNzUwMmU5YTQ1N2FlN2ZhOWIzMDk2Yzk5Mjk1NDMxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU291cmNlLmgiCiAjaW5jbHVkZSAiQ1NTRm9u
dEZlYXR1cmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkNTU0ZvbnRTdHlsZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgpAQCAtMTQ0LDE0ICsxNDUsMTYgQEAgUmVmPEZv
bnRGYWNlPiBGb250RmFjZTo6Y3JlYXRlKENTU0ZvbnRGYWNlJiBmYWNlKQogfQogCiBGb250RmFj
ZTo6Rm9udEZhY2UoQ1NTRm9udFNlbGVjdG9yJiBmb250U2VsZWN0b3IpCi0gICAgOiBtX2JhY2tp
bmcoQ1NTRm9udEZhY2U6OmNyZWF0ZSgmZm9udFNlbGVjdG9yLCBudWxscHRyLCB0aGlzKSkKKyAg
ICA6IEFjdGl2ZURPTU9iamVjdChmb250U2VsZWN0b3IuZG9jdW1lbnQoKSkKKyAgICAsIG1fYmFj
a2luZyhDU1NGb250RmFjZTo6Y3JlYXRlKCZmb250U2VsZWN0b3IsIG51bGxwdHIsIHRoaXMpKQog
ICAgICwgbV9sb2FkZWRQcm9taXNlKG1ha2VVbmlxdWVSZWY8TG9hZGVkUHJvbWlzZT4oKnRoaXMs
ICZGb250RmFjZTo6bG9hZGVkUHJvbWlzZVJlc29sdmUpKQogewogICAgIG1fYmFja2luZy0+YWRk
Q2xpZW50KCp0aGlzKTsKIH0KIAogRm9udEZhY2U6OkZvbnRGYWNlKENTU0ZvbnRGYWNlJiBmYWNl
KQotICAgIDogbV9iYWNraW5nKGZhY2UpCisgICAgOiBBY3RpdmVET01PYmplY3QoZmFjZS5kb2N1
bWVudCgpKQorICAgICwgbV9iYWNraW5nKGZhY2UpCiAgICAgLCBtX2xvYWRlZFByb21pc2UobWFr
ZVVuaXF1ZVJlZjxMb2FkZWRQcm9taXNlPigqdGhpcywgJkZvbnRGYWNlOjpsb2FkZWRQcm9taXNl
UmVzb2x2ZSkpCiB7CiAgICAgbV9iYWNraW5nLT5hZGRDbGllbnQoKnRoaXMpOwpAQCAtNDM2LDgg
KzQzOSw2IEBAIHZvaWQgRm9udEZhY2U6OmZvbnRTdGF0ZUNoYW5nZWQoQ1NTRm9udEZhY2UmIGZh
Y2UsIENTU0ZvbnRGYWNlOjpTdGF0dXMsIENTU0ZvbnRGCiAgICAgQVNTRVJUX1VOVVNFRChmYWNl
LCAmZmFjZSA9PSBtX2JhY2tpbmcucHRyKCkpOwogICAgIHN3aXRjaCAobmV3U3RhdGUpIHsKICAg
ICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0dXM6OkxvYWRpbmc6Ci0gICAgICAgIC8vIFdlIHN0aWxs
IG5lZWQgdG8gcmVzb2x2ZSBwcm9taXNlcyB3aGVuIGxvYWRpbmcgY29tcGxldGVzLCBldmVuIGlm
IGFsbCByZWZlcmVuY2VzIHRvIHVzZSBoYXZlIGZhbGxlbiBvdXQgb2Ygc2NvcGUuCi0gICAgICAg
IHJlZigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0dXM6OlRp
bWVkT3V0OgogICAgICAgICBicmVhazsKQEAgLTQ0NiwxNCArNDQ3LDEyIEBAIHZvaWQgRm9udEZh
Y2U6OmZvbnRTdGF0ZUNoYW5nZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0
dXMsIENTU0ZvbnRGCiAgICAgICAgIC8vIGdvbmUgdGhyb3VnaCBhIGxvYWQgY3ljbGUsIHdlIGNh
biBzb21ldGltZXMgY29tZSBiYWNrIHRocm91Z2ggaGVyZSBhbmQgdHJ5IHRvIHJlc29sdmUgdGhl
IHByb21pc2UgYWdhaW4uCiAgICAgICAgIGlmICghbV9sb2FkZWRQcm9taXNlLT5pc0Z1bGZpbGxl
ZCgpKQogICAgICAgICAgICAgbV9sb2FkZWRQcm9taXNlLT5yZXNvbHZlKCp0aGlzKTsKLSAgICAg
ICAgZGVyZWYoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1
czo6RmFpbHVyZToKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgc2hvdWxkIG5vdCBiZSBu
ZWVkZWQsIGJ1dCBiZWNhdXNlIEZvbnRGYWNlJ3MgYXJlIHNvbWV0aW1lcyBhZG9wdGVkIGFmdGVy
IHRoZXkgaGF2ZSBhbHJlYWR5CiAgICAgICAgIC8vIGdvbmUgdGhyb3VnaCBhIGxvYWQgY3ljbGUs
IHdlIGNhbiBzb21ldGltZXMgY29tZSBiYWNrIHRocm91Z2ggaGVyZSBhbmQgdHJ5IHRvIHJlc29s
dmUgdGhlIHByb21pc2UgYWdhaW4uCiAgICAgICAgIGlmICghbV9sb2FkZWRQcm9taXNlLT5pc0Z1
bGZpbGxlZCgpKQogICAgICAgICAgICAgbV9sb2FkZWRQcm9taXNlLT5yZWplY3QoRXhjZXB0aW9u
IHsgTmV0d29ya0Vycm9yIH0pOwotICAgICAgICBkZXJlZigpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpQZW5kaW5nOgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTQ2MSwxNSArNDYwLDM0IEBAIHZvaWQgRm9udEZhY2U6OmZvbnRTdGF0
ZUNoYW5nZWQoQ1NTRm9udEZhY2UmIGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0dXMsIENTU0ZvbnRG
CiAgICAgfQogfQogCi1hdXRvIEZvbnRGYWNlOjpsb2FkKCkgLT4gTG9hZGVkUHJvbWlzZSYKK2F1
dG8gRm9udEZhY2U6OmxvYWRGb3JCaW5kaW5ncygpIC0+IExvYWRlZFByb21pc2UmCiB7CisgICAg
bV9tYXlMb2FkZWRQcm9taXNlQmVTY3JpcHRPYnNlcnZhYmxlID0gdHJ1ZTsKICAgICBtX2JhY2tp
bmctPmxvYWQoKTsKICAgICByZXR1cm4gbV9sb2FkZWRQcm9taXNlLmdldCgpOwogfQogCithdXRv
IEZvbnRGYWNlOjpsb2FkZWRGb3JCaW5kaW5ncygpIC0+IExvYWRlZFByb21pc2UmCit7CisgICAg
bV9tYXlMb2FkZWRQcm9taXNlQmVTY3JpcHRPYnNlcnZhYmxlID0gdHJ1ZTsKKyAgICByZXR1cm4g
bV9sb2FkZWRQcm9taXNlLmdldCgpOworfQorCiBGb250RmFjZSYgRm9udEZhY2U6OmxvYWRlZFBy
b21pc2VSZXNvbHZlKCkKIHsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK2NvbnN0IGNoYXIqIEZv
bnRGYWNlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIkZvbnRG
YWNlIjsKK30KKworYm9vbCBGb250RmFjZTo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKK3sK
KyAgICBpZiAoQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuICFpc0NvbnRleHRTdG9wcGVkKCkgJiYgbV9tYXlMb2Fk
ZWRQcm9taXNlQmVTY3JpcHRPYnNlcnZhYmxlICYmICFtX2xvYWRlZFByb21pc2UtPmlzRnVsZmls
bGVkKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggNzlkMDg4MDBmZGI0Y2Q0NWY3
NzVkMjQ1OGM4NDU1YzhkYjE5ZGZhZC4uYjY1YzJkNWU3OWUzMDg4NGI3MzkyNmE0NWJhNzA5NTUx
YjY2YjkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDU1NGb250
RmFjZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJJRExUeXBl
cy5oIgpAQCAtNDEsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7
CiAKLWNsYXNzIEZvbnRGYWNlIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2U+LCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8Rm9udEZhY2U+LCBwcml2YXRlIENTU0ZvbnRGYWNlOjpDbGll
bnQgeworY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFjZT4s
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxGb250RmFjZT4sIHB1YmxpYyBBY3RpdmVET01PYmplY3Qs
IHByaXZhdGUgQ1NTRm9udEZhY2U6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IERlc2Ny
aXB0b3JzIHsKICAgICAgICAgU3RyaW5nIHN0eWxlOwpAQCAtNzcsOCArNzgsOCBAQCBwdWJsaWM6
CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsKIAogICAgIHVzaW5nIExvYWRlZFByb21p
c2UgPSBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrPElETEludGVyZmFjZTxGb250
RmFjZT4+OwotICAgIExvYWRlZFByb21pc2UmIGxvYWRlZCgpIHsgcmV0dXJuIG1fbG9hZGVkUHJv
bWlzZS5nZXQoKTsgfQotICAgIExvYWRlZFByb21pc2UmIGxvYWQoKTsKKyAgICBMb2FkZWRQcm9t
aXNlJiBsb2FkZWRGb3JCaW5kaW5ncygpOworICAgIExvYWRlZFByb21pc2UmIGxvYWRGb3JCaW5k
aW5ncygpOwogCiAgICAgdm9pZCBhZG9wdChDU1NGb250RmFjZSYpOwogCkBAIC05MSwxNCArOTIs
MjAgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgZmluYWwgeyBSZWZDb3VudGVkOjpyZWYoKTsg
fQogICAgIHZvaWQgZGVyZWYoKSBmaW5hbCB7IFJlZkNvdW50ZWQ6OmRlcmVmKCk7IH0KIAorICAg
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CisKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgRm9udEZhY2UoQ1NTRm9udFNlbGVjdG9yJik7CiAgICAgZXhwbGljaXQgRm9udEZh
Y2UoQ1NTRm9udEZhY2UmKTsKKworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBmaW5hbDsKKwogICAgIC8vIENhbGxiYWNrIGZvciBMb2FkZWRQcm9taXNlLgogICAg
IEZvbnRGYWNlJiBsb2FkZWRQcm9taXNlUmVzb2x2ZSgpOwogICAgIHZvaWQgc2V0RXJyb3JTdGF0
ZSgpOwogICAgIFJlZjxDU1NGb250RmFjZT4gbV9iYWNraW5nOwogICAgIFVuaXF1ZVJlZjxMb2Fk
ZWRQcm9taXNlPiBtX2xvYWRlZFByb21pc2U7CisgICAgYm9vbCBtX21heUxvYWRlZFByb21pc2VC
ZVNjcmlwdE9ic2VydmFibGUgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5p
ZGwKaW5kZXggYWFlZWM4NjFiZTFkNzI3NmEwYjU4MTE2YWZmOTFmZmExNjIyOTVhMy4uMTVmY2Vh
OGZkMDI4ZDEzNzg2OWVlNjQwNTU1MDQwMmVhOTJlN2FkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2Uu
aWRsCkBAIC00Miw2ICs0Miw3IEBAIGRpY3Rpb25hcnkgRm9udEZhY2VEZXNjcmlwdG9ycyB7CiB9
OwogCiBbCisgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9j
dW1lbnQsCiAgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIGZhbWlseSwgKERPTVN0cmluZyBvciBC
aW5hcnlEYXRhKSBzb3VyY2UsIG9wdGlvbmFsIEZvbnRGYWNlRGVzY3JpcHRvcnMgZGVzY3JpcHRv
cnMpCiBdIGludGVyZmFjZSBGb250RmFjZSB7CkBAIC01NSw2ICs1Niw2IEBAIGRpY3Rpb25hcnkg
Rm9udEZhY2VEZXNjcmlwdG9ycyB7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRm9udEZhY2VM
b2FkU3RhdHVzIHN0YXR1czsKIAotICAgIFtSZXR1cm5zT3duUHJvbWlzZSwgUHJvbWlzZVByb3h5
XSBQcm9taXNlPEZvbnRGYWNlPiBsb2FkKCk7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFByb21p
c2U8Rm9udEZhY2U+IGxvYWRlZDsKKyAgICBbUmV0dXJuc093blByb21pc2UsIFByb21pc2VQcm94
eSwgSW1wbGVtZW50ZWRBcz1sb2FkRm9yQmluZGluZ3NdIFByb21pc2U8Rm9udEZhY2U+IGxvYWQo
KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1sb2FkZWRGb3JCaW5kaW5nc10gcmVhZG9ubHkgYXR0cmli
dXRlIFByb21pc2U8Rm9udEZhY2U+IGxvYWRlZDsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2RiNjcwYjEwMzYyM2Zi
YmNiMDkyNTM1NmRlMmRlOGZiNDI3ZDc2My4uNDY1MjE5NjIxYTYzNGE2ZTY0YWYwNjI4ZWRmOTBi
M2I5NjY2NzZiOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAyLTI4ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2FyYmFnZSBjb2xsZWN0aW9uIHByZXZl
bnRzIEZvbnRGYWNlLmxvYWRlZCBwcm9taXNlIGZyb20gZ2V0dGluZyByZXNvbHZlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MzgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBj
b3ZlcmFnZS4gVGhhbmtzIHRvIEFsZXhleSBQcm9za3VyeWFrb3YgZm9yIHdyaXRpbmcgdGhlIHRl
c3QuCisKKyAgICAgICAgKiBmYXN0L3RleHQvZm9udC1wcm9taXNlcy1nYy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9mb250LXByb21pc2VzLWdjLmh0bWw6IEFkZGVk
LgorCiAyMDIwLTAyLTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIERlZmxha2UgYW5pbWF0aW9ucy9mb250LXZhcmlhdGlvbnMgdGVzdHMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LXByb21pc2VzLWdjLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LXByb21pc2VzLWdjLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xOTAxMjVhNTk3OWNjYmZhZWVlZjg5OWY1YzgzM2VjMjI2ZWEwZTRmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnQtcHJvbWlzZXMtZ2MtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM0OiBGb250IHN0
YXR1czogdW5sb2FkZWQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzNjogRm9udCBsb2FkZWQKK1Ro
aXMgdGVzdCBzaG91bGQgbm90IHRpbWUgb3V0LCBhbmQgc2hvdWxkIHNheSAiU1VDQ0VTUyIuCitI
ZWxsbworU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnQtcHJv
bWlzZXMtZ2MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LXByb21pc2VzLWdjLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDcwZGMxNWQ5ZDdjMzVjOWQ5NDA4Y2FmMTgyNGFiNGQ3OWE4NDRiYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9mb250LXByb21pc2VzLWdj
Lmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHN0eWxlPgorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICJBaGVtIjsKKyAgICBzcmM6
IHVybCgiLi4vLi4vcmVzb3VyY2VzL0FoZW0udHRmIik7Cit9CisjYm94IHsKKyAgICBmb250OiAx
MDBweCAiQWhlbSI7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cHJlPlRoaXMgdGVz
dCBzaG91bGQgbm90IHRpbWUgb3V0LCBhbmQgc2hvdWxkIHNheSAiU1VDQ0VTUyIuPC9wcmU+Cis8
ZGl2IGlkPSJib3giPkhlbGxvPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPldhaXRpbmcuLi48L2Rp
dj4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAodHlwZW9mIEdDQ29udHJv
bGxlciAhPT0gInVuZGVmaW5lZCIpCisgICAgICAgIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Cit9
CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgcHJvbWlzZXMgPSBb
XTsKKworZG9jdW1lbnQuZm9udHMuZm9yRWFjaChmdW5jdGlvbihmKSB7CisgICAgY29uc29sZS5s
b2coIkZvbnQgc3RhdHVzOiAiICsgZi5zdGF0dXMpOworICAgIHByb21pc2VzLnB1c2goZi5sb2Fk
ZWQpOworICAgIGYubG9hZGVkLnRoZW4oZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCJGb250IGxv
YWRlZCIpOyB9KTsKKyAgICBnYygpOworfSk7CisKK3NldEludGVydmFsKGdjLCAxMCk7CisKK1By
b21pc2UuYWxsKHByb21pc2VzKS50aGVuKGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9ICJTVUNDRVNTIjsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSk7CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392031</attachid>
            <date>2020-02-28 16:26:25 -0800</date>
            <delta_ts>2020-02-28 17:48:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208382-20200228162624.patch</filename>
            <type>text/plain</type>
            <size>11563</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA5Y2M5Y2YyY2E2NzUy
MzY4OGYxOWVkMTRlZGIxMmM1NzRhZWQ5ZC4uMjY2MTk2NTQ2Y2MxMzZmMGZlNTQ1MDUyYmYwZWIz
OWM4ZjFjNGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAyLTI4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2FyYmFnZSBjb2xsZWN0aW9u
IHByZXZlbnRzIEZvbnRGYWNlLmxvYWRlZCBwcm9taXNlIGZyb20gZ2V0dGluZyByZXNvbHZlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIE1ha2Ugc3VyZSB0
aGUgRm9udEZhY2UgSlMgd3JhcHBlciBzdGF5cyBhbGl2ZSBsb25nIGVub3VnaCB0byByZXNvbHZl
IHRoZQorICAgICAgICBsb2FkZWQgcHJvbWlzZSB3aGVuIGl0IGlzIG9ic2VydmFibGUgYnkgdGhl
IHBhZ2UncyBzY3JpcHQuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L2ZvbnQtcHJvbWlzZXMt
Z2MuaHRtbAorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlOjpkb2N1bWVudCBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0ZvbnRG
YWNlLmg6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRGYWNlOjpGb250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6Zm9udFN0YXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6bG9hZEZvckJpbmRpbmdzKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpsb2FkZWRGb3JCaW5kaW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpGb250RmFjZTo6YWN0aXZlRE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpGb250RmFjZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlOjpsb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvRm9udEZh
Y2UuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhY2UuaWRsOgorCiAyMDIwLTAyLTI4ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQXSBJbXBsZW1lbnQgTW9k
ZXJuIEVNRSBBUEkgaW4gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNw
cAppbmRleCAzYzVkMGFkMTY5M2U3NDdiOTYzZjU0OGQ1NzJkZTYzMTVhM2YzOGZmLi45YmM4MzBh
N2UzMmQ2ODJkYTVhMDQ2YWY2OWRjOTEzM2JhNjM5MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZS5jcHAKQEAgLTQ0OSw2ICs0NDksMTEgQEAgdm9pZCBDU1NGb250RmFjZTo6YWRvcHRTb3Vy
Y2Uoc3RkOjp1bmlxdWVfcHRyPENTU0ZvbnRGYWNlU291cmNlPiYmIHNvdXJjZSkKICAgICBBU1NF
UlQoIW1fc291cmNlc1BvcHVsYXRlZCk7CiB9CiAKK0RvY3VtZW50KiBDU1NGb250RmFjZTo6ZG9j
dW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZvbnRTZWxlY3RvciA/IG1fZm9udFNlbGVj
dG9yLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKK30KKwogQWxsb3dVc2VySW5zdGFsbGVkRm9udHMg
Q1NTRm9udEZhY2U6OmFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkgY29uc3QKIHsKICAgICBpZiAo
bV9mb250U2VsZWN0b3IgJiYgbV9mb250U2VsZWN0b3ItPmRvY3VtZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5oCmluZGV4IGUzZDE0YmRmNjk0OWViM2UwYjQ1MDhlOTFhMzdiMTBiNDdkM2Qw
MDYuLjkwN2Y3OTM2MTU5YzBiM2QwYjc2YTE3MmQxYTQ1MGE0ZjkyOWQyNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZS5oCkBAIC0xNjUsNiArMTY1LDggQEAgcHVibGljOgogI2VuZGlmCiAgICAg
dm9pZCBzZXRFcnJvclN0YXRlKCk7CiAKKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICBDU1NGb250RmFjZShDU1NGb250U2VsZWN0b3IqLCBTdHlsZVJ1bGVG
b250RmFjZSosIEZvbnRGYWNlKiwgYm9vbCBpc0xvY2FsRmFsbGJhY2spOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcAppbmRleCBlMThkNmY1NDE3MWYxYzc2MDFjYWJkMDVhZTgyOThmNzg0NjQ2Y2I0
Li42NWQ5YWNkZGIwYjI2N2ZhYzUxZDQ0NTUwOWJlNWVkYWJhYmUwZGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVNvdXJjZS5oIgogI2luY2x1ZGUg
IkNTU0ZvbnRGZWF0dXJlVmFsdWUuaCIKKyNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNp
bmNsdWRlICJDU1NGb250U3R5bGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKQEAgLTYzLDYgKzY0LDcgQEAgdm9p
ZCBGb250RmFjZTo6c2V0RXJyb3JTdGF0ZSgpCiBSZWY8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhbWlseSwgU291cmNlJiYgc291
cmNlLCBjb25zdCBEZXNjcmlwdG9ycyYgZGVzY3JpcHRvcnMpCiB7CiAgICAgYXV0byByZXN1bHQg
PSBhZG9wdFJlZigqbmV3IEZvbnRGYWNlKGRvY3VtZW50LmZvbnRTZWxlY3RvcigpKSk7CisgICAg
cmVzdWx0LT5zdXNwZW5kSWZOZWVkZWQoKTsKIAogICAgIGJvb2wgZGF0YVJlcXVpcmVzQXN5bmNo
cm9ub3VzTG9hZGluZyA9IHRydWU7CiAKQEAgLTE0MCwxOCArMTQyLDIyIEBAIFJlZjxGb250RmFj
ZT4gRm9udEZhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZmFt
aWx5LCBTb3VyY2UmCiAKIFJlZjxGb250RmFjZT4gRm9udEZhY2U6OmNyZWF0ZShDU1NGb250RmFj
ZSYgZmFjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250RmFjZShmYWNlKSk7Cisg
ICAgYXV0byBmb250RmFjZSA9IGFkb3B0UmVmKCpuZXcgRm9udEZhY2UoZmFjZSkpOworICAgIGZv
bnRGYWNlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZm9udEZhY2U7CiB9CiAKIEZv
bnRGYWNlOjpGb250RmFjZShDU1NGb250U2VsZWN0b3ImIGZvbnRTZWxlY3RvcikKLSAgICA6IG1f
YmFja2luZyhDU1NGb250RmFjZTo6Y3JlYXRlKCZmb250U2VsZWN0b3IsIG51bGxwdHIsIHRoaXMp
KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGZvbnRTZWxlY3Rvci5kb2N1bWVudCgpKQorICAgICwg
bV9iYWNraW5nKENTU0ZvbnRGYWNlOjpjcmVhdGUoJmZvbnRTZWxlY3RvciwgbnVsbHB0ciwgdGhp
cykpCiAgICAgLCBtX2xvYWRlZFByb21pc2UobWFrZVVuaXF1ZVJlZjxMb2FkZWRQcm9taXNlPigq
dGhpcywgJkZvbnRGYWNlOjpsb2FkZWRQcm9taXNlUmVzb2x2ZSkpCiB7CiAgICAgbV9iYWNraW5n
LT5hZGRDbGllbnQoKnRoaXMpOwogfQogCiBGb250RmFjZTo6Rm9udEZhY2UoQ1NTRm9udEZhY2Um
IGZhY2UpCi0gICAgOiBtX2JhY2tpbmcoZmFjZSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChmYWNl
LmRvY3VtZW50KCkpCisgICAgLCBtX2JhY2tpbmcoZmFjZSkKICAgICAsIG1fbG9hZGVkUHJvbWlz
ZShtYWtlVW5pcXVlUmVmPExvYWRlZFByb21pc2U+KCp0aGlzLCAmRm9udEZhY2U6OmxvYWRlZFBy
b21pc2VSZXNvbHZlKSkKIHsKICAgICBtX2JhY2tpbmctPmFkZENsaWVudCgqdGhpcyk7CkBAIC00
MzYsOCArNDQyLDYgQEAgdm9pZCBGb250RmFjZTo6Zm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFj
ZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NTRm9udEYKICAgICBBU1NFUlRfVU5VU0VE
KGZhY2UsICZmYWNlID09IG1fYmFja2luZy5wdHIoKSk7CiAgICAgc3dpdGNoIChuZXdTdGF0ZSkg
ewogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGluZzoKLSAgICAgICAgLy8gV2Ug
c3RpbGwgbmVlZCB0byByZXNvbHZlIHByb21pc2VzIHdoZW4gbG9hZGluZyBjb21wbGV0ZXMsIGV2
ZW4gaWYgYWxsIHJlZmVyZW5jZXMgdG8gdXNlIGhhdmUgZmFsbGVuIG91dCBvZiBzY29wZS4KLSAg
ICAgICAgcmVmKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1
czo6VGltZWRPdXQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDQ2LDE0ICs0NTAsMTIgQEAgdm9pZCBG
b250RmFjZTo6Zm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6
OlN0YXR1cywgQ1NTRm9udEYKICAgICAgICAgLy8gZ29uZSB0aHJvdWdoIGEgbG9hZCBjeWNsZSwg
d2UgY2FuIHNvbWV0aW1lcyBjb21lIGJhY2sgdGhyb3VnaCBoZXJlIGFuZCB0cnkgdG8gcmVzb2x2
ZSB0aGUgcHJvbWlzZSBhZ2Fpbi4KICAgICAgICAgaWYgKCFtX2xvYWRlZFByb21pc2UtPmlzRnVs
ZmlsbGVkKCkpCiAgICAgICAgICAgICBtX2xvYWRlZFByb21pc2UtPnJlc29sdmUoKnRoaXMpOwot
ICAgICAgICBkZXJlZigpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NGb250RmFjZTo6
U3RhdHVzOjpGYWlsdXJlOgogICAgICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzaG91bGQgbm90
IGJlIG5lZWRlZCwgYnV0IGJlY2F1c2UgRm9udEZhY2UncyBhcmUgc29tZXRpbWVzIGFkb3B0ZWQg
YWZ0ZXIgdGhleSBoYXZlIGFscmVhZHkKICAgICAgICAgLy8gZ29uZSB0aHJvdWdoIGEgbG9hZCBj
eWNsZSwgd2UgY2FuIHNvbWV0aW1lcyBjb21lIGJhY2sgdGhyb3VnaCBoZXJlIGFuZCB0cnkgdG8g
cmVzb2x2ZSB0aGUgcHJvbWlzZSBhZ2Fpbi4KICAgICAgICAgaWYgKCFtX2xvYWRlZFByb21pc2Ut
PmlzRnVsZmlsbGVkKCkpCiAgICAgICAgICAgICBtX2xvYWRlZFByb21pc2UtPnJlamVjdChFeGNl
cHRpb24geyBOZXR3b3JrRXJyb3IgfSk7Ci0gICAgICAgIGRlcmVmKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0dXM6OlBlbmRpbmc6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDYxLDE1ICs0NjMsMzQgQEAgdm9pZCBGb250RmFjZTo6Zm9u
dFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NT
Rm9udEYKICAgICB9CiB9CiAKLWF1dG8gRm9udEZhY2U6OmxvYWQoKSAtPiBMb2FkZWRQcm9taXNl
JgorYXV0byBGb250RmFjZTo6bG9hZEZvckJpbmRpbmdzKCkgLT4gTG9hZGVkUHJvbWlzZSYKIHsK
KyAgICBtX21heUxvYWRlZFByb21pc2VCZVNjcmlwdE9ic2VydmFibGUgPSB0cnVlOwogICAgIG1f
YmFja2luZy0+bG9hZCgpOwogICAgIHJldHVybiBtX2xvYWRlZFByb21pc2UuZ2V0KCk7CiB9CiAK
K2F1dG8gRm9udEZhY2U6OmxvYWRlZEZvckJpbmRpbmdzKCkgLT4gTG9hZGVkUHJvbWlzZSYKK3sK
KyAgICBtX21heUxvYWRlZFByb21pc2VCZVNjcmlwdE9ic2VydmFibGUgPSB0cnVlOworICAgIHJl
dHVybiBtX2xvYWRlZFByb21pc2UuZ2V0KCk7Cit9CisKIEZvbnRGYWNlJiBGb250RmFjZTo6bG9h
ZGVkUHJvbWlzZVJlc29sdmUoKQogewogICAgIHJldHVybiAqdGhpczsKIH0KIAorY29uc3QgY2hh
ciogRm9udEZhY2U6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAi
Rm9udEZhY2UiOworfQorCitib29sIEZvbnRGYWNlOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dAoreworICAgIGlmIChBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gIWlzQ29udGV4dFN0b3BwZWQoKSAmJiBtX21h
eUxvYWRlZFByb21pc2VCZVNjcmlwdE9ic2VydmFibGUgJiYgIW1fbG9hZGVkUHJvbWlzZS0+aXNG
dWxmaWxsZWQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCA3OWQwODgwMGZkYjRj
ZDQ1Zjc3NWQyNDU4Yzg0NTVjOGRiMTlkZmFkLi5iNjVjMmQ1ZTc5ZTMwODg0YjczOTI2YTQ1YmE3
MDk1NTFiNjZiOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNT
U0ZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIklE
TFR5cGVzLmgiCkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxh
dGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxs
YmFjazsKIAotY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFj
ZT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxGb250RmFjZT4sIHByaXZhdGUgQ1NTRm9udEZhY2U6
OkNsaWVudCB7CitjbGFzcyBGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRG
YWNlPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEZvbnRGYWNlPiwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCwgcHJpdmF0ZSBDU1NGb250RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3Qg
RGVzY3JpcHRvcnMgewogICAgICAgICBTdHJpbmcgc3R5bGU7CkBAIC03Nyw4ICs3OCw4IEBAIHB1
YmxpYzoKICAgICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCiAgICAgdXNpbmcgTG9hZGVk
UHJvbWlzZSA9IERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s8SURMSW50ZXJmYWNl
PEZvbnRGYWNlPj47Ci0gICAgTG9hZGVkUHJvbWlzZSYgbG9hZGVkKCkgeyByZXR1cm4gbV9sb2Fk
ZWRQcm9taXNlLmdldCgpOyB9Ci0gICAgTG9hZGVkUHJvbWlzZSYgbG9hZCgpOworICAgIExvYWRl
ZFByb21pc2UmIGxvYWRlZEZvckJpbmRpbmdzKCk7CisgICAgTG9hZGVkUHJvbWlzZSYgbG9hZEZv
ckJpbmRpbmdzKCk7CiAKICAgICB2b2lkIGFkb3B0KENTU0ZvbnRGYWNlJik7CiAKQEAgLTkxLDE0
ICs5MiwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWYoKSBmaW5hbCB7IFJlZkNvdW50ZWQ6OnJl
ZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGZpbmFsIHsgUmVmQ291bnRlZDo6ZGVyZWYoKTsgfQog
CisgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBGb250RmFjZShDU1NGb250U2VsZWN0b3ImKTsKICAgICBleHBsaWNpdCBG
b250RmFjZShDU1NGb250RmFjZSYpOworCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOworCiAgICAgLy8gQ2FsbGJhY2sgZm9yIExvYWRlZFByb21pc2Uu
CiAgICAgRm9udEZhY2UmIGxvYWRlZFByb21pc2VSZXNvbHZlKCk7CiAgICAgdm9pZCBzZXRFcnJv
clN0YXRlKCk7CiAgICAgUmVmPENTU0ZvbnRGYWNlPiBtX2JhY2tpbmc7CiAgICAgVW5pcXVlUmVm
PExvYWRlZFByb21pc2U+IG1fbG9hZGVkUHJvbWlzZTsKKyAgICBib29sIG1fbWF5TG9hZGVkUHJv
bWlzZUJlU2NyaXB0T2JzZXJ2YWJsZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmlkbAppbmRleCBhYWVlYzg2MWJlMWQ3Mjc2YTBiNTgxMTZhZmY5MWZmYTE2MjI5NWEzLi4x
NWZjZWE4ZmQwMjhkMTM3ODY5ZWU2NDA1NTUwNDAyZWE5MmU3YWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5pZGwKQEAgLTQyLDYgKzQyLDcgQEAgZGljdGlvbmFyeSBGb250RmFjZURlc2NyaXB0b3Jz
IHsKIH07CiAKIFsKKyAgICBBY3RpdmVET01PYmplY3QsCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0
aD1Eb2N1bWVudCwKICAgICBDb25zdHJ1Y3RvcihET01TdHJpbmcgZmFtaWx5LCAoRE9NU3RyaW5n
IG9yIEJpbmFyeURhdGEpIHNvdXJjZSwgb3B0aW9uYWwgRm9udEZhY2VEZXNjcmlwdG9ycyBkZXNj
cmlwdG9ycykKIF0gaW50ZXJmYWNlIEZvbnRGYWNlIHsKQEAgLTU1LDYgKzU2LDYgQEAgZGljdGlv
bmFyeSBGb250RmFjZURlc2NyaXB0b3JzIHsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGb250
RmFjZUxvYWRTdGF0dXMgc3RhdHVzOwogCi0gICAgW1JldHVybnNPd25Qcm9taXNlLCBQcm9taXNl
UHJveHldIFByb21pc2U8Rm9udEZhY2U+IGxvYWQoKTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
UHJvbWlzZTxGb250RmFjZT4gbG9hZGVkOworICAgIFtSZXR1cm5zT3duUHJvbWlzZSwgUHJvbWlz
ZVByb3h5LCBJbXBsZW1lbnRlZEFzPWxvYWRGb3JCaW5kaW5nc10gUHJvbWlzZTxGb250RmFjZT4g
bG9hZCgpOworICAgIFtJbXBsZW1lbnRlZEFzPWxvYWRlZEZvckJpbmRpbmdzXSByZWFkb25seSBh
dHRyaWJ1dGUgUHJvbWlzZTxGb250RmFjZT4gbG9hZGVkOwogfTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMmQxYTlkZWE5
OTY5ZTc2N2Y3NWRhM2VmNGY3ZWZlYmMwZDEyZTE1Li4yZWM4ZjY3MjllZGIxMzJiYzkyMGNjYmFh
Njk1NzBmODVmZDRkMjUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDItMjggIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBHYXJiYWdlIGNvbGxlY3Rpb24g
cHJldmVudHMgRm9udEZhY2UubG9hZGVkIHByb21pc2UgZnJvbSBnZXR0aW5nIHJlc29sdmVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzODIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgQWRkIGxheW91dCB0
ZXN0IGNvdmVyYWdlLiBUaGFua3MgdG8gQWxleGV5IFByb3NrdXJ5YWtvdiBmb3Igd3JpdGluZyB0
aGUgdGVzdC4KKworICAgICAgICAqIGZhc3QvdGV4dC9mb250LXByb21pc2VzLWdjLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L2ZvbnQtcHJvbWlzZXMtZ2MuaHRtbDog
QWRkZWQuCisKIDIwMjAtMDItMjggIEphY29iIFVwaG9mZiAgPGphY29iX3VwaG9mZkBhcHBsZS5j
b20+CiAKICAgICAgICAgWyBtYWNPUyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL25vZGVzL0RvY3VtZW50LWNoYXJhY3RlclNldC1ub3JtYWxpemF0aW9uLmh0bWwgaXMgZmxh
a3kgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnQtcHJvbWlz
ZXMtZ2MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ZvbnQtcHJvbWlzZXMt
Z2MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MDEyNWE1OTc5Y2NiZmFlZWVmODk5ZjVjODMz
ZWMyMjZlYTBlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvZm9u
dC1wcm9taXNlcy1nYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMzQ6IEZvbnQgc3RhdHVzOiB1bmxvYWRlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDM2OiBGb250IGxvYWRlZAorVGhpcyB0ZXN0IHNob3VsZCBub3QgdGltZSBvdXQsIGFuZCBzaG91
bGQgc2F5ICJTVUNDRVNTIi4KK0hlbGxvCitTVUNDRVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvZm9udC1wcm9taXNlcy1nYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L2ZvbnQtcHJvbWlzZXMtZ2MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzBkYzE1ZDlkN2MzNWM5ZDk0MDhj
YWYxODI0YWI0ZDc5YTg0NGJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L2ZvbnQtcHJvbWlzZXMtZ2MuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitAZm9udC1mYWNlIHsKKyAgICBmb250LWZhbWls
eTogIkFoZW0iOworICAgIHNyYzogdXJsKCIuLi8uLi9yZXNvdXJjZXMvQWhlbS50dGYiKTsKK30K
KyNib3ggeworICAgIGZvbnQ6IDEwMHB4ICJBaGVtIjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwcmU+VGhpcyB0ZXN0IHNob3VsZCBub3QgdGltZSBvdXQsIGFuZCBzaG91bGQgc2F5
ICJTVUNDRVNTIi48L3ByZT4KKzxkaXYgaWQ9ImJveCI+SGVsbG88L2Rpdj4KKzxkaXYgaWQ9InJl
c3VsdCI+V2FpdGluZy4uLjwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24gZ2MoKQoreworICAg
IGlmICh0eXBlb2YgR0NDb250cm9sbGVyICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgR0NDb250
cm9sbGVyLmNvbGxlY3QoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9
CisKK3ZhciBwcm9taXNlcyA9IFtdOworCitkb2N1bWVudC5mb250cy5mb3JFYWNoKGZ1bmN0aW9u
KGYpIHsKKyAgICBjb25zb2xlLmxvZygiRm9udCBzdGF0dXM6ICIgKyBmLnN0YXR1cyk7CisgICAg
cHJvbWlzZXMucHVzaChmLmxvYWRlZCk7CisgICAgZi5sb2FkZWQudGhlbihmdW5jdGlvbigpIHsg
Y29uc29sZS5sb2coIkZvbnQgbG9hZGVkIik7IH0pOworICAgIGdjKCk7Cit9KTsKKworc2V0SW50
ZXJ2YWwoZ2MsIDEwKTsKKworUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oZnVuY3Rpb24oKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gIlNV
Q0NFU1MiOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Cit9KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>