<?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>112441</bug_id>
          
          <creation_ts>2013-03-15 06:37:50 -0700</creation_ts>
          <short_desc>Move font-family applying code to StyleBuilder</short_desc>
          <delta_ts>2013-03-17 10:16:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>89879</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>855952</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2013-03-15 06:37:50 -0700</bug_when>
    <thetext>Many of the font related properties were moved to StyleBuilder in r87362 two years ago. Move font-family as well so that all font properties are handled the same way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855985</commentid>
    <comment_count>1</comment_count>
      <attachid>193305</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2013-03-15 07:36:53 -0700</bug_when>
    <thetext>Created attachment 193305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856010</commentid>
    <comment_count>2</comment_count>
      <attachid>193305</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-15 08:42:04 -0700</bug_when>
    <thetext>Comment on attachment 193305
Patch

Attachment 193305 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17232041

New failing tests:
css3/selectors3/xml/css3-modsel-24.xml
accessibility/radio-button-group-members.html
css3/selectors3/xhtml/css3-modsel-24.xml
css1/box_properties/acid_test.html
css3/selectors3/xml/css3-modsel-64.xml
css3/selectors3/xhtml/css3-modsel-68.xml
css2.1/t09-c5526c-display-00-e.html
css3/selectors3/xhtml/css3-modsel-161.xml
css3/selectors3/xml/css3-modsel-70.xml
css3/selectors3/xhtml/css3-modsel-23.xml
css3/selectors3/html/css3-modsel-64.html
css3/selectors3/html/css3-modsel-24.html
css3/selectors3/xhtml/css3-modsel-64.xml
compositing/overflow/theme-affects-visual-overflow.html
css3/selectors3/xhtml/css3-modsel-70.xml
css3/selectors3/xml/css3-modsel-23.xml
css3/selectors3/xml/css3-modsel-19b.xml
css3/selectors3/html/css3-modsel-161.html
css3/selectors3/xml/css3-modsel-25.xml
css3/selectors3/xhtml/css3-modsel-25.xml
css3/selectors3/html/css3-modsel-23.html
css3/selectors3/xml/css3-modsel-68.xml
css3/selectors3/xhtml/css3-modsel-19b.xml
css3/selectors3/html/css3-modsel-19b.html
css3/selectors3/xhtml/css3-modsel-69.xml
css3/selectors3/html/css3-modsel-69.html
css3/selectors3/html/css3-modsel-70.html
css3/selectors3/html/css3-modsel-25.html
css3/selectors3/html/css3-modsel-68.html
css3/selectors3/xml/css3-modsel-69.xml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856020</commentid>
    <comment_count>3</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-15 08:58:36 -0700</bug_when>
    <thetext>Where did all the logic from the &apos;CSSPropertyFont&apos; case go? Is that not necessary any more?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856064</commentid>
    <comment_count>4</comment_count>
      <attachid>193305</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 10:09:49 -0700</bug_when>
    <thetext>Comment on attachment 193305
Patch

Attachment 193305 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17066612

New failing tests:
css3/selectors3/xml/css3-modsel-24.xml
editing/pasteboard/4806874.html
css3/selectors3/xhtml/css3-modsel-24.xml
http/tests/cache/subresource-failover-to-network.html
css3/selectors3/xml/css3-modsel-64.xml
css3/selectors3/html/css3-modsel-24.html
css3/selectors3/html/css3-modsel-64.html
css3/selectors3/html/css3-modsel-68.html
css3/selectors3/xhtml/css3-modsel-64.xml
css3/selectors3/xml/css3-modsel-23.xml
editing/selection/3690703-2.html
editing/input/caret-at-the-edge-of-input.html
css3/selectors3/xhtml/css3-modsel-69.xml
css3/selectors3/xml/css3-modsel-19b.xml
css3/selectors3/xml/css3-modsel-161.xml
css3/flexbox/button.html
css3/selectors3/xml/css3-modsel-69.xml
css3/selectors3/html/css3-modsel-161.html
css3/selectors3/xhtml/css3-modsel-19b.xml
editing/inserting/before-after-input-element.html
css3/selectors3/html/css3-modsel-23.html
css3/selectors3/xml/css3-modsel-68.xml
css3/selectors3/html/css3-modsel-69.html
css2.1/20110323/replaced-elements-001.htm
css3/selectors3/html/css3-modsel-19b.html
css3/selectors3/xhtml/css3-modsel-68.xml
editing/selection/3690703.html
editing/pasteboard/4641033.html
css3/selectors3/xhtml/css3-modsel-23.xml
css3/selectors3/xhtml/css3-modsel-161.xml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856159</commentid>
    <comment_count>5</comment_count>
      <attachid>193305</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-03-15 11:55:44 -0700</bug_when>
    <thetext>Comment on attachment 193305
Patch

The idea seems fine.  Looks like you have some failures, so marking r-.  This makes me realize that we need to come up with some pretty pictures explaining all the classes in the style system like how we did for the HTML parser and loaders subsystems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856708</commentid>
    <comment_count>6</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2013-03-17 08:21:27 -0700</bug_when>
    <thetext>Oops, bad merge. Will upload a new patch that passes the tests in a minute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856709</commentid>
    <comment_count>7</comment_count>
      <attachid>193466</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2013-03-17 08:22:19 -0700</bug_when>
    <thetext>Created attachment 193466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856720</commentid>
    <comment_count>8</comment_count>
      <attachid>193466</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2013-03-17 10:05:48 -0700</bug_when>
    <thetext>Comment on attachment 193466
Patch

Thanks Allan!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856725</commentid>
    <comment_count>9</comment_count>
      <attachid>193466</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-17 10:16:52 -0700</bug_when>
    <thetext>Comment on attachment 193466
Patch

Clearing flags on attachment: 193466

Committed r146014: &lt;http://trac.webkit.org/changeset/146014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856726</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-17 10:16:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193305</attachid>
            <date>2013-03-15 07:36:53 -0700</date>
            <delta_ts>2013-03-17 08:22:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17273</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAzLTE1ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIGZvbnQtZmFtaWx5IGFw
cGx5aW5nIGNvZGUgdG8gU3R5bGVCdWlsZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI0NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYW55IG9mIHRoZSBmb250IHJlbGF0ZWQgcHJvcGVydGllcyB3
ZXJlIG1vdmVkIHRvIFN0eWxlQnVpbGRlciBpbiByODczNjIKKyAgICAgICAgdHdvIHllYXJzIGFn
by4gTW92ZSBmb250LWZhbWlseSBhcyB3ZWxsIHNvIHRoYXQgYWxsIGZvbnQgcHJvcGVydGllcyBh
cmUKKyAgICAgICAgaGFuZGxlZCB0aGUgc2FtZSB3YXkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGNzcy9TdHlsZUJ1aWxk
ZXIuY3BwOgorICAgICAgICAoQXBwbHlQcm9wZXJ0eUZvbnRGYW1pbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRGYW1pbHk6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250RmFtaWx5OjphcHBseUluaXRpYWxWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udEZhbWlseTo6YXBwbHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udEZhbWlseTo6Y3JlYXRlSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcik6CisgICAg
ICAgIEFkZCBBcHBseVByb3BlcnR5Rm9udEZhbWlseSBmb3IgQ1NTUHJvcGVydHlGb250RmFtaWx5
LgorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIFJlbW92ZSBDU1NQcm9wZXJ0
eUZvbnRGYW1pbHkgZnJvbSB0aGUgZ2lhbnQgc3dpdGNoIHN0YXRlbWVudC4KKwogMjAxMy0wMy0x
NSAgU2Fua2VlcnRoIFYgUyAgPHNhbmtlZXJ0aC52c0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBE
YXRhR3JpZCBzaG91bGQgcmV2ZWFsIGFuZCBzZWxlY3QgbmV4dC9wcmV2aW91cyBEYXRhR3JpZE5v
ZGUgdXBvbiBkZWxldGlvbiBvZiBzZWxlY3RlZCBub2RlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyLmNwcAkocmV2aXNpb24gMTQ1ODAzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw2ICs2NTcsMTIwIEBACiAgICAg
c3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlI
YW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1
ZSk7IH0KIH07CiAKK2NsYXNzIEFwcGx5UHJvcGVydHlGb250RmFtaWx5IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29s
dmVyKiBzdHlsZVJlc29sdmVyKQorICAgIHsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnRE
ZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOwor
ICAgICAgICBGb250RGVzY3JpcHRpb24gcGFyZW50Rm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNv
bHZlci0+cGFyZW50U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgIAorICAgICAg
ICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShwYXJlbnRGb250RGVzY3JpcHRpb24u
Z2VuZXJpY0ZhbWlseSgpKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlseShwYXJl
bnRGb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKSk7CisgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRJc1NwZWNpZmllZEZvbnQocGFyZW50Rm9udERlc2NyaXB0aW9uLmlzU3BlY2lmaWVkRm9u
dCgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNj
cmlwdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eUluaXRpYWxWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVy
KQorICAgIHsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBGb250RGVzY3Jp
cHRpb24gaW5pdGlhbERlc2MgPSBGb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgCisgICAgICAg
IC8vIFdlIG5lZWQgdG8gYWRqdXN0IHRoZSBzaXplIHRvIGFjY291bnQgZm9yIHRoZSBnZW5lcmlj
IGZhbWlseSBjaGFuZ2UgZnJvbSBtb25vc3BhY2UgdG8gbm9uLW1vbm9zcGFjZS4KKyAgICAgICAg
aWYgKGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpICYmIGZvbnREZXNjcmlwdGlvbi51c2VG
aXhlZERlZmF1bHRTaXplKCkpCisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250U2l6
ZShmb250RGVzY3JpcHRpb24sIHN0eWxlUmVzb2x2ZXItPmZvbnRTaXplRm9yS2V5d29yZChzdHls
ZVJlc29sdmVyLT5kb2N1bWVudCgpLCBDU1NWYWx1ZVh4U21hbGwgKyBmb250RGVzY3JpcHRpb24u
a2V5d29yZFNpemUoKSAtIDEsIGZhbHNlKSk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRH
ZW5lcmljRmFtaWx5KGluaXRpYWxEZXNjLmdlbmVyaWNGYW1pbHkoKSk7CisgICAgICAgIGlmICgh
aW5pdGlhbERlc2MuZmlyc3RGYW1pbHkoKS5mYW1pbHlJc0VtcHR5KCkpCisgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0RmFtaWx5KGluaXRpYWxEZXNjLmZpcnN0RmFtaWx5KCkpOworCisg
ICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShD
U1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSogdmFs
dWUpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgRm9udEZh
bWlseSYgZmlyc3RGYW1pbHkgPSBmb250RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKTsKKyAgICAg
ICAgRm9udEZhbWlseSogY3VyckZhbWlseSA9IDA7CisKKyAgICAgICAgLy8gQmVmb3JlIG1hcHBp
bmcgaW4gYSBuZXcgZm9udC1mYW1pbHkgcHJvcGVydHksIHdlIHNob3VsZCByZXNldCB0aGUgZ2Vu
ZXJpYyBmYW1pbHkuCisgICAgICAgIGJvb2wgb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUg
PSBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgpOworICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246Ok5vRmFtaWx5KTsKKwor
ICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2YWx1ZTsgaS5oYXNNb3JlKCk7
IGkuYWR2YW5jZSgpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGkudmFsdWUoKTsK
KyAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnRlbnRWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRlbSk7CisgICAgICAgICAgICBB
dG9taWNTdHJpbmcgZmFjZTsKKyAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IHN0eWxl
UmVzb2x2ZXItPmRvY3VtZW50KCktPnNldHRpbmdzKCk7CisgICAgICAgICAgICBpZiAoY29udGVu
dFZhbHVlLT5pc1N0cmluZygpKQorICAgICAgICAgICAgICAgIGZhY2UgPSBjb250ZW50VmFsdWUt
PmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncykgeworICAg
ICAgICAgICAgICAgIHN3aXRjaCAoY29udGVudFZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJvZHk6CisgICAgICAgICAgICAgICAgICAgIGZh
Y2UgPSBzZXR0aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVTZXJpZjoKKyAgICAgICAgICAg
ICAgICAgICAgZmFjZSA9IHNlcmlmRmFtaWx5OworICAgICAgICAgICAgICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlNlcmlmRmFtaWx5KTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZVNhbnNTZXJpZjoKKyAgICAgICAgICAgICAgICAgICAgZmFjZSA9IHNhbnNTZXJpZkZhbWlseTsK
KyAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9u
dERlc2NyaXB0aW9uOjpTYW5zU2VyaWZGYW1pbHkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQ3Vyc2l2ZToKKyAgICAgICAgICAgICAg
ICAgICAgZmFjZSA9IGN1cnNpdmVGYW1pbHk7CisgICAgICAgICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6Q3Vyc2l2ZUZhbWlseSk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVGYW50YXN5OgorICAgICAgICAgICAgICAgICAgICBmYWNlID0gZmFudGFzeUZhbWlseTsKKyAg
ICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERl
c2NyaXB0aW9uOjpGYW50YXN5RmFtaWx5KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU1vbm9zcGFjZToKKyAgICAgICAgICAgICAgICAg
ICAgZmFjZSA9IG1vbm9zcGFjZUZhbWlseTsKKyAgICAgICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHkp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlV2Via2l0UGljdG9ncmFwaDoKKyAgICAgICAgICAgICAgICAgICAgZmFjZSA9IHBpY3RvZ3Jh
cGhGYW1pbHk7CisgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmlj
RmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6UGljdG9ncmFwaEZhbWlseSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKCFmYWNlLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGlmICghY3VyckZh
bWlseSkgeworICAgICAgICAgICAgICAgICAgICAvLyBGaWxsaW5nIGluIHRoZSBmaXJzdCBmYW1p
bHkuCisgICAgICAgICAgICAgICAgICAgIGZpcnN0RmFtaWx5LnNldEZhbWlseShmYWNlKTsKKyAg
ICAgICAgICAgICAgICAgICAgZmlyc3RGYW1pbHkuYXBwZW5kRmFtaWx5KDApOyAvLyBSZW1vdmUg
YW55IGluaGVyaXRlZCBmYW1pbHktZmFsbGJhY2sgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAg
Y3VyckZhbWlseSA9ICZmaXJzdEZhbWlseTsKKyAgICAgICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldElzU3BlY2lmaWVkRm9udChmb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgp
ID09IEZvbnREZXNjcmlwdGlvbjo6Tm9GYW1pbHkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRGb250RmFtaWx5PiBuZXdGYW1pbHkg
PSBTaGFyZWRGb250RmFtaWx5OjpjcmVhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3RmFt
aWx5LT5zZXRGYW1pbHkoZmFjZSk7CisgICAgICAgICAgICAgICAgICAgIGN1cnJGYW1pbHktPmFw
cGVuZEZhbWlseShuZXdGYW1pbHkpOworICAgICAgICAgICAgICAgICAgICBjdXJyRmFtaWx5ID0g
bmV3RmFtaWx5LmdldCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFdlIGNhbid0IGNhbGwgdXNlRml4ZWREZWZhdWx0U2l6ZSgpIHVu
dGlsIGFsbCBuZXcgZm9udCBmYW1pbGllcyBoYXZlIGJlZW4gYWRkZWQKKyAgICAgICAgLy8gSWYg
Y3VyckZhbWlseSBpcyBub24temVybyB0aGVuIHdlIHNldCBhdCBsZWFzdCBvbmUgZmFtaWx5IG9u
IHRoaXMgZGVzY3JpcHRpb24uCisgICAgICAgIGlmIChjdXJyRmFtaWx5KSB7CisgICAgICAgICAg
ICBpZiAoZm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXplKCkgJiYgZm9udERlc2NyaXB0aW9uLnVz
ZUZpeGVkRGVmYXVsdFNpemUoKSAhPSBvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkKKyAg
ICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24s
IHN0eWxlUmVzb2x2ZXItPmZvbnRTaXplRm9yS2V5d29yZChzdHlsZVJlc29sdmVyLT5kb2N1bWVu
dCgpLCBDU1NWYWx1ZVh4U21hbGwgKyBmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAtIDEs
ICFvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkpOworCisgICAgICAgICAgICBzdHlsZVJl
c29sdmVyLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVh
dGVIYW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwg
JmFwcGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KK307CisKIGNsYXNzIEFwcGx5UHJv
cGVydHlGb250U2l6ZSB7CiBwcml2YXRlOgogICAgIC8vIFdoZW4gdGhlIENTUyBrZXl3b3JkICJs
YXJnZXIiIGlzIHVzZWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBhdHRlbXB0IHRvIG1hdGNoIHdpdGhp
biB0aGUga2V5d29yZApAQCAtMTg3Niw2ICsxOTkwLDcgQEAKICAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlEaXNwbGF5LCBBcHBseVByb3BlcnR5RGlzcGxheTo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlFbXB0eUNlbGxzLCBBcHBs
eVByb3BlcnR5RGVmYXVsdDxFRW1wdHlDZWxsLCAmUmVuZGVyU3R5bGU6OmVtcHR5Q2VsbHMsIEVF
bXB0eUNlbGwsICZSZW5kZXJTdHlsZTo6c2V0RW1wdHlDZWxscywgRUVtcHR5Q2VsbCwgJlJlbmRl
clN0eWxlOjppbml0aWFsRW1wdHlDZWxscz46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5RmxvYXQsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVGbG9h
dCwgJlJlbmRlclN0eWxlOjpmbG9hdGluZywgRUZsb2F0LCAmUmVuZGVyU3R5bGU6OnNldEZsb2F0
aW5nLCBFRmxvYXQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb2F0aW5nPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBBcHBs
eVByb3BlcnR5Rm9udEZhbWlseTo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlGb250U2l6ZSwgQXBwbHlQcm9wZXJ0eUZvbnRTaXplOjpjcmVhdGVI
YW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUZvbnRTdHlsZSwg
QXBwbHlQcm9wZXJ0eUZvbnQ8Rm9udEl0YWxpYywgJkZvbnREZXNjcmlwdGlvbjo6aXRhbGljLCAm
Rm9udERlc2NyaXB0aW9uOjpzZXRJdGFsaWMsIEZvbnRJdGFsaWNPZmY+OjpjcmVhdGVIYW5kbGVy
KCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBBcHBs
eVByb3BlcnR5Rm9udDxGb250U21hbGxDYXBzLCAmRm9udERlc2NyaXB0aW9uOjpzbWFsbENhcHMs
ICZGb250RGVzY3JpcHRpb246OnNldFNtYWxsQ2FwcywgRm9udFNtYWxsQ2Fwc09mZj46OmNyZWF0
ZUhhbmRsZXIoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZp
c2lvbiAxNDU4MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzOTEsMTY0ICsyMzkxLDcgQEAKICAgICAgICAgICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5zZXRRdW90ZXMoUXVvdGVzRGF0YTo6Y3JlYXRlKCkpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEZhbWlseTogewotICAgICAg
ICAvLyBsaXN0IG9mIHN0cmluZ3MgYW5kIGlkcwotICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0g
ICAgICAgICAgICBGb250RGVzY3JpcHRpb24gcGFyZW50Rm9udERlc2NyaXB0aW9uID0gc3RhdGUu
cGFyZW50U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgICAgICBGb250RGVzY3Jp
cHRpb24gZm9udERlc2NyaXB0aW9uID0gc3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7
Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShwYXJlbnRGb250
RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlv
bi5zZXRGYW1pbHkocGFyZW50Rm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkpOwotICAgICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzU3BlY2lmaWVkRm9udChwYXJlbnRGb250RGVzY3Jp
cHRpb24uaXNTcGVjaWZpZWRGb250KCkpOwotICAgICAgICAgICAgc2V0Rm9udERlc2NyaXB0aW9u
KGZvbnREZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAotICAg
ICAgICBpZiAoaXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gaW5pdGlh
bERlc2MgPSBGb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBm
b250RGVzY3JpcHRpb24gPSBzdGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IHRoZSBzaXplIHRvIGFjY291bnQgZm9yIHRoZSBn
ZW5lcmljIGZhbWlseSBjaGFuZ2UgZnJvbSBtb25vc3BhY2UKLSAgICAgICAgICAgIC8vIHRvIG5v
bi1tb25vc3BhY2UuCi0gICAgICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXpl
KCkgJiYgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSkKLSAgICAgICAgICAg
ICAgICBzZXRGb250U2l6ZShmb250RGVzY3JpcHRpb24sIGZvbnRTaXplRm9yS2V5d29yZChkb2N1
bWVudCgpLCBDU1NWYWx1ZVh4U21hbGwgKyBmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAt
IDEsIGZhbHNlKSk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWls
eShpbml0aWFsRGVzYy5nZW5lcmljRmFtaWx5KCkpOwotICAgICAgICAgICAgaWYgKCFpbml0aWFs
RGVzYy5maXJzdEZhbWlseSgpLmZhbWlseUlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uc2V0RmFtaWx5KGluaXRpYWxEZXNjLmZpcnN0RmFtaWx5KCkpOwotICAgICAg
ICAgICAgc2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uID0gc3RhdGUuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgICAgIEZvbnRGYW1p
bHkmIGZpcnN0RmFtaWx5ID0gZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCk7Ci0gICAgICAg
IEZvbnRGYW1pbHkqIGN1cnJGYW1pbHkgPSAwOwotCi0gICAgICAgIC8vIEJlZm9yZSBtYXBwaW5n
IGluIGEgbmV3IGZvbnQtZmFtaWx5IHByb3BlcnR5LCB3ZSBzaG91bGQgcmVzZXQgdGhlIGdlbmVy
aWMgZmFtaWx5LgotICAgICAgICBib29sIG9sZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXplID0g
Zm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKTsKLSAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7Ci0KLSAg
ICAgICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRvciBpID0gdmFsdWU7IGkuaGFzTW9yZSgpOyBp
LmFkdmFuY2UoKSkgewotICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBpLnZhbHVlKCk7Ci0g
ICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb250ZW50VmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOwotICAgICAgICAgICAgQXRv
bWljU3RyaW5nIGZhY2U7Ci0gICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVu
dFNldHRpbmdzKCk7Ci0gICAgICAgICAgICBpZiAoY29udGVudFZhbHVlLT5pc1N0cmluZygpKQot
ICAgICAgICAgICAgICAgIGZhY2UgPSBjb250ZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncykgewotICAgICAgICAgICAgICAgIHN3aXRjaCAo
Y29udGVudFZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZVdlYmtpdEJvZHk6Ci0gICAgICAgICAgICAgICAgICAgIGZhY2UgPSBzZXR0aW5ncy0+c3RhbmRh
cmRGb250RmFtaWx5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVTZXJpZjoKLSAgICAgICAgICAgICAgICAgICAgZmFjZSA9IHNlcmlm
RmFtaWx5OwotICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0Zh
bWlseShGb250RGVzY3JpcHRpb246OlNlcmlmRmFtaWx5KTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNhbnNTZXJpZjoKLSAgICAgICAg
ICAgICAgICAgICAgZmFjZSA9IHNhbnNTZXJpZkZhbWlseTsKLSAgICAgICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpTYW5zU2Vy
aWZGYW1pbHkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlQ3Vyc2l2ZToKLSAgICAgICAgICAgICAgICAgICAgZmFjZSA9IGN1cnNpdmVG
YW1pbHk7Ci0gICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFt
aWx5KEZvbnREZXNjcmlwdGlvbjo6Q3Vyc2l2ZUZhbWlseSk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVGYW50YXN5OgotICAgICAgICAg
ICAgICAgICAgICBmYWNlID0gZmFudGFzeUZhbWlseTsKLSAgICAgICAgICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpGYW50YXN5RmFt
aWx5KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBD
U1NWYWx1ZU1vbm9zcGFjZToKLSAgICAgICAgICAgICAgICAgICAgZmFjZSA9IG1vbm9zcGFjZUZh
bWlseTsKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1p
bHkoRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHkpOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0UGljdG9ncmFwaDoK
LSAgICAgICAgICAgICAgICAgICAgZmFjZSA9IHBpY3RvZ3JhcGhGYW1pbHk7Ci0gICAgICAgICAg
ICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlv
bjo6UGljdG9ncmFwaEZhbWlseSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFmYWNlLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgICAgIGlmICghY3VyckZhbWlseSkgewotICAgICAgICAgICAg
ICAgICAgICAvLyBGaWxsaW5nIGluIHRoZSBmaXJzdCBmYW1pbHkuCi0gICAgICAgICAgICAgICAg
ICAgIGZpcnN0RmFtaWx5LnNldEZhbWlseShmYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgZmly
c3RGYW1pbHkuYXBwZW5kRmFtaWx5KDApOyAvLyBSZW1vdmUgYW55IGluaGVyaXRlZCBmYW1pbHkt
ZmFsbGJhY2sgbGlzdC4KLSAgICAgICAgICAgICAgICAgICAgY3VyckZhbWlseSA9ICZmaXJzdEZh
bWlseTsKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzU3BlY2lmaWVk
Rm9udChmb250RGVzY3JpcHRpb24uZ2VuZXJpY0ZhbWlseSgpID09IEZvbnREZXNjcmlwdGlvbjo6
Tm9GYW1pbHkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxTaGFyZWRGb250RmFtaWx5PiBuZXdGYW1pbHkgPSBTaGFyZWRGb250RmFtaWx5Ojpj
cmVhdGUoKTsKLSAgICAgICAgICAgICAgICAgICAgbmV3RmFtaWx5LT5zZXRGYW1pbHkoZmFjZSk7
Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJGYW1pbHktPmFwcGVuZEZhbWlseShuZXdGYW1pbHkp
OwotICAgICAgICAgICAgICAgICAgICBjdXJyRmFtaWx5ID0gbmV3RmFtaWx5LmdldCgpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdl
IGNhbid0IGNhbGwgdXNlRml4ZWREZWZhdWx0U2l6ZSgpIHVudGlsIGFsbCBuZXcgZm9udCBmYW1p
bGllcyBoYXZlIGJlZW4gYWRkZWQKLSAgICAgICAgLy8gSWYgY3VyckZhbWlseSBpcyBub24temVy
byB0aGVuIHdlIHNldCBhdCBsZWFzdCBvbmUgZmFtaWx5IG9uIHRoaXMgZGVzY3JpcHRpb24uCi0g
ICAgICAgIGlmIChjdXJyRmFtaWx5KSB7Ci0gICAgICAgICAgICBpZiAoZm9udERlc2NyaXB0aW9u
LmtleXdvcmRTaXplKCkgJiYgZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKSAh
PSBvbGRGYW1pbHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkKLSAgICAgICAgICAgICAgICBzZXRGb250
U2l6ZShmb250RGVzY3JpcHRpb24sIGZvbnRTaXplRm9yS2V5d29yZChkb2N1bWVudCgpLCBDU1NW
YWx1ZVh4U21hbGwgKyBmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAtIDEsICFvbGRGYW1p
bHlVc2VkRml4ZWREZWZhdWx0U2l6ZSkpOwotCi0gICAgICAgICAgICBzZXRGb250RGVzY3JpcHRp
b24oZm9udERlc2NyaXB0aW9uKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIC8vIFNob3J0aGFuZCBwcm9wZXJ0aWVzLgotICAgIGNhc2UgQ1NTUHJvcGVydHlGb250Ogot
ICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uID0gc3RhdGUucGFyZW50U3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0g
ICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5zZXRMaW5lSGVpZ2h0KHN0YXRlLnBhcmVudFN0eWxl
KCktPnNwZWNpZmllZExpbmVIZWlnaHQoKSk7Ci0gICAgICAgICAgICBzdGF0ZS5zZXRMaW5lSGVp
Z2h0VmFsdWUoMCk7Ci0gICAgICAgICAgICBzZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIFNldHRp
bmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50U2V0dGluZ3MoKTsKLSAgICAgICAgICAgIEFTU0VSVChz
ZXR0aW5ncyk7IC8vIElmIHdlJ3JlIGRvaW5nIHN0eWxlIHJlc29sdXRpb24sIHRoaXMgZG9jdW1l
bnQgc2hvdWxkIGFsd2F5cyBiZSBpbiBhIGZyYW1lIGFuZCB0aHVzIGhhdmUgc2V0dGluZ3MKLSAg
ICAgICAgICAgIGlmICghc2V0dGluZ3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgaW5pdGlhbGl6ZUZvbnRTdHlsZShzZXR0aW5ncyk7Ci0gICAgICAgIH0gZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUpIHsKLSAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldExpbmVIZWln
aHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpOwotICAgICAgICAgICAgc3RhdGUu
c2V0TGluZUhlaWdodFZhbHVlKDApOwotCi0gICAgICAgICAgICBGb250RGVzY3JpcHRpb24gZm9u
dERlc2NyaXB0aW9uOwotICAgICAgICAgICAgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5z
eXN0ZW1Gb250KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpLCBmb250RGVzY3JpcHRpb24pOwot
Ci0gICAgICAgICAgICAvLyBEb3VibGUtY2hlY2sgYW5kIHNlZSBpZiB0aGUgdGhlbWUgZGlkIGFu
eXRoaW5nLiBJZiBub3QsIGRvbid0IGJvdGhlciB1cGRhdGluZyB0aGUgZm9udC4KLSAgICAgICAg
ICAgIGlmIChmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSkgewotICAgICAgICAgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgcmVuZGVyaW5nIG1vZGUgYW5kIHByaW50ZXIgZm9udCBzZXR0
aW5ncyBhcmUgdXBkYXRlZC4KLSAgICAgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBk
b2N1bWVudFNldHRpbmdzKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNldHRpbmdzKTsgLy8g
SWYgd2UncmUgZG9pbmcgc3R5bGUgcmVzb2x1dGlvbiwgdGhpcyBkb2N1bWVudCBzaG91bGQgYWx3
YXlzIGJlIGluIGEgZnJhbWUgYW5kIHRodXMgaGF2ZSBzZXR0aW5ncwotICAgICAgICAgICAgICAg
IGlmICghc2V0dGluZ3MpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICBmb250RGVzY3JpcHRpb24uc2V0UmVuZGVyaW5nTW9kZShzZXR0aW5ncy0+Zm9udFJlbmRl
cmluZ01vZGUoKSk7Ci0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFVzZVByaW50
ZXJGb250KGRvY3VtZW50KCktPnByaW50aW5nKCkgfHwgIXNldHRpbmdzLT5zY3JlZW5Gb250U3Vi
c3RpdHV0aW9uRW5hYmxlZCgpKTsKLQotICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9v
bSBmYWN0b3IuCi0gICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6
ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShkb2N1bWVudCgpLCBzdGF0ZS5zdHls
ZSgpLCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgZm9udERlc2NyaXB0aW9uLnNw
ZWNpZmllZFNpemUoKSwgdXNlU1ZHWm9vbVJ1bGVzKCkpKTsKLSAgICAgICAgICAgICAgICBzZXRG
b250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlIGlmICh2YWx1ZS0+aXNGb250VmFsdWUoKSkgewotICAgICAgICAgICAgRm9udFZhbHVl
KiBmb250ID0gc3RhdGljX2Nhc3Q8Rm9udFZhbHVlKj4odmFsdWUpOwotICAgICAgICAgICAgaWYg
KCFmb250LT5zdHlsZSB8fCAhZm9udC0+dmFyaWFudCB8fCAhZm9udC0+d2VpZ2h0Ci0gICAgICAg
ICAgICAgICAgfHwgIWZvbnQtPnNpemUgfHwgIWZvbnQtPmxpbmVIZWlnaHQgfHwgIWZvbnQtPmZh
bWlseSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5
KENTU1Byb3BlcnR5Rm9udFN0eWxlLCBmb250LT5zdHlsZS5nZXQoKSk7Ci0gICAgICAgICAgICBh
cHBseVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIGZvbnQtPnZhcmlhbnQuZ2V0KCkp
OwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGZvbnQt
PndlaWdodC5nZXQoKSk7Ci0gICAgICAgICAgICAvLyBUaGUgcHJldmlvdXMgcHJvcGVydGllcyBj
YW4gZGlydHkgb3VyIGZvbnQgYnV0IHRoZXkgZG9uJ3QgdHJ5IHRvIHJlYWQgdGhlIGZvbnQncwot
ICAgICAgICAgICAgLy8gcHJvcGVydGllcyBiYWNrLCB3aGljaCBpcyBzYWZlLiBIb3dldmVyIGlm
IGZvbnQtc2l6ZSBpcyB1c2luZyB0aGUgJ2V4JyB1bml0LCBpdCB3aWxsCi0gICAgICAgICAgICAv
LyBuZWVkIHF1ZXJ5IHRoZSBkaXJ0aWVkIGZvbnQncyB4LWhlaWdodCB0byBnZXQgdGhlIGNvbXB1
dGVkIHNpemUuIFRvIGJlIHNhZmUgaW4gdGhpcwotICAgICAgICAgICAgLy8gY2FzZSwgbGV0J3Mg
anVzdCB1cGRhdGUgdGhlIGZvbnQgbm93LgotICAgICAgICAgICAgdXBkYXRlRm9udCgpOwotICAg
ICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBmb250LT5zaXplLmdl
dCgpKTsKLQotICAgICAgICAgICAgc3RhdGUuc2V0TGluZUhlaWdodFZhbHVlKGZvbnQtPmxpbmVI
ZWlnaHQuZ2V0KCkpOwotCi0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5Rm9u
dEZhbWlseSwgZm9udC0+ZmFtaWx5LmdldCgpKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47
Ci0KICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoKICAgICBjYXNlIENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
Ogo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193466</attachid>
            <date>2013-03-17 08:22:19 -0700</date>
            <delta_ts>2013-03-17 10:16:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112441-20130317161811.patch</filename>
            <type>text/plain</type>
            <size>14181</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTkwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAzLTE3ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIGZvbnQtZmFtaWx5IGFw
cGx5aW5nIGNvZGUgdG8gU3R5bGVCdWlsZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI0NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYW55IG9mIHRoZSBmb250IHJlbGF0ZWQgcHJvcGVydGllcyB3
ZXJlIG1vdmVkIHRvIFN0eWxlQnVpbGRlciBpbiByODczNjIKKyAgICAgICAgdHdvIHllYXJzIGFn
by4gTW92ZSBmb250LWZhbWlseSBhcyB3ZWxsIHNvIHRoYXQgYWxsIGZvbnQgcHJvcGVydGllcyBh
cmUKKyAgICAgICAgaGFuZGxlZCB0aGUgc2FtZSB3YXkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LCBubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGNzcy9TdHlsZUJ1aWxk
ZXIuY3BwOgorICAgICAgICAoQXBwbHlQcm9wZXJ0eUZvbnRGYW1pbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbHlQcm9wZXJ0eUZvbnRGYW1pbHk6OmFwcGx5SW5oZXJpdFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250RmFtaWx5OjphcHBseUluaXRpYWxWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udEZhbWlseTo6YXBwbHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Rm9udEZhbWlseTo6Y3JlYXRlSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcik6CisgICAg
ICAgIEFkZCBBcHBseVByb3BlcnR5Rm9udEZhbWlseSBmb3IgQ1NTUHJvcGVydHlGb250RmFtaWx5
LgorCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIFJlbW92ZSBDU1NQcm9wZXJ0
eUZvbnRGYW1pbHkgZnJvbSB0aGUgZ2lhbnQgc3dpdGNoIHN0YXRlbWVudC4KKwogMjAxMy0wMy0x
NSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0NTgwMi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXIuY3BwCShyZXZpc2lvbiAxNDU5MDUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjU3LDYgKzY1NywxMjAgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFBy
b3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFw
cGx5VmFsdWUpOyB9CiB9OwogCitjbGFzcyBBcHBseVByb3BlcnR5Rm9udEZhbWlseSB7CitwdWJs
aWM6CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5
bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKKyAgICB7CisgICAgICAgIEZvbnREZXNjcmlwdGlv
biBmb250RGVzY3JpcHRpb24gPSBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRp
b24oKTsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIHBhcmVudEZvbnREZXNjcmlwdGlvbiA9IHN0
eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICAK
KyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkocGFyZW50Rm9udERlc2Ny
aXB0aW9uLmdlbmVyaWNGYW1pbHkoKSk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1p
bHkocGFyZW50Rm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCkpOworICAgICAgICBmb250RGVz
Y3JpcHRpb24uc2V0SXNTcGVjaWZpZWRGb250KHBhcmVudEZvbnREZXNjcmlwdGlvbi5pc1NwZWNp
ZmllZEZvbnQoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnNldEZvbnREZXNjcmlwdGlvbihm
b250RGVzY3JpcHRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RhdGljIHZv
aWQgYXBwbHlJbml0aWFsVmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVS
ZXNvbHZlcikKKyAgICB7CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24g
PSBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgRm9u
dERlc2NyaXB0aW9uIGluaXRpYWxEZXNjID0gRm9udERlc2NyaXB0aW9uKCk7CisgICAgICAgIAor
ICAgICAgICAvLyBXZSBuZWVkIHRvIGFkanVzdCB0aGUgc2l6ZSB0byBhY2NvdW50IGZvciB0aGUg
Z2VuZXJpYyBmYW1pbHkgY2hhbmdlIGZyb20gbW9ub3NwYWNlIHRvIG5vbi1tb25vc3BhY2UuCisg
ICAgICAgIGlmIChmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAmJiBmb250RGVzY3JpcHRp
b24udXNlRml4ZWREZWZhdWx0U2l6ZSgpKQorICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0
Rm9udFNpemUoZm9udERlc2NyaXB0aW9uLCBzdHlsZVJlc29sdmVyLT5mb250U2l6ZUZvcktleXdv
cmQoc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKSwgQ1NTVmFsdWVYeFNtYWxsICsgZm9udERlc2Ny
aXB0aW9uLmtleXdvcmRTaXplKCkgLSAxLCBmYWxzZSkpOworICAgICAgICBmb250RGVzY3JpcHRp
b24uc2V0R2VuZXJpY0ZhbWlseShpbml0aWFsRGVzYy5nZW5lcmljRmFtaWx5KCkpOworICAgICAg
ICBpZiAoIWluaXRpYWxEZXNjLmZpcnN0RmFtaWx5KCkuZmFtaWx5SXNFbXB0eSgpKQorICAgICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlseShpbml0aWFsRGVzYy5maXJzdEZhbWlseSgp
KTsKKworICAgICAgICBzdHlsZVJlc29sdmVyLT5zZXRGb250RGVzY3JpcHRpb24oZm9udERlc2Ny
aXB0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGx5
VmFsdWUoQ1NTUHJvcGVydHlJRCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQ1NTVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBGb250RGVzY3JpcHRpb24gZm9udERlc2NyaXB0
aW9uID0gc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7CisgICAgICAg
IEZvbnRGYW1pbHkmIGZpcnN0RmFtaWx5ID0gZm9udERlc2NyaXB0aW9uLmZpcnN0RmFtaWx5KCk7
CisgICAgICAgIEZvbnRGYW1pbHkqIGN1cnJGYW1pbHkgPSAwOworCisgICAgICAgIC8vIEJlZm9y
ZSBtYXBwaW5nIGluIGEgbmV3IGZvbnQtZmFtaWx5IHByb3BlcnR5LCB3ZSBzaG91bGQgcmVzZXQg
dGhlIGdlbmVyaWMgZmFtaWx5LgorICAgICAgICBib29sIG9sZEZhbWlseVVzZWRGaXhlZERlZmF1
bHRTaXplID0gZm9udERlc2NyaXB0aW9uLnVzZUZpeGVkRGVmYXVsdFNpemUoKTsKKyAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpOb0ZhbWls
eSk7CisKKyAgICAgICAgZm9yIChDU1NWYWx1ZUxpc3RJdGVyYXRvciBpID0gdmFsdWU7IGkuaGFz
TW9yZSgpOyBpLmFkdmFuY2UoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWUqIGl0ZW0gPSBpLnZh
bHVlKCk7CisgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBjb250
ZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAg
ICAgICAgQXRvbWljU3RyaW5nIGZhY2U7CisgICAgICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3Mg
PSBzdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpOworICAgICAgICAgICAgaWYg
KGNvbnRlbnRWYWx1ZS0+aXNTdHJpbmcoKSkKKyAgICAgICAgICAgICAgICBmYWNlID0gY29udGVu
dFZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoc2V0dGluZ3Mp
IHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS0+Z2V0SWRlbnQoKSkgewor
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRCb2R5OgorICAgICAgICAgICAgICAg
ICAgICBmYWNlID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseSgpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlU2VyaWY6CisgICAg
ICAgICAgICAgICAgICAgIGZhY2UgPSBzZXJpZkZhbWlseTsKKyAgICAgICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpTZXJpZkZh
bWlseSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVTYW5zU2VyaWY6CisgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBzYW5zU2VyaWZG
YW1pbHk7CisgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFt
aWx5KEZvbnREZXNjcmlwdGlvbjo6U2Fuc1NlcmlmRmFtaWx5KTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUN1cnNpdmU6CisgICAgICAg
ICAgICAgICAgICAgIGZhY2UgPSBjdXJzaXZlRmFtaWx5OworICAgICAgICAgICAgICAgICAgICBm
b250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OkN1cnNpdmVG
YW1pbHkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IENTU1ZhbHVlRmFudGFzeToKKyAgICAgICAgICAgICAgICAgICAgZmFjZSA9IGZhbnRhc3lGYW1p
bHk7CisgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5
KEZvbnREZXNjcmlwdGlvbjo6RmFudGFzeUZhbWlseSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVNb25vc3BhY2U6CisgICAgICAgICAg
ICAgICAgICAgIGZhY2UgPSBtb25vc3BhY2VGYW1pbHk7CisgICAgICAgICAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNl
RmFtaWx5KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVdlYmtpdFBpY3RvZ3JhcGg6CisgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBw
aWN0b2dyYXBoRmFtaWx5OworICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0
R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246OlBpY3RvZ3JhcGhGYW1pbHkpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICghZmFjZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IWN1cnJGYW1pbHkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRmlsbGluZyBpbiB0aGUgZmly
c3QgZmFtaWx5LgorICAgICAgICAgICAgICAgICAgICBmaXJzdEZhbWlseS5zZXRGYW1pbHkoZmFj
ZSk7CisgICAgICAgICAgICAgICAgICAgIGZpcnN0RmFtaWx5LmFwcGVuZEZhbWlseSgwKTsgLy8g
UmVtb3ZlIGFueSBpbmhlcml0ZWQgZmFtaWx5LWZhbGxiYWNrIGxpc3QuCisgICAgICAgICAgICAg
ICAgICAgIGN1cnJGYW1pbHkgPSAmZmlyc3RGYW1pbHk7CisgICAgICAgICAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi5zZXRJc1NwZWNpZmllZEZvbnQoZm9udERlc2NyaXB0aW9uLmdlbmVyaWNG
YW1pbHkoKSA9PSBGb250RGVzY3JpcHRpb246Ok5vRmFtaWx5KTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8U2hhcmVkRm9udEZhbWlseT4gbmV3
RmFtaWx5ID0gU2hhcmVkRm9udEZhbWlseTo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgICAg
IG5ld0ZhbWlseS0+c2V0RmFtaWx5KGZhY2UpOworICAgICAgICAgICAgICAgICAgICBjdXJyRmFt
aWx5LT5hcHBlbmRGYW1pbHkobmV3RmFtaWx5KTsKKyAgICAgICAgICAgICAgICAgICAgY3VyckZh
bWlseSA9IG5ld0ZhbWlseS5nZXQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBjYW4ndCBjYWxsIHVzZUZpeGVkRGVmYXVsdFNp
emUoKSB1bnRpbCBhbGwgbmV3IGZvbnQgZmFtaWxpZXMgaGF2ZSBiZWVuIGFkZGVkCisgICAgICAg
IC8vIElmIGN1cnJGYW1pbHkgaXMgbm9uLXplcm8gdGhlbiB3ZSBzZXQgYXQgbGVhc3Qgb25lIGZh
bWlseSBvbiB0aGlzIGRlc2NyaXB0aW9uLgorICAgICAgICBpZiAoY3VyckZhbWlseSkgeworICAg
ICAgICAgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5rZXl3b3JkU2l6ZSgpICYmIGZvbnREZXNjcmlw
dGlvbi51c2VGaXhlZERlZmF1bHRTaXplKCkgIT0gb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNp
emUpCisgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+c2V0Rm9udFNpemUoZm9udERlc2Ny
aXB0aW9uLCBzdHlsZVJlc29sdmVyLT5mb250U2l6ZUZvcktleXdvcmQoc3R5bGVSZXNvbHZlci0+
ZG9jdW1lbnQoKSwgQ1NTVmFsdWVYeFNtYWxsICsgZm9udERlc2NyaXB0aW9uLmtleXdvcmRTaXpl
KCkgLSAxLCAhb2xkRmFtaWx5VXNlZEZpeGVkRGVmYXVsdFNpemUpKTsKKworICAgICAgICAgICAg
c3R5bGVSZXNvbHZlci0+c2V0Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRs
ZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0
VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9Cit9OworCiBjbGFzcyBB
cHBseVByb3BlcnR5Rm9udFNpemUgewogcHJpdmF0ZToKICAgICAvLyBXaGVuIHRoZSBDU1Mga2V5
d29yZCAibGFyZ2VyIiBpcyB1c2VkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYXR0ZW1wdCB0byBtYXRj
aCB3aXRoaW4gdGhlIGtleXdvcmQKQEAgLTE4NzYsNiArMTk5MCw3IEBAIFN0eWxlQnVpbGRlcjo6
U3R5bGVCdWlsZGVyKCkKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlEaXNwbGF5
LCBBcHBseVByb3BlcnR5RGlzcGxheTo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlFbXB0eUNlbGxzLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFRW1w
dHlDZWxsLCAmUmVuZGVyU3R5bGU6OmVtcHR5Q2VsbHMsIEVFbXB0eUNlbGwsICZSZW5kZXJTdHls
ZTo6c2V0RW1wdHlDZWxscywgRUVtcHR5Q2VsbCwgJlJlbmRlclN0eWxlOjppbml0aWFsRW1wdHlD
ZWxscz46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5RmxvYXQsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVGbG9hdCwgJlJlbmRlclN0eWxlOjpmbG9h
dGluZywgRUZsb2F0LCAmUmVuZGVyU3R5bGU6OnNldEZsb2F0aW5nLCBFRmxvYXQsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbEZsb2F0aW5nPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBBcHBseVByb3BlcnR5Rm9udEZhbWlseTo6
Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlGb250
U2l6ZSwgQXBwbHlQcm9wZXJ0eUZvbnRTaXplOjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgQXBwbHlQcm9wZXJ0eUZvbnQ8Rm9u
dEl0YWxpYywgJkZvbnREZXNjcmlwdGlvbjo6aXRhbGljLCAmRm9udERlc2NyaXB0aW9uOjpzZXRJ
dGFsaWMsIEZvbnRJdGFsaWNPZmY+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBBcHBseVByb3BlcnR5Rm9udDxGb250U21h
bGxDYXBzLCAmRm9udERlc2NyaXB0aW9uOjpzbWFsbENhcHMsICZGb250RGVzY3JpcHRpb246OnNl
dFNtYWxsQ2FwcywgRm9udFNtYWxsQ2Fwc09mZj46OmNyZWF0ZUhhbmRsZXIoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxNDU5MDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOTQs
MTA5ICsyMzk0LDYgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Bybwog
ICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFF1b3RlcyhRdW90ZXNEYXRhOjpjcmVh
dGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250RmFtaWx5OiB7Ci0gICAgICAgIC8vIGxpc3Qgb2Ygc3RyaW5ncyBhbmQgaWRzCi0gICAgICAg
IGlmIChpc0luaGVyaXQpIHsKLSAgICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBwYXJlbnRGb250
RGVzY3JpcHRpb24gPSBzdGF0ZS5wYXJlbnRTdHlsZSgpLT5mb250RGVzY3JpcHRpb24oKTsKLSAg
ICAgICAgICAgIEZvbnREZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdGF0ZS5zdHlsZSgp
LT5mb250RGVzY3JpcHRpb24oKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5l
cmljRmFtaWx5KHBhcmVudEZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCkpOwotICAgICAg
ICAgICAgZm9udERlc2NyaXB0aW9uLnNldEZhbWlseShwYXJlbnRGb250RGVzY3JpcHRpb24uZmly
c3RGYW1pbHkoKSk7Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0SXNTcGVjaWZpZWRG
b250KHBhcmVudEZvbnREZXNjcmlwdGlvbi5pc1NwZWNpZmllZEZvbnQoKSk7Ci0gICAgICAgICAg
ICBzZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIEZv
bnREZXNjcmlwdGlvbiBpbml0aWFsRGVzYyA9IEZvbnREZXNjcmlwdGlvbigpOwotICAgICAgICAg
ICAgRm9udERlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0YXRlLnN0eWxlKCktPmZvbnRE
ZXNjcmlwdGlvbigpOwotICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgdGhlIHNpemUg
dG8gYWNjb3VudCBmb3IgdGhlIGdlbmVyaWMgZmFtaWx5IGNoYW5nZSBmcm9tIG1vbm9zcGFjZQot
ICAgICAgICAgICAgLy8gdG8gbm9uLW1vbm9zcGFjZS4KLSAgICAgICAgICAgIGlmIChmb250RGVz
Y3JpcHRpb24ua2V5d29yZFNpemUoKSAmJiBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0
U2l6ZSgpKQotICAgICAgICAgICAgICAgIHNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgZm9u
dFNpemVGb3JLZXl3b3JkKGRvY3VtZW50KCksIENTU1ZhbHVlWHhTbWFsbCArIGZvbnREZXNjcmlw
dGlvbi5rZXl3b3JkU2l6ZSgpIC0gMSwgZmFsc2UpKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRHZW5lcmljRmFtaWx5KGluaXRpYWxEZXNjLmdlbmVyaWNGYW1pbHkoKSk7Ci0gICAg
ICAgICAgICBpZiAoIWluaXRpYWxEZXNjLmZpcnN0RmFtaWx5KCkuZmFtaWx5SXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRGYW1pbHkoaW5pdGlhbERlc2MuZmly
c3RGYW1pbHkoKSk7Ci0gICAgICAgICAgICBzZXRGb250RGVzY3JpcHRpb24oZm9udERlc2NyaXB0
aW9uKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghdmFs
dWUtPmlzVmFsdWVMaXN0KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEZvbnREZXNj
cmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdGF0ZS5zdHlsZSgpLT5mb250RGVzY3JpcHRpb24o
KTsKLSAgICAgICAgRm9udEZhbWlseSYgZmlyc3RGYW1pbHkgPSBmb250RGVzY3JpcHRpb24uZmly
c3RGYW1pbHkoKTsKLSAgICAgICAgRm9udEZhbWlseSogY3VyckZhbWlseSA9IDA7Ci0KLSAgICAg
ICAgLy8gQmVmb3JlIG1hcHBpbmcgaW4gYSBuZXcgZm9udC1mYW1pbHkgcHJvcGVydHksIHdlIHNo
b3VsZCByZXNldCB0aGUgZ2VuZXJpYyBmYW1pbHkuCi0gICAgICAgIGJvb2wgb2xkRmFtaWx5VXNl
ZEZpeGVkRGVmYXVsdFNpemUgPSBmb250RGVzY3JpcHRpb24udXNlRml4ZWREZWZhdWx0U2l6ZSgp
OwotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRp
b246Ok5vRmFtaWx5KTsKLQotICAgICAgICBmb3IgKENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGkgPSB2
YWx1ZTsgaS5oYXNNb3JlKCk7IGkuYWR2YW5jZSgpKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZSog
aXRlbSA9IGkudmFsdWUoKTsKLSAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvbnRlbnRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaXRl
bSk7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgZmFjZTsKLSAgICAgICAgICAgIFNldHRpbmdz
KiBzZXR0aW5ncyA9IGRvY3VtZW50U2V0dGluZ3MoKTsKLSAgICAgICAgICAgIGlmIChjb250ZW50
VmFsdWUtPmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgZmFjZSA9IGNvbnRlbnRWYWx1ZS0+
Z2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHNldHRpbmdzKSB7Ci0gICAg
ICAgICAgICAgICAgc3dpdGNoIChjb250ZW50VmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Qm9keToKLSAgICAgICAgICAgICAgICAgICAgZmFj
ZSA9IHNldHRpbmdzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVNlcmlmOgotICAgICAgICAgICAg
ICAgICAgICBmYWNlID0gc2VyaWZGYW1pbHk7Ci0gICAgICAgICAgICAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6U2VyaWZGYW1pbHkpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
U2Fuc1NlcmlmOgotICAgICAgICAgICAgICAgICAgICBmYWNlID0gc2Fuc1NlcmlmRmFtaWx5Owot
ICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250
RGVzY3JpcHRpb246OlNhbnNTZXJpZkZhbWlseSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVDdXJzaXZlOgotICAgICAgICAgICAgICAg
ICAgICBmYWNlID0gY3Vyc2l2ZUZhbWlseTsKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldEdlbmVyaWNGYW1pbHkoRm9udERlc2NyaXB0aW9uOjpDdXJzaXZlRmFtaWx5KTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZUZhbnRhc3k6Ci0gICAgICAgICAgICAgICAgICAgIGZhY2UgPSBmYW50YXN5RmFtaWx5OwotICAg
ICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVz
Y3JpcHRpb246OkZhbnRhc3lGYW1pbHkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTW9ub3NwYWNlOgotICAgICAgICAgICAgICAgICAg
ICBmYWNlID0gbW9ub3NwYWNlRmFtaWx5OwotICAgICAgICAgICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0R2VuZXJpY0ZhbWlseShGb250RGVzY3JpcHRpb246Ok1vbm9zcGFjZUZhbWlseSk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVXZWJraXRQaWN0b2dyYXBoOgotICAgICAgICAgICAgICAgICAgICBmYWNlID0gcGljdG9ncmFw
aEZhbWlseTsKLSAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNG
YW1pbHkoRm9udERlc2NyaXB0aW9uOjpQaWN0b2dyYXBoRmFtaWx5KTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBpZiAoIWZhY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjdXJyRmFt
aWx5KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZpbGxpbmcgaW4gdGhlIGZpcnN0IGZhbWls
eS4KLSAgICAgICAgICAgICAgICAgICAgZmlyc3RGYW1pbHkuc2V0RmFtaWx5KGZhY2UpOwotICAg
ICAgICAgICAgICAgICAgICBmaXJzdEZhbWlseS5hcHBlbmRGYW1pbHkoMCk7IC8vIFJlbW92ZSBh
bnkgaW5oZXJpdGVkIGZhbWlseS1mYWxsYmFjayBsaXN0LgotICAgICAgICAgICAgICAgICAgICBj
dXJyRmFtaWx5ID0gJmZpcnN0RmFtaWx5OwotICAgICAgICAgICAgICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0SXNTcGVjaWZpZWRGb250KGZvbnREZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCkg
PT0gRm9udERlc2NyaXB0aW9uOjpOb0ZhbWlseSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFNoYXJlZEZvbnRGYW1pbHk+IG5ld0ZhbWlseSA9
IFNoYXJlZEZvbnRGYW1pbHk6OmNyZWF0ZSgpOwotICAgICAgICAgICAgICAgICAgICBuZXdGYW1p
bHktPnNldEZhbWlseShmYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgY3VyckZhbWlseS0+YXBw
ZW5kRmFtaWx5KG5ld0ZhbWlseSk7Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJGYW1pbHkgPSBu
ZXdGYW1pbHkuZ2V0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gV2UgY2FuJ3QgY2FsbCB1c2VGaXhlZERlZmF1bHRTaXplKCkgdW50
aWwgYWxsIG5ldyBmb250IGZhbWlsaWVzIGhhdmUgYmVlbiBhZGRlZAotICAgICAgICAvLyBJZiBj
dXJyRmFtaWx5IGlzIG5vbi16ZXJvIHRoZW4gd2Ugc2V0IGF0IGxlYXN0IG9uZSBmYW1pbHkgb24g
dGhpcyBkZXNjcmlwdGlvbi4KLSAgICAgICAgaWYgKGN1cnJGYW1pbHkpIHsKLSAgICAgICAgICAg
IGlmIChmb250RGVzY3JpcHRpb24ua2V5d29yZFNpemUoKSAmJiBmb250RGVzY3JpcHRpb24udXNl
Rml4ZWREZWZhdWx0U2l6ZSgpICE9IG9sZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXplKQotICAg
ICAgICAgICAgICAgIHNldEZvbnRTaXplKGZvbnREZXNjcmlwdGlvbiwgZm9udFNpemVGb3JLZXl3
b3JkKGRvY3VtZW50KCksIENTU1ZhbHVlWHhTbWFsbCArIGZvbnREZXNjcmlwdGlvbi5rZXl3b3Jk
U2l6ZSgpIC0gMSwgIW9sZEZhbWlseVVzZWRGaXhlZERlZmF1bHRTaXplKSk7Ci0KLSAgICAgICAg
ICAgIHNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CiAgICAgLy8gU2hvcnRoYW5kIHByb3BlcnRpZXMuCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnQ6CiAgICAgICAgIGlmIChpc0luaGVyaXQpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>