<?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>189918</bug_id>
          
          <creation_ts>2018-09-24 09:18:35 -0700</creation_ts>
          <short_desc>Refactor Editor::fontAttributesForSelectionStart to be platform-agnostic</short_desc>
          <delta_ts>2018-09-24 20:16:35 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1462717</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-24 09:18:35 -0700</bug_when>
    <thetext>Work towards &lt;rdar://problem/44648705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462724</commentid>
    <comment_count>1</comment_count>
      <attachid>350646</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-24 09:37:41 -0700</bug_when>
    <thetext>Created attachment 350646
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462746</commentid>
    <comment_count>2</comment_count>
      <attachid>350651</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-24 10:17:20 -0700</bug_when>
    <thetext>Created attachment 350651
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462760</commentid>
    <comment_count>3</comment_count>
      <attachid>350653</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-24 10:42:39 -0700</bug_when>
    <thetext>Created attachment 350653
Fix 32-bit macOS build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462792</commentid>
    <comment_count>4</comment_count>
      <attachid>350653</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-09-24 11:52:10 -0700</bug_when>
    <thetext>Comment on attachment 350653
Fix 32-bit macOS build

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

&gt; Source/WebCore/editing/Editor.cpp:3895
&gt; +    if (verticalAlign == VerticalAlign::Sub)
&gt; +        attributes.subscriptOrSuperscript = SubscriptOrSuperscript::Subscript;
&gt; +
&gt; +    if (verticalAlign == VerticalAlign::Super)
&gt; +        attributes.subscriptOrSuperscript = SubscriptOrSuperscript::Superscript;

Should this be a switch? Or do we elsewhere have a function that translates between the two?

(coming back to this, we don&apos;t, because it&apos;s new)

&gt; Source/WebCore/editing/FontAttributes.h:39
&gt; +#if PLATFORM(COCOA)
&gt; +OBJC_CLASS NSDictionary;
&gt; +#endif
&gt; +
&gt; +#if PLATFORM(MAC)
&gt; +OBJC_CLASS NSFont;
&gt; +#elif PLATFORM(IOS)
&gt; +OBJC_CLASS UIFont;
&gt; +#endif

None of these #ifs are really necessary.

&gt; Source/WebCore/editing/FontShadow.h:47
&gt; +    double width { 0 };
&gt; +    double height { 0 };

FloatSize offset; ?

&gt; Source/WebCore/editing/cocoa/FontAttributesCocoa.mm:54
&gt; +        [attributes setObject:font.get() forKey:NSFontAttributeName];

Modern dictionary syntax?

&gt; Source/WebCore/editing/cocoa/FontShadowCocoa.mm:42
&gt; +    [shadow setShadowColor:nsColor(color)];

Wouldn&apos;t it be nice if you had your platformColor thing here. I feel like we must have something similar somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462814</commentid>
    <comment_count>5</comment_count>
      <attachid>350653</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-24 12:33:15 -0700</bug_when>
    <thetext>Comment on attachment 350653
Fix 32-bit macOS build

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

&gt;&gt; Source/WebCore/editing/Editor.cpp:3895
&gt;&gt; +        attributes.subscriptOrSuperscript = SubscriptOrSuperscript::Superscript;
&gt; 
&gt; Should this be a switch? Or do we elsewhere have a function that translates between the two?
&gt; 
&gt; (coming back to this, we don&apos;t, because it&apos;s new)

Interestingly enough, it was a switch before the move! I made this just use if statements instead because I thought it make it clearer that it&apos;s just these two alignment types that make their way into FontAttributes — I&apos;ll turn this back into a switch statement.

&gt;&gt; Source/WebCore/editing/FontAttributes.h:39
&gt;&gt; +#endif
&gt; 
&gt; None of these #ifs are really necessary.

Good point — removed.

&gt;&gt; Source/WebCore/editing/FontShadow.h:47
&gt;&gt; +    double height { 0 };
&gt; 
&gt; FloatSize offset; ?

👍

&gt;&gt; Source/WebCore/editing/cocoa/FontAttributesCocoa.mm:54
&gt;&gt; +        [attributes setObject:font.get() forKey:NSFontAttributeName];
&gt; 
&gt; Modern dictionary syntax?

👍

(Also, I made attributes a NSMutableDictionary * instead of a RetainPtr&lt;NSMutableDictionary&gt;, since RetainPtr doesn&apos;t support operator[])

&gt;&gt; Source/WebCore/editing/cocoa/FontShadowCocoa.mm:42
&gt;&gt; +    [shadow setShadowColor:nsColor(color)];
&gt; 
&gt; Wouldn&apos;t it be nice if you had your platformColor thing here. I feel like we must have something similar somewhere.

Now that you mention it, HTMLConverter does a similar dance, but uses _disambiguated_due_to_CIImage_colorWithCGColor instead (which behaves identically to colorWithCGColor, and as its name suggests, seems to exist to avoid a name conflict with CIColor). Funny enough, the helper there is also called &quot;_platformColor&quot;.

I think we should abstract this out into a separate helper so we can use it from these call sites, but I&apos;m not sure where to put it. Perhaps a new ColorCocoa.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462872</commentid>
    <comment_count>6</comment_count>
      <attachid>350681</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-24 14:11:08 -0700</bug_when>
    <thetext>Created attachment 350681
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462901</commentid>
    <comment_count>7</comment_count>
      <attachid>350692</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-24 14:48:11 -0700</bug_when>
    <thetext>Created attachment 350692
Patch for EWS #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462906</commentid>
    <comment_count>8</comment_count>
      <attachid>350693</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-24 14:49:41 -0700</bug_when>
    <thetext>Created attachment 350693
Patch for EWS #2.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462911</commentid>
    <comment_count>9</comment_count>
      <attachid>350697</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-09-24 14:54:26 -0700</bug_when>
    <thetext>Created attachment 350697
Patch for EWS #2.1 (rebase on trunk)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1463029</commentid>
    <comment_count>10</comment_count>
      <attachid>350697</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-24 17:17:36 -0700</bug_when>
    <thetext>Comment on attachment 350697
Patch for EWS #2.1 (rebase on trunk)

Clearing flags on attachment: 350697

Committed r236445: &lt;https://trac.webkit.org/changeset/236445&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350646</attachid>
            <date>2018-09-24 09:37:41 -0700</date>
            <delta_ts>2018-09-24 10:17:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189918-20180924093740.patch</filename>
            <type>text/plain</type>
            <size>37926</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDljYjlmYmI2NmZmZDQ1
YzZhZWU4YTE4ZDdkZjVlYWE1YjBmOGNiMi4uOWQ0NTYwZWE2OWUwMTFmY2NmMGJmN2EyNjRlMWY0
NjQwNTY3Njg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA5LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEVk
aXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBiZSBwbGF0Zm9ybS1hZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vNDQ2NDg3MDU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JzIHRo
ZSBmdW5jdGlvbmFsaXR5IGluIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFy
dCB0byBub3QgYmUgQ29jb2Etb25seS4gUmVuYW1lIHRoaXMgdG8KKyAgICAgICAgZm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0ICh0byBiZSBjb25zaXN0ZW50IHdpdGggYEVkaXRpbmdTdHls
ZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0YCkgYW5kIG1vdmUgaXQgZnJvbQorICAgICAgICBFZGl0
b3JDb2NvYS5tbSB0byBFZGl0b3IuY3BwOyBpbnN0ZWFkIG9mIGNyZWF0aW5nIGFuZCBwb3B1bGF0
aW5nIGFuIE5TRGljdGlvbmFyeSB3aXRoIGZvbnQgYXR0cmlidXRlCisgICAgICAgIGluZm9ybWF0
aW9uLCBjcmVhdGUgYW5kIHBvcHVsYXRlIGEgbmV3IGBGb250QXR0cmlidXRlc2Agc3RydWN0IHRo
YXQgY29udGFpbnMgdGhlIHNhbWUgaW5mb3JtYXRpb24uIENvY29hIGNsaWVudHMKKyAgICAgICAg
aW4gV2ViS2l0TGVnYWN5IG1heSB0aGVuIGNyZWF0ZSBhbiBgTlNEaWN0aW9uYXJ5YCBhcyBuZWVk
ZWQgZnJvbSB0aGUgYEZvbnRBdHRyaWJ1dGVzYC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGxhdGZv
cm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQgY29uc3QpOgorCisgICAgICAgIEFkZCBh
IGhvb2sgdG8gYWxsb3cgcGxhdGZvcm1zIHRvIHN1cHBseSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u
IGluIEZvbnRBdHRyaWJ1dGVzLiBPbiBDb2NvYSwgdGhpcyBhZGRzIGEgVUlGb250CisgICAgICAg
IG9yIE5TRm9udCB0byBGb250QXR0cmlidXRlczsgb3RoZXJ3aXNlLCB0aGlzIGlzIGEgbm8tb3Au
CisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRTaGFkb3c6
OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93Ojpk
ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaDogQWRk
ZWQuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IHN0cnVjdCB0aGF0IGNvbnRhaW5zIGZvbnQg
YXR0cmlidXRlIGluZm9ybWF0aW9uLiBNYXkgYmUgY29udmVydGVkIGludG8gYW4gTlNEaWN0aW9u
YXJ5IGZvciB1c2UKKyAgICAgICAgYnkgQ29jb2EgY2xpZW50cyBpbiBXZWJLaXRMZWdhY3kgYW5k
IFdlYktpdC4gSW4gYSBmdXR1cmUgcGF0Y2gsIHRoaXMgd2lsbCBiZWNvbWUgc2VyaWFsaXphYmxl
IG92ZXIgSVBDIGZvciB1c2UKKyAgICAgICAgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIGVkaXRp
bmcvRm9udFNoYWRvdy5oOiBBZGRlZC4KKworICAgICAgICBNb3ZlIEZvbnRTaGFkb3cgb3V0IGlu
dG8gYSBzZXBhcmF0ZSBoZWFkZXIgZmlsZSwgaW5jbHVkZWQgaW4gYEZvbnRBdHRyaWJ1dGVDaGFu
Z2VzLmhgIGFuZCBgRm9udEF0dHJpYnV0ZXMuaGAuCisKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRT
aGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93OjpkZWNv
ZGUpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0VGV4dERlY29yYXRpb25BdHRyaWJ1
dGVzUmVzcGVjdGluZ1R5cGluZ1N0eWxlIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICBSZW1v
dmUgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCB3YXMgb25seSB1c2VkIHRvIGNvbXB1dGUgdGV4dCBk
ZWNvcmF0aW9uIGF0dHJpYnV0ZXMgaW4KKyAgICAgICAgZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rp
b25TdGFydC4KKworICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNl
bGVjdGlvblN0YXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0Zv
bnRBdHRyaWJ1dGVzQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1D
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFy
eSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6Y3JlYXRlU2hhZG93IGNvbnN0KToK
KwogMjAxOC0wOS0xOSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3M6IEFkZCBvcHRpb25hbCBjYXAgb24gcGFydGl0
aW9uZWQgY2FjaGUgbWF4IGFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDI4ZGE4
ZThlOWUxNGEyYjJmMjBhMmY3ZDE5ZDAwOTk0NTVmMDhiNmUuLmEzMDMwOTljZWVlMWQxZWZlZjlh
MjliZTdjZWMyNjIyZWNhMTk4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxOC0wOS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKworICAgICAgICBSZWZhY3RvciBFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0
aW9uU3RhcnQgdG8gYmUgcGxhdGZvcm0tYWdub3N0aWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTkxOAorICAgICAgICBXb3JrIHRvd2FyZHMgPHJk
YXI6Ly9wcm9ibGVtLzQ0NjQ4NzA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlcGxhY2UgY2FsbCBzaXRlcyBvZiBmb250QXR0cmlidXRlc0ZvclNl
bGVjdGlvblN0YXJ0KCkgdG8gZm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkuY3JlYXRl
RGljdGlvbmFyeSgpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgX3NlbGVjdGlvblN0YXJ0Rm9udEF0dHJpYnV0ZXNBc1JURl0pOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBfdXBkYXRlRm9udFBhbmVsXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHR5cGluZ0F0dHJpYnV0ZXNdKToK
KwogMjAxOC0wOS0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VXNlIE9wYXF1ZUpTU3RyaW5nIHJhdGhlciB0aGFuIEpTUmV0YWluUHRyIGluc2lkZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDYyYmZkOGQ4YzIwN2EwOTQ5ODkzZTVjNDU4YWJj
ZTcwN2JjZmY2N2YuLjk5NjIwMjg3M2YyMjA1Zjc3ZWVkNjJlZWQ1NzY4MDFmM2E5NDk0ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNzksNiArNzksOCBAQCBlZGl0aW5nL1NtYXJ0UmVw
bGFjZUNGLmNwcAogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCiBlZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2Eu
bW0KK2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbQorZWRpdGluZy9jb2NvYS9G
b250U2hhZG93Q29jb2EubW0KIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBAbm8tdW5p
ZnkKIGVkaXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmlu
Zy5tbQogZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIu
bW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0ZTY2ZTkyNzEyYjQ4MDhmYWYyOTQzMGUzY2I4MDE3YTViNDc4OTgwLi4yZDJkYzUw
NTIxNTA2OWNlOTQ3MzE0Y2M0NGMwMWVmZWRmODVjYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODQwLDYgKzQ4NDAsOCBA
QAogCQlGNDgyMjMxMDFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIy
MzBFMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tICovOyB9
OwogCQlGNDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIz
MEYxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDgyMjMxMzFFMzg2
RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJz
dHJhY3RQYXN0ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRjQ4RDJBNkMyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFkb3cuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEQyQTZBMjE1NjIz
QjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ4RDJBN0UyMTU3MTgyNjAwQzY3NTJCIC8qIEZvbnRBdHRy
aWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDhEMkE3MTIxNTZEQzBBMDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNDk3ODY4ODFGRjQ1RkE1MDBF
MDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2Fy
ZEl0ZW1JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRjRCRkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyBp
biBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5
ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLzsgfTsKIAkJRjRC
RkI5ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyBpbiBDb3B5IFNj
cmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODQxRTFEREYy
QjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKQEAgLTE0NTcxLDYgKzE0
NTczLDEwIEBACiAJCUY0ODIyMzEyMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9h
cmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RQYXN0ZWJvYXJk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTgzMUUxRERGMkIwMDc2QjdF
QSAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3Jp
cHQ7IG5hbWUgPSBEdW1wRWRpdGluZ0hpc3RvcnkuanM7IHBhdGggPSBTY3JpcHRzL0R1bXBFZGl0
aW5nSGlzdG9yeS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4Mzg5ODQxRTFE
REYyQjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgbmFtZSA9IEVkaXRpbmdIaXN0b3J5VXRpbC5qczsgcGF0aCA9IFNjcmlw
dHMvRWRpdGluZ0hpc3RvcnlVdGlsLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NDhEMkE2QTIxNTYyM0I0MDBDNjc1MkIgLyogRm9udFNoYWRvdy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b250U2hhZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0OEQyQTcxMjE1NkRD
MEEwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250QXR0cmli
dXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhEMkE3NTIxNTZGRTU3MDBD
Njc1MkIgLyogRm9udEF0dHJpYnV0ZXNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZv
bnRBdHRyaWJ1dGVzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0OEQy
QTdBMjE1NzA1MUUwMEM2NzUyQiAvKiBGb250U2hhZG93Q29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBGb250U2hhZG93Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGFzdGVib2FyZEl0ZW1JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0RTU3RURBMjEzRjNGNUYwMDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250QXR0cmlidXRlQ2hhbmdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFn
ZXJFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTI4LDYgKzE5OTM0LDggQEAKIAkJCQlD
NTIyN0RGMDFDM0M2REQ3MDBGNUVENTQgLyogRGF0YURldGVjdGlvbi5tbSAqLywKIAkJCQk5QjU1
RUVFODFCM0U4ODk4MDA1MzQyQkMgLyogRWRpdG9yQ29jb2EubW0gKi8sCiAJCQkJRjQyQ0VCNTQy
MTQwMzFFRTAwMkRDQTcyIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0gKi8sCisJCQkJ
RjQ4RDJBNzUyMTU2RkU1NzAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzQ29jb2EubW0gKi8sCisJ
CQkJRjQ4RDJBN0EyMTU3MDUxRTAwQzY3NTJCIC8qIEZvbnRTaGFkb3dDb2NvYS5tbSAqLywKIAkJ
CQk3QzNFNTEwODE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5oICovLAogCQkJCTdD
M0U1MTA5MThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tICovLAogCQkJCUUxODUz
NjgxMUY0RTQ3MjcwMEZFMDkxQiAvKiBXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVk
U3RyaW5nLmggKi8sCkBAIC0yMDIzMiw2ICsyMDI0MCw4IEBACiAJCQkJMzcyQzAwRDgxMjk2MTlG
ODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmggKi8sCiAJCQkJRjQ0Mjg1MEIyMTQwNDEyNTAwQ0NE
QTIyIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmNwcCAqLywKIAkJCQlGNEU1N0VEQTIxM0YzRjVG
MDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCAqLywKKwkJCQlGNDhEMkE3MTIxNTZE
QzBBMDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCAqLywKKwkJCQlGNDhEMkE2QTIxNTYyM0I0
MDBDNjc1MkIgLyogRm9udFNoYWRvdy5oICovLAogCQkJCUQwNUNFRDI3MEE0MEJCMkMwMEM1QUYz
OCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwICovLAogCQkJCUQwNUNFRDI4MEE0MEJCMkMwMEM1
QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuaCAqLywKIAkJCQk5MzMwOURCRTA5OUU2NDkxMDA1
NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwICovLApAQCAtMjM5NTEsOCArMjM5NjEsOCBAQAog
CQkJCTJEMEI0QUE5MThEQTFDQ0QwMDQzNERFMSAvKiBJT1N1cmZhY2UuaCAqLywKIAkJCQkyRDBC
NEFBQTE4REExQ0NEMDA0MzRERTEgLyogSU9TdXJmYWNlLm1tICovLAogCQkJCUFEOUZGNkUwMTkw
ODM5MUQwMDNCNjFFMCAvKiBJT1N1cmZhY2VQb29sQ29jb2EubW0gKi8sCi0JCQkJQ0RDNDhBQzcy
MTQ5Q0YyQTAwMjRGRDU5IC8qIE1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5o
ICovLAogCQkJCUNEQzQ4QUM4MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5Q29jb2EuY3BwICovLAorCQkJCUNEQzQ4QUM3MjE0OUNGMkEwMDI0RkQ1OSAv
KiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCAqLywKIAkJCQk1MjY3MjRG
MjFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovLAog
CQkJCTUyNjcyNEYxMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNv
Y29hLm1tICovLAogCQkJCTJEM0VGNDQ0MTkxNzkxNUMwMDAzNDE4NCAvKiBXZWJBY3Rpb25EaXNh
YmxpbmdDQUxheWVyRGVsZWdhdGUuaCAqLywKQEAgLTI0NzMwLDggKzI0NzQwLDggQEAKIAkJQ0Q2
NjlENjUxRDIzMkRGNDAwNEQxODY2IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0MTdGN0FFQTIxMzlCRjY0MDBGQkE3RUMgLyogTWVkaWFT
ZXNzaW9uTWFuYWdlckNvY29hLm1tICovLAogCQkJCTQxN0Y3QUVEMjEzOUJGNjUwMEZCQTdFQyAv
KiBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2EuaCAqLywKKwkJCQk0MTdGN0FFQTIxMzlCRjY0MDBG
QkE3RUMgLyogTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hLm1tICovLAogCQkJCTQxN0Y3QUVCMjEz
OUJGNjQwMEZCQTdFQyAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuY3BwICovLAogCQkJCTQxN0Y3QUVD
MjEzOUJGNjUwMEZCQTdFQyAvKiBXZWJBdWRpb0J1ZmZlckxpc3QuaCAqLywKIAkJCSk7CkBAIC0y
ODA0MCw2ICsyODA1MCw3IEBACiAJCQkJQjJDM0RBNjUwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzJEODlEMUIxRTI5MUYwMEQ1MkU4NyAvKiBGb250QW50
aWFsaWFzaW5nU3RhdGVTYXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRFNTdFREMyMTNGM0Y1
RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
NDhEMkE3RTIxNTcxODI2MDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQjkyRDRGMTI5MzU1MEIwMEM4Mzg3RiAvKiBGb250QmFzZWxpbmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyQzNEQTYzMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyNDU4RTYzMUZFODk3QjAwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3Jl
VGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODA1Niw2ICsyODA2Nyw3IEBACiAJCQkJQzJBQjBB
RjcxRTZCM0M2QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyQzNEQTZCMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250U2VsZWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0MTkwNDFGMUNDNjQ4NkIwMEMzNUY1RCAvKiBGb250U2VsZWN0b3JD
bGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0OEQyQTZDMjE1NjIzQjQwMEM2NzUyQiAvKiBG
b250U2hhZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTZFOUZDODEzQzE3RDU3MDA0NkE3Rjgg
LyogRm9udFRhZ2dlZFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjAxNUMwQTFCRTZG
RUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
QTBEQTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI5NDcyLDYgKzI5NDg0LDcgQEAKIAkJCQkyRDlCRjcwNjFEQkZCQjI0MDA3
QTdEOTkgLyogTWVkaWFFbmNyeXB0ZWRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5QkY3
MDgxREJGQkIyNDAwN0E3RDk5IC8qIE1lZGlhRW5jcnlwdGVkRXZlbnRJbml0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MUIyOEIxNTFGODUwMUQzMDBGQjUyQUMgLyogTWVkaWFFbmRwb2ludENvbmZp
Z3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQzQ4QUM5MjE0OUNGMkEwMDI0RkQ1OSAv
KiBNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCBpbiBIZWFkZXJzICovLAog
CQkJCUU0NDYxM0FEMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVycm9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0RTE5NTkyMjBBMzlEQUJBMDAyMjBGRTUgLyogTWVkaWFGZWF0dXJlTmFtZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3QTZEMUVDMTQ5MTEzNzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdt
ZW50VVJJUGFyc2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMjg2LDcgKzMwMjk5LDYgQEAKIAkJ
CQk1MTdBNTM0RjFGNTRBOEJBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MzI5MUY0QjkwQjkwMERDREMwQSAvKiBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU2OTFG
M0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUNEQzQ4QUM5MjE0OUNGMkEwMDI0RkQ1OSAvKiBNZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkNDRTMwMUY4
RjE3OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTEyQjU0MzFGOUY5Q0EwMDBFNjc4NzUgLyogU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTVFMzdGNjFGQUE5NDAyMDBEN0YyMkEgLyogU2VydmljZVdv
cmtlclR5cGVzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRl
eCAyZDQ3ZGM3Y2VkYTA0MDdjOTM4YjdmYjg1NjEyMjIzNTc5NzgyNTM2Li40YzYzNzljM2RmMmUz
YmMzNWQ4MzdkMjE1ZWRjYTY1YTJjYzczMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZp
bGUuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJGb250QXR0cmli
dXRlcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJGcmFtZVRyZWUuaCIKQEAgLTM4NTEsNiArMzg1Miw3MiBAQCB2b2lkIEVkaXRvcjo6
c2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpCiAgICAgbV9lZGl0b3JVSVVwZGF0ZVRpbWVyLnN0YXJ0
T25lU2hvdCgwX3MpOwogfQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQorCit2b2lkIEVkaXRvcjo6
cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBj
b25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0Cit7Cit9CisKKyNlbmRpZgorCitGb250QXR0cmlidXRl
cyBFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpIGNvbnN0Cit7CisgICAg
Rm9udEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICBOb2RlKiBub2RlVG9SZW1vdmUgPSBudWxs
cHRyOworICAgIGF1dG8qIHN0eWxlID0gc3R5bGVGb3JTZWxlY3Rpb25TdGFydCgmbV9mcmFtZSwg
bm9kZVRvUmVtb3ZlKTsKKyAgICBpZiAoIXN0eWxlKSB7CisgICAgICAgIGlmIChub2RlVG9SZW1v
dmUpCisgICAgICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZSgpOworICAgICAgICByZXR1cm4g
YXR0cmlidXRlczsKKyAgICB9CisKKyAgICBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydChhdHRyaWJ1dGVzLCAqc3R5bGUpOworCisgICAgLy8gRklYTUU6IGZvciBub3csIGFs
d2F5cyByZXBvcnQgdGhlIGNvbG9ycyBhZnRlciBhcHBseWluZyAtYXBwbGUtY29sb3ItZmlsdGVy
LiBJbiBmdXR1cmUgbm90IGFsbCBjbGllbnRzCisgICAgLy8gbWF5IHdhbnQgdGhpcywgc28gd2Ug
bWF5IGhhdmUgdG8gYWRkIGEgc2V0dGluZyB0byBjb250cm9sIGl0LiBTZWUgYWxzbyBlZGl0aW5n
QXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSgpLgorICAgIGF1dG8gYmFja2dyb3VuZENvbG9yID0g
c3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcik7CisgICAgaWYgKGJhY2tncm91bmRDb2xvci5pc1Zpc2libGUoKSkKKyAg
ICAgICAgYXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7CisKKyAg
ICBhdXRvIGZvcmVncm91bmRDb2xvciA9IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRo
Q29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcik7CisgICAgLy8gRklYTUU6IGlzQmxhY2tDb2xv
ciBub3Qgc3VpdGFibGUgZm9yIGRhcmsgbW9kZS4KKyAgICBpZiAoZm9yZWdyb3VuZENvbG9yLmlz
VmFsaWQoKSAmJiAhQ29sb3I6OmlzQmxhY2tDb2xvcihmb3JlZ3JvdW5kQ29sb3IpKQorICAgICAg
ICBhdHRyaWJ1dGVzLmZvcmVncm91bmRDb2xvciA9IGZvcmVncm91bmRDb2xvcjsKKworICAgIGlm
IChhdXRvKiBzaGFkb3dEYXRhID0gc3R5bGUtPnRleHRTaGFkb3coKSkKKyAgICAgICAgYXR0cmli
dXRlcy5mb250U2hhZG93ID0geyBzaGFkb3dEYXRhLT5jb2xvcigpLCBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHNoYWRvd0RhdGEtPngoKSksIHN0YXRpY19jYXN0PGRvdWJsZT4oc2hhZG93RGF0YS0+eSgp
KSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzaGFkb3dEYXRhLT5yYWRpdXMoKSkgfTsKKworICAgIGF1
dG8gdmVydGljYWxBbGlnbiA9IHN0eWxlLT52ZXJ0aWNhbEFsaWduKCk7CisgICAgaWYgKHZlcnRp
Y2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6U3ViKQorICAgICAgICBhdHRyaWJ1dGVzLnN1YnNj
cmlwdE9yU3VwZXJzY3JpcHQgPSBTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpTdWJzY3JpcHQ7CisK
KyAgICBpZiAodmVydGljYWxBbGlnbiA9PSBWZXJ0aWNhbEFsaWduOjpTdXBlcikKKyAgICAgICAg
YXR0cmlidXRlcy5zdWJzY3JpcHRPclN1cGVyc2NyaXB0ID0gU3Vic2NyaXB0T3JTdXBlcnNjcmlw
dDo6U3VwZXJzY3JpcHQ7CisKKyAgICBhdXRvIHR5cGluZ1N0eWxlID0gbWFrZVJlZlB0cihtX2Zy
YW1lLnNlbGVjdGlvbigpLnR5cGluZ1N0eWxlKCkpOworICAgIGlmICh0eXBpbmdTdHlsZSAmJiB0
eXBpbmdTdHlsZS0+c3R5bGUoKSkgeworICAgICAgICBhdXRvIHZhbHVlID0gdHlwaW5nU3R5bGUt
PnN0eWxlKCktPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCk7CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS0+aXNWYWx1ZUxpc3Qo
KSkgeworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0JiB2YWx1ZUxpc3QgPSBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KCp2YWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWVMaXN0Lmhhc1ZhbHVlKENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGlu
ZVRocm91Z2gpLnB0cigpKSkKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLmhhc1N0cmlrZVRo
cm91Z2ggPSB0cnVlOworICAgICAgICAgICAgaWYgKHZhbHVlTGlzdC5oYXNWYWx1ZShDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVVuZGVybGlu
ZSkucHRyKCkpKQorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuaGFzVW5kZXJsaW5lID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gZGVjb3JhdGlvbiA9IHN0
eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOworICAgICAgICBpZiAoZGVjb3JhdGlvbiAm
IFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMuaGFz
U3RyaWtlVGhyb3VnaCA9IHRydWU7CisgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29y
YXRpb246OlVuZGVybGluZSkKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMuaGFzVW5kZXJsaW5lID0g
dHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobm9kZVRvUmVtb3ZlKQorICAgICAgICBub2RlVG9SZW1v
dmUtPnJlbW92ZSgpOworCisgICAgcmV0dXJuIGF0dHJpYnV0ZXM7Cit9CisKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQogCiB2b2lkIEVkaXRvcjo6cmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDMzMjNhMzM4YTIxMTA0YjdkODQ4NWEy
ZDllNDExNzA4ZTk5MzJkMDEuLmRiOTRhZmY2YjUwODAwY2M1NDc2NTc3YTQ4M2U1NGNjZTBmZmJm
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtODEsNiArODEsNyBAQCBjbGFzcyBUZXh0
OwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBUZXh0RXZlbnQ7CiAKK3N0cnVjdCBG
b250QXR0cmlidXRlczsKIHN0cnVjdCBQYXN0ZWJvYXJkUGxhaW5UZXh0Owogc3RydWN0IFBhc3Rl
Ym9hcmRVUkw7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwpAQCAtNDY5LDEwICs0NzAsOSBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250KiBmb250Rm9yU2VsZWN0
aW9uKGJvb2wmIGhhc011bHRpcGxlRm9udHMpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JTZWxlY3Rpb25TdGFydChGcmFtZSogLCBO
b2RlICombm9kZVRvUmVtb3ZlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGb250QXR0cmlidXRlcyBm
b250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHZvaWQgZ2V0VGV4dERlY29yYXRpb25BdHRyaWJ1dGVzUmVzcGVjdGluZ1R5cGlu
Z1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgTlNNdXRhYmxlRGljdGlvbmFyeSopIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGZvbnRBdHRyaWJ1dGVz
Rm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3Ry
aW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkV2l0aEltYWdlQWx0VGV4dCgpOwogI2lmICFQTEFURk9STShJT1MpCkBAIC01
NjIsNiArNTYyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
ZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAgICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAj
ZW5kaWYKKyAgICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZv
bnRBdHRyaWJ1dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKIAogICAgIHZvaWQgc2No
ZWR1bGVFZGl0b3JVSVVwZGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRB
dHRyaWJ1dGVDaGFuZ2VzLmgKaW5kZXggZGU3YWU1M2QzNzgyYzQwZjcxMWU0ODRmNWFlZDJjNTI1
YTlkNjBkZC4uZGMxOGQwNDkyNzY2ZjU2NTU1OWUzYWQ5NWIxYzY2YWI1ZWQ1YWJlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZv
bnRTaGFkb3cuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC02OSwxNiArNzAsNiBAQCBw
cml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pdGFsaWM7CiB9OwogCi1zdHJ1Y3Qg
Rm9udFNoYWRvdyB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRl
Y29kZShEZWNvZGVyJiwgRm9udFNoYWRvdyYpOwotCi0gICAgQ29sb3IgY29sb3I7Ci0gICAgZG91
YmxlIHdpZHRoIHsgMCB9OwotICAgIGRvdWJsZSBoZWlnaHQgeyAwIH07Ci0gICAgZG91YmxlIGJs
dXJSYWRpdXMgeyAwIH07Ci19OwotCiBjbGFzcyBGb250QXR0cmlidXRlQ2hhbmdlcyB7CiBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpAQCAtMTM3LDMwICsxMjgsNiBAQCBib29sIEZvbnRDaGFuZ2VzOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgRm9udENoYW5nZXMmIGNoYW5nZXMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIEZvbnRTaGFkb3c6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgY29sb3IgPDwgd2lkdGggPDwgaGVp
Z2h0IDw8IGJsdXJSYWRpdXM7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1ib29sIEZv
bnRTaGFkb3c6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGb250U2hhZG93JiBzaGFkb3cpCi17
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaGFkb3cuY29sb3IpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy53aWR0aCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93LmhlaWdodCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93
LmJsdXJSYWRpdXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRm9udEF0dHJpYnV0ZUNoYW5nZXM6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
b250QXR0cmlidXRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwNGJkMjkyNWI0OWNiYzIyYTQ4YTk3NzlmOWE2
ZmY4MjRiOTIzMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zv
bnRBdHRyaWJ1dGVzLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiRm9udFNoYWRvdy5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKE1BQykKK09CSkNfQ0xBU1MgTlNGb250OworI2VsaWYgUExBVEZPUk0o
SU9TKQorT0JKQ19DTEFTUyBVSUZvbnQ7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitlbnVtIGNsYXNzIFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQgOiB1aW50OF90IHsgTm9uZSwgU3Vi
c2NyaXB0LCBTdXBlcnNjcmlwdCB9OworCitzdHJ1Y3QgRm9udEF0dHJpYnV0ZXMgeworI2lmIFBM
QVRGT1JNKENPQ09BKQorICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IGNyZWF0ZURpY3Rpb25hcnkoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIFJldGFpblB0cjxOU0ZvbnQ+IGZvbnQ7CisjZWxpZiBQTEFURk9STShJT1MpCisgICAgUmV0
YWluUHRyPFVJRm9udD4gZm9udDsKKyNlbmRpZgorICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsK
KyAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3I7CisgICAgRm9udFNoYWRvdyBmb250U2hhZG93Owor
ICAgIFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQgc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCB7IFN1YnNj
cmlwdE9yU3VwZXJzY3JpcHQ6Ok5vbmUgfTsKKyAgICBib29sIGhhc1VuZGVybGluZSB7IGZhbHNl
IH07CisgICAgYm9vbCBoYXNTdHJpa2VUaHJvdWdoIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6U3Vic2NyaXB0T3JTdXBlcnNjcmlwdD4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlN1YnNjcmlwdE9yU3VwZXJzY3Jp
cHQsCisgICAgICAgIFdlYkNvcmU6OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6Ok5vbmUsCisgICAg
ICAgIFdlYkNvcmU6OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1YnNjcmlwdCwKKyAgICAgICAg
V2ViQ29yZTo6U3Vic2NyaXB0T3JTdXBlcnNjcmlwdDo6U3VwZXJzY3JpcHQKKyAgICA+OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZvbnRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udFNoYWRvdy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc2NjQxM2M2ODEwOTcxZWExZTI4NGFkMzFjYzM3MTNiNzBjNzUzMjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cuaApAQCAtMCwwICsx
LDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvci5oIgor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19D
TEFTUyBOU1NoYWRvdzsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBG
b250U2hhZG93IHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVj
b2RlKERlY29kZXImLCBGb250U2hhZG93Jik7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBS
ZXRhaW5QdHI8TlNTaGFkb3c+IGNyZWF0ZVNoYWRvdygpIGNvbnN0OworI2VuZGlmCisKKyAgICBD
b2xvciBjb2xvcjsKKyAgICBkb3VibGUgd2lkdGggeyAwIH07CisgICAgZG91YmxlIGhlaWdodCB7
IDAgfTsKKyAgICBkb3VibGUgYmx1clJhZGl1cyB7IDAgfTsKK307CisKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Cit2b2lkIEZvbnRTaGFkb3c6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgY29sb3IgPDwgd2lkdGggPDwgaGVpZ2h0IDw8IGJsdXJSYWRp
dXM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIEZvbnRTaGFkb3c6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBGb250U2hhZG93JiBzaGFkb3cpCit7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzaGFkb3cuY29sb3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy53aWR0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93LmhlaWdodCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93LmJsdXJSYWRpdXMpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0KaW5kZXggZTM3NzFiN2M1NDIzMGY4ZTQ2YzA4NzE3N2ZiYmZkZmMyMjRjNDNkNy4uODUwNjVj
OGNlNDZmYjhjYjI0N2FkMzA1YTkxZDJiZDU1MTc3YzMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJF
ZGl0aW5nLmgiCiAjaW1wb3J0ICJFZGl0aW5nU3R5bGUuaCIKICNpbXBvcnQgIkVkaXRvckNsaWVu
dC5oIgorI2ltcG9ydCAiRm9udEF0dHJpYnV0ZXMuaCIKICNpbXBvcnQgIkZvbnRDYXNjYWRlLmgi
CiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKQEAgLTU4LDg5ICs1
OSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgRWRpdG9yOjpnZXRUZXh0RGVj
b3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBOU011dGFibGVEaWN0aW9uYXJ5KiByZXN1bHQpIGNvbnN0Cit2b2lkIEVkaXRvcjo6
cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKLSAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkudHlwaW5nU3R5
bGUoKTsKLSAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5bGUtPnN0eWxlKCkpIHsKLSAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHR5cGluZ1N0eWxlLT5zdHlsZSgpLT5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Qp
OwotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAg
ICAgIENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqdmFs
dWUpOwotICAgICAgICAgICAgaWYgKHZhbHVlTGlzdC5oYXNWYWx1ZShDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmVUaHJvdWdoKS5wdHIo
KSkpCi0gICAgICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6QChOU1VuZGVybGluZVN0eWxl
U2luZ2xlKSBmb3JLZXk6TlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXTsKLSAgICAg
ICAgICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUpLnB0cigpKSkKLSAgICAgICAg
ICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktl
eTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ug
ewotICAgICAgICBhdXRvIGRlY29yYXRpb24gPSBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCgpOwotICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3Vn
aCkKLSAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmds
ZSkgZm9yS2V5Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgIGlm
IChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKLSAgICAgICAgICAgIFty
ZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSkgZm9yS2V5Ok5TVW5kZXJs
aW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKLSAgICB9Ci19Ci0KLVJldGFpblB0cjxOU0RpY3Rpb25h
cnk+IEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0Ci17Ci0g
ICAgTm9kZSogbm9kZVRvUmVtb3ZlOwotICAgIGF1dG8qIHN0eWxlID0gc3R5bGVGb3JTZWxlY3Rp
b25TdGFydCgmbV9mcmFtZSwgbm9kZVRvUmVtb3ZlKTsKLSAgICBpZiAoIXN0eWxlKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGF0dHJp
YnV0ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwotCi0g
ICAgaWYgKGF1dG8gY3RGb250ID0gc3R5bGUtPmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5n
ZXRDVEZvbnQoKSkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OihfX2JyaWRnZSBpZClj
dEZvbnQgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwotCi0gICAgLy8gRklYTUU6IFdoeSB3
b3VsZCB3ZSBub3Qgd2FudCB0byByZXRyaWV2ZSB0aGVzZSBhdHRyaWJ1dGVzIG9uIGlPUz8KLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgLy8gRklYTUU6IGZvciBub3csIGFsd2F5cyByZXBvcnQgdGhl
IGNvbG9ycyBhZnRlciBhcHBseWluZyAtYXBwbGUtY29sb3ItZmlsdGVyLiBJbiBmdXR1cmUgbm90
IGFsbCBjbGllbnRzCi0gICAgLy8gbWF5IHdhbnQgdGhpcywgc28gd2UgbWF5IGhhdmUgdG8gYWRk
IGEgc2V0dGluZyB0byBjb250cm9sIGl0LiBTZWUgYWxzbyBlZGl0aW5nQXR0cmlidXRlZFN0cmlu
Z0Zyb21SYW5nZSgpLgotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHN0eWxlLT52aXNpdGVk
RGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OwotICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkpCi0gICAgICAgIFthdHRyaWJ1
dGVzIHNldE9iamVjdDpuc0NvbG9yKGJhY2tncm91bmRDb2xvcikgZm9yS2V5Ok5TQmFja2dyb3Vu
ZENvbG9yQXR0cmlidXRlTmFtZV07Ci0KLSAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3IgPSBzdHls
ZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3Ip
OwotICAgIC8vIEZJWE1FOiBpc0JsYWNrQ29sb3Igbm90IHN1aXRhYmxlIGZvciBkYXJrIG1vZGUu
Ci0gICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgIUNvbG9yOjppc0JsYWNrQ29s
b3IoZm9yZWdyb3VuZENvbG9yKSkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0Om5zQ29s
b3IoZm9yZWdyb3VuZENvbG9yKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1l
XTsKLQotICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvd0RhdGEgPSBzdHlsZS0+dGV4dFNoYWRv
dygpOwotICAgIGlmIChzaGFkb3dEYXRhKSB7Ci0gICAgICAgIFJldGFpblB0cjxOU1NoYWRvdz4g
cGxhdGZvcm1TaGFkb3cgPSBhZG9wdE5TKFtbTlNTaGFkb3cgYWxsb2NdIGluaXRdKTsKLSAgICAg
ICAgW3BsYXRmb3JtU2hhZG93IHNldFNoYWRvd09mZnNldDpOU01ha2VTaXplKHNoYWRvd0RhdGEt
PngoKSwgc2hhZG93RGF0YS0+eSgpKV07Ci0gICAgICAgIFtwbGF0Zm9ybVNoYWRvdyBzZXRTaGFk
b3dCbHVyUmFkaXVzOnNoYWRvd0RhdGEtPnJhZGl1cygpXTsKLSAgICAgICAgW3BsYXRmb3JtU2hh
ZG93IHNldFNoYWRvd0NvbG9yOm5zQ29sb3Ioc2hhZG93RGF0YS0+Y29sb3IoKSldOwotICAgICAg
ICBbYXR0cmlidXRlcyBzZXRPYmplY3Q6cGxhdGZvcm1TaGFkb3cuZ2V0KCkgZm9yS2V5Ok5TU2hh
ZG93QXR0cmlidXRlTmFtZV07Ci0gICAgfQotCi0gICAgaW50IHN1cGVyc2NyaXB0SW50ID0gMDsK
LSAgICBzd2l0Y2ggKHN0eWxlLT52ZXJ0aWNhbEFsaWduKCkpIHsKLSAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OkJhc2VsaW5lOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgotICAgIGNh
c2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWdu
OjpMZW5ndGg6Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6Ci0gICAgY2FzZSBWZXJ0
aWNhbEFsaWduOjpUZXh0Qm90dG9tOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dFRvcDoK
LSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpTdWI6Ci0gICAgICAgIHN1cGVyc2NyaXB0SW50ID0gLTE7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6U3VwZXI6Ci0gICAgICAgIHN1cGVyc2Ny
aXB0SW50ID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChzdXBlcnNjcmlwdElu
dCkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OkAoc3VwZXJzY3JpcHRJbnQpIGZvcktl
eTpOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV07Ci0jZW5kaWYKLQotICAgIGdldFRleHREZWNv
cmF0aW9uQXR0cmlidXRlc1Jlc3BlY3RpbmdUeXBpbmdTdHlsZSgqc3R5bGUsIGF0dHJpYnV0ZXMu
Z2V0KCkpOwotCi0gICAgaWYgKG5vZGVUb1JlbW92ZSkKLSAgICAgICAgbm9kZVRvUmVtb3ZlLT5y
ZW1vdmUoKTsKLQotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIGlmIChhdXRvIGN0Rm9udCA9
IHN0eWxlLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5nZXRDVEZvbnQoKSkKKyAgICAgICAg
YXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAogc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1
dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4ZWI0NTZmNjM3
YzFkOWIzZDI3ZTNmYTE2MzVjYzIzOGNmY2Y5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KQEAgLTAsMCArMSw4
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRm9udEF0dHJp
YnV0ZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgUExBVEZPUk0o
SU9TKQorU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwg
VUlDb2xvcikKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQVBQS0lU
KQorc3RhdGljIE5TQ29sb3IgKnBsYXRmb3JtQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorewor
ICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKTsKK30KKyNlbGlmIFBMQVRGT1JNKElPUykKK3N0YXRp
YyBVSUNvbG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1
cm4gW2dldFVJQ29sb3JDbGFzcygpIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xv
cildOworfQorI2VuZGlmCisKK1JldGFpblB0cjxOU0RpY3Rpb25hcnk+IEZvbnRBdHRyaWJ1dGVz
OjpjcmVhdGVEaWN0aW9uYXJ5KCkgY29uc3QKK3sKKyAgICBhdXRvIGF0dHJpYnV0ZXMgPSBhZG9w
dE5TKFtOU011dGFibGVEaWN0aW9uYXJ5IG5ld10pOworICAgIGlmIChmb250KQorICAgICAgICBb
YXR0cmlidXRlcyBzZXRPYmplY3Q6Zm9udC5nZXQoKSBmb3JLZXk6TlNGb250QXR0cmlidXRlTmFt
ZV07CisKKyAgICBpZiAoZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgW2F0dHJp
YnV0ZXMgc2V0T2JqZWN0OnBsYXRmb3JtQ29sb3IoZm9yZWdyb3VuZENvbG9yKSBmb3JLZXk6TlNG
b3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3Iu
aXNWYWxpZCgpKQorICAgICAgICBbYXR0cmlidXRlcyBzZXRPYmplY3Q6cGxhdGZvcm1Db2xvcihi
YWNrZ3JvdW5kQ29sb3IpIGZvcktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwor
CisgICAgaWYgKGZvbnRTaGFkb3cuY29sb3IuaXNWYWxpZCgpICYmIChmb250U2hhZG93LndpZHRo
IHx8IGZvbnRTaGFkb3cuaGVpZ2h0IHx8IGZvbnRTaGFkb3cuYmx1clJhZGl1cykpIHsKKyAgICAg
ICAgYXV0byBzaGFkb3cgPSBmb250U2hhZG93LmNyZWF0ZVNoYWRvdygpOworICAgICAgICBbYXR0
cmlidXRlcyBzZXRPYmplY3Q6c2hhZG93LmdldCgpIGZvcktleTpOU1NoYWRvd0F0dHJpYnV0ZU5h
bWVdOworICAgIH0KKworICAgIGlmIChzdWJzY3JpcHRPclN1cGVyc2NyaXB0ID09IFN1YnNjcmlw
dE9yU3VwZXJzY3JpcHQ6OlN1YnNjcmlwdCkKKyAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0
OkAoLTEpIGZvcktleTpOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV07CisgICAgZWxzZSBpZiAo
c3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9PSBTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpTdXBlcnNj
cmlwdCkKKyAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OkAoMSkgZm9yS2V5Ok5TU3VwZXJz
Y3JpcHRBdHRyaWJ1dGVOYW1lXTsKKworICAgIGlmIChoYXNVbmRlcmxpbmUpCisgICAgICAgIFth
dHRyaWJ1dGVzIHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktleTpOU1Vu
ZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07CisKKyAgICBpZiAoaGFzU3RyaWtlVGhyb3VnaCkK
KyAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSkg
Zm9yS2V5Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV07CisKKyAgICByZXR1cm4g
YXR0cmlidXRlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzgzMDdk
M2I3NjdiMDVkN2EzODU5ODY4MmE4Y2NjYjkwZGM0OWE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW0KQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGb250U2hh
ZG93LmgiCisKKyNpbmNsdWRlICJDb2xvck1hYy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorU09G
VF9MSU5LX0NMQVNTKFVJS2l0LCBOU1NoYWRvdykKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JldGFpblB0cjxOU1NoYWRvdz4gRm9udFNoYWRvdzo6Y3JlYXRlU2hhZG93KCkgY29u
c3QKK3sKKyNpZiBVU0UoQVBQS0lUKQorICAgIGF1dG8gc2hhZG93ID0gYWRvcHROUyhbTlNTaGFk
b3cgbmV3XSk7CisjZWxpZiBQTEFURk9STShJT1MpCisgICAgYXV0byBzaGFkb3cgPSBhZG9wdE5T
KFthbGxvY05TU2hhZG93SW5zdGFuY2UoKSBpbml0XSk7CisjZW5kaWYKKyAgICBbc2hhZG93IHNl
dFNoYWRvd09mZnNldDpDR1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpXTsKKyAgICBbc2hhZG93IHNl
dFNoYWRvd0JsdXJSYWRpdXM6Ymx1clJhZGl1c107CisjaWYgVVNFKEFQUEtJVCkKKyAgICBbc2hh
ZG93IHNldFNoYWRvd0NvbG9yOm5zQ29sb3IoY29sb3IpXTsKKyNlbGlmIFBMQVRGT1JNKElPUykK
KyAgICBbc2hhZG93IHNldFNoYWRvd0NvbG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBjb2xvcldpdGhD
R0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXV07CisjZW5kaWYKKyAgICByZXR1cm4gc2hhZG93
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCAyNjRiOGIwYzkyMTBlNGIyNGRlODRjYTdmNGI5Mjc1OTZhMWE5YzMyLi5jMGZh
MTQ0ZjIxMWJhMDY3MGY4YjI2OGRlNWFmMjQyYWUxZGNiYTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTk2LDYgKzk2LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhY2hlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+
CkBAIC01MDU3LDcgKzUwNTgsNyBAQCBzdGF0aWMgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJl
bnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiB7CiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIngiCi0gICAgICAgIGF0dHJp
YnV0ZXM6Y29yZUZyYW1lID8gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0ZvclNl
bGVjdGlvblN0YXJ0KCkuZ2V0KCkgOiBuaWxdKTsKKyAgICAgICAgYXR0cmlidXRlczpjb3JlRnJh
bWUgPyBjb3JlRnJhbWUtPmVkaXRvcigpLmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgp
LmNyZWF0ZURpY3Rpb25hcnkoKS5nZXQoKSA6IG5pbF0pOwogICAgIHJldHVybiBbc3RyaW5nIFJU
RkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pIGRvY3VtZW50QXR0cmli
dXRlczpAeyB9XTsKIH0KIApAQCAtNTcwNCw3ICs1NzA1LDcgQEAgc3RhdGljIEJPT0wgd3JpdGlu
Z0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKFtzZWxmIF9mcmFtZV0pKSB7CiAgICAgICAgIGlmIChjb25zdCBGb250KiBmZCA9IGNv
cmVGcmFtZS0+ZWRpdG9yKCkuZm9udEZvclNlbGVjdGlvbihtdWx0aXBsZUZvbnRzKSkKICAgICAg
ICAgICAgIGZvbnQgPSAoTlNGb250ICopZmQtPnBsYXRmb3JtRGF0YSgpLnJlZ2lzdGVyZWRGb250
KCk7Ci0gICAgICAgIGF0dHJpYnV0ZXMgPSBjb3JlRnJhbWUtPmVkaXRvcigpLmZvbnRBdHRyaWJ1
dGVzRm9yU2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgYXR0cmlidXRlcyA9IGNvcmVGcmFtZS0+
ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkuY3JlYXRlRGljdGlvbmFy
eSgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBmb3Igbm93LCByZXR1cm4gYSBib2d1cyBmb250
IHRoYXQgZGlzdGluZ3Vpc2hlcyB0aGUgZW1wdHkgc2VsZWN0aW9uIGZyb20gdGhlIG5vbi1lbXB0
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGZmMTUx
MmZmMGY4YzVlM2I5NTM1ZGU5NWY2MjdjMjc3MTE5MGMyYTQuLjQ2N2MwZTNkY2JiODFhMDNlZDZl
NGFiZWJmZTgyOTZhMTY3ODM3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTE0NCw2ICsxNDQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhh
bmRsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CkBAIC04NjIzLDkgKzg2MjQsOCBAQCBG
T1JXQVJEKHRvZ2dsZVVuZGVybGluZSkKIAogLSAoTlNEaWN0aW9uYXJ5ICopdHlwaW5nQXR0cmli
dXRlcwogewotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9zZWxlY3RlZE9yTWFp
bkZyYW1lXSk7Ci0gICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGNvcmVGcmFtZS0+
ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpLmF1dG9yZWxlYXNlKCk7
CisgICAgaWYgKGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJh
bWVdKSkKKyAgICAgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNB
dFNlbGVjdGlvblN0YXJ0KCkuY3JlYXRlRGljdGlvbmFyeSgpLmF1dG9yZWxlYXNlKCk7CiAgICAg
CiAgICAgcmV0dXJuIG5pbDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350651</attachid>
            <date>2018-09-24 10:17:20 -0700</date>
            <delta_ts>2018-09-24 10:42:38 -0700</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-189918-20180924101719.patch</filename>
            <type>text/plain</type>
            <size>37690</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWViY2NlYzg2ZjkwNWUw
MzU2ZTFhN2NkMDYxMjkwOTEyMTk2ZmI4My4uZGEwOTI3YmY4NGZjOTNkYzYwNGQxZGM0ZjRlODBh
MjE4OTkwMTI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA5LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEVk
aXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBiZSBwbGF0Zm9ybS1hZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vNDQ2NDg3MDU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JzIHRo
ZSBmdW5jdGlvbmFsaXR5IGluIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFy
dCB0byBub3QgYmUgQ29jb2Etb25seS4gUmVuYW1lIHRoaXMgdG8KKyAgICAgICAgZm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0ICh0byBiZSBjb25zaXN0ZW50IHdpdGggYEVkaXRpbmdTdHls
ZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0YCkgYW5kIG1vdmUgaXQgZnJvbQorICAgICAgICBFZGl0
b3JDb2NvYS5tbSB0byBFZGl0b3IuY3BwOyBpbnN0ZWFkIG9mIGNyZWF0aW5nIGFuZCBwb3B1bGF0
aW5nIGFuIE5TRGljdGlvbmFyeSB3aXRoIGZvbnQgYXR0cmlidXRlCisgICAgICAgIGluZm9ybWF0
aW9uLCBjcmVhdGUgYW5kIHBvcHVsYXRlIGEgbmV3IGBGb250QXR0cmlidXRlc2Agc3RydWN0IHRo
YXQgY29udGFpbnMgdGhlIHNhbWUgaW5mb3JtYXRpb24uIENvY29hIGNsaWVudHMKKyAgICAgICAg
aW4gV2ViS2l0TGVnYWN5IG1heSB0aGVuIGNyZWF0ZSBhbiBgTlNEaWN0aW9uYXJ5YCBhcyBuZWVk
ZWQgZnJvbSB0aGUgYEZvbnRBdHRyaWJ1dGVzYC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGxhdGZv
cm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQgY29uc3QpOgorCisgICAgICAgIEFkZCBh
IGhvb2sgdG8gYWxsb3cgcGxhdGZvcm1zIHRvIHN1cHBseSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u
IGluIEZvbnRBdHRyaWJ1dGVzLiBPbiBDb2NvYSwgdGhpcyBhZGRzIGEgVUlGb250CisgICAgICAg
IG9yIE5TRm9udCB0byBGb250QXR0cmlidXRlczsgb3RoZXJ3aXNlLCB0aGlzIGlzIGEgbm8tb3Au
CisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRTaGFkb3c6
OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93Ojpk
ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaDogQWRk
ZWQuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IHN0cnVjdCB0aGF0IGNvbnRhaW5zIGZvbnQg
YXR0cmlidXRlIGluZm9ybWF0aW9uLiBNYXkgYmUgY29udmVydGVkIGludG8gYW4gTlNEaWN0aW9u
YXJ5IGZvciB1c2UKKyAgICAgICAgYnkgQ29jb2EgY2xpZW50cyBpbiBXZWJLaXRMZWdhY3kgYW5k
IFdlYktpdC4gSW4gYSBmdXR1cmUgcGF0Y2gsIHRoaXMgd2lsbCBiZWNvbWUgc2VyaWFsaXphYmxl
IG92ZXIgSVBDIGZvciB1c2UKKyAgICAgICAgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIGVkaXRp
bmcvRm9udFNoYWRvdy5oOiBBZGRlZC4KKworICAgICAgICBNb3ZlIEZvbnRTaGFkb3cgb3V0IGlu
dG8gYSBzZXBhcmF0ZSBoZWFkZXIgZmlsZSwgaW5jbHVkZWQgaW4gYEZvbnRBdHRyaWJ1dGVDaGFu
Z2VzLmhgIGFuZCBgRm9udEF0dHJpYnV0ZXMuaGAuCisKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRT
aGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93OjpkZWNv
ZGUpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0VGV4dERlY29yYXRpb25BdHRyaWJ1
dGVzUmVzcGVjdGluZ1R5cGluZ1N0eWxlIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICBSZW1v
dmUgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCB3YXMgb25seSB1c2VkIHRvIGNvbXB1dGUgdGV4dCBk
ZWNvcmF0aW9uIGF0dHJpYnV0ZXMgaW4KKyAgICAgICAgZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rp
b25TdGFydC4KKworICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNl
bGVjdGlvblN0YXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0Zv
bnRBdHRyaWJ1dGVzQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1D
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFy
eSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6Y3JlYXRlU2hhZG93IGNvbnN0KToK
KwogMjAxOC0wOS0yNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dlYlZUVF0gQ2hhbmdlIG5hbWUgb2YgV2ViVlRUIHJlZ2lvbiBhdHRyaWJ1dGUgJ2hl
aWdodCcgdG8gJ2xpbmVzJy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAyOGRhOGU4
ZTllMTRhMmIyZjIwYTJmN2QxOWQwMDk5NDU1ZjA4YjZlLi5hMzAzMDk5Y2VlZTFkMWVmZWY5YTI5
YmU3Y2VjMjYyMmVjYTE5OGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTgtMDktMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVmYWN0b3IgRWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlv
blN0YXJ0IHRvIGJlIHBsYXRmb3JtLWFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk5MTgKKyAgICAgICAgV29yayB0b3dhcmRzIDxyZGFy
Oi8vcHJvYmxlbS80NDY0ODcwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlIGNhbGwgc2l0ZXMgb2YgZm9udEF0dHJpYnV0ZXNGb3JTZWxl
Y3Rpb25TdGFydCgpIHRvIGZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpLmNyZWF0ZURp
Y3Rpb25hcnkoKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAg
ICgtW1dlYkhUTUxWaWV3IF9zZWxlY3Rpb25TdGFydEZvbnRBdHRyaWJ1dGVzQXNSVEZdKToKKyAg
ICAgICAgKC1bV2ViSFRNTFZpZXcgX3VwZGF0ZUZvbnRQYW5lbF0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyB0eXBpbmdBdHRyaWJ1dGVzXSk6CisK
IDIwMTgtMDktMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBPcGFxdWVKU1N0cmluZyByYXRoZXIgdGhhbiBKU1JldGFpblB0ciBpbnNpZGUgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2MmJmZDhkOGMyMDdhMDk0OTg5M2U1YzQ1OGFiY2U3
MDdiY2ZmNjdmLi45OTYyMDI4NzNmMjIwNWY3N2VlZDYyZWVkNTc2ODAxZjNhOTQ5NGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTc5LDYgKzc5LDggQEAgZWRpdGluZy9TbWFydFJlcGxh
Y2VDRi5jcHAKIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQogZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQogZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1t
CitlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KK2VkaXRpbmcvY29jb2EvRm9u
dFNoYWRvd0NvY29hLm1tCiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gQG5vLXVuaWZ5
CiBlZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcu
bW0KIGVkaXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMTgwM2E0NTUxMTdmMTk1YmI2ODdmYTlhNzg4OGYxMmE4MWJiNzM0MC4uN2Y0ZGY5ZmJm
OGViYzBmZTczZjMwYzdlZGU5YzAxYTI2YmUxMWM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDg0NSw2ICs0ODQ1LDggQEAK
IAkJRjQ4MjIzMTAxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMw
RTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSAqLzsgfTsK
IAkJRjQ4MjIzMTExRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzBG
MUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4MjIzMTMxRTM4NkUy
NDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3Ry
YWN0UGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUY0OEQyQTZDMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhEMkE2QTIxNTYyM0I0
MDBDNjc1MkIgLyogRm9udFNoYWRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUY0OEQyQTdFMjE1NzE4MjYwMEM2NzUyQiAvKiBGb250QXR0cmli
dXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
RDJBNzEyMTU2REMwQTAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ5Nzg2ODgxRkY0NUZBNTAwRTA2
MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFCIC8qIFBhc3RlYm9hcmRJ
dGVtSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUY0QkZCOTg1MUUxRERGOUIwMDg2MkMyNCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4g
Q29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgz
MUUxRERGMkIwMDc2QjdFQSAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZC
OTg2MUUxRERGOUIwMDg2MkMyNCAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3Jp
cHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIw
MDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi87IH07CkBAIC0xNDU4OSw2ICsxNDU5
MSwxMCBAQAogCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UGFzdGVib2FyZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4MzFFMURERjJCMDA3NkI3RUEg
LyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBuYW1lID0gRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0gU2NyaXB0cy9EdW1wRWRpdGlu
Z0hpc3RvcnkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTg0MUUxRERG
MkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwuanM7IHBhdGggPSBTY3JpcHRz
L0VkaXRpbmdIaXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4
RDJBNkEyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFkb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9u
dFNoYWRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhEMkE3MTIxNTZEQzBB
MDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEF0dHJpYnV0
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4RDJBNzUyMTU2RkU1NzAwQzY3
NTJCIC8qIEZvbnRBdHRyaWJ1dGVzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGb250
QXR0cmlidXRlc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhEMkE3
QTIxNTcwNTFFMDBDNjc1MkIgLyogRm9udFNoYWRvd0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRm9udFNoYWRvd0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhc3RlYm9hcmRJdGVtSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEU1N0VEQTIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjRFNTdFREYyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2Vy
RXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTk0Nyw2ICsxOTk1Myw4IEBACiAJCQkJQzUy
MjdERjAxQzNDNkRENzAwRjVFRDU0IC8qIERhdGFEZXRlY3Rpb24ubW0gKi8sCiAJCQkJOUI1NUVF
RTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tICovLAogCQkJCUY0MkNFQjU0MjE0
MDMxRUUwMDJEQ0E3MiAvKiBGb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tICovLAorCQkJCUY0
OEQyQTc1MjE1NkZFNTcwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlc0NvY29hLm1tICovLAorCQkJ
CUY0OEQyQTdBMjE1NzA1MUUwMEM2NzUyQiAvKiBGb250U2hhZG93Q29jb2EubW0gKi8sCiAJCQkJ
N0MzRTUxMDgxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCAqLywKIAkJCQk3QzNF
NTEwOTE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSAqLywKIAkJCQlFMTg1MzY4
MTFGNEU0NzI3MDBGRTA5MUIgLyogV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0
cmluZy5oICovLApAQCAtMjAyNTEsNiArMjAyNTksOCBAQAogCQkJCTM3MkMwMEQ4MTI5NjE5Rjgw
MDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oICovLAogCQkJCUY0NDI4NTBCMjE0MDQxMjUwMENDREEy
MiAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5jcHAgKi8sCiAJCQkJRjRFNTdFREEyMTNGM0Y1RjAw
NEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggKi8sCisJCQkJRjQ4RDJBNzEyMTU2REMw
QTAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggKi8sCisJCQkJRjQ4RDJBNkEyMTU2MjNCNDAw
QzY3NTJCIC8qIEZvbnRTaGFkb3cuaCAqLywKIAkJCQlEMDVDRUQyNzBBNDBCQjJDMDBDNUFGMzgg
LyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLywKIAkJCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFG
MzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi8sCiAJCQkJOTMzMDlEQkUwOTlFNjQ5MTAwNTZF
NTgxIC8qIEZyYW1lU2VsZWN0aW9uLmNwcCAqLywKQEAgLTI2NDEwLDYgKzI2NDIwLDggQEAKIAkJ
CQlCNkQ5RDIzMzE0RUFCRDI2MDA5MEQ3NUUgLyogRm9jdXNFdmVudC5oICovLAogCQkJCUI2RDlE
MjcyMTRFQUJGMDMwMDkwRDc1RSAvKiBGb2N1c0V2ZW50LmlkbCAqLywKIAkJCQlBODUzMTIzQzEx
RDA0NzFCMDBENEQwNzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggKi8sCisJCQkJ
OUJBQUM0NTgyMTUxRTc3QTAwM0Q0QTk4IC8qIEdDUmVhY2hhYmxlUmVmLmNwcCAqLywKKwkJCQk5
QkFBQzQ1NjIxNTFFMzlFMDAzRDRBOTggLyogR0NSZWFjaGFibGVSZWYuaCAqLywKIAkJCQkwNzIw
QjA5RTE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwICovLAogCQkJCTA3
MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5lcmljRXZlbnRRdWV1ZS5oICovLAogCQkJCTdD
NDE4OUFCMUIwN0MxNzAwMDBGQTc1NyAvKiBHbG9iYWxFdmVudEhhbmRsZXJzLmlkbCAqLywKQEAg
LTI2NjAwLDggKzI2NjEyLDYgQEAKIAkJCQk4MTAyQzU4NzEzMjVCQjExMDBEREU2N0EgLyogU3Ry
aW5nQ2FsbGJhY2suY3BwICovLAogCQkJCTgxQUM2QzM1MTMxQzU3RDMwMDA5QTdFMCAvKiBTdHJp
bmdDYWxsYmFjay5oICovLAogCQkJCTgxQUM2QzM0MTMxQzU3QzIwMDA5QTdFMCAvKiBTdHJpbmdD
YWxsYmFjay5pZGwgKi8sCi0JCQkJOUJBQUM0NTgyMTUxRTc3QTAwM0Q0QTk4IC8qIEdDUmVhY2hh
YmxlUmVmLmNwcCAqLywKLQkJCQk5QkFBQzQ1NjIxNTFFMzlFMDAzRDRBOTggLyogR0NSZWFjaGFi
bGVSZWYuaCAqLywKIAkJCQlBOEM0QTdFQzA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVu
dC5jcHAgKi8sCiAJCQkJQThDNEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQu
aCAqLywKIAkJCQlDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8sCkBA
IC0yODA3NCw2ICsyODA4NCw3IEBACiAJCQkJQjJDM0RBNjUwRDAwNkNENjAwRUY2RjI2IC8qIEZv
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzJEODlEMUIxRTI5MUYwMEQ1MkU4NyAvKiBGb250
QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRFNTdFREMyMTNG
M0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNDhEMkE3RTIxNTcxODI2MDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDQjkyRDRGMTI5MzU1MEIwMEM4Mzg3RiAvKiBGb250QmFzZWxpbmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyQzNEQTYzMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUMyNDU4RTYzMUZFODk3QjAwMDU5NDc1OSAvKiBGb250Q2FjaGVD
b3JlVGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODA5MCw2ICsyODEwMSw3IEBACiAJCQkJQzJB
QjBBRjcxRTZCM0M2QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyQzNEQTZCMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250U2VsZWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0MTkwNDFGMUNDNjQ4NkIwMEMzNUY1RCAvKiBGb250U2VsZWN0
b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0OEQyQTZDMjE1NjIzQjQwMEM2NzUyQiAv
KiBGb250U2hhZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTZFOUZDODEzQzE3RDU3MDA0NkE3
RjggLyogRm9udFRhZ2dlZFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjAxNUMwQTFC
RTZGRUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0QTBEQTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTI4MTMzLDYgKzI4MTQ1LDcgQEAKIAkJCQk4RUM2Qzk2MzIwMUEyNTE2
MDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc3NTA5QUM0
RDhFMDBBNkFBQjQgLyogR2FwUmVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MzJFODQ3MEM1
MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCQUFD
NDVDMjE1MjAxMjgwMDNENEE5OCAvKiBHQ1JlYWNoYWJsZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNDM4LDcgKzMwNDUx
LDYgQEAKIAkJCQlFQ0E2ODBDNzFFNjc3MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5QjZDNDE1MzEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0
aERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlE
IC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOUJBQUM0NUMyMTUy
MDEyODAwM0Q0QTk4IC8qIEdDUmVhY2hhYmxlUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTRC
ODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzVFQjZBMzBFODFEQzRGMDBCMjU5NjUgLyogU3R5bGVCYWNrZ3JvdW5kRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2N0IwRTgxRDNCRTAwQjI1OTY1IC8qIFN0eWxlQm94RGF0
YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMmQ0N2Rj
N2NlZGEwNDA3YzkzOGI3ZmI4NTYxMjIyMzU3OTc4MjUzNi4uNGM2Mzc5YzNkZjJlM2JjMzVkODM3
ZDIxNWVkY2E2NWEyY2M3MzMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDgs
NiArNDgsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAj
aW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRm9udEF0dHJpYnV0ZXMuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVUcmVlLmgiCkBAIC0zODUxLDYgKzM4NTIsNzIgQEAgdm9pZCBFZGl0b3I6OnNjaGVkdWxl
RWRpdG9yVUlVcGRhdGUoKQogICAgIG1fZWRpdG9yVUlVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKKwordm9pZCBFZGl0b3I6OnBsYXRmb3Jt
Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29uc3QgUmVu
ZGVyU3R5bGUmKSBjb25zdAoreworfQorCisjZW5kaWYKKworRm9udEF0dHJpYnV0ZXMgRWRpdG9y
Ojpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKSBjb25zdAoreworICAgIEZvbnRBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgTm9kZSogbm9kZVRvUmVtb3ZlID0gbnVsbHB0cjsKKyAg
ICBhdXRvKiBzdHlsZSA9IHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQoJm1fZnJhbWUsIG5vZGVUb1Jl
bW92ZSk7CisgICAgaWYgKCFzdHlsZSkgeworICAgICAgICBpZiAobm9kZVRvUmVtb3ZlKQorICAg
ICAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0
ZXM7CisgICAgfQorCisgICAgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQo
YXR0cmlidXRlcywgKnN0eWxlKTsKKworICAgIC8vIEZJWE1FOiBmb3Igbm93LCBhbHdheXMgcmVw
b3J0IHRoZSBjb2xvcnMgYWZ0ZXIgYXBwbHlpbmcgLWFwcGxlLWNvbG9yLWZpbHRlci4gSW4gZnV0
dXJlIG5vdCBhbGwgY2xpZW50cworICAgIC8vIG1heSB3YW50IHRoaXMsIHNvIHdlIG1heSBoYXZl
IHRvIGFkZCBhIHNldHRpbmcgdG8gY29udHJvbCBpdC4gU2VlIGFsc28gZWRpdGluZ0F0dHJpYnV0
ZWRTdHJpbmdGcm9tUmFuZ2UoKS4KKyAgICBhdXRvIGJhY2tncm91bmRDb2xvciA9IHN0eWxlLT52
aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkpCisgICAgICAgIGF0
dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOworCisgICAgYXV0byBm
b3JlZ3JvdW5kQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmls
dGVyKENTU1Byb3BlcnR5Q29sb3IpOworICAgIC8vIEZJWE1FOiBpc0JsYWNrQ29sb3Igbm90IHN1
aXRhYmxlIGZvciBkYXJrIG1vZGUuCisgICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkg
JiYgIUNvbG9yOjppc0JsYWNrQ29sb3IoZm9yZWdyb3VuZENvbG9yKSkKKyAgICAgICAgYXR0cmli
dXRlcy5mb3JlZ3JvdW5kQ29sb3IgPSBmb3JlZ3JvdW5kQ29sb3I7CisKKyAgICBpZiAoYXV0byog
c2hhZG93RGF0YSA9IHN0eWxlLT50ZXh0U2hhZG93KCkpCisgICAgICAgIGF0dHJpYnV0ZXMuZm9u
dFNoYWRvdyA9IHsgc2hhZG93RGF0YS0+Y29sb3IoKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzaGFk
b3dEYXRhLT54KCkpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHNoYWRvd0RhdGEtPnkoKSksIHN0YXRp
Y19jYXN0PGRvdWJsZT4oc2hhZG93RGF0YS0+cmFkaXVzKCkpIH07CisKKyAgICBhdXRvIHZlcnRp
Y2FsQWxpZ24gPSBzdHlsZS0+dmVydGljYWxBbGlnbigpOworICAgIGlmICh2ZXJ0aWNhbEFsaWdu
ID09IFZlcnRpY2FsQWxpZ246OlN1YikKKyAgICAgICAgYXR0cmlidXRlcy5zdWJzY3JpcHRPclN1
cGVyc2NyaXB0ID0gU3Vic2NyaXB0T3JTdXBlcnNjcmlwdDo6U3Vic2NyaXB0OworCisgICAgaWYg
KHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6U3VwZXIpCisgICAgICAgIGF0dHJpYnV0
ZXMuc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1cGVy
c2NyaXB0OworCisgICAgYXV0byB0eXBpbmdTdHlsZSA9IG1ha2VSZWZQdHIobV9mcmFtZS5zZWxl
Y3Rpb24oKS50eXBpbmdTdHlsZSgpKTsKKyAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5
bGUtPnN0eWxlKCkpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHR5cGluZ1N0eWxlLT5zdHlsZSgp
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5F
ZmZlY3QpOworICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKyAg
ICAgICAgICAgIENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0
PigqdmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlTGlzdC5oYXNWYWx1ZShDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmVUaHJvdWdo
KS5wdHIoKSkpCisgICAgICAgICAgICAgICAgYXR0cmlidXRlcy5oYXNTdHJpa2VUaHJvdWdoID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUpLnB0cigp
KSkKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLmhhc1VuZGVybGluZSA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGRlY29yYXRpb24gPSBzdHlsZS0+dGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKTsKKyAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVj
b3JhdGlvbjo6TGluZVRocm91Z2gpCisgICAgICAgICAgICBhdHRyaWJ1dGVzLmhhc1N0cmlrZVRo
cm91Z2ggPSB0cnVlOworICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpV
bmRlcmxpbmUpCisgICAgICAgICAgICBhdHRyaWJ1dGVzLmhhc1VuZGVybGluZSA9IHRydWU7Cisg
ICAgfQorCisgICAgaWYgKG5vZGVUb1JlbW92ZSkKKyAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1v
dmUoKTsKKworICAgIHJldHVybiBhdHRyaWJ1dGVzOworfQorCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKIAogdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAzMzIzYTMzOGEyMTEwNGI3ZDg0ODVhMmQ5ZTQxMTcw
OGU5OTMyZDAxLi5kYjk0YWZmNmI1MDgwMGNjNTQ3NjU3N2E0ODNlNTRjY2UwZmZiZjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgVGV4dDsKIGNsYXNz
IFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OwogCitzdHJ1Y3QgRm9udEF0dHJp
YnV0ZXM7CiBzdHJ1Y3QgUGFzdGVib2FyZFBsYWluVGV4dDsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJM
Owogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKQEAgLTQ2OSwxMCArNDcwLDkgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRm9udCogZm9udEZvclNlbGVjdGlvbihib29s
JiBoYXNNdWx0aXBsZUZvbnRzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQoRnJhbWUqICwgTm9kZSAqJm5v
ZGVUb1JlbW92ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRm9udEF0dHJpYnV0ZXMgZm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICB2b2lkIGdldFRleHREZWNvcmF0aW9uQXR0cmlidXRlc1Jlc3BlY3RpbmdUeXBpbmdTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYsIE5TTXV0YWJsZURpY3Rpb25hcnkqKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBmb250QXR0cmlidXRlc0ZvclNlbGVj
dGlvblN0YXJ0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQoKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZFdpdGhJbWFnZUFsdFRleHQoKTsKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtNTYyLDYgKzU2
Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCisg
ICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmli
dXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKICAgICB2b2lkIHNjaGVkdWxlRWRp
dG9yVUlVcGRhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250
QXR0cmlidXRlQ2hhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRl
Q2hhbmdlcy5oCmluZGV4IGRlN2FlNTNkMzc4MmM0MGY3MTFlNDg0ZjVhZWQyYzUyNWE5ZDYwZGQu
LmRjMThkMDQ5Mjc2NmY1NjU1NTllM2FkOTViMWM2NmFiNWVkNWFiZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGb250U2hhZG93
LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNjksMTYgKzcwLDYgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faXRhbGljOwogfTsKIAotc3RydWN0IEZvbnRTaGFk
b3cgewotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVj
b2RlciYsIEZvbnRTaGFkb3cmKTsKLQotICAgIENvbG9yIGNvbG9yOwotICAgIGRvdWJsZSB3aWR0
aCB7IDAgfTsKLSAgICBkb3VibGUgaGVpZ2h0IHsgMCB9OwotICAgIGRvdWJsZSBibHVyUmFkaXVz
IHsgMCB9OwotfTsKLQogY2xhc3MgRm9udEF0dHJpYnV0ZUNoYW5nZXMgewogcHVibGljOgogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAg
LTEzNywzMCArMTI4LDYgQEAgYm9vbCBGb250Q2hhbmdlczo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIEZvbnRDaGFuZ2VzJiBjaGFuZ2VzKQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBGb250U2hhZG93OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGNvbG9yIDw8IHdpZHRoIDw8IGhlaWdodCA8PCBi
bHVyUmFkaXVzOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9vbCBGb250U2hhZG93
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRm9udFNoYWRvdyYgc2hhZG93KQotewotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2hhZG93LmNvbG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaGFkb3cud2lkdGgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5oZWlnaHQpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5ibHVyUmFk
aXVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRm9udEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJp
YnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MDRiZDI5MjViNDljYmMyMmE0OGE5Nzc5ZjlhNmZmODI0Yjky
MzFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmli
dXRlcy5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkZvbnRTaGFkb3cuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworI2VuZGlmCisKKyNpZiBQ
TEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TRm9udDsKKyNlbGlmIFBMQVRGT1JNKElPUykKK09C
SkNfQ0xBU1MgVUlGb250OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBj
bGFzcyBTdWJzY3JpcHRPclN1cGVyc2NyaXB0IDogdWludDhfdCB7IE5vbmUsIFN1YnNjcmlwdCwg
U3VwZXJzY3JpcHQgfTsKKworc3RydWN0IEZvbnRBdHRyaWJ1dGVzIHsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBjcmVhdGVE
aWN0aW9uYXJ5KCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZXRh
aW5QdHI8TlNGb250PiBmb250OworI2VsaWYgUExBVEZPUk0oSU9TKQorICAgIFJldGFpblB0cjxV
SUZvbnQ+IGZvbnQ7CisjZW5kaWYKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7CisgICAgQ29s
b3IgZm9yZWdyb3VuZENvbG9yOworICAgIEZvbnRTaGFkb3cgZm9udFNoYWRvdzsKKyAgICBTdWJz
Y3JpcHRPclN1cGVyc2NyaXB0IHN1YnNjcmlwdE9yU3VwZXJzY3JpcHQgeyBTdWJzY3JpcHRPclN1
cGVyc2NyaXB0OjpOb25lIH07CisgICAgYm9vbCBoYXNVbmRlcmxpbmUgeyBmYWxzZSB9OworICAg
IGJvb2wgaGFzU3RyaWtlVGhyb3VnaCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpTdWJzY3JpcHRPclN1cGVyc2NyaXB0LAorICAg
ICAgICBXZWJDb3JlOjpTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpOb25lLAorICAgICAgICBXZWJD
b3JlOjpTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpTdWJzY3JpcHQsCisgICAgICAgIFdlYkNvcmU6
OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1cGVyc2NyaXB0CisgICAgPjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hh
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NjY0MTNjNjgxMDk3MWVhMWUyODRhZDMxY2MzNzEzYjcwYzc1MzI2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmgKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgTlNT
aGFkb3c7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRm9udFNoYWRv
dyB7CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiwgRm9udFNoYWRvdyYpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRy
PE5TU2hhZG93PiBjcmVhdGVTaGFkb3coKSBjb25zdDsKKyNlbmRpZgorCisgICAgQ29sb3IgY29s
b3I7CisgICAgZG91YmxlIHdpZHRoIHsgMCB9OworICAgIGRvdWJsZSBoZWlnaHQgeyAwIH07Cisg
ICAgZG91YmxlIGJsdXJSYWRpdXMgeyAwIH07Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBGb250U2hhZG93OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IGNvbG9yIDw8IHdpZHRoIDw8IGhlaWdodCA8PCBibHVyUmFkaXVzOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBGb250U2hhZG93OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgRm9udFNoYWRvdyYgc2hhZG93KQoreworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2hhZG93LmNvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzaGFkb3cud2lkdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5oZWlnaHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5ibHVyUmFkaXVzKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4
IGUzNzcxYjdjNTQyMzBmOGU0NmMwODcxNzdmYmJmZGZjMjI0YzQzZDcuLjg1MDY1YzhjZTQ2ZmI4
Y2IyNDdhZDMwNWE5MWQyYmQ1NTE3N2MzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiRWRpdGluZy5o
IgogI2ltcG9ydCAiRWRpdGluZ1N0eWxlLmgiCiAjaW1wb3J0ICJFZGl0b3JDbGllbnQuaCIKKyNp
bXBvcnQgIkZvbnRBdHRyaWJ1dGVzLmgiCiAjaW1wb3J0ICJGb250Q2FzY2FkZS5oIgogI2ltcG9y
dCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCkBAIC01OCw4OSArNTksMTAgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEVkaXRvcjo6Z2V0VGV4dERlY29yYXRpb25B
dHRyaWJ1dGVzUmVzcGVjdGluZ1R5cGluZ1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
TlNNdXRhYmxlRGljdGlvbmFyeSogcmVzdWx0KSBjb25zdAordm9pZCBFZGl0b3I6OnBsYXRmb3Jt
Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPEVkaXRpbmdT
dHlsZT4gdHlwaW5nU3R5bGUgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnR5cGluZ1N0eWxlKCk7Ci0g
ICAgaWYgKHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5zdHlsZSgpKSB7Ci0gICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKLSAgICAg
ICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBDU1NW
YWx1ZUxpc3QmIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKTsKLSAg
ICAgICAgICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMaW5lVGhyb3VnaCkucHRyKCkpKQotICAg
ICAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSkg
Zm9yS2V5Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgICAgICBp
ZiAodmFsdWVMaXN0Lmhhc1ZhbHVlKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKS5wdHIoKSkpCi0gICAgICAgICAgICAgICAg
W3Jlc3VsdCBzZXRPYmplY3Q6QChOU1VuZGVybGluZVN0eWxlU2luZ2xlKSBmb3JLZXk6TlNVbmRl
cmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgYXV0byBkZWNvcmF0aW9uID0gc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAg
ICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpCi0gICAg
ICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktl
eTpOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdOwotICAgICAgICBpZiAoZGVjb3Jh
dGlvbiAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpCi0gICAgICAgICAgICBbcmVzdWx0IHNl
dE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktleTpOU1VuZGVybGluZVN0eWxl
QXR0cmlidXRlTmFtZV07Ci0gICAgfQotfQotCi1SZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBFZGl0
b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdAotewotICAgIE5vZGUq
IG5vZGVUb1JlbW92ZTsKLSAgICBhdXRvKiBzdHlsZSA9IHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQo
Jm1fZnJhbWUsIG5vZGVUb1JlbW92ZSk7Ci0gICAgaWYgKCFzdHlsZSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBhdHRyaWJ1dGVzID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLQotICAgIGlmIChh
dXRvIGN0Rm9udCA9IHN0eWxlLT5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250
KCkpCi0gICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDooX19icmlkZ2UgaWQpY3RGb250IGZv
cktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKLQotICAgIC8vIEZJWE1FOiBXaHkgd291bGQgd2Ug
bm90IHdhbnQgdG8gcmV0cmlldmUgdGhlc2UgYXR0cmlidXRlcyBvbiBpT1M/Ci0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIC8vIEZJWE1FOiBmb3Igbm93LCBhbHdheXMgcmVwb3J0IHRoZSBjb2xvcnMg
YWZ0ZXIgYXBwbHlpbmcgLWFwcGxlLWNvbG9yLWZpbHRlci4gSW4gZnV0dXJlIG5vdCBhbGwgY2xp
ZW50cwotICAgIC8vIG1heSB3YW50IHRoaXMsIHNvIHdlIG1heSBoYXZlIHRvIGFkZCBhIHNldHRp
bmcgdG8gY29udHJvbCBpdC4gU2VlIGFsc28gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFu
Z2UoKS4KLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBp
ZiAoYmFja2dyb3VuZENvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICBbYXR0cmlidXRlcyBzZXRP
YmplY3Q6bnNDb2xvcihiYWNrZ3JvdW5kQ29sb3IpIGZvcktleTpOU0JhY2tncm91bmRDb2xvckF0
dHJpYnV0ZU5hbWVdOwotCi0gICAgQ29sb3IgZm9yZWdyb3VuZENvbG9yID0gc3R5bGUtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAv
LyBGSVhNRTogaXNCbGFja0NvbG9yIG5vdCBzdWl0YWJsZSBmb3IgZGFyayBtb2RlLgotICAgIGlm
IChmb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmICFDb2xvcjo6aXNCbGFja0NvbG9yKGZvcmVn
cm91bmRDb2xvcikpCi0gICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpuc0NvbG9yKGZvcmVn
cm91bmRDb2xvcikgZm9yS2V5Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07Ci0KLSAg
ICBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dEYXRhID0gc3R5bGUtPnRleHRTaGFkb3coKTsKLSAg
ICBpZiAoc2hhZG93RGF0YSkgewotICAgICAgICBSZXRhaW5QdHI8TlNTaGFkb3c+IHBsYXRmb3Jt
U2hhZG93ID0gYWRvcHROUyhbW05TU2hhZG93IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFtwbGF0
Zm9ybVNoYWRvdyBzZXRTaGFkb3dPZmZzZXQ6TlNNYWtlU2l6ZShzaGFkb3dEYXRhLT54KCksIHNo
YWRvd0RhdGEtPnkoKSldOwotICAgICAgICBbcGxhdGZvcm1TaGFkb3cgc2V0U2hhZG93Qmx1clJh
ZGl1czpzaGFkb3dEYXRhLT5yYWRpdXMoKV07Ci0gICAgICAgIFtwbGF0Zm9ybVNoYWRvdyBzZXRT
aGFkb3dDb2xvcjpuc0NvbG9yKHNoYWRvd0RhdGEtPmNvbG9yKCkpXTsKLSAgICAgICAgW2F0dHJp
YnV0ZXMgc2V0T2JqZWN0OnBsYXRmb3JtU2hhZG93LmdldCgpIGZvcktleTpOU1NoYWRvd0F0dHJp
YnV0ZU5hbWVdOwotICAgIH0KLQotICAgIGludCBzdXBlcnNjcmlwdEludCA9IDA7Ci0gICAgc3dp
dGNoIChzdHlsZS0+dmVydGljYWxBbGlnbigpKSB7Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZToKLSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKLSAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3Ro
OgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOgotICAgIGNhc2UgVmVydGljYWxBbGln
bjo6VGV4dEJvdHRvbToKLSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6Ci0gICAgY2Fz
ZSBWZXJ0aWNhbEFsaWduOjpUb3A6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6U3ViOgotICAgICAgICBzdXBlcnNjcmlwdEludCA9IC0xOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlN1cGVyOgotICAgICAgICBzdXBlcnNjcmlwdEludCA9
IDE7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoc3VwZXJzY3JpcHRJbnQpCi0gICAg
ICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpAKHN1cGVyc2NyaXB0SW50KSBmb3JLZXk6TlNTdXBl
cnNjcmlwdEF0dHJpYnV0ZU5hbWVdOwotI2VuZGlmCi0KLSAgICBnZXRUZXh0RGVjb3JhdGlvbkF0
dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUoKnN0eWxlLCBhdHRyaWJ1dGVzLmdldCgpKTsK
LQotICAgIGlmIChub2RlVG9SZW1vdmUpCi0gICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKCk7
Ci0KLSAgICByZXR1cm4gYXR0cmlidXRlczsKKyAgICBpZiAoYXV0byBjdEZvbnQgPSBzdHlsZS5m
b250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCkpCisgICAgICAgIGF0dHJpYnV0
ZXMuZm9udCA9IChfX2JyaWRnZSBpZCljdEZvbnQ7CiB9CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmlu
ZyAqYXR0cmlidXRlZFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGViNDU2ZjYzN2MxZDliM2Qy
N2UzZmExNjM1Y2MyMzhjZmNmOTFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tCkBAIC0wLDAgKzEsODEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkZvbnRBdHRyaWJ1dGVzLmgi
CisKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworI2lmIFBMQVRGT1JNKElPUykKK1NP
RlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQ29sb3Ip
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKEFQUEtJVCkKK3N0YXRp
YyBOU0NvbG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1
cm4gbnNDb2xvcihjb2xvcik7Cit9CisjZWxpZiBQTEFURk9STShJT1MpCitzdGF0aWMgVUlDb2xv
ciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgcmV0dXJuIFtnZXRV
SUNvbG9yQ2xhc3MoKSBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXTsKK30K
KyNlbmRpZgorCitSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBGb250QXR0cmlidXRlczo6Y3JlYXRl
RGljdGlvbmFyeSgpIGNvbnN0Cit7CisgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHROUyhbTlNN
dXRhYmxlRGljdGlvbmFyeSBuZXddKTsKKyAgICBpZiAoZm9udCkKKyAgICAgICAgW2F0dHJpYnV0
ZXMgc2V0T2JqZWN0OmZvbnQuZ2V0KCkgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOworCisg
ICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIFthdHRyaWJ1dGVzIHNl
dE9iamVjdDpwbGF0Zm9ybUNvbG9yKGZvcmVncm91bmRDb2xvcikgZm9yS2V5Ok5TRm9yZWdyb3Vu
ZENvbG9yQXR0cmlidXRlTmFtZV07CisKKyAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmFsaWQo
KSkKKyAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OnBsYXRmb3JtQ29sb3IoYmFja2dyb3Vu
ZENvbG9yKSBmb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKworICAgIGlm
IChmb250U2hhZG93LmNvbG9yLmlzVmFsaWQoKSAmJiAoZm9udFNoYWRvdy53aWR0aCB8fCBmb250
U2hhZG93LmhlaWdodCB8fCBmb250U2hhZG93LmJsdXJSYWRpdXMpKSB7CisgICAgICAgIGF1dG8g
c2hhZG93ID0gZm9udFNoYWRvdy5jcmVhdGVTaGFkb3coKTsKKyAgICAgICAgW2F0dHJpYnV0ZXMg
c2V0T2JqZWN0OnNoYWRvdy5nZXQoKSBmb3JLZXk6TlNTaGFkb3dBdHRyaWJ1dGVOYW1lXTsKKyAg
ICB9CisKKyAgICBpZiAoc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9PSBTdWJzY3JpcHRPclN1cGVy
c2NyaXB0OjpTdWJzY3JpcHQpCisgICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpAKC0xKSBm
b3JLZXk6TlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdOworICAgIGVsc2UgaWYgKHN1YnNjcmlw
dE9yU3VwZXJzY3JpcHQgPT0gU3Vic2NyaXB0T3JTdXBlcnNjcmlwdDo6U3VwZXJzY3JpcHQpCisg
ICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpAKDEpIGZvcktleTpOU1N1cGVyc2NyaXB0QXR0
cmlidXRlTmFtZV07CisKKyAgICBpZiAoaGFzVW5kZXJsaW5lKQorICAgICAgICBbYXR0cmlidXRl
cyBzZXRPYmplY3Q6QChOU1VuZGVybGluZVN0eWxlU2luZ2xlKSBmb3JLZXk6TlNVbmRlcmxpbmVT
dHlsZUF0dHJpYnV0ZU5hbWVdOworCisgICAgaWYgKGhhc1N0cmlrZVRocm91Z2gpCisgICAgICAg
IFthdHRyaWJ1dGVzIHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktleTpO
U1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdOworCisgICAgcmV0dXJuIGF0dHJpYnV0
ZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTc4MzA3ZDNiNzY3YjA1
ZDdhMzg1OTg2ODJhOGNjY2I5MGRjNDlhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCkBAIC0wLDAgKzEsNTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udFNoYWRvdy5oIgor
CisjaW5jbHVkZSAiQ29sb3JNYWMuaCIKKworI2lmIFBMQVRGT1JNKElPUykKK1NPRlRfTElOS19D
TEFTUyhVSUtpdCwgTlNTaGFkb3cpCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitS
ZXRhaW5QdHI8TlNTaGFkb3c+IEZvbnRTaGFkb3c6OmNyZWF0ZVNoYWRvdygpIGNvbnN0Cit7Cisj
aWYgVVNFKEFQUEtJVCkKKyAgICBhdXRvIHNoYWRvdyA9IGFkb3B0TlMoW05TU2hhZG93IG5ld10p
OworI2VsaWYgUExBVEZPUk0oSU9TKQorICAgIGF1dG8gc2hhZG93ID0gYWRvcHROUyhbYWxsb2NO
U1NoYWRvd0luc3RhbmNlKCkgaW5pdF0pOworI2VuZGlmCisgICAgW3NoYWRvdyBzZXRTaGFkb3dP
ZmZzZXQ6Q0dTaXplTWFrZSh3aWR0aCwgaGVpZ2h0KV07CisgICAgW3NoYWRvdyBzZXRTaGFkb3dC
bHVyUmFkaXVzOmJsdXJSYWRpdXNdOworI2lmIFVTRShBUFBLSVQpCisgICAgW3NoYWRvdyBzZXRT
aGFkb3dDb2xvcjpuc0NvbG9yKGNvbG9yKV07CisjZWxpZiBQTEFURk9STShJT1MpCisgICAgW3No
YWRvdyBzZXRTaGFkb3dDb2xvcjpbZ2V0VUlDb2xvckNsYXNzKCkgY29sb3JXaXRoQ0dDb2xvcjpj
YWNoZWRDR0NvbG9yKGNvbG9yKV1dOworI2VuZGlmCisgICAgcmV0dXJuIHNoYWRvdzsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5k
ZXggMjY0YjhiMGM5MjEwZTRiMjRkZTg0Y2E3ZjRiOTI3NTk2YTFhOWMzMi4uYzBmYTE0NGYyMTFi
YTA2NzBmOGIyNjhkZTVhZjI0MmFlMWRjYmExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC05Niw2ICs5Niw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Zv
bnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgpAQCAtNTA1
Nyw3ICs1MDU4LDcgQEAgc3RhdGljIFJlZlB0cjxLZXlib2FyZEV2ZW50PiBjdXJyZW50S2V5Ym9h
cmRFdmVudChGcmFtZSogY29yZUZyYW1lKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3Jl
KFtzZWxmIF9mcmFtZV0pOwogICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJ4IgotICAgICAgICBhdHRyaWJ1dGVzOmNv
cmVGcmFtZSA/IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25T
dGFydCgpLmdldCgpIDogbmlsXSk7CisgICAgICAgIGF0dHJpYnV0ZXM6Y29yZUZyYW1lID8gY29y
ZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKS5jcmVhdGVE
aWN0aW9uYXJ5KCkuZ2V0KCkgOiBuaWxdKTsKICAgICByZXR1cm4gW3N0cmluZyBSVEZGcm9tUmFu
Z2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsg
fV07CiB9CiAKQEAgLTU3MDQsNyArNTcwNSw3IEBAIHN0YXRpYyBCT09MIHdyaXRpbmdEaXJlY3Rp
b25LZXlCaW5kaW5nc0VuYWJsZWQoKQogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShb
c2VsZiBfZnJhbWVdKSkgewogICAgICAgICBpZiAoY29uc3QgRm9udCogZmQgPSBjb3JlRnJhbWUt
PmVkaXRvcigpLmZvbnRGb3JTZWxlY3Rpb24obXVsdGlwbGVGb250cykpCiAgICAgICAgICAgICBm
b250ID0gKE5TRm9udCAqKWZkLT5wbGF0Zm9ybURhdGEoKS5yZWdpc3RlcmVkRm9udCgpOwotICAg
ICAgICBhdHRyaWJ1dGVzID0gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0ZvclNl
bGVjdGlvblN0YXJ0KCk7CisgICAgICAgIGF0dHJpYnV0ZXMgPSBjb3JlRnJhbWUtPmVkaXRvcigp
LmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpLmNyZWF0ZURpY3Rpb25hcnkoKTsKICAg
ICB9CiAKICAgICAvLyBGSVhNRTogZm9yIG5vdywgcmV0dXJuIGEgYm9ndXMgZm9udCB0aGF0IGRp
c3Rpbmd1aXNoZXMgdGhlIGVtcHR5IHNlbGVjdGlvbiBmcm9tIHRoZSBub24tZW1wdHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBmZjE1MTJmZjBmOGM1
ZTNiOTUzNWRlOTVmNjI3YzI3NzExOTBjMmE0Li40NjdjMGUzZGNiYjgxYTAzZWQ2ZTRhYmViZmU4
Mjk2YTE2NzgzNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC0xNDQsNiArMTQ0LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRXZlbnRIYW5kbGVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXND
b250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgpAQCAtODYyMyw5ICs4NjI0LDggQEAgRk9SV0FSRCh0
b2dnbGVVbmRlcmxpbmUpCiAKIC0gKE5TRGljdGlvbmFyeSAqKXR5cGluZ0F0dHJpYnV0ZXMKIHsK
LSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfc2VsZWN0ZWRPck1haW5GcmFtZV0p
OwotICAgIGlmIChjb3JlRnJhbWUpCi0gICAgICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigp
LmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKS5hdXRvcmVsZWFzZSgpOworICAgIGlm
IChhdXRvKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9zZWxlY3RlZE9yTWFpbkZyYW1lXSkpCisg
ICAgICAgIHJldHVybiBjb3JlRnJhbWUtPmVkaXRvcigpLmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydCgpLmNyZWF0ZURpY3Rpb25hcnkoKS5hdXRvcmVsZWFzZSgpOwogICAgIAogICAgIHJl
dHVybiBuaWw7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350653</attachid>
            <date>2018-09-24 10:42:39 -0700</date>
            <delta_ts>2018-09-24 11:52:10 -0700</delta_ts>
            <desc>Fix 32-bit macOS build</desc>
            <filename>bug-189918-20180924104238.patch</filename>
            <type>text/plain</type>
            <size>37701</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWViY2NlYzg2ZjkwNWUw
MzU2ZTFhN2NkMDYxMjkwOTEyMTk2ZmI4My4uZGEwOTI3YmY4NGZjOTNkYzYwNGQxZGM0ZjRlODBh
MjE4OTkwMTI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTA5LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEVk
aXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBiZSBwbGF0Zm9ybS1hZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vNDQ2NDg3MDU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JzIHRo
ZSBmdW5jdGlvbmFsaXR5IGluIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFy
dCB0byBub3QgYmUgQ29jb2Etb25seS4gUmVuYW1lIHRoaXMgdG8KKyAgICAgICAgZm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0ICh0byBiZSBjb25zaXN0ZW50IHdpdGggYEVkaXRpbmdTdHls
ZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0YCkgYW5kIG1vdmUgaXQgZnJvbQorICAgICAgICBFZGl0
b3JDb2NvYS5tbSB0byBFZGl0b3IuY3BwOyBpbnN0ZWFkIG9mIGNyZWF0aW5nIGFuZCBwb3B1bGF0
aW5nIGFuIE5TRGljdGlvbmFyeSB3aXRoIGZvbnQgYXR0cmlidXRlCisgICAgICAgIGluZm9ybWF0
aW9uLCBjcmVhdGUgYW5kIHBvcHVsYXRlIGEgbmV3IGBGb250QXR0cmlidXRlc2Agc3RydWN0IHRo
YXQgY29udGFpbnMgdGhlIHNhbWUgaW5mb3JtYXRpb24uIENvY29hIGNsaWVudHMKKyAgICAgICAg
aW4gV2ViS2l0TGVnYWN5IG1heSB0aGVuIGNyZWF0ZSBhbiBgTlNEaWN0aW9uYXJ5YCBhcyBuZWVk
ZWQgZnJvbSB0aGUgYEZvbnRBdHRyaWJ1dGVzYC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGxhdGZv
cm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQgY29uc3QpOgorCisgICAgICAgIEFkZCBh
IGhvb2sgdG8gYWxsb3cgcGxhdGZvcm1zIHRvIHN1cHBseSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u
IGluIEZvbnRBdHRyaWJ1dGVzLiBPbiBDb2NvYSwgdGhpcyBhZGRzIGEgVUlGb250CisgICAgICAg
IG9yIE5TRm9udCB0byBGb250QXR0cmlidXRlczsgb3RoZXJ3aXNlLCB0aGlzIGlzIGEgbm8tb3Au
CisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRTaGFkb3c6
OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93Ojpk
ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaDogQWRk
ZWQuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IHN0cnVjdCB0aGF0IGNvbnRhaW5zIGZvbnQg
YXR0cmlidXRlIGluZm9ybWF0aW9uLiBNYXkgYmUgY29udmVydGVkIGludG8gYW4gTlNEaWN0aW9u
YXJ5IGZvciB1c2UKKyAgICAgICAgYnkgQ29jb2EgY2xpZW50cyBpbiBXZWJLaXRMZWdhY3kgYW5k
IFdlYktpdC4gSW4gYSBmdXR1cmUgcGF0Y2gsIHRoaXMgd2lsbCBiZWNvbWUgc2VyaWFsaXphYmxl
IG92ZXIgSVBDIGZvciB1c2UKKyAgICAgICAgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIGVkaXRp
bmcvRm9udFNoYWRvdy5oOiBBZGRlZC4KKworICAgICAgICBNb3ZlIEZvbnRTaGFkb3cgb3V0IGlu
dG8gYSBzZXBhcmF0ZSBoZWFkZXIgZmlsZSwgaW5jbHVkZWQgaW4gYEZvbnRBdHRyaWJ1dGVDaGFu
Z2VzLmhgIGFuZCBgRm9udEF0dHJpYnV0ZXMuaGAuCisKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRT
aGFkb3c6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93OjpkZWNv
ZGUpOgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z2V0VGV4dERlY29yYXRpb25BdHRyaWJ1
dGVzUmVzcGVjdGluZ1R5cGluZ1N0eWxlIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICBSZW1v
dmUgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCB3YXMgb25seSB1c2VkIHRvIGNvbXB1dGUgdGV4dCBk
ZWNvcmF0aW9uIGF0dHJpYnV0ZXMgaW4KKyAgICAgICAgZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rp
b25TdGFydC4KKworICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNl
bGVjdGlvblN0YXJ0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0Zv
bnRBdHRyaWJ1dGVzQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1D
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFy
eSBjb25zdCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW06IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6Y3JlYXRlU2hhZG93IGNvbnN0KToK
KwogMjAxOC0wOS0yNCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dlYlZUVF0gQ2hhbmdlIG5hbWUgb2YgV2ViVlRUIHJlZ2lvbiBhdHRyaWJ1dGUgJ2hl
aWdodCcgdG8gJ2xpbmVzJy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAyOGRhOGU4
ZTllMTRhMmIyZjIwYTJmN2QxOWQwMDk5NDU1ZjA4YjZlLi5hMzAzMDk5Y2VlZTFkMWVmZWY5YTI5
YmU3Y2VjMjYyMmVjYTE5OGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTgtMDktMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgUmVmYWN0b3IgRWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlv
blN0YXJ0IHRvIGJlIHBsYXRmb3JtLWFnbm9zdGljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk5MTgKKyAgICAgICAgV29yayB0b3dhcmRzIDxyZGFy
Oi8vcHJvYmxlbS80NDY0ODcwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlIGNhbGwgc2l0ZXMgb2YgZm9udEF0dHJpYnV0ZXNGb3JTZWxl
Y3Rpb25TdGFydCgpIHRvIGZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpLmNyZWF0ZURp
Y3Rpb25hcnkoKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAg
ICgtW1dlYkhUTUxWaWV3IF9zZWxlY3Rpb25TdGFydEZvbnRBdHRyaWJ1dGVzQXNSVEZdKToKKyAg
ICAgICAgKC1bV2ViSFRNTFZpZXcgX3VwZGF0ZUZvbnRQYW5lbF0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyB0eXBpbmdBdHRyaWJ1dGVzXSk6CisK
IDIwMTgtMDktMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVz
ZSBPcGFxdWVKU1N0cmluZyByYXRoZXIgdGhhbiBKU1JldGFpblB0ciBpbnNpZGUgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2MmJmZDhkOGMyMDdhMDk0OTg5M2U1YzQ1OGFiY2U3
MDdiY2ZmNjdmLi45OTYyMDI4NzNmMjIwNWY3N2VlZDYyZWVkNTc2ODAxZjNhOTQ5NGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTc5LDYgKzc5LDggQEAgZWRpdGluZy9TbWFydFJlcGxh
Y2VDRi5jcHAKIGVkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQogZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQogZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1t
CitlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KK2VkaXRpbmcvY29jb2EvRm9u
dFNoYWRvd0NvY29hLm1tCiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gQG5vLXVuaWZ5
CiBlZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcu
bW0KIGVkaXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMTgwM2E0NTUxMTdmMTk1YmI2ODdmYTlhNzg4OGYxMmE4MWJiNzM0MC4uN2Y0ZGY5ZmJm
OGViYzBmZTczZjMwYzdlZGU5YzAxYTI2YmUxMWM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDg0NSw2ICs0ODQ1LDggQEAK
IAkJRjQ4MjIzMTAxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMw
RTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSAqLzsgfTsK
IAkJRjQ4MjIzMTExRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzBG
MUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4MjIzMTMxRTM4NkUy
NDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3Ry
YWN0UGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUY0OEQyQTZDMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhEMkE2QTIxNTYyM0I0
MDBDNjc1MkIgLyogRm9udFNoYWRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUY0OEQyQTdFMjE1NzE4MjYwMEM2NzUyQiAvKiBGb250QXR0cmli
dXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
RDJBNzEyMTU2REMwQTAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ5Nzg2ODgxRkY0NUZBNTAwRTA2
MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFCIC8qIFBhc3RlYm9hcmRJ
dGVtSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUY0QkZCOTg1MUUxRERGOUIwMDg2MkMyNCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4g
Q29weSBTY3JpcHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgz
MUUxRERGMkIwMDc2QjdFQSAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZC
OTg2MUUxRERGOUIwMDg2MkMyNCAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3Jp
cHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIw
MDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi87IH07CkBAIC0xNDU4OSw2ICsxNDU5
MSwxMCBAQAogCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UGFzdGVib2FyZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4MzFFMURERjJCMDA3NkI3RUEg
LyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBuYW1lID0gRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0gU2NyaXB0cy9EdW1wRWRpdGlu
Z0hpc3RvcnkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTg0MUUxRERG
MkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmphdmFzY3JpcHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwuanM7IHBhdGggPSBTY3JpcHRz
L0VkaXRpbmdIaXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4
RDJBNkEyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFkb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9u
dFNoYWRvdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhEMkE3MTIxNTZEQzBB
MDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEF0dHJpYnV0
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4RDJBNzUyMTU2RkU1NzAwQzY3
NTJCIC8qIEZvbnRBdHRyaWJ1dGVzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGb250
QXR0cmlidXRlc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhEMkE3
QTIxNTcwNTFFMDBDNjc1MkIgLyogRm9udFNoYWRvd0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRm9udFNoYWRvd0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhc3RlYm9hcmRJdGVtSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEU1N0VEQTIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjRFNTdFREYyMTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2Vy
RXh0cmFzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTk0Nyw2ICsxOTk1Myw4IEBACiAJCQkJQzUy
MjdERjAxQzNDNkRENzAwRjVFRDU0IC8qIERhdGFEZXRlY3Rpb24ubW0gKi8sCiAJCQkJOUI1NUVF
RTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tICovLAogCQkJCUY0MkNFQjU0MjE0
MDMxRUUwMDJEQ0E3MiAvKiBGb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tICovLAorCQkJCUY0
OEQyQTc1MjE1NkZFNTcwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlc0NvY29hLm1tICovLAorCQkJ
CUY0OEQyQTdBMjE1NzA1MUUwMEM2NzUyQiAvKiBGb250U2hhZG93Q29jb2EubW0gKi8sCiAJCQkJ
N0MzRTUxMDgxOERGOEYzNTAwQzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCAqLywKIAkJCQk3QzNF
NTEwOTE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5tbSAqLywKIAkJCQlFMTg1MzY4
MTFGNEU0NzI3MDBGRTA5MUIgLyogV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0
cmluZy5oICovLApAQCAtMjAyNTEsNiArMjAyNTksOCBAQAogCQkJCTM3MkMwMEQ4MTI5NjE5Rjgw
MDVDOTU3NSAvKiBGaW5kT3B0aW9ucy5oICovLAogCQkJCUY0NDI4NTBCMjE0MDQxMjUwMENDREEy
MiAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5jcHAgKi8sCiAJCQkJRjRFNTdFREEyMTNGM0Y1RjAw
NEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggKi8sCisJCQkJRjQ4RDJBNzEyMTU2REMw
QTAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggKi8sCisJCQkJRjQ4RDJBNkEyMTU2MjNCNDAw
QzY3NTJCIC8qIEZvbnRTaGFkb3cuaCAqLywKIAkJCQlEMDVDRUQyNzBBNDBCQjJDMDBDNUFGMzgg
LyogRm9ybWF0QmxvY2tDb21tYW5kLmNwcCAqLywKIAkJCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFG
MzggLyogRm9ybWF0QmxvY2tDb21tYW5kLmggKi8sCiAJCQkJOTMzMDlEQkUwOTlFNjQ5MTAwNTZF
NTgxIC8qIEZyYW1lU2VsZWN0aW9uLmNwcCAqLywKQEAgLTI2NDEwLDYgKzI2NDIwLDggQEAKIAkJ
CQlCNkQ5RDIzMzE0RUFCRDI2MDA5MEQ3NUUgLyogRm9jdXNFdmVudC5oICovLAogCQkJCUI2RDlE
MjcyMTRFQUJGMDMwMDkwRDc1RSAvKiBGb2N1c0V2ZW50LmlkbCAqLywKIAkJCQlBODUzMTIzQzEx
RDA0NzFCMDBENEQwNzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggKi8sCisJCQkJ
OUJBQUM0NTgyMTUxRTc3QTAwM0Q0QTk4IC8qIEdDUmVhY2hhYmxlUmVmLmNwcCAqLywKKwkJCQk5
QkFBQzQ1NjIxNTFFMzlFMDAzRDRBOTggLyogR0NSZWFjaGFibGVSZWYuaCAqLywKIAkJCQkwNzIw
QjA5RTE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwICovLAogCQkJCTA3
MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5lcmljRXZlbnRRdWV1ZS5oICovLAogCQkJCTdD
NDE4OUFCMUIwN0MxNzAwMDBGQTc1NyAvKiBHbG9iYWxFdmVudEhhbmRsZXJzLmlkbCAqLywKQEAg
LTI2NjAwLDggKzI2NjEyLDYgQEAKIAkJCQk4MTAyQzU4NzEzMjVCQjExMDBEREU2N0EgLyogU3Ry
aW5nQ2FsbGJhY2suY3BwICovLAogCQkJCTgxQUM2QzM1MTMxQzU3RDMwMDA5QTdFMCAvKiBTdHJp
bmdDYWxsYmFjay5oICovLAogCQkJCTgxQUM2QzM0MTMxQzU3QzIwMDA5QTdFMCAvKiBTdHJpbmdD
YWxsYmFjay5pZGwgKi8sCi0JCQkJOUJBQUM0NTgyMTUxRTc3QTAwM0Q0QTk4IC8qIEdDUmVhY2hh
YmxlUmVmLmNwcCAqLywKLQkJCQk5QkFBQzQ1NjIxNTFFMzlFMDAzRDRBOTggLyogR0NSZWFjaGFi
bGVSZWYuaCAqLywKIAkJCQlBOEM0QTdFQzA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVu
dC5jcHAgKi8sCiAJCQkJQThDNEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQu
aCAqLywKIAkJCQlDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8sCkBA
IC0yODA3NCw2ICsyODA4NCw3IEBACiAJCQkJQjJDM0RBNjUwRDAwNkNENjAwRUY2RjI2IC8qIEZv
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzJEODlEMUIxRTI5MUYwMEQ1MkU4NyAvKiBGb250
QW50aWFsaWFzaW5nU3RhdGVTYXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRFNTdFREMyMTNG
M0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGNDhEMkE3RTIxNTcxODI2MDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDQjkyRDRGMTI5MzU1MEIwMEM4Mzg3RiAvKiBGb250QmFzZWxpbmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyQzNEQTYzMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUMyNDU4RTYzMUZFODk3QjAwMDU5NDc1OSAvKiBGb250Q2FjaGVD
b3JlVGV4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODA5MCw2ICsyODEwMSw3IEBACiAJCQkJQzJB
QjBBRjcxRTZCM0M2QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyQzNEQTZCMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250U2VsZWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0MTkwNDFGMUNDNjQ4NkIwMEMzNUY1RCAvKiBGb250U2VsZWN0
b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0OEQyQTZDMjE1NjIzQjQwMEM2NzUyQiAv
KiBGb250U2hhZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QTZFOUZDODEzQzE3RDU3MDA0NkE3
RjggLyogRm9udFRhZ2dlZFNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjAxNUMwQTFC
RTZGRUIyMDA4MjIzODkgLyogRm9udFZhcmlhbnRCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0QTBEQTJGRjEyOUIyNDE5MDBBQjYxRTEgLyogRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTI4MTMzLDYgKzI4MTQ1LDcgQEAKIAkJCQk4RUM2Qzk2MzIwMUEyNTE2
MDBGQkZBNTMgLyogR2FwTGVuZ3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc3NTA5QUM0
RDhFMDBBNkFBQjQgLyogR2FwUmVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MzJFODQ3MEM1
MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCQUFD
NDVDMjE1MjAxMjgwMDNENEE5OCAvKiBHQ1JlYWNoYWJsZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNDM4LDcgKzMwNDUx
LDYgQEAKIAkJCQlFQ0E2ODBDNzFFNjc3MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5QjZDNDE1MzEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0
aERpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlE
IC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOUJBQUM0NUMyMTUy
MDEyODAwM0Q0QTk4IC8qIEdDUmVhY2hhYmxlUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTRC
ODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzVFQjZBMzBFODFEQzRGMDBCMjU5NjUgLyogU3R5bGVCYWNrZ3JvdW5kRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2N0IwRTgxRDNCRTAwQjI1OTY1IC8qIFN0eWxlQm94RGF0
YS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMmQ0N2Rj
N2NlZGEwNDA3YzkzOGI3ZmI4NTYxMjIyMzU3OTc4MjUzNi4uNGM2Mzc5YzNkZjJlM2JjMzVkODM3
ZDIxNWVkY2E2NWEyY2M3MzMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDgs
NiArNDgsNyBAQAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAj
aW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRm9udEF0dHJpYnV0ZXMuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVUcmVlLmgiCkBAIC0zODUxLDYgKzM4NTIsNzIgQEAgdm9pZCBFZGl0b3I6OnNjaGVkdWxl
RWRpdG9yVUlVcGRhdGUoKQogICAgIG1fZWRpdG9yVUlVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKKwordm9pZCBFZGl0b3I6OnBsYXRmb3Jt
Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29uc3QgUmVu
ZGVyU3R5bGUmKSBjb25zdAoreworfQorCisjZW5kaWYKKworRm9udEF0dHJpYnV0ZXMgRWRpdG9y
Ojpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKSBjb25zdAoreworICAgIEZvbnRBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgTm9kZSogbm9kZVRvUmVtb3ZlID0gbnVsbHB0cjsKKyAg
ICBhdXRvKiBzdHlsZSA9IHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQoJm1fZnJhbWUsIG5vZGVUb1Jl
bW92ZSk7CisgICAgaWYgKCFzdHlsZSkgeworICAgICAgICBpZiAobm9kZVRvUmVtb3ZlKQorICAg
ICAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0
ZXM7CisgICAgfQorCisgICAgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQo
YXR0cmlidXRlcywgKnN0eWxlKTsKKworICAgIC8vIEZJWE1FOiBmb3Igbm93LCBhbHdheXMgcmVw
b3J0IHRoZSBjb2xvcnMgYWZ0ZXIgYXBwbHlpbmcgLWFwcGxlLWNvbG9yLWZpbHRlci4gSW4gZnV0
dXJlIG5vdCBhbGwgY2xpZW50cworICAgIC8vIG1heSB3YW50IHRoaXMsIHNvIHdlIG1heSBoYXZl
IHRvIGFkZCBhIHNldHRpbmcgdG8gY29udHJvbCBpdC4gU2VlIGFsc28gZWRpdGluZ0F0dHJpYnV0
ZWRTdHJpbmdGcm9tUmFuZ2UoKS4KKyAgICBhdXRvIGJhY2tncm91bmRDb2xvciA9IHN0eWxlLT52
aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkpCisgICAgICAgIGF0
dHJpYnV0ZXMuYmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOworCisgICAgYXV0byBm
b3JlZ3JvdW5kQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmls
dGVyKENTU1Byb3BlcnR5Q29sb3IpOworICAgIC8vIEZJWE1FOiBpc0JsYWNrQ29sb3Igbm90IHN1
aXRhYmxlIGZvciBkYXJrIG1vZGUuCisgICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkg
JiYgIUNvbG9yOjppc0JsYWNrQ29sb3IoZm9yZWdyb3VuZENvbG9yKSkKKyAgICAgICAgYXR0cmli
dXRlcy5mb3JlZ3JvdW5kQ29sb3IgPSBmb3JlZ3JvdW5kQ29sb3I7CisKKyAgICBpZiAoYXV0byog
c2hhZG93RGF0YSA9IHN0eWxlLT50ZXh0U2hhZG93KCkpCisgICAgICAgIGF0dHJpYnV0ZXMuZm9u
dFNoYWRvdyA9IHsgc2hhZG93RGF0YS0+Y29sb3IoKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzaGFk
b3dEYXRhLT54KCkpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHNoYWRvd0RhdGEtPnkoKSksIHN0YXRp
Y19jYXN0PGRvdWJsZT4oc2hhZG93RGF0YS0+cmFkaXVzKCkpIH07CisKKyAgICBhdXRvIHZlcnRp
Y2FsQWxpZ24gPSBzdHlsZS0+dmVydGljYWxBbGlnbigpOworICAgIGlmICh2ZXJ0aWNhbEFsaWdu
ID09IFZlcnRpY2FsQWxpZ246OlN1YikKKyAgICAgICAgYXR0cmlidXRlcy5zdWJzY3JpcHRPclN1
cGVyc2NyaXB0ID0gU3Vic2NyaXB0T3JTdXBlcnNjcmlwdDo6U3Vic2NyaXB0OworCisgICAgaWYg
KHZlcnRpY2FsQWxpZ24gPT0gVmVydGljYWxBbGlnbjo6U3VwZXIpCisgICAgICAgIGF0dHJpYnV0
ZXMuc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1cGVy
c2NyaXB0OworCisgICAgYXV0byB0eXBpbmdTdHlsZSA9IG1ha2VSZWZQdHIobV9mcmFtZS5zZWxl
Y3Rpb24oKS50eXBpbmdTdHlsZSgpKTsKKyAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5
bGUtPnN0eWxlKCkpIHsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHR5cGluZ1N0eWxlLT5zdHlsZSgp
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5F
ZmZlY3QpOworICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKyAg
ICAgICAgICAgIENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0
PigqdmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlTGlzdC5oYXNWYWx1ZShDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmVUaHJvdWdo
KS5wdHIoKSkpCisgICAgICAgICAgICAgICAgYXR0cmlidXRlcy5oYXNTdHJpa2VUaHJvdWdoID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUpLnB0cigp
KSkKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLmhhc1VuZGVybGluZSA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGRlY29yYXRpb24gPSBzdHlsZS0+dGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKTsKKyAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVj
b3JhdGlvbjo6TGluZVRocm91Z2gpCisgICAgICAgICAgICBhdHRyaWJ1dGVzLmhhc1N0cmlrZVRo
cm91Z2ggPSB0cnVlOworICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpV
bmRlcmxpbmUpCisgICAgICAgICAgICBhdHRyaWJ1dGVzLmhhc1VuZGVybGluZSA9IHRydWU7Cisg
ICAgfQorCisgICAgaWYgKG5vZGVUb1JlbW92ZSkKKyAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1v
dmUoKTsKKworICAgIHJldHVybiBhdHRyaWJ1dGVzOworfQorCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKIAogdm9pZCBFZGl0b3I6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAzMzIzYTMzOGEyMTEwNGI3ZDg0ODVhMmQ5ZTQxMTcw
OGU5OTMyZDAxLi5kYjk0YWZmNmI1MDgwMGNjNTQ3NjU3N2E0ODNlNTRjY2UwZmZiZjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTgxLDYgKzgxLDcgQEAgY2xhc3MgVGV4dDsKIGNsYXNz
IFRleHRDaGVja2VyQ2xpZW50OwogY2xhc3MgVGV4dEV2ZW50OwogCitzdHJ1Y3QgRm9udEF0dHJp
YnV0ZXM7CiBzdHJ1Y3QgUGFzdGVib2FyZFBsYWluVGV4dDsKIHN0cnVjdCBQYXN0ZWJvYXJkVVJM
Owogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKQEAgLTQ2OSwxMCArNDcwLDkgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgRm9udCogZm9udEZvclNlbGVjdGlvbihib29s
JiBoYXNNdWx0aXBsZUZvbnRzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQoRnJhbWUqICwgTm9kZSAqJm5v
ZGVUb1JlbW92ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRm9udEF0dHJpYnV0ZXMgZm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICB2b2lkIGdldFRleHREZWNvcmF0aW9uQXR0cmlidXRlc1Jlc3BlY3RpbmdUeXBpbmdTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSYsIE5TTXV0YWJsZURpY3Rpb25hcnkqKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBmb250QXR0cmlidXRlc0ZvclNlbGVj
dGlvblN0YXJ0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQoKTsKICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZFdpdGhJbWFnZUFsdFRleHQoKTsKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtNTYyLDYgKzU2
Miw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJU
RkRGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQoTlNBdHRyaWJ1dGVkU3RyaW5nICopOwogI2VuZGlmCisg
ICAgdm9pZCBwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmli
dXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CiAKICAgICB2b2lkIHNjaGVkdWxlRWRp
dG9yVUlVcGRhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250
QXR0cmlidXRlQ2hhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRl
Q2hhbmdlcy5oCmluZGV4IGRlN2FlNTNkMzc4MmM0MGY3MTFlNDg0ZjVhZWQyYzUyNWE5ZDYwZGQu
LmRjMThkMDQ5Mjc2NmY1NjU1NTllM2FkOTViMWM2NmFiNWVkNWFiZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGb250U2hhZG93
LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNjksMTYgKzcwLDYgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faXRhbGljOwogfTsKIAotc3RydWN0IEZvbnRTaGFk
b3cgewotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVj
b2RlciYsIEZvbnRTaGFkb3cmKTsKLQotICAgIENvbG9yIGNvbG9yOwotICAgIGRvdWJsZSB3aWR0
aCB7IDAgfTsKLSAgICBkb3VibGUgaGVpZ2h0IHsgMCB9OwotICAgIGRvdWJsZSBibHVyUmFkaXVz
IHsgMCB9OwotfTsKLQogY2xhc3MgRm9udEF0dHJpYnV0ZUNoYW5nZXMgewogcHVibGljOgogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAg
LTEzNywzMCArMTI4LDYgQEAgYm9vbCBGb250Q2hhbmdlczo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIEZvbnRDaGFuZ2VzJiBjaGFuZ2VzKQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBGb250U2hhZG93OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGNvbG9yIDw8IHdpZHRoIDw8IGhlaWdodCA8PCBi
bHVyUmFkaXVzOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9vbCBGb250U2hhZG93
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRm9udFNoYWRvdyYgc2hhZG93KQotewotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2hhZG93LmNvbG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaGFkb3cud2lkdGgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5oZWlnaHQpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5ibHVyUmFk
aXVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRm9udEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJp
YnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40MDRiZDI5MjViNDljYmMyMmE0OGE5Nzc5ZjlhNmZmODI0Yjky
MzFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmli
dXRlcy5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkZvbnRTaGFkb3cuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworI2VuZGlmCisKKyNpZiBQ
TEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TRm9udDsKKyNlbGlmIFBMQVRGT1JNKElPUykKK09C
SkNfQ0xBU1MgVUlGb250OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBj
bGFzcyBTdWJzY3JpcHRPclN1cGVyc2NyaXB0IDogdWludDhfdCB7IE5vbmUsIFN1YnNjcmlwdCwg
U3VwZXJzY3JpcHQgfTsKKworc3RydWN0IEZvbnRBdHRyaWJ1dGVzIHsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBjcmVhdGVE
aWN0aW9uYXJ5KCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZXRh
aW5QdHI8TlNGb250PiBmb250OworI2VsaWYgUExBVEZPUk0oSU9TKQorICAgIFJldGFpblB0cjxV
SUZvbnQ+IGZvbnQ7CisjZW5kaWYKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7CisgICAgQ29s
b3IgZm9yZWdyb3VuZENvbG9yOworICAgIEZvbnRTaGFkb3cgZm9udFNoYWRvdzsKKyAgICBTdWJz
Y3JpcHRPclN1cGVyc2NyaXB0IHN1YnNjcmlwdE9yU3VwZXJzY3JpcHQgeyBTdWJzY3JpcHRPclN1
cGVyc2NyaXB0OjpOb25lIH07CisgICAgYm9vbCBoYXNVbmRlcmxpbmUgeyBmYWxzZSB9OworICAg
IGJvb2wgaGFzU3RyaWtlVGhyb3VnaCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpTdWJzY3JpcHRPclN1cGVyc2NyaXB0LAorICAg
ICAgICBXZWJDb3JlOjpTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpOb25lLAorICAgICAgICBXZWJD
b3JlOjpTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpTdWJzY3JpcHQsCisgICAgICAgIFdlYkNvcmU6
OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1cGVyc2NyaXB0CisgICAgPjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hh
ZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NjY0MTNjNjgxMDk3MWVhMWUyODRhZDMxY2MzNzEzYjcwYzc1MzI2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmgKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgTlNT
aGFkb3c7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRm9udFNoYWRv
dyB7CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNv
ZGVyJiwgRm9udFNoYWRvdyYpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRy
PE5TU2hhZG93PiBjcmVhdGVTaGFkb3coKSBjb25zdDsKKyNlbmRpZgorCisgICAgQ29sb3IgY29s
b3I7CisgICAgZG91YmxlIHdpZHRoIHsgMCB9OworICAgIGRvdWJsZSBoZWlnaHQgeyAwIH07Cisg
ICAgZG91YmxlIGJsdXJSYWRpdXMgeyAwIH07Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBGb250U2hhZG93OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IGNvbG9yIDw8IHdpZHRoIDw8IGhlaWdodCA8PCBibHVyUmFkaXVzOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorYm9vbCBGb250U2hhZG93OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgRm9udFNoYWRvdyYgc2hhZG93KQoreworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2hhZG93LmNvbG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzaGFkb3cud2lkdGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5oZWlnaHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5ibHVyUmFkaXVzKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4
IGUzNzcxYjdjNTQyMzBmOGU0NmMwODcxNzdmYmJmZGZjMjI0YzQzZDcuLjg1MDY1YzhjZTQ2ZmI4
Y2IyNDdhZDMwNWE5MWQyYmQ1NTE3N2MzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiRWRpdGluZy5o
IgogI2ltcG9ydCAiRWRpdGluZ1N0eWxlLmgiCiAjaW1wb3J0ICJFZGl0b3JDbGllbnQuaCIKKyNp
bXBvcnQgIkZvbnRBdHRyaWJ1dGVzLmgiCiAjaW1wb3J0ICJGb250Q2FzY2FkZS5oIgogI2ltcG9y
dCAiRnJhbWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCkBAIC01OCw4OSArNTksMTAgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEVkaXRvcjo6Z2V0VGV4dERlY29yYXRpb25B
dHRyaWJ1dGVzUmVzcGVjdGluZ1R5cGluZ1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
TlNNdXRhYmxlRGljdGlvbmFyeSogcmVzdWx0KSBjb25zdAordm9pZCBFZGl0b3I6OnBsYXRmb3Jt
Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPEVkaXRpbmdT
dHlsZT4gdHlwaW5nU3R5bGUgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnR5cGluZ1N0eWxlKCk7Ci0g
ICAgaWYgKHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5zdHlsZSgpKSB7Ci0gICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKLSAgICAg
ICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBDU1NW
YWx1ZUxpc3QmIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKTsKLSAg
ICAgICAgICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMaW5lVGhyb3VnaCkucHRyKCkpKQotICAg
ICAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSkg
Zm9yS2V5Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgICAgICBp
ZiAodmFsdWVMaXN0Lmhhc1ZhbHVlKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKS5wdHIoKSkpCi0gICAgICAgICAgICAgICAg
W3Jlc3VsdCBzZXRPYmplY3Q6QChOU1VuZGVybGluZVN0eWxlU2luZ2xlKSBmb3JLZXk6TlNVbmRl
cmxpbmVTdHlsZUF0dHJpYnV0ZU5hbWVdOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgYXV0byBkZWNvcmF0aW9uID0gc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAg
ICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpCi0gICAg
ICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktl
eTpOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdOwotICAgICAgICBpZiAoZGVjb3Jh
dGlvbiAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpCi0gICAgICAgICAgICBbcmVzdWx0IHNl
dE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktleTpOU1VuZGVybGluZVN0eWxl
QXR0cmlidXRlTmFtZV07Ci0gICAgfQotfQotCi1SZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBFZGl0
b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdAotewotICAgIE5vZGUq
IG5vZGVUb1JlbW92ZTsKLSAgICBhdXRvKiBzdHlsZSA9IHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQo
Jm1fZnJhbWUsIG5vZGVUb1JlbW92ZSk7Ci0gICAgaWYgKCFzdHlsZSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBhdHRyaWJ1dGVzID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLQotICAgIGlmIChh
dXRvIGN0Rm9udCA9IHN0eWxlLT5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250
KCkpCi0gICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDooX19icmlkZ2UgaWQpY3RGb250IGZv
cktleTpOU0ZvbnRBdHRyaWJ1dGVOYW1lXTsKLQotICAgIC8vIEZJWE1FOiBXaHkgd291bGQgd2Ug
bm90IHdhbnQgdG8gcmV0cmlldmUgdGhlc2UgYXR0cmlidXRlcyBvbiBpT1M/Ci0jaWYgUExBVEZP
Uk0oTUFDKQotICAgIC8vIEZJWE1FOiBmb3Igbm93LCBhbHdheXMgcmVwb3J0IHRoZSBjb2xvcnMg
YWZ0ZXIgYXBwbHlpbmcgLWFwcGxlLWNvbG9yLWZpbHRlci4gSW4gZnV0dXJlIG5vdCBhbGwgY2xp
ZW50cwotICAgIC8vIG1heSB3YW50IHRoaXMsIHNvIHdlIG1heSBoYXZlIHRvIGFkZCBhIHNldHRp
bmcgdG8gY29udHJvbCBpdC4gU2VlIGFsc28gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFu
Z2UoKS4KLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBp
ZiAoYmFja2dyb3VuZENvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICBbYXR0cmlidXRlcyBzZXRP
YmplY3Q6bnNDb2xvcihiYWNrZ3JvdW5kQ29sb3IpIGZvcktleTpOU0JhY2tncm91bmRDb2xvckF0
dHJpYnV0ZU5hbWVdOwotCi0gICAgQ29sb3IgZm9yZWdyb3VuZENvbG9yID0gc3R5bGUtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAv
LyBGSVhNRTogaXNCbGFja0NvbG9yIG5vdCBzdWl0YWJsZSBmb3IgZGFyayBtb2RlLgotICAgIGlm
IChmb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmICFDb2xvcjo6aXNCbGFja0NvbG9yKGZvcmVn
cm91bmRDb2xvcikpCi0gICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpuc0NvbG9yKGZvcmVn
cm91bmRDb2xvcikgZm9yS2V5Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07Ci0KLSAg
ICBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dEYXRhID0gc3R5bGUtPnRleHRTaGFkb3coKTsKLSAg
ICBpZiAoc2hhZG93RGF0YSkgewotICAgICAgICBSZXRhaW5QdHI8TlNTaGFkb3c+IHBsYXRmb3Jt
U2hhZG93ID0gYWRvcHROUyhbW05TU2hhZG93IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFtwbGF0
Zm9ybVNoYWRvdyBzZXRTaGFkb3dPZmZzZXQ6TlNNYWtlU2l6ZShzaGFkb3dEYXRhLT54KCksIHNo
YWRvd0RhdGEtPnkoKSldOwotICAgICAgICBbcGxhdGZvcm1TaGFkb3cgc2V0U2hhZG93Qmx1clJh
ZGl1czpzaGFkb3dEYXRhLT5yYWRpdXMoKV07Ci0gICAgICAgIFtwbGF0Zm9ybVNoYWRvdyBzZXRT
aGFkb3dDb2xvcjpuc0NvbG9yKHNoYWRvd0RhdGEtPmNvbG9yKCkpXTsKLSAgICAgICAgW2F0dHJp
YnV0ZXMgc2V0T2JqZWN0OnBsYXRmb3JtU2hhZG93LmdldCgpIGZvcktleTpOU1NoYWRvd0F0dHJp
YnV0ZU5hbWVdOwotICAgIH0KLQotICAgIGludCBzdXBlcnNjcmlwdEludCA9IDA7Ci0gICAgc3dp
dGNoIChzdHlsZS0+dmVydGljYWxBbGlnbigpKSB7Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpC
YXNlbGluZToKLSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKLSAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3Ro
OgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOgotICAgIGNhc2UgVmVydGljYWxBbGln
bjo6VGV4dEJvdHRvbToKLSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6Ci0gICAgY2Fz
ZSBWZXJ0aWNhbEFsaWduOjpUb3A6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6U3ViOgotICAgICAgICBzdXBlcnNjcmlwdEludCA9IC0xOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlN1cGVyOgotICAgICAgICBzdXBlcnNjcmlwdEludCA9
IDE7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoc3VwZXJzY3JpcHRJbnQpCi0gICAg
ICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpAKHN1cGVyc2NyaXB0SW50KSBmb3JLZXk6TlNTdXBl
cnNjcmlwdEF0dHJpYnV0ZU5hbWVdOwotI2VuZGlmCi0KLSAgICBnZXRUZXh0RGVjb3JhdGlvbkF0
dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUoKnN0eWxlLCBhdHRyaWJ1dGVzLmdldCgpKTsK
LQotICAgIGlmIChub2RlVG9SZW1vdmUpCi0gICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKCk7
Ci0KLSAgICByZXR1cm4gYXR0cmlidXRlczsKKyAgICBpZiAoYXV0byBjdEZvbnQgPSBzdHlsZS5m
b250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCkpCisgICAgICAgIGF0dHJpYnV0
ZXMuZm9udCA9IChfX2JyaWRnZSBpZCljdEZvbnQ7CiB9CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmlu
ZyAqYXR0cmlidXRlZFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OGViNDU2ZjYzN2MxZDliM2Qy
N2UzZmExNjM1Y2MyMzhjZmNmOTFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tCkBAIC0wLDAgKzEsODEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkZvbnRBdHRyaWJ1dGVzLmgi
CisKKyNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KKworI2lmIFBMQVRGT1JNKElPUykKK1NP
RlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJQ29sb3Ip
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKEFQUEtJVCkKK3N0YXRp
YyBOU0NvbG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1
cm4gbnNDb2xvcihjb2xvcik7Cit9CisjZWxpZiBQTEFURk9STShJT1MpCitzdGF0aWMgVUlDb2xv
ciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgcmV0dXJuIFtnZXRV
SUNvbG9yQ2xhc3MoKSBjb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXTsKK30K
KyNlbmRpZgorCitSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBGb250QXR0cmlidXRlczo6Y3JlYXRl
RGljdGlvbmFyeSgpIGNvbnN0Cit7CisgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHROUyhbTlNN
dXRhYmxlRGljdGlvbmFyeSBuZXddKTsKKyAgICBpZiAoZm9udCkKKyAgICAgICAgW2F0dHJpYnV0
ZXMgc2V0T2JqZWN0OmZvbnQuZ2V0KCkgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOworCisg
ICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIFthdHRyaWJ1dGVzIHNl
dE9iamVjdDpwbGF0Zm9ybUNvbG9yKGZvcmVncm91bmRDb2xvcikgZm9yS2V5Ok5TRm9yZWdyb3Vu
ZENvbG9yQXR0cmlidXRlTmFtZV07CisKKyAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmFsaWQo
KSkKKyAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OnBsYXRmb3JtQ29sb3IoYmFja2dyb3Vu
ZENvbG9yKSBmb3JLZXk6TlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXTsKKworICAgIGlm
IChmb250U2hhZG93LmNvbG9yLmlzVmFsaWQoKSAmJiAoZm9udFNoYWRvdy53aWR0aCB8fCBmb250
U2hhZG93LmhlaWdodCB8fCBmb250U2hhZG93LmJsdXJSYWRpdXMpKSB7CisgICAgICAgIGF1dG8g
c2hhZG93ID0gZm9udFNoYWRvdy5jcmVhdGVTaGFkb3coKTsKKyAgICAgICAgW2F0dHJpYnV0ZXMg
c2V0T2JqZWN0OnNoYWRvdy5nZXQoKSBmb3JLZXk6TlNTaGFkb3dBdHRyaWJ1dGVOYW1lXTsKKyAg
ICB9CisKKyAgICBpZiAoc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9PSBTdWJzY3JpcHRPclN1cGVy
c2NyaXB0OjpTdWJzY3JpcHQpCisgICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpAKC0xKSBm
b3JLZXk6TlNTdXBlcnNjcmlwdEF0dHJpYnV0ZU5hbWVdOworICAgIGVsc2UgaWYgKHN1YnNjcmlw
dE9yU3VwZXJzY3JpcHQgPT0gU3Vic2NyaXB0T3JTdXBlcnNjcmlwdDo6U3VwZXJzY3JpcHQpCisg
ICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpAKDEpIGZvcktleTpOU1N1cGVyc2NyaXB0QXR0
cmlidXRlTmFtZV07CisKKyAgICBpZiAoaGFzVW5kZXJsaW5lKQorICAgICAgICBbYXR0cmlidXRl
cyBzZXRPYmplY3Q6QChOU1VuZGVybGluZVN0eWxlU2luZ2xlKSBmb3JLZXk6TlNVbmRlcmxpbmVT
dHlsZUF0dHJpYnV0ZU5hbWVdOworCisgICAgaWYgKGhhc1N0cmlrZVRocm91Z2gpCisgICAgICAg
IFthdHRyaWJ1dGVzIHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktleTpO
U1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdOworCisgICAgcmV0dXJuIGF0dHJpYnV0
ZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VmMmZlOGJlYWE2YzU5
NTA3MjgzZWM1YTdmZWMwYTk2ZThmN2Y2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCkBAIC0wLDAgKzEsNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRm9udFNoYWRvdy5oIgor
CisjaW5jbHVkZSAiQ29sb3JNYWMuaCIKKworI2lmIFBMQVRGT1JNKElPUykKK1NPRlRfTElOS19D
TEFTUyhVSUtpdCwgTlNTaGFkb3cpCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitS
ZXRhaW5QdHI8TlNTaGFkb3c+IEZvbnRTaGFkb3c6OmNyZWF0ZVNoYWRvdygpIGNvbnN0Cit7Cisj
aWYgVVNFKEFQUEtJVCkKKyAgICBhdXRvIHNoYWRvdyA9IGFkb3B0TlMoW05TU2hhZG93IG5ld10p
OworICAgIFtzaGFkb3cgc2V0U2hhZG93T2Zmc2V0Ok5TTWFrZVNpemUod2lkdGgsIGhlaWdodCld
OworICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6bnNDb2xvcihjb2xvcildOworI2VsaWYgUExB
VEZPUk0oSU9TKQorICAgIGF1dG8gc2hhZG93ID0gYWRvcHROUyhbYWxsb2NOU1NoYWRvd0luc3Rh
bmNlKCkgaW5pdF0pOworICAgIFtzaGFkb3cgc2V0U2hhZG93T2Zmc2V0OkNHU2l6ZU1ha2Uod2lk
dGgsIGhlaWdodCldOworICAgIFtzaGFkb3cgc2V0U2hhZG93Q29sb3I6W2dldFVJQ29sb3JDbGFz
cygpIGNvbG9yV2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xvcihjb2xvcildXTsKKyNlbmRpZgorICAg
IFtzaGFkb3cgc2V0U2hhZG93Qmx1clJhZGl1czpibHVyUmFkaXVzXTsKKyAgICByZXR1cm4gc2hh
ZG93OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQppbmRleCAyNjRiOGIwYzkyMTBlNGIyNGRlODRjYTdmNGI5Mjc1OTZhMWE5YzMyLi5j
MGZhMTQ0ZjIxMWJhMDY3MGY4YjI2OGRlNWFmMjQyYWUxZGNiYTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTk2LDYgKzk2LDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zv
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhY2hlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVy
Lmg+CkBAIC01MDU3LDcgKzUwNTgsNyBAQCBzdGF0aWMgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1
cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiB7CiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFtb
TlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIngiCi0gICAgICAgIGF0
dHJpYnV0ZXM6Y29yZUZyYW1lID8gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0Zv
clNlbGVjdGlvblN0YXJ0KCkuZ2V0KCkgOiBuaWxdKTsKKyAgICAgICAgYXR0cmlidXRlczpjb3Jl
RnJhbWUgPyBjb3JlRnJhbWUtPmVkaXRvcigpLmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFy
dCgpLmNyZWF0ZURpY3Rpb25hcnkoKS5nZXQoKSA6IG5pbF0pOwogICAgIHJldHVybiBbc3RyaW5n
IFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pIGRvY3VtZW50QXR0
cmlidXRlczpAeyB9XTsKIH0KIApAQCAtNTcwNCw3ICs1NzA1LDcgQEAgc3RhdGljIEJPT0wgd3Jp
dGluZ0RpcmVjdGlvbktleUJpbmRpbmdzRW5hYmxlZCgpCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pKSB7CiAgICAgICAgIGlmIChjb25zdCBGb250KiBmZCA9
IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEZvclNlbGVjdGlvbihtdWx0aXBsZUZvbnRzKSkKICAg
ICAgICAgICAgIGZvbnQgPSAoTlNGb250ICopZmQtPnBsYXRmb3JtRGF0YSgpLnJlZ2lzdGVyZWRG
b250KCk7Ci0gICAgICAgIGF0dHJpYnV0ZXMgPSBjb3JlRnJhbWUtPmVkaXRvcigpLmZvbnRBdHRy
aWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgYXR0cmlidXRlcyA9IGNvcmVGcmFt
ZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkuY3JlYXRlRGljdGlv
bmFyeSgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBmb3Igbm93LCByZXR1cm4gYSBib2d1cyBm
b250IHRoYXQgZGlzdGluZ3Vpc2hlcyB0aGUgZW1wdHkgc2VsZWN0aW9uIGZyb20gdGhlIG5vbi1l
bXB0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGZm
MTUxMmZmMGY4YzVlM2I5NTM1ZGU5NWY2MjdjMjc3MTE5MGMyYTQuLjQ2N2MwZTNkY2JiODFhMDNl
ZDZlNGFiZWJmZTgyOTZhMTY3ODM3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KQEAgLTE0NCw2ICsxNDQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9FdmVu
dEhhbmRsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0ZXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udENhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CkBAIC04NjIzLDkgKzg2MjQsOCBA
QCBGT1JXQVJEKHRvZ2dsZVVuZGVybGluZSkKIAogLSAoTlNEaWN0aW9uYXJ5ICopdHlwaW5nQXR0
cmlidXRlcwogewotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9zZWxlY3RlZE9y
TWFpbkZyYW1lXSk7Ci0gICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIGNvcmVGcmFt
ZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpLmF1dG9yZWxlYXNl
KCk7CisgICAgaWYgKGF1dG8qIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX3NlbGVjdGVkT3JNYWlu
RnJhbWVdKSkKKyAgICAgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0
ZXNBdFNlbGVjdGlvblN0YXJ0KCkuY3JlYXRlRGljdGlvbmFyeSgpLmF1dG9yZWxlYXNlKCk7CiAg
ICAgCiAgICAgcmV0dXJuIG5pbDsKIH0K
</data>
<flag name="review"
          id="368052"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350681</attachid>
            <date>2018-09-24 14:11:08 -0700</date>
            <delta_ts>2018-09-24 14:46:42 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-189918-20180924141108.patch</filename>
            <type>text/plain</type>
            <size>50651</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWViY2NlYzg2ZjkwNWUw
MzU2ZTFhN2NkMDYxMjkwOTEyMTk2ZmI4My4uY2RkNmEwZGE5YjhkNGFlZjQ1NmM3YmUzNmIxZWJj
MmE1OWRjYzQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE4LTA5LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEVk
aXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBiZSBwbGF0Zm9ybS1hZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vNDQ2NDg3MDU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBSZWZhY3RvcnMgdGhlIGZ1
bmN0aW9uYWxpdHkgaW4gRWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0IHRv
IG5vdCBiZSBDb2NvYS1vbmx5LiBSZW5hbWUgdGhpcyB0bworICAgICAgICBmb250QXR0cmlidXRl
c0F0U2VsZWN0aW9uU3RhcnQgKHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBgRWRpdGluZ1N0eWxlOjpz
dHlsZUF0U2VsZWN0aW9uU3RhcnRgKSBhbmQgbW92ZSBpdCBmcm9tCisgICAgICAgIEVkaXRvckNv
Y29hLm1tIHRvIEVkaXRvci5jcHA7IGluc3RlYWQgb2YgY3JlYXRpbmcgYW5kIHBvcHVsYXRpbmcg
YW4gTlNEaWN0aW9uYXJ5IHdpdGggZm9udCBhdHRyaWJ1dGUKKyAgICAgICAgaW5mb3JtYXRpb24s
IGNyZWF0ZSBhbmQgcG9wdWxhdGUgYSBuZXcgYEZvbnRBdHRyaWJ1dGVzYCBzdHJ1Y3QgdGhhdCBj
b250YWlucyB0aGUgc2FtZSBpbmZvcm1hdGlvbi4gQ29jb2EgY2xpZW50cworICAgICAgICBpbiBX
ZWJLaXRMZWdhY3kgbWF5IHRoZW4gY3JlYXRlIGFuIGBOU0RpY3Rpb25hcnlgIGFzIG5lZWRlZCBm
cm9tIHRoZSBgRm9udEF0dHJpYnV0ZXNgLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwbGF0Zm9ybUZv
bnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaG9v
ayB0byBhbGxvdyBwbGF0Zm9ybXMgdG8gc3VwcGx5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4g
Rm9udEF0dHJpYnV0ZXMuIE9uIENvY29hLCB0aGlzIGFkZHMgYSBVSUZvbnQKKyAgICAgICAgb3Ig
TlNGb250IHRvIEZvbnRBdHRyaWJ1dGVzOyBvdGhlcndpc2UsIHRoaXMgaXMgYSBuby1vcC4KKwor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQg
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9G
b250QXR0cmlidXRlQ2hhbmdlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NWYWx1ZUxpc3RG
b3JTaGFkb3cpOgorICAgICAgICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDoKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93OjplbmNvZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6ZGVjb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmg6IEFkZGVkLgorCisg
ICAgICAgIEludHJvZHVjZSBhIG5ldyBzdHJ1Y3QgdGhhdCBjb250YWlucyBmb250IGF0dHJpYnV0
ZSBpbmZvcm1hdGlvbi4gTWF5IGJlIGNvbnZlcnRlZCBpbnRvIGFuIE5TRGljdGlvbmFyeSBmb3Ig
dXNlCisgICAgICAgIGJ5IENvY29hIGNsaWVudHMgaW4gV2ViS2l0TGVnYWN5IGFuZCBXZWJLaXQu
IEluIGEgZnV0dXJlIHBhdGNoLCB0aGlzIHdpbGwgYmVjb21lIHNlcmlhbGl6YWJsZSBvdmVyIElQ
QyBmb3IgdXNlCisgICAgICAgIGluIFdlYktpdDIuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRT
aGFkb3cuaDogQWRkZWQuCisKKyAgICAgICAgTW92ZSBGb250U2hhZG93IG91dCBpbnRvIGEgc2Vw
YXJhdGUgaGVhZGVyIGZpbGUsIGluY2x1ZGVkIGluIGBGb250QXR0cmlidXRlQ2hhbmdlcy5oYCBh
bmQgYEZvbnRBdHRyaWJ1dGVzLmhgLgorCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93Ojpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6ZGVjb2RlKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorCisgICAgICAgIEFkZCBhIGhl
bHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgV2ViQ29yZTo6Q29sb3IgdG8gZWl0aGVyIGBVSUNv
bG9yYCBvbiBpT1Mgb3IgYE5TQ29sb3JgIHdoZW4gQXBwS2l0IGlzIGJlaW5nCisgICAgICAgIHVz
ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRUZXh0
RGVjb3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUgY29uc3QpOiBEZWxldGVk
LgorCisgICAgICAgIFJlbW92ZSBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHdhcyBvbmx5IHVzZWQg
dG8gY29tcHV0ZSB0ZXh0IGRlY29yYXRpb24gYXR0cmlidXRlcyBpbgorICAgICAgICBmb250QXR0
cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0LgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZv
bnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFyeSBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFNoYWRvdzo6Y3JlYXRlU2hhZG93IGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChfd2ViS2l0QnVuZGxlKToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9jb2xvckZvckVsZW1lbnQpOgorICAgICAgICAoX3BsYXRmb3Jt
Q29sb3IpOiBEZWxldGVkLgorCisgICAgICAgIEFkb3B0IHBsYXRmb3JtQ29sb3IoKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2Vi
Q29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW06CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlZEZv
bnRBdHRyaWJ1dGVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisKIDIwMTgtMDktMjQgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJWVFRdIENoYW5n
ZSBuYW1lIG9mIFdlYlZUVCByZWdpb24gYXR0cmlidXRlICdoZWlnaHQnIHRvICdsaW5lcycuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwppbmRleCBjYWUxYjBmMDNiMWRmMGQxM2QwYTNkNjUwMmM4NDlmYTc0YWU3
ZmFmLi41YTQ1NTQ2ZmE1N2NjNjNjNDU1NzRjMDc1ZmQ1ZTdiMGU1ZjAwOTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0wOS0yNCAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBFZGl0b3I6OmZvbnRBdHRy
aWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQgdG8gYmUgcGxhdGZvcm0tYWdub3N0aWMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTkxOAorICAgICAgICBX
b3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVtLzQ0NjQ4NzA1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkIGArX2Rpc2FtYmlndWF0ZWRfZHVlX3RvX0NJ
SW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjpgIGFzIGEgVUlDb2xvciBTUEkgZGVmaW5pdGlvbi4gQWxz
bywgaW1wb3J0CisgICAgICAgIGBVSUNvbG9yX1ByaXZhdGUuaGAgZGlyZWN0bHkgd2hlbiB0aGUg
QXBwbGUgaW50ZXJuYWwgU0RLIGlzIHVzZWQuCisKKyAgICAgICAgKiBwYWwvc3BpL2lvcy9VSUtp
dFNQSS5oOgorCiAyMDE4LTA5LTIxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgU2llcnJhIEJ1aWxkIEZpeDsgZW5zdXJlIEFWVmlkZW9QZXJm
b3JtYW5jZU1ldHJpY3MgYXJlIGRlZmluZWQgb24gU2llcnJhLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCmluZGV4IDI4ZGE4ZThlOWUxNGEyYjJmMjBhMmY3ZDE5ZDAwOTk0NTVmMDhiNmUuLjYx
ZDNhNmQxMWZmNmU4ZTQyYjg0MWQ0OWRjZjNmZWFlNTQ2NGMyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wOS0yNCAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBFZGl0b3I6OmZvbnRB
dHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQgdG8gYmUgcGxhdGZvcm0tYWdub3N0aWMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTkxOAorICAgICAg
ICBXb3JrIHRvd2FyZHMgPHJkYXI6Ly9wcm9ibGVtLzQ0NjQ4NzA1PgorCisgICAgICAgIFJldmll
d2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgUmVwbGFjZSBjYWxsIHNpdGVzIG9mIGZvbnRB
dHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSB0byBmb250QXR0cmlidXRlc0F0U2VsZWN0aW9u
U3RhcnQoKS5jcmVhdGVEaWN0aW9uYXJ5KCkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2VsZWN0aW9uU3RhcnRGb250QXR0cmli
dXRlc0FzUlRGXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF91cGRhdGVGb250UGFuZWxdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgdHlwaW5n
QXR0cmlidXRlc10pOgorCiAyMDE4LTA5LTE3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBVc2UgT3BhcXVlSlNTdHJpbmcgcmF0aGVyIHRoYW4gSlNSZXRhaW5QdHIg
aW5zaWRlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9z
L1VJS2l0U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvVUlLaXRTUEkuaApp
bmRleCAyMTJkNDYyODA2ZDY2ZTk3NGZlNWQ4Yjk5NGM3MDY2NDkzOWFiNWI5Li45ZGI3ZjU3Yjky
NmQ3MTQyYmJhMmY5ZDM1ZmUxMzRiZWVmYWVjMDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW1wb3J0IDxVSUtpdC9V
SUFwcGxpY2F0aW9uU2NlbmVDb25zdGFudHMuaD4KICNpbXBvcnQgPFVJS2l0L1VJQXBwbGljYXRp
b25fUHJpdmF0ZS5oPgorI2ltcG9ydCA8VUlLaXQvVUlDb2xvcl9Qcml2YXRlLmg+CiAjaW1wb3J0
IDxVSUtpdC9VSUludGVyZmFjZV9Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVNjcmVlbl9Q
cml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyX1ByaXZhdGUuaD4KQEAg
LTc0LDYgKzc1LDggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlBcHBsaWNhdGlvblNj
ZW5lQ2xhc3NpY01vZGUpIHsKICsgKFVJQ29sb3IgKilzeXN0ZW1SZWRDb2xvcjsKICsgKFVJQ29s
b3IgKilzeXN0ZW1ZZWxsb3dDb2xvcjsKIAorKyAoVUlDb2xvciAqKV9kaXNhbWJpZ3VhdGVkX2R1
ZV90b19DSUltYWdlX2NvbG9yV2l0aENHQ29sb3I6KENHQ29sb3JSZWYpY2dDb2xvcjsKKwogQGVu
ZAogCiBAaW50ZXJmYWNlIFVJU2NyZWVuICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA2
MmJmZDhkOGMyMDdhMDk0OTg5M2U1YzQ1OGFiY2U3MDdiY2ZmNjdmLi5kN2MwYWM3YjNkYmE5MDI5
M2M2MjVhN2QwN2RkM2U1ZjdjMjk5NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTc5
LDYgKzc5LDggQEAgZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAKIGVkaXRpbmcvY29jb2EvRGF0
YURldGVjdGlvbi5tbQogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQogZWRpdGluZy9jb2Nv
YS9Gb250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tCitlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1
dGVzQ29jb2EubW0KK2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCiBlZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0gQG5vLXVuaWZ5CiBlZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVS
ZXNvdXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcubW0KIGVkaXRpbmcvY29jb2EvV2ViQXJjaGl2
ZVJlc291cmNlV2ViUmVzb3VyY2VIYW5kbGVyLm1tCkBAIC0yOTMsNiArMjk1LDcgQEAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL1RyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9V
VElSZWdpc3RyeS5jcHAKIAorcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0M0RDb2NvYS5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE4MDNhNDU1MTE3ZjE5NWJiNjg3
ZmE5YTc4ODhmMTJhODFiYjczNDAuLmI3NjI5YzA1MWFhZjU2YzM4NzU0OTBiODgxN2Q4MWIxYTVk
NTY4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTQ4NDUsNiArNDg0NSw5IEBACiAJCUY0ODIyMzEwMUUzODY5QjgwMDY2RkM3
OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIzMEUxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gKi87IH07CiAJCUY0ODIyMzExMUUzODY5QjgwMDY2RkM3
OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMwRjFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3Rl
Ym9hcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
ODIyMzEyMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDhEMkE2QzIxNTYyM0I0
MDBDNjc1MkIgLyogRm9udFNoYWRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ4RDJBNkEyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFkb3cuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDhEMkE3
RTIxNTcxODI2MDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OEQyQTcxMjE1NkRDMEEwMEM2NzUyQiAvKiBG
b250QXR0cmlidXRlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUY0OEQyQUE1MjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhEMkFBMzIxNTk3NDBE
MDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oICovOyB9OwogCQlGNDk3ODY4ODFGRjQ1RkE1MDBFMDYw
QUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDk3ODY4NzFGRjQ1RkE1MDBFMDYwQUIgLyogUGFzdGVib2FyZEl0
ZW1JbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRjRCRkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyBpbiBD
b3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODMx
RTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLzsgfTsKIAkJRjRCRkI5
ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyBpbiBDb3B5IFNjcmlw
dHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4Mzg5ODQxRTFEREYyQjAw
NzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKQEAgLTE0NTg5LDYgKzE0NTky
LDEyIEBACiAJCUY0ODIyMzEyMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RQYXN0ZWJvYXJkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTgzMUUxRERGMkIwMDc2QjdFQSAv
KiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IG5hbWUgPSBEdW1wRWRpdGluZ0hpc3RvcnkuanM7IHBhdGggPSBTY3JpcHRzL0R1bXBFZGl0aW5n
SGlzdG9yeS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4Mzg5ODQxRTFEREYy
QjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgbmFtZSA9IEVkaXRpbmdIaXN0b3J5VXRpbC5qczsgcGF0aCA9IFNjcmlwdHMv
RWRpdGluZ0hpc3RvcnlVdGlsLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhE
MkE2QTIxNTYyM0I0MDBDNjc1MkIgLyogRm9udFNoYWRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250
U2hhZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0OEQyQTcxMjE1NkRDMEEw
MEM2NzUyQiAvKiBGb250QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250QXR0cmlidXRl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhEMkE3NTIxNTZGRTU3MDBDNjc1
MkIgLyogRm9udEF0dHJpYnV0ZXNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRB
dHRyaWJ1dGVzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0OEQyQTdB
MjE1NzA1MUUwMEM2NzUyQiAvKiBGb250U2hhZG93Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBGb250U2hhZG93Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0
OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
bG9yQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4RDJBQTQyMTU5NzQw
RDAwQzY3NTJCIC8qIENvbG9yQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2xvckNv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDk3ODY4NzFGRjQ1RkE1MDBF
MDYwQUIgLyogUGFzdGVib2FyZEl0ZW1JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3RlYm9hcmRJ
dGVtSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VEQTIxM0YzRjVG
MDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEF0
dHJpYnV0ZUNoYW5nZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdFREYy
MTNGNDM0QTAwNEVBOThFIC8qIFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTk0Nyw2ICsxOTk1Niw4IEBACiAJCQkJQzUyMjdERjAxQzNDNkRENzAwRjVF
RDU0IC8qIERhdGFEZXRlY3Rpb24ubW0gKi8sCiAJCQkJOUI1NUVFRTgxQjNFODg5ODAwNTM0MkJD
IC8qIEVkaXRvckNvY29hLm1tICovLAogCQkJCUY0MkNFQjU0MjE0MDMxRUUwMDJEQ0E3MiAvKiBG
b250QXR0cmlidXRlQ2hhbmdlc0NvY29hLm1tICovLAorCQkJCUY0OEQyQTc1MjE1NkZFNTcwMEM2
NzUyQiAvKiBGb250QXR0cmlidXRlc0NvY29hLm1tICovLAorCQkJCUY0OEQyQTdBMjE1NzA1MUUw
MEM2NzUyQiAvKiBGb250U2hhZG93Q29jb2EubW0gKi8sCiAJCQkJN0MzRTUxMDgxOERGOEYzNTAw
QzExMkY3IC8qIEhUTUxDb252ZXJ0ZXIuaCAqLywKIAkJCQk3QzNFNTEwOTE4REY4RjM1MDBDMTEy
RjcgLyogSFRNTENvbnZlcnRlci5tbSAqLywKIAkJCQlFMTg1MzY4MTFGNEU0NzI3MDBGRTA5MUIg
LyogV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5oICovLApAQCAtMjAy
NTEsNiArMjAyNjIsOCBAQAogCQkJCTM3MkMwMEQ4MTI5NjE5RjgwMDVDOTU3NSAvKiBGaW5kT3B0
aW9ucy5oICovLAogCQkJCUY0NDI4NTBCMjE0MDQxMjUwMENDREEyMiAvKiBGb250QXR0cmlidXRl
Q2hhbmdlcy5jcHAgKi8sCiAJCQkJRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThFIC8qIEZvbnRBdHRy
aWJ1dGVDaGFuZ2VzLmggKi8sCisJCQkJRjQ4RDJBNzEyMTU2REMwQTAwQzY3NTJCIC8qIEZvbnRB
dHRyaWJ1dGVzLmggKi8sCisJCQkJRjQ4RDJBNkEyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFk
b3cuaCAqLywKIAkJCQlEMDVDRUQyNzBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tDb21t
YW5kLmNwcCAqLywKIAkJCQlEMDVDRUQyODBBNDBCQjJDMDBDNUFGMzggLyogRm9ybWF0QmxvY2tD
b21tYW5kLmggKi8sCiAJCQkJOTMzMDlEQkUwOTlFNjQ5MTAwNTZFNTgxIC8qIEZyYW1lU2VsZWN0
aW9uLmNwcCAqLywKQEAgLTIzOTU1LDYgKzIzOTY4LDggQEAKIAkJQjUzMjBENjgxMjJBMjRFOTAw
MkQxNDQwIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlGNDhEMkFBMzIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oICovLAorCQkJ
CUY0OEQyQUE0MjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLm1tICovLAogCQkJCTFDMzk2
OUNGMUI3NDIxMUUwMDJCQ0ZBNyAvKiBGb250Q2FjaGVDb3JlVGV4dC5jcHAgKi8sCiAJCQkJQzI0
NThFNjExRkU4OTc5RTAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggKi8sCiAJCQkJQjJB
RkZDNzgwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYXNjYWRlQ29jb2EubW0gKi8sCkBAIC0yNjQx
MCw2ICsyNjQyNSw4IEBACiAJCQkJQjZEOUQyMzMxNEVBQkQyNjAwOTBENzVFIC8qIEZvY3VzRXZl
bnQuaCAqLywKIAkJCQlCNkQ5RDI3MjE0RUFCRjAzMDA5MEQ3NUUgLyogRm9jdXNFdmVudC5pZGwg
Ki8sCiAJCQkJQTg1MzEyM0MxMUQwNDcxQjAwRDREMDc3IC8qIEZyYWdtZW50U2NyaXB0aW5nUGVy
bWlzc2lvbi5oICovLAorCQkJCTlCQUFDNDU4MjE1MUU3N0EwMDNENEE5OCAvKiBHQ1JlYWNoYWJs
ZVJlZi5jcHAgKi8sCisJCQkJOUJBQUM0NTYyMTUxRTM5RTAwM0Q0QTk4IC8qIEdDUmVhY2hhYmxl
UmVmLmggKi8sCiAJCQkJMDcyMEIwOUUxNEQzMzIzNTAwNjQyOTU1IC8qIEdlbmVyaWNFdmVudFF1
ZXVlLmNwcCAqLywKIAkJCQkwNzIwQjA5RjE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50
UXVldWUuaCAqLywKIAkJCQk3QzQxODlBQjFCMDdDMTcwMDAwRkE3NTcgLyogR2xvYmFsRXZlbnRI
YW5kbGVycy5pZGwgKi8sCkBAIC0yNjYwMCw4ICsyNjYxNyw2IEBACiAJCQkJODEwMkM1ODcxMzI1
QkIxMTAwRERFNjdBIC8qIFN0cmluZ0NhbGxiYWNrLmNwcCAqLywKIAkJCQk4MUFDNkMzNTEzMUM1
N0QzMDAwOUE3RTAgLyogU3RyaW5nQ2FsbGJhY2suaCAqLywKIAkJCQk4MUFDNkMzNDEzMUM1N0My
MDAwOUE3RTAgLyogU3RyaW5nQ2FsbGJhY2suaWRsICovLAotCQkJCTlCQUFDNDU4MjE1MUU3N0Ew
MDNENEE5OCAvKiBHQ1JlYWNoYWJsZVJlZi5jcHAgKi8sCi0JCQkJOUJBQUM0NTYyMTUxRTM5RTAw
M0Q0QTk4IC8qIEdDUmVhY2hhYmxlUmVmLmggKi8sCiAJCQkJQThDNEE3RUMwOUQ1NjMyNzAwMDNB
QzhEIC8qIFN0eWxlZEVsZW1lbnQuY3BwICovLAogCQkJCUE4QzRBN0VCMDlENTYzMjcwMDAzQUM4
RCAvKiBTdHlsZWRFbGVtZW50LmggKi8sCiAJCQkJQzk5MDU4MTIxRTMyQjczNDAwNzNCRERBIC8q
IFN1Y2Nlc3NPci5oICovLApAQCAtMjc0NzYsNiArMjc0OTEsNyBAQAogCQkJCUIyNzUzNTY3MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzMzMEEyMjMxM0VD
MTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzM3Q0RF
QkQxNDlFRjIwMzAwNDIwOTBEIC8qIENvbG9yQ2hvb3NlckNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRjQ4RDJBQTUyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxMDNCN0RGMURCMDE1NjcwMDhCQjg5MCAvKiBDb2xvckhhc2guaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY1NUIzREI0MTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFj
LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MDc0LDYgKzI4MDkwLDcgQEAKIAkJCQlCMkMzREE2NTBE
MDA2Q0Q2MDBFRjZGMjYgLyogRm9udC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMkQ4OUQxQjFF
MjkxRjAwRDUyRTg3IC8qIEZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNEU1N0VEQzIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMu
aCBpbiBIZWFkZXJzICovLAorCQkJCUY0OEQyQTdFMjE1NzE4MjYwMEM2NzUyQiAvKiBGb250QXR0
cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOTJENEYxMjkzNTUwQjAwQzgzODdGIC8q
IEZvbnRCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNjMwRDAwNkNENjAwRUY2
RjI2IC8qIEZvbnRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI0NThFNjMxRkU4OTdCMDAw
NTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MDkwLDYg
KzI4MTA3LDcgQEAKIAkJCQlDMkFCMEFGNzFFNkIzQzZDMDAxMzQ4QzUgLyogRm9udFNlbGVjdGlv
bkFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNkIwRDAwNkNENjAwRUY2RjI2
IC8qIEZvbnRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQxOTA0MUYxQ0M2NDg2QjAw
QzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ4RDJB
NkMyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFkb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
NkU5RkM4MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250VGFnZ2VkU2V0dGluZ3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyMDE1QzBBMUJFNkZFQjIwMDgyMjM4OSAvKiBGb250VmFyaWFudEJ1aWxkZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTRBMERBMkZGMTI5QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjgxMzMsNiArMjgxNTEsNyBAQAog
CQkJCThFQzZDOTYzMjAxQTI1MTYwMEZCRkE1MyAvKiBHYXBMZW5ndGguaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzNUM0Nzc1MDlBQzREOEUwMEE2QUFCNCAvKiBHYXBSZWN0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQzMkU4NDcwQzUxNDkzODAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOUJBQUM0NUMyMTUyMDEyODAwM0Q0QTk4IC8qIEdDUmVhY2hhYmxlUmVm
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEMwNTRDQzExMThDOEU0MDBDRTI2MzYgLyogZ2VuZXJh
dGUtYmluZGluZ3MucGwgaW4gSGVhZGVycyAqLywKIAkJCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRD
OTEgLyogR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMDAzMEY2MUI3RDMz
QjUwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMzA0MzgsNyArMzA0NTcsNiBAQAogCQkJCUVDQTY4MEM3MUU2NzcyNDUwMDczMUQyMCAv
KiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNkM0MTUzMTM0NDk0OTAw
MDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDlG
Nzc3NjBFRkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQk5QkFBQzQ1QzIxNTIwMTI4MDAzRDRBOTggLyogR0NSZWFjaGFibGVSZWYuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAvKiBTdHJ1Y3R1cmVkQ2xv
bmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNkEzMEU4MURDNEYwMEIyNTk2NSAvKiBTdHls
ZUJhY2tncm91bmREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjY3QjBFODFEM0JFMDBC
MjU5NjUgLyogU3R5bGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAppbmRleCAyZDQ3ZGM3Y2VkYTA0MDdjOTM4YjdmYjg1NjEyMjIzNTc5NzgyNTM2Li5l
M2I0NDM2Yjk2MTU0MmQ4YjFmZDc5Y2ZhNmZiZWEwNDAxNzBkMzZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgog
I2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJGb250QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKQEAgLTM4NTEsNiArMzg1Miw4MyBAQCB2
b2lkIEVkaXRvcjo6c2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpCiAgICAgbV9lZGl0b3JVSVVwZGF0
ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQorCit2
b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0
dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0Cit7Cit9CisKKyNlbmRpZgorCitG
b250QXR0cmlidXRlcyBFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpIGNv
bnN0Cit7CisgICAgRm9udEF0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICBOb2RlKiBub2RlVG9S
ZW1vdmUgPSBudWxscHRyOworICAgIGF1dG8qIHN0eWxlID0gc3R5bGVGb3JTZWxlY3Rpb25TdGFy
dCgmbV9mcmFtZSwgbm9kZVRvUmVtb3ZlKTsKKyAgICBpZiAoIXN0eWxlKSB7CisgICAgICAgIGlm
IChub2RlVG9SZW1vdmUpCisgICAgICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZSgpOworICAg
ICAgICByZXR1cm4gYXR0cmlidXRlczsKKyAgICB9CisKKyAgICBwbGF0Zm9ybUZvbnRBdHRyaWJ1
dGVzQXRTZWxlY3Rpb25TdGFydChhdHRyaWJ1dGVzLCAqc3R5bGUpOworCisgICAgLy8gRklYTUU6
IGZvciBub3csIGFsd2F5cyByZXBvcnQgdGhlIGNvbG9ycyBhZnRlciBhcHBseWluZyAtYXBwbGUt
Y29sb3ItZmlsdGVyLiBJbiBmdXR1cmUgbm90IGFsbCBjbGllbnRzCisgICAgLy8gbWF5IHdhbnQg
dGhpcywgc28gd2UgbWF5IGhhdmUgdG8gYWRkIGEgc2V0dGluZyB0byBjb250cm9sIGl0LiBTZWUg
YWxzbyBlZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSgpLgorICAgIGF1dG8gYmFja2dy
b3VuZENvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgaWYgKGJhY2tncm91bmRDb2xvci5pc1Zp
c2libGUoKSkKKyAgICAgICAgYXR0cmlidXRlcy5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5k
Q29sb3I7CisKKyAgICBhdXRvIGZvcmVncm91bmRDb2xvciA9IHN0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlDb2xvcik7CisgICAgLy8gRklYTUU6
IGlzQmxhY2tDb2xvciBub3Qgc3VpdGFibGUgZm9yIGRhcmsgbW9kZS4KKyAgICBpZiAoZm9yZWdy
b3VuZENvbG9yLmlzVmFsaWQoKSAmJiAhQ29sb3I6OmlzQmxhY2tDb2xvcihmb3JlZ3JvdW5kQ29s
b3IpKQorICAgICAgICBhdHRyaWJ1dGVzLmZvcmVncm91bmRDb2xvciA9IGZvcmVncm91bmRDb2xv
cjsKKworICAgIGlmIChhdXRvKiBzaGFkb3dEYXRhID0gc3R5bGUtPnRleHRTaGFkb3coKSkKKyAg
ICAgICAgYXR0cmlidXRlcy5mb250U2hhZG93ID0geyBzaGFkb3dEYXRhLT5jb2xvcigpLCB7IHN0
YXRpY19jYXN0PGZsb2F0PihzaGFkb3dEYXRhLT54KCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4oc2hh
ZG93RGF0YS0+eSgpKSB9LCBzdGF0aWNfY2FzdDxkb3VibGU+KHNoYWRvd0RhdGEtPnJhZGl1cygp
KSB9OworCisgICAgc3dpdGNoIChzdHlsZS0+dmVydGljYWxBbGlnbigpKSB7CisgICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpCYXNlbGluZToKKyAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToK
KyAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOgorICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6TGVuZ3RoOgorICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOgorICAgIGNh
c2UgVmVydGljYWxBbGlnbjo6VGV4dEJvdHRvbToKKyAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRl
eHRUb3A6CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVmVydGljYWxBbGlnbjo6U3ViOgorICAgICAgICBhdHRyaWJ1dGVzLnN1YnNjcmlwdE9y
U3VwZXJzY3JpcHQgPSBTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpTdWJzY3JpcHQ7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgVmVydGljYWxBbGlnbjo6U3VwZXI6CisgICAgICAgIGF0dHJpYnV0
ZXMuc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1cGVy
c2NyaXB0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBhdXRvIHR5cGluZ1N0eWxlID0g
bWFrZVJlZlB0cihtX2ZyYW1lLnNlbGVjdGlvbigpLnR5cGluZ1N0eWxlKCkpOworICAgIGlmICh0
eXBpbmdTdHlsZSAmJiB0eXBpbmdTdHlsZS0+c3R5bGUoKSkgeworICAgICAgICBhdXRvIHZhbHVl
ID0gdHlwaW5nU3R5bGUtPnN0eWxlKCktPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7CisgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1
ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0JiB2YWx1ZUxpc3Qg
PSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWVM
aXN0Lmhhc1ZhbHVlKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZh
bHVlKENTU1ZhbHVlTGluZVRocm91Z2gpLnB0cigpKSkKKyAgICAgICAgICAgICAgICBhdHRyaWJ1
dGVzLmhhc1N0cmlrZVRocm91Z2ggPSB0cnVlOworICAgICAgICAgICAgaWYgKHZhbHVlTGlzdC5o
YXNWYWx1ZShDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZVVuZGVybGluZSkucHRyKCkpKQorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuaGFz
VW5kZXJsaW5lID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8g
ZGVjb3JhdGlvbiA9IHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOworICAgICAgICBp
ZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkKKyAgICAgICAgICAg
IGF0dHJpYnV0ZXMuaGFzU3RyaWtlVGhyb3VnaCA9IHRydWU7CisgICAgICAgIGlmIChkZWNvcmF0
aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMu
aGFzVW5kZXJsaW5lID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobm9kZVRvUmVtb3ZlKQorICAg
ICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZSgpOworCisgICAgcmV0dXJuIGF0dHJpYnV0ZXM7Cit9
CisKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCiB2b2lkIEVkaXRvcjo6cmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIFJlZjxT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDMzMjNhMzM4
YTIxMTA0YjdkODQ4NWEyZDllNDExNzA4ZTk5MzJkMDEuLmRiOTRhZmY2YjUwODAwY2M1NDc2NTc3
YTQ4M2U1NGNjZTBmZmJmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtODEsNiArODEs
NyBAQCBjbGFzcyBUZXh0OwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBjbGFzcyBUZXh0RXZl
bnQ7CiAKK3N0cnVjdCBGb250QXR0cmlidXRlczsKIHN0cnVjdCBQYXN0ZWJvYXJkUGxhaW5UZXh0
Owogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwpAQCAt
NDY5LDEwICs0NzAsOSBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGb250
KiBmb250Rm9yU2VsZWN0aW9uKGJvb2wmIGhhc011bHRpcGxlRm9udHMpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JTZWxlY3Rpb25T
dGFydChGcmFtZSogLCBOb2RlICombm9kZVRvUmVtb3ZlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBG
b250QXR0cmlidXRlcyBmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKSBjb25zdDsKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0VGV4dERlY29yYXRpb25BdHRyaWJ1dGVz
UmVzcGVjdGluZ1R5cGluZ1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiwgTlNNdXRhYmxlRGljdGlv
bmFyeSopIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IGZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwogICAgIFN0cmluZyBz
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkV2l0aEltYWdlQWx0VGV4dCgpOwogI2lmICFQTEFU
Rk9STShJT1MpCkBAIC01NjIsNiArNTYyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdChOU0F0dHJpYnV0ZWRTdHJpbmcgKik7CiAg
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdChOU0F0dHJpYnV0
ZWRTdHJpbmcgKik7CiAjZW5kaWYKKyAgICB2b2lkIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNl
bGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsK
IAogICAgIHZvaWQgc2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3BwCmluZGV4IDdiNTRjNDVlNmJlNGQ2
ZjRjMGE1ZWIyZjM4NmRkZDAyZjNhOWQ1YTkuLjNhMTUzNzZkNjRjMWNjMzU2ZjdiNjcwMDZiNThm
ZDYxMzgxZjRkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJp
YnV0ZUNoYW5nZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0
ZUNoYW5nZXMuY3BwCkBAIC04MSwxMyArODEsMTMgQEAgUmVmPE11dGFibGVTdHlsZVByb3BlcnRp
ZXM+IEZvbnRDaGFuZ2VzOjpjcmVhdGVTdHlsZVByb3BlcnRpZXMoKSBjb25zdAogCiBzdGF0aWMg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gY3NzVmFsdWVMaXN0Rm9yU2hhZG93KGNvbnN0IEZvbnRTaGFk
b3cmIHNoYWRvdykKIHsKLSAgICBpZiAoIXNoYWRvdy53aWR0aCAmJiAhc2hhZG93LmhlaWdodCAm
JiAhc2hhZG93LmJsdXJSYWRpdXMpCisgICAgaWYgKHNoYWRvdy5vZmZzZXQuaXNFbXB0eSgpICYm
ICFzaGFkb3cuYmx1clJhZGl1cykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRv
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgYXV0byYg
Y3NzVmFsdWVQb29sID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKTsKLSAgICBhdXRvIHdpZHRo
ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYWRvdy53aWR0aCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QWCk7Ci0gICAgYXV0byBoZWlnaHQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c2hhZG93LmhlaWdodCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgYXV0byB3aWR0
aCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFkb3cub2Zmc2V0LndpZHRoKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgIGF1dG8gaGVpZ2h0ID0gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHNoYWRvdy5vZmZzZXQuaGVpZ2h0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOwogICAgIGF1dG8gYmx1clJhZGl1cyA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFk
b3cuYmx1clJhZGl1cywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiAgICAgYXV0byBjb2xv
ciA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFkb3cuY29sb3IpOwogICAgIGxpc3QtPnBy
ZXBlbmQoQ1NTU2hhZG93VmFsdWU6OmNyZWF0ZShXVEZNb3ZlKHdpZHRoKSwgV1RGTW92ZShoZWln
aHQpLCBXVEZNb3ZlKGJsdXJSYWRpdXMpLCB7IH0sIHsgfSwgV1RGTW92ZShjb2xvcikpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaAppbmRleCBkZTdh
ZTUzZDM3ODJjNDBmNzExZTQ4NGY1YWVkMmM1MjVhOWQ2MGRkLi5kYzE4ZDA0OTI3NjZmNTY1NTU5
ZTNhZDk1YjFjNjZhYjVlZDVhYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250
QXR0cmlidXRlQ2hhbmdlcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRm9udFNoYWRvdy5oIgogI2luY2x1ZGUgPHd0Zi9F
bnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KQEAgLTY5LDE2ICs3MCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBtX2l0YWxpYzsKIH07CiAKLXN0cnVjdCBGb250U2hhZG93IHsKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBGb250U2hhZG93Jik7
Ci0KLSAgICBDb2xvciBjb2xvcjsKLSAgICBkb3VibGUgd2lkdGggeyAwIH07Ci0gICAgZG91Ymxl
IGhlaWdodCB7IDAgfTsKLSAgICBkb3VibGUgYmx1clJhZGl1cyB7IDAgfTsKLX07Ci0KIGNsYXNz
IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzIHsKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xMzcsMzAgKzEyOCw2IEBAIGJv
b2wgRm9udENoYW5nZXM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBGb250Q2hhbmdlcyYgY2hh
bmdlcykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZv
aWQgRm9udFNoYWRvdzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5j
b2RlciA8PCBjb2xvciA8PCB3aWR0aCA8PCBoZWlnaHQgPDwgYmx1clJhZGl1czsKLX0KLQotdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgRm9udFNoYWRvdzo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIEZvbnRTaGFkb3cmIHNoYWRvdykKLXsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNo
YWRvdy5jb2xvcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc2hhZG93LndpZHRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzaGFkb3cuaGVpZ2h0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaGFkb3cuYmx1clJhZGl1cykpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgogdm9pZCBGb250QXR0cmlidXRlQ2hhbmdlczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmIyZGI0ZmY1M2NhMWZmNWYxNDA0Yjc5MGM2NTBhMjhkNjg3ZWI4YQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250U2hhZG93Lmgi
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIE5TRGljdGlvbmFyeTsK
K09CSkNfQ0xBU1MgTlNGb250OworT0JKQ19DTEFTUyBVSUZvbnQ7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworZW51bSBjbGFzcyBTdWJzY3JpcHRPclN1cGVyc2NyaXB0IDogdWludDhfdCB7IE5v
bmUsIFN1YnNjcmlwdCwgU3VwZXJzY3JpcHQgfTsKKworc3RydWN0IEZvbnRBdHRyaWJ1dGVzIHsK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEaWN0
aW9uYXJ5PiBjcmVhdGVEaWN0aW9uYXJ5KCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFBMQVRGT1JN
KE1BQykKKyAgICBSZXRhaW5QdHI8TlNGb250PiBmb250OworI2VsaWYgUExBVEZPUk0oSU9TKQor
ICAgIFJldGFpblB0cjxVSUZvbnQ+IGZvbnQ7CisjZW5kaWYKKyAgICBDb2xvciBiYWNrZ3JvdW5k
Q29sb3I7CisgICAgQ29sb3IgZm9yZWdyb3VuZENvbG9yOworICAgIEZvbnRTaGFkb3cgZm9udFNo
YWRvdzsKKyAgICBTdWJzY3JpcHRPclN1cGVyc2NyaXB0IHN1YnNjcmlwdE9yU3VwZXJzY3JpcHQg
eyBTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpOb25lIH07CisgICAgYm9vbCBoYXNVbmRlcmxpbmUg
eyBmYWxzZSB9OworICAgIGJvb2wgaGFzU3RyaWtlVGhyb3VnaCB7IGZhbHNlIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpTdWJzY3JpcHRPclN1
cGVyc2NyaXB0LAorICAgICAgICBXZWJDb3JlOjpTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpOb25l
LAorICAgICAgICBXZWJDb3JlOjpTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpTdWJzY3JpcHQsCisg
ICAgICAgIFdlYkNvcmU6OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1cGVyc2NyaXB0CisgICAg
PjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Gb250U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OTlmODRiNGQxYjk5NWM1NjEzNzc5ZTNlNTAzMTQ1ZWZhOGIzOTUzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250U2hhZG93LmgKQEAg
LTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29s
b3IuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKKyNpZiBQTEFURk9STShDT0NPQSkKK09CSkNfQ0xBU1MgTlNTaGFkb3c7CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRm9udFNoYWRvdyB7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgRm9udFNoYWRvdyYp
OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPE5TU2hhZG93PiBjcmVhdGVT
aGFkb3coKSBjb25zdDsKKyNlbmRpZgorCisgICAgQ29sb3IgY29sb3I7CisgICAgRmxvYXRTaXpl
IG9mZnNldDsKKyAgICBkb3VibGUgYmx1clJhZGl1cyB7IDAgfTsKK307CisKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Cit2b2lkIEZvbnRTaGFkb3c6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgY29sb3IgPDwgb2Zmc2V0IDw8IGJsdXJSYWRpdXM7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citib29sIEZvbnRTaGFkb3c6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBGb250U2hhZG93JiBzaGFkb3cpCit7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzaGFkb3cuY29sb3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHNoYWRvdy5vZmZzZXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5ibHVyUmFkaXVzKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGUzNzcx
YjdjNTQyMzBmOGU0NmMwODcxNzdmYmJmZGZjMjI0YzQzZDcuLjg1MDY1YzhjZTQ2ZmI4Y2IyNDdh
ZDMwNWE5MWQyYmQ1NTE3N2MzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiRWRpdGluZy5oIgogI2lt
cG9ydCAiRWRpdGluZ1N0eWxlLmgiCiAjaW1wb3J0ICJFZGl0b3JDbGllbnQuaCIKKyNpbXBvcnQg
IkZvbnRBdHRyaWJ1dGVzLmgiCiAjaW1wb3J0ICJGb250Q2FzY2FkZS5oIgogI2ltcG9ydCAiRnJh
bWUuaCIKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCkBAIC01OCw4OSArNTksMTAgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIEVkaXRvcjo6Z2V0VGV4dERlY29yYXRpb25BdHRyaWJ1
dGVzUmVzcGVjdGluZ1R5cGluZ1N0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgTlNNdXRh
YmxlRGljdGlvbmFyeSogcmVzdWx0KSBjb25zdAordm9pZCBFZGl0b3I6OnBsYXRmb3JtRm9udEF0
dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4g
dHlwaW5nU3R5bGUgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnR5cGluZ1N0eWxlKCk7Ci0gICAgaWYg
KHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5zdHlsZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxD
U1NWYWx1ZT4gdmFsdWUgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKLSAgICAgICAgaWYg
KHZhbHVlICYmIHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBDU1NWYWx1ZUxp
c3QmIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKTsKLSAgICAgICAg
ICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMaW5lVGhyb3VnaCkucHRyKCkpKQotICAgICAgICAg
ICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSkgZm9yS2V5
Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgICAgICBpZiAodmFs
dWVMaXN0Lmhhc1ZhbHVlKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmll
clZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKS5wdHIoKSkpCi0gICAgICAgICAgICAgICAgW3Jlc3Vs
dCBzZXRPYmplY3Q6QChOU1VuZGVybGluZVN0eWxlU2luZ2xlKSBmb3JLZXk6TlNVbmRlcmxpbmVT
dHlsZUF0dHJpYnV0ZU5hbWVdOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXV0
byBkZWNvcmF0aW9uID0gc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICAgICAg
aWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpCi0gICAgICAgICAg
ICBbcmVzdWx0IHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktleTpOU1N0
cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdOwotICAgICAgICBpZiAoZGVjb3JhdGlvbiAm
IFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpCi0gICAgICAgICAgICBbcmVzdWx0IHNldE9iamVj
dDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktleTpOU1VuZGVybGluZVN0eWxlQXR0cmli
dXRlTmFtZV07Ci0gICAgfQotfQotCi1SZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBFZGl0b3I6OmZv
bnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdAotewotICAgIE5vZGUqIG5vZGVU
b1JlbW92ZTsKLSAgICBhdXRvKiBzdHlsZSA9IHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQoJm1fZnJh
bWUsIG5vZGVUb1JlbW92ZSk7Ci0gICAgaWYgKCFzdHlsZSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBhdHRyaWJ1dGVzID0gYWRvcHRO
UyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKLQotICAgIGlmIChhdXRvIGN0
Rm9udCA9IHN0eWxlLT5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCkpCi0g
ICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDooX19icmlkZ2UgaWQpY3RGb250IGZvcktleTpO
U0ZvbnRBdHRyaWJ1dGVOYW1lXTsKLQotICAgIC8vIEZJWE1FOiBXaHkgd291bGQgd2Ugbm90IHdh
bnQgdG8gcmV0cmlldmUgdGhlc2UgYXR0cmlidXRlcyBvbiBpT1M/Ci0jaWYgUExBVEZPUk0oTUFD
KQotICAgIC8vIEZJWE1FOiBmb3Igbm93LCBhbHdheXMgcmVwb3J0IHRoZSBjb2xvcnMgYWZ0ZXIg
YXBwbHlpbmcgLWFwcGxlLWNvbG9yLWZpbHRlci4gSW4gZnV0dXJlIG5vdCBhbGwgY2xpZW50cwot
ICAgIC8vIG1heSB3YW50IHRoaXMsIHNvIHdlIG1heSBoYXZlIHRvIGFkZCBhIHNldHRpbmcgdG8g
Y29udHJvbCBpdC4gU2VlIGFsc28gZWRpdGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoKS4K
LSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9y
V2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICBpZiAoYmFj
a2dyb3VuZENvbG9yLmlzVmlzaWJsZSgpKQotICAgICAgICBbYXR0cmlidXRlcyBzZXRPYmplY3Q6
bnNDb2xvcihiYWNrZ3JvdW5kQ29sb3IpIGZvcktleTpOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0
ZU5hbWVdOwotCi0gICAgQ29sb3IgZm9yZWdyb3VuZENvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKTsKLSAgICAvLyBGSVhN
RTogaXNCbGFja0NvbG9yIG5vdCBzdWl0YWJsZSBmb3IgZGFyayBtb2RlLgotICAgIGlmIChmb3Jl
Z3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmICFDb2xvcjo6aXNCbGFja0NvbG9yKGZvcmVncm91bmRD
b2xvcikpCi0gICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpuc0NvbG9yKGZvcmVncm91bmRD
b2xvcikgZm9yS2V5Ok5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07Ci0KLSAgICBjb25z
dCBTaGFkb3dEYXRhKiBzaGFkb3dEYXRhID0gc3R5bGUtPnRleHRTaGFkb3coKTsKLSAgICBpZiAo
c2hhZG93RGF0YSkgewotICAgICAgICBSZXRhaW5QdHI8TlNTaGFkb3c+IHBsYXRmb3JtU2hhZG93
ID0gYWRvcHROUyhbW05TU2hhZG93IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFtwbGF0Zm9ybVNo
YWRvdyBzZXRTaGFkb3dPZmZzZXQ6TlNNYWtlU2l6ZShzaGFkb3dEYXRhLT54KCksIHNoYWRvd0Rh
dGEtPnkoKSldOwotICAgICAgICBbcGxhdGZvcm1TaGFkb3cgc2V0U2hhZG93Qmx1clJhZGl1czpz
aGFkb3dEYXRhLT5yYWRpdXMoKV07Ci0gICAgICAgIFtwbGF0Zm9ybVNoYWRvdyBzZXRTaGFkb3dD
b2xvcjpuc0NvbG9yKHNoYWRvd0RhdGEtPmNvbG9yKCkpXTsKLSAgICAgICAgW2F0dHJpYnV0ZXMg
c2V0T2JqZWN0OnBsYXRmb3JtU2hhZG93LmdldCgpIGZvcktleTpOU1NoYWRvd0F0dHJpYnV0ZU5h
bWVdOwotICAgIH0KLQotICAgIGludCBzdXBlcnNjcmlwdEludCA9IDA7Ci0gICAgc3dpdGNoIChz
dHlsZS0+dmVydGljYWxBbGlnbigpKSB7Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGlu
ZToKLSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKLSAgICBjYXNlIFZlcnRpY2FsQWxp
Z246OkJhc2VsaW5lTWlkZGxlOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3RoOgotICAg
IGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4
dEJvdHRvbToKLSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6Ci0gICAgY2FzZSBWZXJ0
aWNhbEFsaWduOjpUb3A6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6
U3ViOgotICAgICAgICBzdXBlcnNjcmlwdEludCA9IC0xOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFZlcnRpY2FsQWxpZ246OlN1cGVyOgotICAgICAgICBzdXBlcnNjcmlwdEludCA9IDE7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoc3VwZXJzY3JpcHRJbnQpCi0gICAgICAgIFth
dHRyaWJ1dGVzIHNldE9iamVjdDpAKHN1cGVyc2NyaXB0SW50KSBmb3JLZXk6TlNTdXBlcnNjcmlw
dEF0dHJpYnV0ZU5hbWVdOwotI2VuZGlmCi0KLSAgICBnZXRUZXh0RGVjb3JhdGlvbkF0dHJpYnV0
ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUoKnN0eWxlLCBhdHRyaWJ1dGVzLmdldCgpKTsKLQotICAg
IGlmIChub2RlVG9SZW1vdmUpCi0gICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKCk7Ci0KLSAg
ICByZXR1cm4gYXR0cmlidXRlczsKKyAgICBpZiAoYXV0byBjdEZvbnQgPSBzdHlsZS5mb250Q2Fz
Y2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCkpCisgICAgICAgIGF0dHJpYnV0ZXMuZm9u
dCA9IChfX2JyaWRnZSBpZCljdEZvbnQ7CiB9CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqYXR0
cmlidXRlZFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
Rm9udEF0dHJpYnV0ZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRm9u
dEF0dHJpYnV0ZXNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTIyYWJiODM0YjI4YzcyZmI3MjkwZDk3
NjA0YTIxOTRjZjY4MzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkZvbnRBdHRyaWJ1dGVzLmgiCisKKyNp
bXBvcnQgIkNvbG9yQ29jb2EuaCIKKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1JldGFpblB0cjxOU0RpY3Rpb25hcnk+IEZvbnRBdHRyaWJ1dGVz
OjpjcmVhdGVEaWN0aW9uYXJ5KCkgY29uc3QKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICph
dHRyaWJ1dGVzID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CisgICAgaWYgKGZv
bnQpCisgICAgICAgIGF0dHJpYnV0ZXNbTlNGb250QXR0cmlidXRlTmFtZV0gPSBmb250LmdldCgp
OworCisgICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIGF0dHJpYnV0
ZXNbTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lXSA9IHBsYXRmb3JtQ29sb3IoZm9yZWdy
b3VuZENvbG9yKTsKKworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAg
ICBhdHRyaWJ1dGVzW05TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV0gPSBwbGF0Zm9ybUNv
bG9yKGJhY2tncm91bmRDb2xvcik7CisKKyAgICBpZiAoZm9udFNoYWRvdy5jb2xvci5pc1ZhbGlk
KCkgJiYgKCFmb250U2hhZG93Lm9mZnNldC5pc0VtcHR5KCkgfHwgZm9udFNoYWRvdy5ibHVyUmFk
aXVzKSkgeworICAgICAgICBhdXRvIHNoYWRvdyA9IGZvbnRTaGFkb3cuY3JlYXRlU2hhZG93KCk7
CisgICAgICAgIGF0dHJpYnV0ZXNbTlNTaGFkb3dBdHRyaWJ1dGVOYW1lXSA9IHNoYWRvdy5nZXQo
KTsKKyAgICB9CisKKyAgICBpZiAoc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9PSBTdWJzY3JpcHRP
clN1cGVyc2NyaXB0OjpTdWJzY3JpcHQpCisgICAgICAgIGF0dHJpYnV0ZXNbTlNTdXBlcnNjcmlw
dEF0dHJpYnV0ZU5hbWVdID0gQCgtMSk7CisgICAgZWxzZSBpZiAoc3Vic2NyaXB0T3JTdXBlcnNj
cmlwdCA9PSBTdWJzY3JpcHRPclN1cGVyc2NyaXB0OjpTdXBlcnNjcmlwdCkKKyAgICAgICAgYXR0
cmlidXRlc1tOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gPSBAMTsKKworICAgIGlmIChoYXNV
bmRlcmxpbmUpCisgICAgICAgIGF0dHJpYnV0ZXNbTlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0ZU5h
bWVdID0gQChOU1VuZGVybGluZVN0eWxlU2luZ2xlKTsKKworICAgIGlmIChoYXNTdHJpa2VUaHJv
dWdoKQorICAgICAgICBhdHRyaWJ1dGVzW05TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFt
ZV0gPSBAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpOworCisgICAgcmV0dXJuIGF0dHJpYnV0ZXM7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU0YWZjOWI4YWFhNjE2NmE5
ZmUyYmRmMzAwMTViZjFlNjg5NmQzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRm9udFNoYWRvd0NvY29hLm1tCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkZvbnRTaGFkb3cuaCIKKworI2lt
cG9ydCAiQ29sb3JDb2NvYS5oIgorI2ltcG9ydCAiQ29sb3JNYWMuaCIKKworI2lmIFBMQVRGT1JN
KElPUykKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShXZWJDb3JlLCBVSUtpdCkKK1NP
RlRfTElOS19DTEFTU19GT1JfU09VUkNFKFdlYkNvcmUsIFVJS2l0LCBOU1NoYWRvdykKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JldGFpblB0cjxOU1NoYWRvdz4gRm9udFNoYWRv
dzo6Y3JlYXRlU2hhZG93KCkgY29uc3QKK3sKKyNpZiBVU0UoQVBQS0lUKQorICAgIGF1dG8gc2hh
ZG93ID0gYWRvcHROUyhbTlNTaGFkb3cgbmV3XSk7CisjZWxpZiBQTEFURk9STShJT1MpCisgICAg
YXV0byBzaGFkb3cgPSBhZG9wdE5TKFtnZXRfVUlLaXRfTlNTaGFkb3dDbGFzcygpIG5ld10pOwor
I2VuZGlmCisgICAgW3NoYWRvdyBzZXRTaGFkb3dDb2xvcjpwbGF0Zm9ybUNvbG9yKGNvbG9yKV07
CisgICAgW3NoYWRvdyBzZXRTaGFkb3dPZmZzZXQ6b2Zmc2V0XTsKKyAgICBbc2hhZG93IHNldFNo
YWRvd0JsdXJSYWRpdXM6Ymx1clJhZGl1c107CisgICAgcmV0dXJuIHNoYWRvdzsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGEz
ZGQ2OWVlNmFlYmE5MDgzNTE4OWUzYjI3NjI5ODFlYjczM2I0MjEuLjc2N2VlOGRjMWNlMGQ0NzA3
NWU4OTVlMGM0OTcyMWMxOWIzNTE5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW1wb3J0ICJDYWNoZWRJbWFnZS5oIgogI2ltcG9ydCAiQ2hhcmFjdGVy
RGF0YS5oIgorI2ltcG9ydCAiQ29sb3JDb2NvYS5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIKICNp
bXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJEb2N1bWVudExvYWRlci5oIgpAQCAtMjA1LDcg
KzIwNiw2IEBAIHR5cGVkZWYgTlNVSW50ZWdlciBOU1RleHRUYWJUeXBlOwogQGludGVyZmFjZSBV
SUNvbG9yIDogTlNPYmplY3QKICsgKFVJQ29sb3IgKiljbGVhckNvbG9yOwogLSAoQ0dGbG9hdClh
bHBoYUNvbXBvbmVudDsKLSsgKFVJQ29sb3IgKilfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFn
ZV9jb2xvcldpdGhDR0NvbG9yOihDR0NvbG9yUmVmKWNnQ29sb3I7CiBAZW5kCiAKIEBpbnRlcmZh
Y2UgTlNDb2xvciA6IFVJQ29sb3IKQEAgLTg2MywxNiArODYzLDYgQEAgc3RhdGljIE5TQnVuZGxl
ICpfd2ViS2l0QnVuZGxlKCkKICAgICAgICAgYnVuZGxlID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhQ
YXRoOltfTlNTeXN0ZW1MaWJyYXJ5UGF0aCgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIkZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yayJdXTsKICAgICByZXR1cm4gYnVuZGxlOwog
fQotCi1zdGF0aWMgaW5saW5lIFVJQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENvbG9yIGNvbG9yKQot
ewotICAgIHJldHVybiBbZ2V0VUlDb2xvckNsYXNzKCkgX2Rpc2FtYmlndWF0ZWRfZHVlX3RvX0NJ
SW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9yKV07Ci19Ci0jZWxzZQot
c3RhdGljIGlubGluZSBOU0NvbG9yICpfcGxhdGZvcm1Db2xvcihDb2xvciBjb2xvcikKLXsKLSAg
ICByZXR1cm4gbnNDb2xvcihjb2xvcik7Ci19CiAjZW5kaWYKIAogc3RhdGljIGlubGluZSBOU1No
YWRvdyAqX3NoYWRvd0ZvclNoYWRvd1N0eWxlKE5TU3RyaW5nICpzaGFkb3dTdHlsZSkKQEAgLTEw
MjAsNyArMTAxMCw3IEBAIFBsYXRmb3JtQ29sb3IgKkhUTUxDb252ZXJ0ZXI6Ol9jb2xvckZvckVs
ZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwCiAgICAgQ29sb3IgcmVzdWx0
ID0gX2NhY2hlcy0+Y29sb3JQcm9wZXJ0eVZhbHVlRm9yTm9kZShlbGVtZW50LCBwcm9wZXJ0eUlk
KTsKICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
UGxhdGZvcm1Db2xvciAqcGxhdGZvcm1SZXN1bHQgPSBfcGxhdGZvcm1Db2xvcihyZXN1bHQpOwor
ICAgIFBsYXRmb3JtQ29sb3IgKnBsYXRmb3JtUmVzdWx0ID0gcGxhdGZvcm1Db2xvcihyZXN1bHQp
OwogICAgIGlmIChbW1BsYXRmb3JtQ29sb3JDbGFzcyBjbGVhckNvbG9yXSBpc0VxdWFsOnBsYXRm
b3JtUmVzdWx0XSB8fCAoW3BsYXRmb3JtUmVzdWx0IGFscGhhQ29tcG9uZW50XSA9PSAwLjApKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBwbGF0Zm9ybVJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YjE2NGJjMGJjYjVkYWNlYzViMzA1ODViNDI0MDMxMzViM2NkNmMwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JD
b2NvYS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworT0JK
Q19DTEFTUyBOU0NvbG9yOworT0JKQ19DTEFTUyBVSUNvbG9yOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIENvbG9yOworCisjaWYgVVNFKEFQUEtJVCkKK05TQ29sb3IgKnBsYXRmb3Jt
Q29sb3IoY29uc3QgQ29sb3ImKTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorVUlDb2xv
ciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xvciYpOworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0NvbG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Db2xvckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiNjE0NzkxYmY5ZWY0NjMwYmQwNTU1MWVmMDUx
NGQyNmFjYmViNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Db2xvckNvY29hLm1tCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvbG9yQ29jb2EuaCIKKworI2ltcG9ydCAi
Q29sb3JNYWMuaCIKKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCisjaWYgUExBVEZPUk0o
SU9TKQorI2ltcG9ydCA8cGFsL3NwaS9pb3MvVUlLaXRTUEkuaD4KKworU09GVF9MSU5LX0ZSQU1F
V09SS19GT1JfU09VUkNFKFdlYkNvcmUsIFVJS2l0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VS
Q0UoV2ViQ29yZSwgVUlLaXQsIFVJQ29sb3IpCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisjaWYgVVNFKEFQUEtJVCkKKworTlNDb2xvciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCit7CisgICAgcmV0dXJuIG5zQ29sb3IoY29sb3IpOworfQorCisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKElPUykKKworVUlDb2xvciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCit7CisgICAgcmV0dXJuIFtnZXRfVUlLaXRfVUlDb2xvckNsYXNzKCkgX2Rpc2FtYmln
dWF0ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjpjYWNoZWRDR0NvbG9yKGNvbG9y
KV07Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMu
bW0KaW5kZXggMjYwNDdhYjliOTk2ZGRmNzJkZjM0ZjEyYTEwZjQzNjU1NGQ3MzhiZC4uOGIwZGY1
ZmQwYTQ1MTlmODVmMDdkZTJjMDY3NDVkNjQyZGIwMGZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5tbQpA
QCAtMTM2LDggKzEzNiw4IEBAIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzIGNvbXB1dGVkRm9udEF0dHJp
YnV0ZUNoYW5nZXMoTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIsIGlkCiAKICAgICBOU1NoYWRv
dyAqY29udmVydGVkU2hhZG93ID0gW2NvbnZlcnRlZEF0dHJpYnV0ZXNBIG9iamVjdEZvcktleTpO
U1NoYWRvd0F0dHJpYnV0ZU5hbWVdOwogICAgIGlmIChjb252ZXJ0ZWRTaGFkb3cpIHsKLSAgICAg
ICAgYXV0byBvZmZzZXQgPSBjb252ZXJ0ZWRTaGFkb3cuc2hhZG93T2Zmc2V0OwotICAgICAgICBj
aGFuZ2VzLnNldFNoYWRvdyh7IGNvbG9yRnJvbU5TQ29sb3IoY29udmVydGVkU2hhZG93LnNoYWRv
d0NvbG9yID86IE5TQ29sb3IuYmxhY2tDb2xvciksIG9mZnNldC53aWR0aCwgb2Zmc2V0LmhlaWdo
dCwgY29udmVydGVkU2hhZG93LnNoYWRvd0JsdXJSYWRpdXMgfSk7CisgICAgICAgIEZsb2F0U2l6
ZSBvZmZzZXQgPSB7IHN0YXRpY19jYXN0PGZsb2F0Pihjb252ZXJ0ZWRTaGFkb3cuc2hhZG93T2Zm
c2V0LndpZHRoKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnZlcnRlZFNoYWRvdy5zaGFkb3dPZmZz
ZXQuaGVpZ2h0KSB9OworICAgICAgICBjaGFuZ2VzLnNldFNoYWRvdyh7IGNvbG9yRnJvbU5TQ29s
b3IoY29udmVydGVkU2hhZG93LnNoYWRvd0NvbG9yID86IE5TQ29sb3IuYmxhY2tDb2xvciksIG9m
ZnNldCwgY29udmVydGVkU2hhZG93LnNoYWRvd0JsdXJSYWRpdXMgfSk7CiAgICAgfSBlbHNlIGlm
ICghW2NvbnZlcnRlZEF0dHJpYnV0ZXNCIG9iamVjdEZvcktleTpOU1NoYWRvd0F0dHJpYnV0ZU5h
bWVdKQogICAgICAgICBjaGFuZ2VzLnNldFNoYWRvdyh7IH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggNGQ5NmEzODI0NDViMjk3
YmE4NDIzY2Q4ZDgwYmMyY2MyY2Q3ODc1Yi4uMzllOGIyZDE1NTc3OWM4OWI2Mjk5OWIwZWI0N2M0
ZjBmMDIwZmM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5tbQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lVmlkZW9VdGls
aXRpZXMuaCIKICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KIAogQUxMT1df
VU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDI2NGI4YjBjOTIxMGU0YjI0ZGU4NGNhN2Y0YjkyNzU5
NmExYTljMzIuLmMwZmExNDRmMjExYmEwNjcwZjhiMjY4ZGU1YWYyNDJhZTFkY2JhMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtOTYs
NiArOTYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRm9udC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hhbmdlcy5o
PgorI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
b250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVMb2FkZXIuaD4KQEAgLTUwNTcsNyArNTA1OCw3IEBAIHN0YXRpYyBSZWZQdHI8S2V5Ym9h
cmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKIHsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAieCIK
LSAgICAgICAgYXR0cmlidXRlczpjb3JlRnJhbWUgPyBjb3JlRnJhbWUtPmVkaXRvcigpLmZvbnRB
dHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKS5nZXQoKSA6IG5pbF0pOworICAgICAgICBhdHRy
aWJ1dGVzOmNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNBdFNl
bGVjdGlvblN0YXJ0KCkuY3JlYXRlRGljdGlvbmFyeSgpLmdldCgpIDogbmlsXSk7CiAgICAgcmV0
dXJuIFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dOwogfQogCkBAIC01NzA0LDcgKzU3MDUsNyBAQCBzdGF0
aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAgICBpZiAoRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKICAgICAgICAgaWYgKGNvbnN0
IEZvbnQqIGZkID0gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250Rm9yU2VsZWN0aW9uKG11bHRpcGxl
Rm9udHMpKQogICAgICAgICAgICAgZm9udCA9IChOU0ZvbnQgKilmZC0+cGxhdGZvcm1EYXRhKCku
cmVnaXN0ZXJlZEZvbnQoKTsKLSAgICAgICAgYXR0cmlidXRlcyA9IGNvcmVGcmFtZS0+ZWRpdG9y
KCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpOworICAgICAgICBhdHRyaWJ1dGVz
ID0gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKS5j
cmVhdGVEaWN0aW9uYXJ5KCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IGZvciBub3csIHJldHVy
biBhIGJvZ3VzIGZvbnQgdGhhdCBkaXN0aW5ndWlzaGVzIHRoZSBlbXB0eSBzZWxlY3Rpb24gZnJv
bSB0aGUgbm9uLWVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggZmYxNTEyZmYwZjhjNWUzYjk1MzVkZTk1ZjYyN2MyNzcxMTkwYzJhNC4uNDY3YzBl
M2RjYmI4MWEwM2VkNmU0YWJlYmZlODI5NmExNjc4Mzc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTQ0LDYgKzE0NCw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Gb250
QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KQEAgLTg2MjMs
OSArODYyNCw4IEBAIEZPUldBUkQodG9nZ2xlVW5kZXJsaW5lKQogCiAtIChOU0RpY3Rpb25hcnkg
Kil0eXBpbmdBdHRyaWJ1dGVzCiB7Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYg
X3NlbGVjdGVkT3JNYWluRnJhbWVdKTsKLSAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICByZXR1
cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCku
YXV0b3JlbGVhc2UoKTsKKyAgICBpZiAoYXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBfc2Vs
ZWN0ZWRPck1haW5GcmFtZV0pKQorICAgICAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5m
b250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKS5jcmVhdGVEaWN0aW9uYXJ5KCkuYXV0b3Jl
bGVhc2UoKTsKICAgICAKICAgICByZXR1cm4gbmlsOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350692</attachid>
            <date>2018-09-24 14:48:11 -0700</date>
            <delta_ts>2018-09-24 14:49:52 -0700</delta_ts>
            <desc>Patch for EWS #2</desc>
            <filename>bug-189918-20180924144810.patch</filename>
            <type>text/plain</type>
            <size>52418</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjBkZTU4ZGIyNjI0NjJl
OTg4N2Q4MzI0MWI0NjllMjE1YTEwZDY3MS4uMDgzZmE3OGE2MzA5ZGNkNjkwNjc0NWQ2NDNjMzk3
ZGU0MGZiNmEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE4LTA5LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEVk
aXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBiZSBwbGF0Zm9ybS1hZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vNDQ2NDg3MDU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBSZWZhY3RvcnMgdGhlIGZ1
bmN0aW9uYWxpdHkgaW4gRWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0IHRv
IG5vdCBiZSBDb2NvYS1vbmx5LiBSZW5hbWUgdGhpcyB0bworICAgICAgICBmb250QXR0cmlidXRl
c0F0U2VsZWN0aW9uU3RhcnQgKHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBgRWRpdGluZ1N0eWxlOjpz
dHlsZUF0U2VsZWN0aW9uU3RhcnRgKSBhbmQgbW92ZSBpdCBmcm9tCisgICAgICAgIEVkaXRvckNv
Y29hLm1tIHRvIEVkaXRvci5jcHA7IGluc3RlYWQgb2YgY3JlYXRpbmcgYW5kIHBvcHVsYXRpbmcg
YW4gTlNEaWN0aW9uYXJ5IHdpdGggZm9udCBhdHRyaWJ1dGUKKyAgICAgICAgaW5mb3JtYXRpb24s
IGNyZWF0ZSBhbmQgcG9wdWxhdGUgYSBuZXcgYEZvbnRBdHRyaWJ1dGVzYCBzdHJ1Y3QgdGhhdCBj
b250YWlucyB0aGUgc2FtZSBpbmZvcm1hdGlvbi4gQ29jb2EgY2xpZW50cworICAgICAgICBpbiBX
ZWJLaXRMZWdhY3kgbWF5IHRoZW4gY3JlYXRlIGFuIGBOU0RpY3Rpb25hcnlgIGFzIG5lZWRlZCBm
cm9tIHRoZSBgRm9udEF0dHJpYnV0ZXNgLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwbGF0Zm9ybUZv
bnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaG9v
ayB0byBhbGxvdyBwbGF0Zm9ybXMgdG8gc3VwcGx5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4g
Rm9udEF0dHJpYnV0ZXMuIE9uIENvY29hLCB0aGlzIGFkZHMgYSBVSUZvbnQKKyAgICAgICAgb3Ig
TlNGb250IHRvIEZvbnRBdHRyaWJ1dGVzOyBvdGhlcndpc2UsIHRoaXMgaXMgYSBuby1vcC4KKwor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQg
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9G
b250QXR0cmlidXRlQ2hhbmdlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NWYWx1ZUxpc3RG
b3JTaGFkb3cpOgorICAgICAgICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDoKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93OjplbmNvZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6ZGVjb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmg6IEFkZGVkLgorCisg
ICAgICAgIEludHJvZHVjZSBhIG5ldyBzdHJ1Y3QgdGhhdCBjb250YWlucyBmb250IGF0dHJpYnV0
ZSBpbmZvcm1hdGlvbi4gTWF5IGJlIGNvbnZlcnRlZCBpbnRvIGFuIE5TRGljdGlvbmFyeSBmb3Ig
dXNlCisgICAgICAgIGJ5IENvY29hIGNsaWVudHMgaW4gV2ViS2l0TGVnYWN5IGFuZCBXZWJLaXQu
IEluIGEgZnV0dXJlIHBhdGNoLCB0aGlzIHdpbGwgYmVjb21lIHNlcmlhbGl6YWJsZSBvdmVyIElQ
QyBmb3IgdXNlCisgICAgICAgIGluIFdlYktpdDIuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRT
aGFkb3cuaDogQWRkZWQuCisKKyAgICAgICAgTW92ZSBGb250U2hhZG93IG91dCBpbnRvIGEgc2Vw
YXJhdGUgaGVhZGVyIGZpbGUsIGluY2x1ZGVkIGluIGBGb250QXR0cmlidXRlQ2hhbmdlcy5oYCBh
bmQgYEZvbnRBdHRyaWJ1dGVzLmhgLgorCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93Ojpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6ZGVjb2RlKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorCisgICAgICAgIEFkZCBhIGhl
bHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgV2ViQ29yZTo6Q29sb3IgdG8gZWl0aGVyIGBVSUNv
bG9yYCBvbiBpT1Mgb3IgYE5TQ29sb3JgIHdoZW4gQXBwS2l0IGlzIGJlaW5nCisgICAgICAgIHVz
ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRUZXh0
RGVjb3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUgY29uc3QpOiBEZWxldGVk
LgorCisgICAgICAgIFJlbW92ZSBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHdhcyBvbmx5IHVzZWQg
dG8gY29tcHV0ZSB0ZXh0IGRlY29yYXRpb24gYXR0cmlidXRlcyBpbgorICAgICAgICBmb250QXR0
cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0LgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZv
bnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFyeSBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFNoYWRvdzo6Y3JlYXRlU2hhZG93IGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChfd2ViS2l0QnVuZGxlKToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9jb2xvckZvckVsZW1lbnQpOgorICAgICAgICAoX3BsYXRmb3Jt
Q29sb3IpOiBEZWxldGVkLgorCisgICAgICAgIEFkb3B0IHBsYXRmb3JtQ29sb3IoKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tOgorCisgICAgICAgIEJ1aWxk
IGZpeCBkdWUgdG8gY2hhbmdlcyBpbiB1bmlmaWVkIHNvdXJjZXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW06CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tOgorCisgICAgICAgIE1vcmUgYnVpbGQgZml4ZXMgZHVlIHRvIGNoYW5nZXMgaW4gdW5p
ZmllZCBzb3VyY2VzLgorCiAyMDE4LTA5LTI0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBTZXBhcmF0ZSBNYWMgYW5kIGlPUyBpbXBsZW1lbnRhdGlvbiBvZiB3
aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGNhZTFiMGYw
M2IxZGYwZDEzZDBhM2Q2NTAyYzg0OWZhNzRhZTdmYWYuLjkzODg5Nzc4OGYwYTkwZDg4MWY0Y2Yz
ZGZiMzU5NTJlZjE5NDE2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDE4LTA5LTI0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlZmFjdG9yIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBi
ZSBwbGF0Zm9ybS1hZ25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg5OTE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwYWwvc3BpL2lvcy9VSUtpdFNQSS5oOgorCisyMDE4LTA5LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEVk
aXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBiZSBwbGF0Zm9ybS1hZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vNDQ2NDg3MDU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBBZGQgYCtfZGlzYW1iaWd1
YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmAgYXMgYSBVSUNvbG9yIFNQSSBk
ZWZpbml0aW9uLiBBbHNvLCBpbXBvcnQKKyAgICAgICAgYFVJQ29sb3JfUHJpdmF0ZS5oYCBkaXJl
Y3RseSB3aGVuIHRoZSBBcHBsZSBpbnRlcm5hbCBTREsgaXMgdXNlZC4KKworICAgICAgICAqIHBh
bC9zcGkvaW9zL1VJS2l0U1BJLmg6CisKIDIwMTgtMDktMjEgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBTaWVycmEgQnVpbGQgRml4OyBlbnN1
cmUgQVZWaWRlb1BlcmZvcm1hbmNlTWV0cmljcyBhcmUgZGVmaW5lZCBvbiBTaWVycmEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMjhkYThlOGU5ZTE0YTJiMmYyMGEyZjdkMTlkMDA5
OTQ1NWYwOGI2ZS4uNjFkM2E2ZDExZmY2ZThlNDJiODQxZDQ5ZGNmM2ZlYWU1NDY0YzI3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA5LTI0ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9y
IEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBiZSBwbGF0Zm9ybS1h
Z25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg5OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vNDQ2NDg3MDU+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBSZXBsYWNlIGNhbGwg
c2l0ZXMgb2YgZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIHRvIGZvbnRBdHRyaWJ1
dGVzQXRTZWxlY3Rpb25TdGFydCgpLmNyZWF0ZURpY3Rpb25hcnkoKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9zZWxlY3Rpb25T
dGFydEZvbnRBdHRyaWJ1dGVzQXNSVEZdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3VwZGF0
ZUZvbnRQYW5lbF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V2ViVmlldyB0eXBpbmdBdHRyaWJ1dGVzXSk6CisKIDIwMTgtMDktMTcgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBPcGFxdWVKU1N0cmluZyByYXRoZXIgdGhh
biBKU1JldGFpblB0ciBpbnNpZGUgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lv
cy9VSUtpdFNQSS5oCmluZGV4IDIxMmQ0NjI4MDZkNjZlOTc0ZmU1ZDhiOTk0YzcwNjY0OTM5YWI1
YjkuLjlkYjdmNTdiOTI2ZDcxNDJiYmEyZjlkMzVmZTEzNGJlZWZhZWMwMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb25TY2VuZUNvbnN0YW50cy5oPgogI2ltcG9ydCA8VUlL
aXQvVUlBcHBsaWNhdGlvbl9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtpdC9VSUNvbG9yX1ByaXZh
dGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJSW50ZXJmYWNlX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJ
S2l0L1VJU2NyZWVuX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJf
UHJpdmF0ZS5oPgpAQCAtNzQsNiArNzUsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBV
SUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZSkgewogKyAoVUlDb2xvciAqKXN5c3RlbVJlZENv
bG9yOwogKyAoVUlDb2xvciAqKXN5c3RlbVllbGxvd0NvbG9yOwogCisrIChVSUNvbG9yICopX2Rp
c2FtYmlndWF0ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xvcjooQ0dDb2xvclJlZilj
Z0NvbG9yOworCiBAZW5kCiAKIEBpbnRlcmZhY2UgVUlTY3JlZW4gKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDYyYmZkOGQ4YzIwN2EwOTQ5ODkzZTVjNDU4YWJjZTcwN2JjZmY2N2YuLmQ3
YzBhYzdiM2RiYTkwMjkzYzYyNWE3ZDA3ZGQzZTVmN2MyOTk1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtNzksNiArNzksOCBAQCBlZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAogZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1t
CiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0KK2VkaXRpbmcvY29j
b2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbQorZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2Eu
bW0KIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBAbm8tdW5pZnkKIGVkaXRpbmcvY29j
b2EvV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5tbQogZWRpdGluZy9j
b2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIubW0KQEAgLTI5Myw2ICsy
OTUsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAogCitwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9D
b2xvckNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHQzRENv
Y29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbQog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTgwM2E0
NTUxMTdmMTk1YmI2ODdmYTlhNzg4OGYxMmE4MWJiNzM0MC4uYjc2MjljMDUxYWFmNTZjMzg3NTQ5
MGI4ODE3ZDgxYjFhNWQ1NjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDg0NSw2ICs0ODQ1LDkgQEAKIAkJRjQ4MjIzMTAx
RTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMwRTFFMzg2OUI4MDA2
NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSAqLzsgfTsKIAkJRjQ4MjIzMTEx
RTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzBGMUUzODY5QjgwMDY2
RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8q
IEFic3RyYWN0UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2Fy
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0
OEQyQTZDMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhEMkE2QTIxNTYyM0I0MDBDNjc1MkIgLyog
Rm9udFNoYWRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUY0OEQyQTdFMjE1NzE4MjYwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4RDJBNzEyMTU2REMw
QTAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ4RDJBQTUyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9y
Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLmggKi87IH07CiAJCUY0OTc4Njg4
MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAv
KiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlGNEJGQjk4NTFFMURERjlCMDA4NjJDMjQgLyogRHVtcEVkaXRpbmdI
aXN0b3J5LmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICov
OyB9OwogCQlGNEJGQjk4NjFFMURERjlCMDA4NjJDMjQgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpz
IGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgz
ODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICovOyB9OwpAQCAt
MTQ1ODksNiArMTQ1OTIsMTIgQEAKIAkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3Ry
YWN0UGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFj
dFBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4Mzg5ODMxRTFE
REYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgbmFtZSA9IER1bXBFZGl0aW5nSGlzdG9yeS5qczsgcGF0aCA9IFNjcmlw
dHMvRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRWRpdGluZ0hpc3RvcnlVdGlsLmpzOyBw
YXRoID0gU2NyaXB0cy9FZGl0aW5nSGlzdG9yeVV0aWwuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0OEQyQTZBMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZvbnRTaGFkb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4
RDJBNzEyMTU2REMwQTAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZvbnRBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0OEQyQTc1
MjE1NkZFNTcwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlc0NvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRm9udEF0dHJpYnV0ZXNDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjQ4RDJBN0EyMTU3MDUxRTAwQzY3NTJCIC8qIEZvbnRTaGFkb3dDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZvbnRTaGFkb3dDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjQ4RDJBQTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29sb3JDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
NDhEMkFBNDIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IENvbG9yQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OTc4
Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFzdGVib2FyZEl0ZW1JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
RTU3RURBMjEzRjNGNUYwMDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250QXR0cmlidXRlQ2hhbmdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRy
YXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTQ3LDYgKzE5OTU2LDggQEAKIAkJCQlDNTIyN0RG
MDFDM0M2REQ3MDBGNUVENTQgLyogRGF0YURldGVjdGlvbi5tbSAqLywKIAkJCQk5QjU1RUVFODFC
M0U4ODk4MDA1MzQyQkMgLyogRWRpdG9yQ29jb2EubW0gKi8sCiAJCQkJRjQyQ0VCNTQyMTQwMzFF
RTAwMkRDQTcyIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0gKi8sCisJCQkJRjQ4RDJB
NzUyMTU2RkU1NzAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzQ29jb2EubW0gKi8sCisJCQkJRjQ4
RDJBN0EyMTU3MDUxRTAwQzY3NTJCIC8qIEZvbnRTaGFkb3dDb2NvYS5tbSAqLywKIAkJCQk3QzNF
NTEwODE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5oICovLAogCQkJCTdDM0U1MTA5
MThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tICovLAogCQkJCUUxODUzNjgxMUY0
RTQ3MjcwMEZFMDkxQiAvKiBXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5n
LmggKi8sCkBAIC0yMDI1MSw2ICsyMDI2Miw4IEBACiAJCQkJMzcyQzAwRDgxMjk2MTlGODAwNUM5
NTc1IC8qIEZpbmRPcHRpb25zLmggKi8sCiAJCQkJRjQ0Mjg1MEIyMTQwNDEyNTAwQ0NEQTIyIC8q
IEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmNwcCAqLywKIAkJCQlGNEU1N0VEQTIxM0YzRjVGMDA0RUE5
OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCAqLywKKwkJCQlGNDhEMkE3MTIxNTZEQzBBMDBD
Njc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCAqLywKKwkJCQlGNDhEMkE2QTIxNTYyM0I0MDBDNjc1
MkIgLyogRm9udFNoYWRvdy5oICovLAogCQkJCUQwNUNFRDI3MEE0MEJCMkMwMEM1QUYzOCAvKiBG
b3JtYXRCbG9ja0NvbW1hbmQuY3BwICovLAogCQkJCUQwNUNFRDI4MEE0MEJCMkMwMEM1QUYzOCAv
KiBGb3JtYXRCbG9ja0NvbW1hbmQuaCAqLywKIAkJCQk5MzMwOURCRTA5OUU2NDkxMDA1NkU1ODEg
LyogRnJhbWVTZWxlY3Rpb24uY3BwICovLApAQCAtMjM5NTUsNiArMjM5NjgsOCBAQAogCQlCNTMy
MEQ2ODEyMkEyNEU5MDAyRDE0NDAgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUY0OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNv
Y29hLmggKi8sCisJCQkJRjQ4RDJBQTQyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EubW0g
Ki8sCiAJCQkJMUMzOTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmNw
cCAqLywKIAkJCQlDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyogRm9udENhY2hlQ29yZVRleHQu
aCAqLywKIAkJCQlCMkFGRkM3ODBEMDBBNUMxMDAzMDA3NEQgLyogRm9udENhc2NhZGVDb2NvYS5t
bSAqLywKQEAgLTI2NDEwLDYgKzI2NDI1LDggQEAKIAkJCQlCNkQ5RDIzMzE0RUFCRDI2MDA5MEQ3
NUUgLyogRm9jdXNFdmVudC5oICovLAogCQkJCUI2RDlEMjcyMTRFQUJGMDMwMDkwRDc1RSAvKiBG
b2N1c0V2ZW50LmlkbCAqLywKIAkJCQlBODUzMTIzQzExRDA0NzFCMDBENEQwNzcgLyogRnJhZ21l
bnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggKi8sCisJCQkJOUJBQUM0NTgyMTUxRTc3QTAwM0Q0QTk4
IC8qIEdDUmVhY2hhYmxlUmVmLmNwcCAqLywKKwkJCQk5QkFBQzQ1NjIxNTFFMzlFMDAzRDRBOTgg
LyogR0NSZWFjaGFibGVSZWYuaCAqLywKIAkJCQkwNzIwQjA5RTE0RDMzMjM1MDA2NDI5NTUgLyog
R2VuZXJpY0V2ZW50UXVldWUuY3BwICovLAogCQkJCTA3MjBCMDlGMTREMzMyMzUwMDY0Mjk1NSAv
KiBHZW5lcmljRXZlbnRRdWV1ZS5oICovLAogCQkJCTdDNDE4OUFCMUIwN0MxNzAwMDBGQTc1NyAv
KiBHbG9iYWxFdmVudEhhbmRsZXJzLmlkbCAqLywKQEAgLTI2NjAwLDggKzI2NjE3LDYgQEAKIAkJ
CQk4MTAyQzU4NzEzMjVCQjExMDBEREU2N0EgLyogU3RyaW5nQ2FsbGJhY2suY3BwICovLAogCQkJ
CTgxQUM2QzM1MTMxQzU3RDMwMDA5QTdFMCAvKiBTdHJpbmdDYWxsYmFjay5oICovLAogCQkJCTgx
QUM2QzM0MTMxQzU3QzIwMDA5QTdFMCAvKiBTdHJpbmdDYWxsYmFjay5pZGwgKi8sCi0JCQkJOUJB
QUM0NTgyMTUxRTc3QTAwM0Q0QTk4IC8qIEdDUmVhY2hhYmxlUmVmLmNwcCAqLywKLQkJCQk5QkFB
QzQ1NjIxNTFFMzlFMDAzRDRBOTggLyogR0NSZWFjaGFibGVSZWYuaCAqLywKIAkJCQlBOEM0QTdF
QzA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAgKi8sCiAJCQkJQThDNEE3RUIw
OUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAqLywKIAkJCQlDOTkwNTgxMjFFMzJC
NzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8sCkBAIC0yNzQ3Niw2ICsyNzQ5MSw3IEBACiAJ
CQkJQjI3NTM1NjcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMzMwQTIyMzEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JDaG9vc2VyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGNDhEMkFBNTIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwM0I3REYxREIwMTU2NzAwOEJCODkwIC8qIENvbG9y
SGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjQxMjUxRjEyRDAwM0VGMjY5IC8qIENv
bG9ySW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZB
MzcgLyogQ29sb3JNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMjgwNzQsNiArMjgwOTAsNyBAQAog
CQkJCUIyQzNEQTY1MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUMyRDg5RDFCMUUyOTFGMDBENTJFODcgLyogRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUY0RTU3RURDMjEzRjNGNUYwMDRFQTk4RSAvKiBGb250QXR0
cmlidXRlQ2hhbmdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ4RDJBN0UyMTU3MTgyNjAwQzY3
NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5MkQ0RjEyOTM1
NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2
MzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjQ1
OEU2MzFGRTg5N0IwMDA1OTQ3NTkgLyogRm9udENhY2hlQ29yZVRleHQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjgwOTAsNiArMjgxMDcsNyBAQAogCQkJCUMyQUIwQUY3MUU2QjNDNkMwMDEzNDhDNSAv
KiBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2QjBE
MDA2Q0Q2MDBFRjZGMjYgLyogRm9udFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDE5
MDQxRjFDQzY0ODZCMDBDMzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQlGNDhEMkE2QzIxNTYyM0I0MDBDNjc1MkIgLyogRm9udFNoYWRvdy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNEE2RTlGQzgxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZvbnRUYWdnZWRTZXR0aW5n
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIwMTVDMEExQkU2RkVCMjAwODIyMzg5IC8qIEZvbnRW
YXJpYW50QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEwREEyRkYxMjlCMjQxOTAwQUI2
MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODEzMyw2
ICsyODE1MSw3IEBACiAJCQkJOEVDNkM5NjMyMDFBMjUxNjAwRkJGQTUzIC8qIEdhcExlbmd0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NzUwOUFDNEQ4RTAwQTZBQUI0IC8qIEdhcFJlY3Rz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDMyRTg0NzBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5QkFBQzQ1QzIxNTIwMTI4MDAzRDRBOTggLyog
R0NSZWFjaGFibGVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQzA1NENDMTExOEM4RTQwMENF
MjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovLAogCQkJCUJDMjNGMERC
MERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMDQzOCw3ICszMDQ1Nyw2IEBACiAJCQkJRUNBNjgwQzcxRTY3
NzI0NTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI2
QzQxNTMxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCTlCQUFDNDVDMjE1MjAxMjgwMDNENEE5OCAvKiBHQ1JlYWNo
YWJsZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0QjgyMDUxRDZERjBFNTAwNzdFQkUzIC8q
IFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAw
QjI1OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVC
NjdCMEU4MUQzQkUwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDJkNDdkYzdjZWRhMDQwN2M5MzhiN2ZiODU2MTIy
MjM1Nzk3ODI1MzYuLmUzYjQ0MzZiOTYxNTQyZDhiMWZkNzljZmE2ZmJlYTA0MDE3MGQzNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIkZvbnRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgpAQCAtMzg1MSw2
ICszODUyLDgzIEBAIHZvaWQgRWRpdG9yOjpzY2hlZHVsZUVkaXRvclVJVXBkYXRlKCkKICAgICBt
X2VkaXRvclVJVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKKyNpZiAhUExBVEZP
Uk0oQ09DT0EpCisKK3ZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rp
b25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QKK3sKK30K
KworI2VuZGlmCisKK0ZvbnRBdHRyaWJ1dGVzIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNlbGVj
dGlvblN0YXJ0KCkgY29uc3QKK3sKKyAgICBGb250QXR0cmlidXRlcyBhdHRyaWJ1dGVzOworICAg
IE5vZGUqIG5vZGVUb1JlbW92ZSA9IG51bGxwdHI7CisgICAgYXV0byogc3R5bGUgPSBzdHlsZUZv
clNlbGVjdGlvblN0YXJ0KCZtX2ZyYW1lLCBub2RlVG9SZW1vdmUpOworICAgIGlmICghc3R5bGUp
IHsKKyAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkKKyAgICAgICAgICAgIG5vZGVUb1JlbW92ZS0+
cmVtb3ZlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIH0KKworICAgIHBsYXRm
b3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGF0dHJpYnV0ZXMsICpzdHlsZSk7CisK
KyAgICAvLyBGSVhNRTogZm9yIG5vdywgYWx3YXlzIHJlcG9ydCB0aGUgY29sb3JzIGFmdGVyIGFw
cGx5aW5nIC1hcHBsZS1jb2xvci1maWx0ZXIuIEluIGZ1dHVyZSBub3QgYWxsIGNsaWVudHMKKyAg
ICAvLyBtYXkgd2FudCB0aGlzLCBzbyB3ZSBtYXkgaGF2ZSB0byBhZGQgYSBzZXR0aW5nIHRvIGNv
bnRyb2wgaXQuIFNlZSBhbHNvIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKCkuCisg
ICAgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0
aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICBpZiAoYmFja2dy
b3VuZENvbG9yLmlzVmlzaWJsZSgpKQorICAgICAgICBhdHRyaWJ1dGVzLmJhY2tncm91bmRDb2xv
ciA9IGJhY2tncm91bmRDb2xvcjsKKworICAgIGF1dG8gZm9yZWdyb3VuZENvbG9yID0gc3R5bGUt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9yKTsK
KyAgICAvLyBGSVhNRTogaXNCbGFja0NvbG9yIG5vdCBzdWl0YWJsZSBmb3IgZGFyayBtb2RlLgor
ICAgIGlmIChmb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmICFDb2xvcjo6aXNCbGFja0NvbG9y
KGZvcmVncm91bmRDb2xvcikpCisgICAgICAgIGF0dHJpYnV0ZXMuZm9yZWdyb3VuZENvbG9yID0g
Zm9yZWdyb3VuZENvbG9yOworCisgICAgaWYgKGF1dG8qIHNoYWRvd0RhdGEgPSBzdHlsZS0+dGV4
dFNoYWRvdygpKQorICAgICAgICBhdHRyaWJ1dGVzLmZvbnRTaGFkb3cgPSB7IHNoYWRvd0RhdGEt
PmNvbG9yKCksIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNoYWRvd0RhdGEtPngoKSksIHN0YXRpY19j
YXN0PGZsb2F0PihzaGFkb3dEYXRhLT55KCkpIH0sIHN0YXRpY19jYXN0PGRvdWJsZT4oc2hhZG93
RGF0YS0+cmFkaXVzKCkpIH07CisKKyAgICBzd2l0Y2ggKHN0eWxlLT52ZXJ0aWNhbEFsaWduKCkp
IHsKKyAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgorICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6Qm90dG9tOgorICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6Cisg
ICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpMZW5ndGg6CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpN
aWRkbGU6CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgorICAgIGNhc2UgVmVy
dGljYWxBbGlnbjo6VGV4dFRvcDoKKyAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpTdWI6CisgICAgICAgIGF0dHJpYnV0
ZXMuc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1YnNj
cmlwdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpTdXBlcjoKKyAg
ICAgICAgYXR0cmlidXRlcy5zdWJzY3JpcHRPclN1cGVyc2NyaXB0ID0gU3Vic2NyaXB0T3JTdXBl
cnNjcmlwdDo6U3VwZXJzY3JpcHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGF1dG8g
dHlwaW5nU3R5bGUgPSBtYWtlUmVmUHRyKG1fZnJhbWUuc2VsZWN0aW9uKCkudHlwaW5nU3R5bGUo
KSk7CisgICAgaWYgKHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5zdHlsZSgpKSB7CisgICAg
ICAgIGF1dG8gdmFsdWUgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKKyAgICAgICAgaWYg
KHZhbHVlICYmIHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1ZUxp
c3QmIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKTsKKyAgICAgICAg
ICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMaW5lVGhyb3VnaCkucHRyKCkpKQorICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZXMuaGFzU3RyaWtlVGhyb3VnaCA9IHRydWU7CisgICAgICAgICAgICBp
ZiAodmFsdWVMaXN0Lmhhc1ZhbHVlKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKS5wdHIoKSkpCisgICAgICAgICAgICAgICAg
YXR0cmlidXRlcy5oYXNVbmRlcmxpbmUgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgYXV0byBkZWNvcmF0aW9uID0gc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0
KCk7CisgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdo
KQorICAgICAgICAgICAgYXR0cmlidXRlcy5oYXNTdHJpa2VUaHJvdWdoID0gdHJ1ZTsKKyAgICAg
ICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKQorICAgICAgICAg
ICAgYXR0cmlidXRlcy5oYXNVbmRlcmxpbmUgPSB0cnVlOworICAgIH0KKworICAgIGlmIChub2Rl
VG9SZW1vdmUpCisgICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKCk7CisKKyAgICByZXR1cm4g
YXR0cmlidXRlczsKK30KKwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKIHZvaWQg
RWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRG
aWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
aW5kZXggMzMyM2EzMzhhMjExMDRiN2Q4NDg1YTJkOWU0MTE3MDhlOTkzMmQwMS4uZGI5NGFmZjZi
NTA4MDBjYzU0NzY1NzdhNDgzZTU0Y2NlMGZmYmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0Q2hlY2tlckNsaWVudDsK
IGNsYXNzIFRleHRFdmVudDsKIAorc3RydWN0IEZvbnRBdHRyaWJ1dGVzOwogc3RydWN0IFBhc3Rl
Ym9hcmRQbGFpblRleHQ7CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBUZXh0Q2hlY2tp
bmdSZXN1bHQ7CkBAIC00NjksMTAgKzQ3MCw5IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IEZvbnQqIGZvbnRGb3JTZWxlY3Rpb24oYm9vbCYgaGFzTXVsdGlwbGVGb250cykg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZUZvclNlbGVjdGlvblN0YXJ0KEZyYW1lKiAsIE5vZGUgKiZub2RlVG9SZW1vdmUpOworICAgIFdF
QkNPUkVfRVhQT1JUIEZvbnRBdHRyaWJ1dGVzIGZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFy
dCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRUZXh0RGVjb3Jh
dGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmLCBO
U011dGFibGVEaWN0aW9uYXJ5KikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCk7
CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmRXaXRoSW1hZ2VBbHRUZXh0
KCk7CiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTU2Miw2ICs1NjIsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmlidXRl
ZFN0cmluZyAqKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgorICAgIHZvaWQgcGxhdGZvcm1Gb250
QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0OwogCiAgICAgdm9pZCBzY2hlZHVsZUVkaXRvclVJVXBkYXRlKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKaW5kZXgg
N2I1NGM0NWU2YmU0ZDZmNGMwYTVlYjJmMzg2ZGRkMDJmM2E5ZDVhOS4uM2ExNTM3NmQ2NGMxY2Mz
NTZmN2I2NzAwNmI1OGZkNjEzODFmNGQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKQEAgLTgxLDEzICs4MSwxMyBAQCBSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gRm9udENoYW5nZXM6OmNyZWF0ZVN0eWxlUHJvcGVydGllcygpIGNv
bnN0CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjc3NWYWx1ZUxpc3RGb3JTaGFkb3co
Y29uc3QgRm9udFNoYWRvdyYgc2hhZG93KQogewotICAgIGlmICghc2hhZG93LndpZHRoICYmICFz
aGFkb3cuaGVpZ2h0ICYmICFzaGFkb3cuYmx1clJhZGl1cykKKyAgICBpZiAoc2hhZG93Lm9mZnNl
dC5pc0VtcHR5KCkgJiYgIXNoYWRvdy5ibHVyUmFkaXVzKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpOwot
ICAgIGF1dG8gd2lkdGggPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhZG93LndpZHRoLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBhdXRvIGhlaWdodCA9IGNzc1ZhbHVlUG9v
bC5jcmVhdGVWYWx1ZShzaGFkb3cuaGVpZ2h0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsK
KyAgICBhdXRvIHdpZHRoID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYWRvdy5vZmZzZXQu
d2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgYXV0byBoZWlnaHQgPSBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhZG93Lm9mZnNldC5oZWlnaHQoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCk7CiAgICAgYXV0byBibHVyUmFkaXVzID0gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHNoYWRvdy5ibHVyUmFkaXVzLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsK
ICAgICBhdXRvIGNvbG9yID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYWRvdy5jb2xvcik7
CiAgICAgbGlzdC0+cHJlcGVuZChDU1NTaGFkb3dWYWx1ZTo6Y3JlYXRlKFdURk1vdmUod2lkdGgp
LCBXVEZNb3ZlKGhlaWdodCksIFdURk1vdmUoYmx1clJhZGl1cyksIHsgfSwgeyB9LCBXVEZNb3Zl
KGNvbG9yKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmli
dXRlQ2hhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdl
cy5oCmluZGV4IGRlN2FlNTNkMzc4MmM0MGY3MTFlNDg0ZjVhZWQyYzUyNWE5ZDYwZGQuLmRjMThk
MDQ5Mjc2NmY1NjU1NTllM2FkOTViMWM2NmFiNWVkNWFiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGb250U2hhZG93LmgiCiAj
aW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNjksMTYgKzcwLDYgQEAgcHJpdmF0ZToKICAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IG1faXRhbGljOwogfTsKIAotc3RydWN0IEZvbnRTaGFkb3cgewot
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYs
IEZvbnRTaGFkb3cmKTsKLQotICAgIENvbG9yIGNvbG9yOwotICAgIGRvdWJsZSB3aWR0aCB7IDAg
fTsKLSAgICBkb3VibGUgaGVpZ2h0IHsgMCB9OwotICAgIGRvdWJsZSBibHVyUmFkaXVzIHsgMCB9
OwotfTsKLQogY2xhc3MgRm9udEF0dHJpYnV0ZUNoYW5nZXMgewogcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTEzNywz
MCArMTI4LDYgQEAgYm9vbCBGb250Q2hhbmdlczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEZv
bnRDaGFuZ2VzJiBjaGFuZ2VzKQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgotdm9pZCBGb250U2hhZG93OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKLXsKLSAgICBlbmNvZGVyIDw8IGNvbG9yIDw8IHdpZHRoIDw8IGhlaWdodCA8PCBibHVyUmFk
aXVzOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9vbCBGb250U2hhZG93OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgRm9udFNoYWRvdyYgc2hhZG93KQotewotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc2hhZG93LmNvbG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzaGFkb3cud2lkdGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5oZWlnaHQpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5ibHVyUmFkaXVzKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Rm9udEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mYjJkYjRmZjUzY2ExZmY1ZjE0MDRiNzkwYzY1MGEyOGQ2ODdlYjhhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlcy5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkZvbnRTaGFkb3cuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1Mg
TlNEaWN0aW9uYXJ5OworT0JKQ19DTEFTUyBOU0ZvbnQ7CitPQkpDX0NMQVNTIFVJRm9udDsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQg
OiB1aW50OF90IHsgTm9uZSwgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9OworCitzdHJ1Y3QgRm9u
dEF0dHJpYnV0ZXMgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdFQkNPUkVfRVhQT1JUIFJl
dGFpblB0cjxOU0RpY3Rpb25hcnk+IGNyZWF0ZURpY3Rpb25hcnkoKSBjb25zdDsKKyNlbmRpZgor
CisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxOU0ZvbnQ+IGZvbnQ7CisjZWxpZiBQ
TEFURk9STShJT1MpCisgICAgUmV0YWluUHRyPFVJRm9udD4gZm9udDsKKyNlbmRpZgorICAgIENv
bG9yIGJhY2tncm91bmRDb2xvcjsKKyAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3I7CisgICAgRm9u
dFNoYWRvdyBmb250U2hhZG93OworICAgIFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQgc3Vic2NyaXB0
T3JTdXBlcnNjcmlwdCB7IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6Ok5vbmUgfTsKKyAgICBib29s
IGhhc1VuZGVybGluZSB7IGZhbHNlIH07CisgICAgYm9vbCBoYXNTdHJpa2VUaHJvdWdoIHsgZmFs
c2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3Vic2NyaXB0T3JTdXBlcnNj
cmlwdD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6
OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQsCisgICAgICAgIFdlYkNvcmU6OlN1YnNjcmlwdE9yU3Vw
ZXJzY3JpcHQ6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6
OlN1YnNjcmlwdCwKKyAgICAgICAgV2ViQ29yZTo6U3Vic2NyaXB0T3JTdXBlcnNjcmlwdDo6U3Vw
ZXJzY3JpcHQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRm9udFNoYWRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5OWY4NGI0ZDFiOTk1YzU2MTM3NzllM2U1MDMx
NDVlZmE4YjM5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zv
bnRTaGFkb3cuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBOU1NoYWRv
dzsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBGb250U2hhZG93IHsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBGb250U2hhZG93Jik7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8TlNT
aGFkb3c+IGNyZWF0ZVNoYWRvdygpIGNvbnN0OworI2VuZGlmCisKKyAgICBDb2xvciBjb2xvcjsK
KyAgICBGbG9hdFNpemUgb2Zmc2V0OworICAgIGRvdWJsZSBibHVyUmFkaXVzIHsgMCB9OworfTsK
KwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRm9udFNoYWRvdzo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBjb2xvciA8PCBvZmZzZXQgPDwg
Ymx1clJhZGl1czsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgRm9udFNoYWRv
dzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEZvbnRTaGFkb3cmIHNoYWRvdykKK3sKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5jb2xvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93Lm9mZnNldCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93LmJsdXJSYWRpdXMpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2Eu
bW0KaW5kZXggZTM3NzFiN2M1NDIzMGY4ZTQ2YzA4NzE3N2ZiYmZkZmMyMjRjNDNkNy4uODUwNjVj
OGNlNDZmYjhjYjI0N2FkMzA1YTkxZDJiZDU1MTc3YzMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJF
ZGl0aW5nLmgiCiAjaW1wb3J0ICJFZGl0aW5nU3R5bGUuaCIKICNpbXBvcnQgIkVkaXRvckNsaWVu
dC5oIgorI2ltcG9ydCAiRm9udEF0dHJpYnV0ZXMuaCIKICNpbXBvcnQgIkZvbnRDYXNjYWRlLmgi
CiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKQEAgLTU4LDg5ICs1
OSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgRWRpdG9yOjpnZXRUZXh0RGVj
b3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBOU011dGFibGVEaWN0aW9uYXJ5KiByZXN1bHQpIGNvbnN0Cit2b2lkIEVkaXRvcjo6
cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmIGF0
dHJpYnV0ZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKLSAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkudHlwaW5nU3R5
bGUoKTsKLSAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5bGUtPnN0eWxlKCkpIHsKLSAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHR5cGluZ1N0eWxlLT5zdHlsZSgpLT5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Qp
OwotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAg
ICAgIENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqdmFs
dWUpOwotICAgICAgICAgICAgaWYgKHZhbHVlTGlzdC5oYXNWYWx1ZShDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmVUaHJvdWdoKS5wdHIo
KSkpCi0gICAgICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6QChOU1VuZGVybGluZVN0eWxl
U2luZ2xlKSBmb3JLZXk6TlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXTsKLSAgICAg
ICAgICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUpLnB0cigpKSkKLSAgICAgICAg
ICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZvcktl
eTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ug
ewotICAgICAgICBhdXRvIGRlY29yYXRpb24gPSBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCgpOwotICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3Vn
aCkKLSAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmds
ZSkgZm9yS2V5Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgIGlm
IChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKLSAgICAgICAgICAgIFty
ZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSkgZm9yS2V5Ok5TVW5kZXJs
aW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKLSAgICB9Ci19Ci0KLVJldGFpblB0cjxOU0RpY3Rpb25h
cnk+IEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0Ci17Ci0g
ICAgTm9kZSogbm9kZVRvUmVtb3ZlOwotICAgIGF1dG8qIHN0eWxlID0gc3R5bGVGb3JTZWxlY3Rp
b25TdGFydCgmbV9mcmFtZSwgbm9kZVRvUmVtb3ZlKTsKLSAgICBpZiAoIXN0eWxlKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGF0dHJp
YnV0ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwotCi0g
ICAgaWYgKGF1dG8gY3RGb250ID0gc3R5bGUtPmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5n
ZXRDVEZvbnQoKSkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OihfX2JyaWRnZSBpZClj
dEZvbnQgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwotCi0gICAgLy8gRklYTUU6IFdoeSB3
b3VsZCB3ZSBub3Qgd2FudCB0byByZXRyaWV2ZSB0aGVzZSBhdHRyaWJ1dGVzIG9uIGlPUz8KLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgLy8gRklYTUU6IGZvciBub3csIGFsd2F5cyByZXBvcnQgdGhl
IGNvbG9ycyBhZnRlciBhcHBseWluZyAtYXBwbGUtY29sb3ItZmlsdGVyLiBJbiBmdXR1cmUgbm90
IGFsbCBjbGllbnRzCi0gICAgLy8gbWF5IHdhbnQgdGhpcywgc28gd2UgbWF5IGhhdmUgdG8gYWRk
IGEgc2V0dGluZyB0byBjb250cm9sIGl0LiBTZWUgYWxzbyBlZGl0aW5nQXR0cmlidXRlZFN0cmlu
Z0Zyb21SYW5nZSgpLgotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHN0eWxlLT52aXNpdGVk
RGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OwotICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkpCi0gICAgICAgIFthdHRyaWJ1
dGVzIHNldE9iamVjdDpuc0NvbG9yKGJhY2tncm91bmRDb2xvcikgZm9yS2V5Ok5TQmFja2dyb3Vu
ZENvbG9yQXR0cmlidXRlTmFtZV07Ci0KLSAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3IgPSBzdHls
ZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29sb3Ip
OwotICAgIC8vIEZJWE1FOiBpc0JsYWNrQ29sb3Igbm90IHN1aXRhYmxlIGZvciBkYXJrIG1vZGUu
Ci0gICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgIUNvbG9yOjppc0JsYWNrQ29s
b3IoZm9yZWdyb3VuZENvbG9yKSkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0Om5zQ29s
b3IoZm9yZWdyb3VuZENvbG9yKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1l
XTsKLQotICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvd0RhdGEgPSBzdHlsZS0+dGV4dFNoYWRv
dygpOwotICAgIGlmIChzaGFkb3dEYXRhKSB7Ci0gICAgICAgIFJldGFpblB0cjxOU1NoYWRvdz4g
cGxhdGZvcm1TaGFkb3cgPSBhZG9wdE5TKFtbTlNTaGFkb3cgYWxsb2NdIGluaXRdKTsKLSAgICAg
ICAgW3BsYXRmb3JtU2hhZG93IHNldFNoYWRvd09mZnNldDpOU01ha2VTaXplKHNoYWRvd0RhdGEt
PngoKSwgc2hhZG93RGF0YS0+eSgpKV07Ci0gICAgICAgIFtwbGF0Zm9ybVNoYWRvdyBzZXRTaGFk
b3dCbHVyUmFkaXVzOnNoYWRvd0RhdGEtPnJhZGl1cygpXTsKLSAgICAgICAgW3BsYXRmb3JtU2hh
ZG93IHNldFNoYWRvd0NvbG9yOm5zQ29sb3Ioc2hhZG93RGF0YS0+Y29sb3IoKSldOwotICAgICAg
ICBbYXR0cmlidXRlcyBzZXRPYmplY3Q6cGxhdGZvcm1TaGFkb3cuZ2V0KCkgZm9yS2V5Ok5TU2hh
ZG93QXR0cmlidXRlTmFtZV07Ci0gICAgfQotCi0gICAgaW50IHN1cGVyc2NyaXB0SW50ID0gMDsK
LSAgICBzd2l0Y2ggKHN0eWxlLT52ZXJ0aWNhbEFsaWduKCkpIHsKLSAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OkJhc2VsaW5lOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgotICAgIGNh
c2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWdu
OjpMZW5ndGg6Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6Ci0gICAgY2FzZSBWZXJ0
aWNhbEFsaWduOjpUZXh0Qm90dG9tOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dFRvcDoK
LSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpTdWI6Ci0gICAgICAgIHN1cGVyc2NyaXB0SW50ID0gLTE7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6U3VwZXI6Ci0gICAgICAgIHN1cGVyc2Ny
aXB0SW50ID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChzdXBlcnNjcmlwdElu
dCkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OkAoc3VwZXJzY3JpcHRJbnQpIGZvcktl
eTpOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV07Ci0jZW5kaWYKLQotICAgIGdldFRleHREZWNv
cmF0aW9uQXR0cmlidXRlc1Jlc3BlY3RpbmdUeXBpbmdTdHlsZSgqc3R5bGUsIGF0dHJpYnV0ZXMu
Z2V0KCkpOwotCi0gICAgaWYgKG5vZGVUb1JlbW92ZSkKLSAgICAgICAgbm9kZVRvUmVtb3ZlLT5y
ZW1vdmUoKTsKLQotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIGlmIChhdXRvIGN0Rm9udCA9
IHN0eWxlLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5nZXRDVEZvbnQoKSkKKyAgICAgICAg
YXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAogc3RhdGljIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1
dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxMjJhYmI4MzRi
MjhjNzJmYjcyOTBkOTc2MDRhMjE5NGNmNjgzNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KQEAgLTAsMCArMSw2
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRm9udEF0dHJp
YnV0ZXMuaCIKKworI2ltcG9ydCAiQ29sb3JDb2NvYS5oIgorI2ltcG9ydCA8d3RmL1NvZnRMaW5r
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmV0YWluUHRyPE5TRGljdGlvbmFyeT4g
Rm9udEF0dHJpYnV0ZXM6OmNyZWF0ZURpY3Rpb25hcnkoKSBjb25zdAoreworICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5
XTsKKyAgICBpZiAoZm9udCkKKyAgICAgICAgYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVOYW1l
XSA9IGZvbnQuZ2V0KCk7CisKKyAgICBpZiAoZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkKKyAg
ICAgICAgYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdID0gcGxhdGZv
cm1Db2xvcihmb3JlZ3JvdW5kQ29sb3IpOworCisgICAgaWYgKGJhY2tncm91bmRDb2xvci5pc1Zh
bGlkKCkpCisgICAgICAgIGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1l
XSA9IHBsYXRmb3JtQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKKworICAgIGlmIChmb250U2hhZG93
LmNvbG9yLmlzVmFsaWQoKSAmJiAoIWZvbnRTaGFkb3cub2Zmc2V0LmlzRW1wdHkoKSB8fCBmb250
U2hhZG93LmJsdXJSYWRpdXMpKSB7CisgICAgICAgIGF1dG8gc2hhZG93ID0gZm9udFNoYWRvdy5j
cmVhdGVTaGFkb3coKTsKKyAgICAgICAgYXR0cmlidXRlc1tOU1NoYWRvd0F0dHJpYnV0ZU5hbWVd
ID0gc2hhZG93LmdldCgpOworICAgIH0KKworICAgIGlmIChzdWJzY3JpcHRPclN1cGVyc2NyaXB0
ID09IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1YnNjcmlwdCkKKyAgICAgICAgYXR0cmlidXRl
c1tOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gPSBAKC0xKTsKKyAgICBlbHNlIGlmIChzdWJz
Y3JpcHRPclN1cGVyc2NyaXB0ID09IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1cGVyc2NyaXB0
KQorICAgICAgICBhdHRyaWJ1dGVzW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSA9IEAxOwor
CisgICAgaWYgKGhhc1VuZGVybGluZSkKKyAgICAgICAgYXR0cmlidXRlc1tOU1VuZGVybGluZVN0
eWxlQXR0cmlidXRlTmFtZV0gPSBAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpOworCisgICAgaWYg
KGhhc1N0cmlrZVRocm91Z2gpCisgICAgICAgIGF0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdoU3R5
bGVBdHRyaWJ1dGVOYW1lXSA9IEAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSk7CisKKyAgICByZXR1
cm4gYXR0cmlidXRlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTRh
ZmM5YjhhYWE2MTY2YTlmZTJiZGYzMDAxNWJmMWU2ODk2ZDMyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW0KQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRm9udFNo
YWRvdy5oIgorCisjaW1wb3J0ICJDb2xvckNvY29hLmgiCisjaW1wb3J0ICJDb2xvck1hYy5oIgor
CisjaWYgUExBVEZPUk0oSU9TKQorU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFdlYkNv
cmUsIFVJS2l0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgVUlLaXQsIE5T
U2hhZG93KQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmV0YWluUHRyPE5TU2hh
ZG93PiBGb250U2hhZG93OjpjcmVhdGVTaGFkb3coKSBjb25zdAoreworI2lmIFVTRShBUFBLSVQp
CisgICAgYXV0byBzaGFkb3cgPSBhZG9wdE5TKFtOU1NoYWRvdyBuZXddKTsKKyNlbGlmIFBMQVRG
T1JNKElPUykKKyAgICBhdXRvIHNoYWRvdyA9IGFkb3B0TlMoW2dldF9VSUtpdF9OU1NoYWRvd0Ns
YXNzKCkgbmV3XSk7CisjZW5kaWYKKyAgICBbc2hhZG93IHNldFNoYWRvd0NvbG9yOnBsYXRmb3Jt
Q29sb3IoY29sb3IpXTsKKyAgICBbc2hhZG93IHNldFNoYWRvd09mZnNldDpvZmZzZXRdOworICAg
IFtzaGFkb3cgc2V0U2hhZG93Qmx1clJhZGl1czpibHVyUmFkaXVzXTsKKyAgICByZXR1cm4gc2hh
ZG93OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KaW5kZXggYTNkZDY5ZWU2YWViYTkwODM1MTg5ZTNiMjc2Mjk4MWViNzMzYjQyMS4uNzY3
ZWU4ZGMxY2UwZDQ3MDc1ZTg5NWUwYzQ5NzIxYzE5YjM1MTk4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2lt
cG9ydCAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCiAjaW1w
b3J0ICJDaGFyYWN0ZXJEYXRhLmgiCisjaW1wb3J0ICJDb2xvckNvY29hLmgiCiAjaW1wb3J0ICJD
b2xvck1hYy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQgIkRvY3VtZW50TG9hZGVy
LmgiCkBAIC0yMDUsNyArMjA2LDYgQEAgdHlwZWRlZiBOU1VJbnRlZ2VyIE5TVGV4dFRhYlR5cGU7
CiBAaW50ZXJmYWNlIFVJQ29sb3IgOiBOU09iamVjdAogKyAoVUlDb2xvciAqKWNsZWFyQ29sb3I7
CiAtIChDR0Zsb2F0KWFscGhhQ29tcG9uZW50OwotKyAoVUlDb2xvciAqKV9kaXNhbWJpZ3VhdGVk
X2R1ZV90b19DSUltYWdlX2NvbG9yV2l0aENHQ29sb3I6KENHQ29sb3JSZWYpY2dDb2xvcjsKIEBl
bmQKIAogQGludGVyZmFjZSBOU0NvbG9yIDogVUlDb2xvcgpAQCAtODYzLDE2ICs4NjMsNiBAQCBz
dGF0aWMgTlNCdW5kbGUgKl93ZWJLaXRCdW5kbGUoKQogICAgICAgICBidW5kbGUgPSBbTlNCdW5k
bGUgYnVuZGxlV2l0aFBhdGg6W19OU1N5c3RlbUxpYnJhcnlQYXRoKCkgc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiRnJhbWV3b3Jrcy9XZWJLaXQuZnJhbWV3b3JrIl1dOwogICAgIHJl
dHVybiBidW5kbGU7CiB9Ci0KLXN0YXRpYyBpbmxpbmUgVUlDb2xvciAqX3BsYXRmb3JtQ29sb3Io
Q29sb3IgY29sb3IpCi17Ci0gICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xhc3MoKSBfZGlzYW1iaWd1
YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3Ip
XTsKLX0KLSNlbHNlCi1zdGF0aWMgaW5saW5lIE5TQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENvbG9y
IGNvbG9yKQotewotICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKTsKLX0KICNlbmRpZgogCiBzdGF0
aWMgaW5saW5lIE5TU2hhZG93ICpfc2hhZG93Rm9yU2hhZG93U3R5bGUoTlNTdHJpbmcgKnNoYWRv
d1N0eWxlKQpAQCAtMTAyMCw3ICsxMDEwLDcgQEAgUGxhdGZvcm1Db2xvciAqSFRNTENvbnZlcnRl
cjo6X2NvbG9yRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHAKICAg
ICBDb2xvciByZXN1bHQgPSBfY2FjaGVzLT5jb2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKGVsZW1l
bnQsIHByb3BlcnR5SWQpOwogICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBQbGF0Zm9ybUNvbG9yICpwbGF0Zm9ybVJlc3VsdCA9IF9wbGF0Zm9ybUNv
bG9yKHJlc3VsdCk7CisgICAgUGxhdGZvcm1Db2xvciAqcGxhdGZvcm1SZXN1bHQgPSBwbGF0Zm9y
bUNvbG9yKHJlc3VsdCk7CiAgICAgaWYgKFtbUGxhdGZvcm1Db2xvckNsYXNzIGNsZWFyQ29sb3Jd
IGlzRXF1YWw6cGxhdGZvcm1SZXN1bHRdIHx8IChbcGxhdGZvcm1SZXN1bHQgYWxwaGFDb21wb25l
bnRdID09IDAuMCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIHBsYXRmb3JtUmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Q29sb3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29s
b3JDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMTY0YmMwYmNiNWRhY2VjNWIzMDU4NWI0MjQwMzEzNWIz
Y2Q2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Db2xvckNvY29hLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCitPQkpDX0NMQVNTIE5TQ29sb3I7CitPQkpDX0NMQVNTIFVJQ29sb3I7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7CisKKyNpZiBVU0UoQVBQS0lUKQorTlND
b2xvciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xvciYpOworI2VuZGlmCisKKyNpZiBQTEFURk9S
TShJT1MpCitVSUNvbG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJik7CisjZW5kaWYKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI2MTQ3OTFiZjllZjQ2
MzBiZDA1NTUxZWYwNTE0ZDI2YWNiZWI1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KQEAgLTAsMCArMSw1OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ29sb3JDb2NvYS5o
IgorCisjaW1wb3J0ICJDb2xvck1hYy5oIgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisK
KyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgorCitT
T0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgVUlLaXQpCitTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRShXZWJDb3JlLCBVSUtpdCwgVUlDb2xvcikKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQVBQS0lUKQorCitOU0NvbG9yICpwbGF0Zm9ybUNv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gbnNDb2xvcihjb2xvcik7Cit9
CisKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorCitVSUNvbG9yICpwbGF0Zm9ybUNvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gW2dldF9VSUtpdF9VSUNvbG9yQ2xh
c3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hl
ZENHQ29sb3IoY29sb3IpXTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJl
bmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tCmluZGV4IDMzNTY2YWNm
YWU1MzY3ZjMxOTdjNzkzZmZhYWUzNjFkMzliOWQ4NTQuLmI3YWUxOGJmMTY2ZGRhZDE4NTJhODdj
OThiMDE0OGI4MzA0ODA2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21ldGFsL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3JN
ZXRhbC5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiR1BVUmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3IuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPE1ldGFs
L01ldGFsLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0ZvbnRN
YW5hZ2VyRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0Zv
bnRNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IDI2MDQ3YWI5Yjk5NmRkZjcyZGYzNGYxMmExMGY0MzY1
NTRkNzM4YmQuLjlmN2Q3ZGQ5ODJlM2IwODgzNWJlMmI4MzczZWM4YmU1N2UzYzZlNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdlckV4
dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1h
bmFnZXJFeHRyYXMubW0KQEAgLTEzNiw4ICsxMzYsOCBAQCBGb250QXR0cmlidXRlQ2hhbmdlcyBj
b21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2VyLCBp
ZAogCiAgICAgTlNTaGFkb3cgKmNvbnZlcnRlZFNoYWRvdyA9IFtjb252ZXJ0ZWRBdHRyaWJ1dGVz
QSBvYmplY3RGb3JLZXk6TlNTaGFkb3dBdHRyaWJ1dGVOYW1lXTsKICAgICBpZiAoY29udmVydGVk
U2hhZG93KSB7Ci0gICAgICAgIGF1dG8gb2Zmc2V0ID0gY29udmVydGVkU2hhZG93LnNoYWRvd09m
ZnNldDsKLSAgICAgICAgY2hhbmdlcy5zZXRTaGFkb3coeyBjb2xvckZyb21OU0NvbG9yKGNvbnZl
cnRlZFNoYWRvdy5zaGFkb3dDb2xvciA/OiBOU0NvbG9yLmJsYWNrQ29sb3IpLCBvZmZzZXQud2lk
dGgsIG9mZnNldC5oZWlnaHQsIGNvbnZlcnRlZFNoYWRvdy5zaGFkb3dCbHVyUmFkaXVzIH0pOwor
ICAgICAgICBGbG9hdFNpemUgb2Zmc2V0IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnZlcnRlZFNo
YWRvdy5zaGFkb3dPZmZzZXQud2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29udmVydGVkU2hh
ZG93LnNoYWRvd09mZnNldC5oZWlnaHQpIH07CisgICAgICAgIGNoYW5nZXMuc2V0U2hhZG93KHsg
Y29sb3JGcm9tTlNDb2xvcihjb252ZXJ0ZWRTaGFkb3cuc2hhZG93Q29sb3IgPzogTlNDb2xvci5i
bGFja0NvbG9yKSwgb2Zmc2V0LCBjb252ZXJ0ZWRTaGFkb3cuc2hhZG93Qmx1clJhZGl1cyB9KTsK
ICAgICB9IGVsc2UgaWYgKCFbY29udmVydGVkQXR0cmlidXRlc0Igb2JqZWN0Rm9yS2V5Ok5TU2hh
ZG93QXR0cmlidXRlTmFtZV0pCiAgICAgICAgIGNoYW5nZXMuc2V0U2hhZG93KHsgfSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKaW5kZXggZjY2
Y2VhNjM5NDQ2ZmRiZmM0ZTc4Y2M2MzVhNzFmOGIyZDczNWI5OS4uZDc3YWZiMjY2ZmI5NGIwNjlh
YjUyZDgwY2ZjOTc1YzJiMGZlNzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21p
bmdWaWRlb1NvdXJjZUNvY29hLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJSZWFsdGlt
ZUluY29taW5nVmlkZW9Tb3VyY2UuaCIKIAogdXNpbmcgQ01TYW1wbGVCdWZmZXJSZWYgPSBzdHJ1
Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIqOwordXNpbmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYgPSBz
dHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiB1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0gc3Ry
dWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVv
U291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
UmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggMWJiNWZhNjBhZjIxNmMy
MjAxNGJhYzdkMDUxZDUxMDNkMmQ3N2NiMC4uNWYzZDY4MGE0MTQ5MGQ5ZGU3YmVmMWE3ODJkM2Uz
ZDViYWQyOGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3Vy
Y2VDb2NvYS5tbQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lVmlkZW9VdGls
aXRpZXMuaCIKICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KIAogQUxMT1df
VU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDI2NGI4YjBjOTIxMGU0YjI0ZGU4NGNhN2Y0YjkyNzU5
NmExYTljMzIuLmMwZmExNDRmMjExYmEwNjcwZjhiMjY4ZGU1YWYyNDJhZTFkY2JhMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtOTYs
NiArOTYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRm9udC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hhbmdlcy5o
PgorI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
b250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVMb2FkZXIuaD4KQEAgLTUwNTcsNyArNTA1OCw3IEBAIHN0YXRpYyBSZWZQdHI8S2V5Ym9h
cmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKIHsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBhdXRvIHN0cmluZyA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAieCIK
LSAgICAgICAgYXR0cmlidXRlczpjb3JlRnJhbWUgPyBjb3JlRnJhbWUtPmVkaXRvcigpLmZvbnRB
dHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKS5nZXQoKSA6IG5pbF0pOworICAgICAgICBhdHRy
aWJ1dGVzOmNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNBdFNl
bGVjdGlvblN0YXJ0KCkuY3JlYXRlRGljdGlvbmFyeSgpLmdldCgpIDogbmlsXSk7CiAgICAgcmV0
dXJuIFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3RoXSkg
ZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dOwogfQogCkBAIC01NzA0LDcgKzU3MDUsNyBAQCBzdGF0
aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAgICBpZiAoRnJh
bWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKICAgICAgICAgaWYgKGNvbnN0
IEZvbnQqIGZkID0gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250Rm9yU2VsZWN0aW9uKG11bHRpcGxl
Rm9udHMpKQogICAgICAgICAgICAgZm9udCA9IChOU0ZvbnQgKilmZC0+cGxhdGZvcm1EYXRhKCku
cmVnaXN0ZXJlZEZvbnQoKTsKLSAgICAgICAgYXR0cmlidXRlcyA9IGNvcmVGcmFtZS0+ZWRpdG9y
KCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpOworICAgICAgICBhdHRyaWJ1dGVz
ID0gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKS5j
cmVhdGVEaWN0aW9uYXJ5KCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IGZvciBub3csIHJldHVy
biBhIGJvZ3VzIGZvbnQgdGhhdCBkaXN0aW5ndWlzaGVzIHRoZSBlbXB0eSBzZWxlY3Rpb24gZnJv
bSB0aGUgbm9uLWVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggZmYxNTEyZmYwZjhjNWUzYjk1MzVkZTk1ZjYyN2MyNzcxMTkwYzJhNC4uNDY3YzBl
M2RjYmI4MWEwM2VkNmU0YWJlYmZlODI5NmExNjc4Mzc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTQ0LDYgKzE0NCw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Gb250
QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KQEAgLTg2MjMs
OSArODYyNCw4IEBAIEZPUldBUkQodG9nZ2xlVW5kZXJsaW5lKQogCiAtIChOU0RpY3Rpb25hcnkg
Kil0eXBpbmdBdHRyaWJ1dGVzCiB7Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYg
X3NlbGVjdGVkT3JNYWluRnJhbWVdKTsKLSAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICByZXR1
cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0KCku
YXV0b3JlbGVhc2UoKTsKKyAgICBpZiAoYXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBfc2Vs
ZWN0ZWRPck1haW5GcmFtZV0pKQorICAgICAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5m
b250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKS5jcmVhdGVEaWN0aW9uYXJ5KCkuYXV0b3Jl
bGVhc2UoKTsKICAgICAKICAgICByZXR1cm4gbmlsOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350693</attachid>
            <date>2018-09-24 14:49:41 -0700</date>
            <delta_ts>2018-09-24 14:54:07 -0700</delta_ts>
            <desc>Patch for EWS #2.1</desc>
            <filename>bug-189918-20180924144940.patch</filename>
            <type>text/plain</type>
            <size>52148</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjBkZTU4ZGIyNjI0NjJl
OTg4N2Q4MzI0MWI0NjllMjE1YTEwZDY3MS4uMDgzZmE3OGE2MzA5ZGNkNjkwNjc0NWQ2NDNjMzk3
ZGU0MGZiNmEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE4LTA5LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEVk
aXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBiZSBwbGF0Zm9ybS1hZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vNDQ2NDg3MDU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBSZWZhY3RvcnMgdGhlIGZ1
bmN0aW9uYWxpdHkgaW4gRWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0IHRv
IG5vdCBiZSBDb2NvYS1vbmx5LiBSZW5hbWUgdGhpcyB0bworICAgICAgICBmb250QXR0cmlidXRl
c0F0U2VsZWN0aW9uU3RhcnQgKHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBgRWRpdGluZ1N0eWxlOjpz
dHlsZUF0U2VsZWN0aW9uU3RhcnRgKSBhbmQgbW92ZSBpdCBmcm9tCisgICAgICAgIEVkaXRvckNv
Y29hLm1tIHRvIEVkaXRvci5jcHA7IGluc3RlYWQgb2YgY3JlYXRpbmcgYW5kIHBvcHVsYXRpbmcg
YW4gTlNEaWN0aW9uYXJ5IHdpdGggZm9udCBhdHRyaWJ1dGUKKyAgICAgICAgaW5mb3JtYXRpb24s
IGNyZWF0ZSBhbmQgcG9wdWxhdGUgYSBuZXcgYEZvbnRBdHRyaWJ1dGVzYCBzdHJ1Y3QgdGhhdCBj
b250YWlucyB0aGUgc2FtZSBpbmZvcm1hdGlvbi4gQ29jb2EgY2xpZW50cworICAgICAgICBpbiBX
ZWJLaXRMZWdhY3kgbWF5IHRoZW4gY3JlYXRlIGFuIGBOU0RpY3Rpb25hcnlgIGFzIG5lZWRlZCBm
cm9tIHRoZSBgRm9udEF0dHJpYnV0ZXNgLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwbGF0Zm9ybUZv
bnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaG9v
ayB0byBhbGxvdyBwbGF0Zm9ybXMgdG8gc3VwcGx5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4g
Rm9udEF0dHJpYnV0ZXMuIE9uIENvY29hLCB0aGlzIGFkZHMgYSBVSUZvbnQKKyAgICAgICAgb3Ig
TlNGb250IHRvIEZvbnRBdHRyaWJ1dGVzOyBvdGhlcndpc2UsIHRoaXMgaXMgYSBuby1vcC4KKwor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQg
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9G
b250QXR0cmlidXRlQ2hhbmdlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NWYWx1ZUxpc3RG
b3JTaGFkb3cpOgorICAgICAgICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDoKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93OjplbmNvZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6ZGVjb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmg6IEFkZGVkLgorCisg
ICAgICAgIEludHJvZHVjZSBhIG5ldyBzdHJ1Y3QgdGhhdCBjb250YWlucyBmb250IGF0dHJpYnV0
ZSBpbmZvcm1hdGlvbi4gTWF5IGJlIGNvbnZlcnRlZCBpbnRvIGFuIE5TRGljdGlvbmFyeSBmb3Ig
dXNlCisgICAgICAgIGJ5IENvY29hIGNsaWVudHMgaW4gV2ViS2l0TGVnYWN5IGFuZCBXZWJLaXQu
IEluIGEgZnV0dXJlIHBhdGNoLCB0aGlzIHdpbGwgYmVjb21lIHNlcmlhbGl6YWJsZSBvdmVyIElQ
QyBmb3IgdXNlCisgICAgICAgIGluIFdlYktpdDIuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRT
aGFkb3cuaDogQWRkZWQuCisKKyAgICAgICAgTW92ZSBGb250U2hhZG93IG91dCBpbnRvIGEgc2Vw
YXJhdGUgaGVhZGVyIGZpbGUsIGluY2x1ZGVkIGluIGBGb250QXR0cmlidXRlQ2hhbmdlcy5oYCBh
bmQgYEZvbnRBdHRyaWJ1dGVzLmhgLgorCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93Ojpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6ZGVjb2RlKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorCisgICAgICAgIEFkZCBhIGhl
bHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgV2ViQ29yZTo6Q29sb3IgdG8gZWl0aGVyIGBVSUNv
bG9yYCBvbiBpT1Mgb3IgYE5TQ29sb3JgIHdoZW4gQXBwS2l0IGlzIGJlaW5nCisgICAgICAgIHVz
ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRUZXh0
RGVjb3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUgY29uc3QpOiBEZWxldGVk
LgorCisgICAgICAgIFJlbW92ZSBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHdhcyBvbmx5IHVzZWQg
dG8gY29tcHV0ZSB0ZXh0IGRlY29yYXRpb24gYXR0cmlidXRlcyBpbgorICAgICAgICBmb250QXR0
cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0LgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZv
bnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFyeSBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFNoYWRvdzo6Y3JlYXRlU2hhZG93IGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChfd2ViS2l0QnVuZGxlKToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9jb2xvckZvckVsZW1lbnQpOgorICAgICAgICAoX3BsYXRmb3Jt
Q29sb3IpOiBEZWxldGVkLgorCisgICAgICAgIEFkb3B0IHBsYXRmb3JtQ29sb3IoKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tOgorCisgICAgICAgIEJ1aWxk
IGZpeCBkdWUgdG8gY2hhbmdlcyBpbiB1bmlmaWVkIHNvdXJjZXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW06CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tOgorCisgICAgICAgIE1vcmUgYnVpbGQgZml4ZXMgZHVlIHRvIGNoYW5nZXMgaW4gdW5p
ZmllZCBzb3VyY2VzLgorCiAyMDE4LTA5LTI0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBTZXBhcmF0ZSBNYWMgYW5kIGlPUyBpbXBsZW1lbnRhdGlvbiBvZiB3
aW5kb3dzS2V5Q29kZUZvckNoYXJDb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGNhZTFiMGYw
M2IxZGYwZDEzZDBhM2Q2NTAyYzg0OWZhNzRhZTdmYWYuLjVhNDU1NDZmYTU3Y2M2M2M0NTU3NGMw
NzVmZDVlN2IwZTVmMDA5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDE4LTA5LTI0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlZmFjdG9yIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBi
ZSBwbGF0Zm9ybS1hZ25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg5OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0v
NDQ2NDg3MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBB
ZGQgYCtfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmAgYXMg
YSBVSUNvbG9yIFNQSSBkZWZpbml0aW9uLiBBbHNvLCBpbXBvcnQKKyAgICAgICAgYFVJQ29sb3Jf
UHJpdmF0ZS5oYCBkaXJlY3RseSB3aGVuIHRoZSBBcHBsZSBpbnRlcm5hbCBTREsgaXMgdXNlZC4K
KworICAgICAgICAqIHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg6CisKIDIwMTgtMDktMjEgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBTaWVycmEg
QnVpbGQgRml4OyBlbnN1cmUgQVZWaWRlb1BlcmZvcm1hbmNlTWV0cmljcyBhcmUgZGVmaW5lZCBv
biBTaWVycmEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMjhkYThlOGU5ZTE0YTJi
MmYyMGEyZjdkMTlkMDA5OTQ1NWYwOGI2ZS4uNjFkM2E2ZDExZmY2ZThlNDJiODQxZDQ5ZGNmM2Zl
YWU1NDY0YzI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDE4LTA5LTI0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIFJlZmFjdG9yIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0
byBiZSBwbGF0Zm9ybS1hZ25vc3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg5OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2Js
ZW0vNDQ2NDg3MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAg
ICBSZXBsYWNlIGNhbGwgc2l0ZXMgb2YgZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgp
IHRvIGZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpLmNyZWF0ZURpY3Rpb25hcnkoKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF9zZWxlY3Rpb25TdGFydEZvbnRBdHRyaWJ1dGVzQXNSVEZdKToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgX3VwZGF0ZUZvbnRQYW5lbF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5t
bToKKyAgICAgICAgKC1bV2ViVmlldyB0eXBpbmdBdHRyaWJ1dGVzXSk6CisKIDIwMTgtMDktMTcg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBPcGFxdWVKU1N0
cmluZyByYXRoZXIgdGhhbiBKU1JldGFpblB0ciBpbnNpZGUgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDIxMmQ0NjI4MDZkNjZlOTc0ZmU1ZDhi
OTk0YzcwNjY0OTM5YWI1YjkuLjlkYjdmNTdiOTI2ZDcxNDJiYmEyZjlkMzVmZTEzNGJlZWZhZWMw
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpbXBvcnQgPFVJS2l0L1VJQXBwbGljYXRpb25TY2VuZUNvbnN0YW50cy5o
PgogI2ltcG9ydCA8VUlLaXQvVUlBcHBsaWNhdGlvbl9Qcml2YXRlLmg+CisjaW1wb3J0IDxVSUtp
dC9VSUNvbG9yX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJSW50ZXJmYWNlX1ByaXZhdGUu
aD4KICNpbXBvcnQgPFVJS2l0L1VJU2NyZWVuX1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
Vmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgpAQCAtNzQsNiArNzUsOCBAQCB0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZSkgewogKyAoVUlDb2xv
ciAqKXN5c3RlbVJlZENvbG9yOwogKyAoVUlDb2xvciAqKXN5c3RlbVllbGxvd0NvbG9yOwogCisr
IChVSUNvbG9yICopX2Rpc2FtYmlndWF0ZWRfZHVlX3RvX0NJSW1hZ2VfY29sb3JXaXRoQ0dDb2xv
cjooQ0dDb2xvclJlZiljZ0NvbG9yOworCiBAZW5kCiAKIEBpbnRlcmZhY2UgVUlTY3JlZW4gKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDYyYmZkOGQ4YzIwN2EwOTQ5ODkzZTVjNDU4YWJj
ZTcwN2JjZmY2N2YuLmQ3YzBhYzdiM2RiYTkwMjkzYzYyNWE3ZDA3ZGQzZTVmN2MyOTk1YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNzksNiArNzksOCBAQCBlZGl0aW5nL1NtYXJ0UmVw
bGFjZUNGLmNwcAogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCiBlZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCiBlZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2Eu
bW0KK2VkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbQorZWRpdGluZy9jb2NvYS9G
b250U2hhZG93Q29jb2EubW0KIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbSBAbm8tdW5p
ZnkKIGVkaXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmlu
Zy5tbQogZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VXZWJSZXNvdXJjZUhhbmRsZXIu
bW0KQEAgLTI5Myw2ICsyOTUsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hl
V2l0aFRpbWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVHJhbnNmb3JtYXRpb25NYXRyaXhD
Ry5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lzdHJ5LmNwcAogCitwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Db2xvckNvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHQzRENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRDb2NvYS5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTgwM2E0NTUxMTdmMTk1YmI2ODdmYTlhNzg4OGYxMmE4MWJiNzM0MC4uYjc2Mjlj
MDUxYWFmNTZjMzg3NTQ5MGI4ODE3ZDgxYjFhNWQ1NjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDg0NSw2ICs0ODQ1LDkg
QEAKIAkJRjQ4MjIzMTAxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgy
MjMwRTFFMzg2OUI4MDA2NkZDNzkgLyogV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSAqLzsg
fTsKIAkJRjQ4MjIzMTExRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIy
MzBGMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjQ4MjIzMTMxRTM4
NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFi
c3RyYWN0UGFzdGVib2FyZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUY0OEQyQTZDMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhEMkE2QTIxNTYy
M0I0MDBDNjc1MkIgLyogRm9udFNoYWRvdy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUY0OEQyQTdFMjE1NzE4MjYwMEM2NzUyQiAvKiBGb250QXR0
cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ4RDJBNzEyMTU2REMwQTAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ4RDJBQTUyMTU5NzQwRDAw
QzY3NTJCIC8qIENvbG9yQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0OEQyQUEzMjE1OTc0MEQwMEM2NzUyQiAvKiBDb2xvckNvY29hLmggKi87
IH07CiAJCUY0OTc4Njg4MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTc4Njg3MUZG
NDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEJGQjk4NTFFMURERjlCMDA4NjJDMjQg
LyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRp
bmdIaXN0b3J5LmpzICovOyB9OwogCQlGNEJGQjk4NjFFMURERjlCMDA4NjJDMjQgLyogRWRpdGlu
Z0hpc3RvcnlVdGlsLmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGls
LmpzICovOyB9OwpAQCAtMTQ1ODksNiArMTQ1OTIsMTIgQEAKIAkJRjQ4MjIzMTIxRTM4NkUyNDAw
NjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgbmFtZSA9IER1bXBFZGl0aW5nSGlzdG9yeS5q
czsgcGF0aCA9IFNjcmlwdHMvRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlV
dGlsLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRWRpdGluZ0hp
c3RvcnlVdGlsLmpzOyBwYXRoID0gU2NyaXB0cy9FZGl0aW5nSGlzdG9yeVV0aWwuanM7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0OEQyQTZBMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250
U2hhZG93LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTaGFkb3cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjQ4RDJBNzEyMTU2REMwQTAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvbnRBdHRyaWJ1dGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUY0OEQyQTc1MjE1NkZFNTcwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlc0NvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9udEF0dHJpYnV0ZXNDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4RDJBN0EyMTU3MDUxRTAwQzY3NTJCIC8qIEZvbnRTaGFk
b3dDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZvbnRTaGFkb3dDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4RDJBQTMyMTU5NzQwRDAwQzY3NTJCIC8qIENv
bG9yQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNDhEMkFBNDIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbG9yQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0OTc4Njg3MUZGNDVGQTUwMEUwNjBBQiAvKiBQYXN0ZWJvYXJkSXRlbUluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZEl0ZW1JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RTU3RURBMjEzRjNGNUYwMDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hh
bmdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGb250QXR0cmlidXRlQ2hhbmdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEU1N0VERjIxM0Y0MzRBMDA0RUE5OEUgLyogV2ViQ29yZU5T
Rm9udE1hbmFnZXJFeHRyYXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TRm9udE1hbmFnZXJF
eHRyYXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTQ3LDYgKzE5OTU2LDgg
QEAKIAkJCQlDNTIyN0RGMDFDM0M2REQ3MDBGNUVENTQgLyogRGF0YURldGVjdGlvbi5tbSAqLywK
IAkJCQk5QjU1RUVFODFCM0U4ODk4MDA1MzQyQkMgLyogRWRpdG9yQ29jb2EubW0gKi8sCiAJCQkJ
RjQyQ0VCNTQyMTQwMzFFRTAwMkRDQTcyIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzQ29jb2EubW0g
Ki8sCisJCQkJRjQ4RDJBNzUyMTU2RkU1NzAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzQ29jb2Eu
bW0gKi8sCisJCQkJRjQ4RDJBN0EyMTU3MDUxRTAwQzY3NTJCIC8qIEZvbnRTaGFkb3dDb2NvYS5t
bSAqLywKIAkJCQk3QzNFNTEwODE4REY4RjM1MDBDMTEyRjcgLyogSFRNTENvbnZlcnRlci5oICov
LAogCQkJCTdDM0U1MTA5MThERjhGMzUwMEMxMTJGNyAvKiBIVE1MQ29udmVydGVyLm1tICovLAog
CQkJCUUxODUzNjgxMUY0RTQ3MjcwMEZFMDkxQiAvKiBXZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNB
dHRyaWJ1dGVkU3RyaW5nLmggKi8sCkBAIC0yMDI1MSw2ICsyMDI2Miw4IEBACiAJCQkJMzcyQzAw
RDgxMjk2MTlGODAwNUM5NTc1IC8qIEZpbmRPcHRpb25zLmggKi8sCiAJCQkJRjQ0Mjg1MEIyMTQw
NDEyNTAwQ0NEQTIyIC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmNwcCAqLywKIAkJCQlGNEU1N0VE
QTIxM0YzRjVGMDA0RUE5OEUgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCAqLywKKwkJCQlGNDhE
MkE3MTIxNTZEQzBBMDBDNjc1MkIgLyogRm9udEF0dHJpYnV0ZXMuaCAqLywKKwkJCQlGNDhEMkE2
QTIxNTYyM0I0MDBDNjc1MkIgLyogRm9udFNoYWRvdy5oICovLAogCQkJCUQwNUNFRDI3MEE0MEJC
MkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuY3BwICovLAogCQkJCUQwNUNFRDI4MEE0
MEJCMkMwMEM1QUYzOCAvKiBGb3JtYXRCbG9ja0NvbW1hbmQuaCAqLywKIAkJCQk5MzMwOURCRTA5
OUU2NDkxMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwICovLApAQCAtMjM5NTUsNiArMjM5
NjgsOCBAQAogCQlCNTMyMEQ2ODEyMkEyNEU5MDAyRDE0NDAgLyogY29jb2EgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUY0OEQyQUEzMjE1OTc0MEQwMEM2
NzUyQiAvKiBDb2xvckNvY29hLmggKi8sCisJCQkJRjQ4RDJBQTQyMTU5NzQwRDAwQzY3NTJCIC8q
IENvbG9yQ29jb2EubW0gKi8sCiAJCQkJMUMzOTY5Q0YxQjc0MjExRTAwMkJDRkE3IC8qIEZvbnRD
YWNoZUNvcmVUZXh0LmNwcCAqLywKIAkJCQlDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyogRm9u
dENhY2hlQ29yZVRleHQuaCAqLywKIAkJCQlCMkFGRkM3ODBEMDBBNUMxMDAzMDA3NEQgLyogRm9u
dENhc2NhZGVDb2NvYS5tbSAqLywKQEAgLTI2NDEwLDYgKzI2NDI1LDggQEAKIAkJCQlCNkQ5RDIz
MzE0RUFCRDI2MDA5MEQ3NUUgLyogRm9jdXNFdmVudC5oICovLAogCQkJCUI2RDlEMjcyMTRFQUJG
MDMwMDkwRDc1RSAvKiBGb2N1c0V2ZW50LmlkbCAqLywKIAkJCQlBODUzMTIzQzExRDA0NzFCMDBE
NEQwNzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggKi8sCisJCQkJOUJBQUM0NTgy
MTUxRTc3QTAwM0Q0QTk4IC8qIEdDUmVhY2hhYmxlUmVmLmNwcCAqLywKKwkJCQk5QkFBQzQ1NjIx
NTFFMzlFMDAzRDRBOTggLyogR0NSZWFjaGFibGVSZWYuaCAqLywKIAkJCQkwNzIwQjA5RTE0RDMz
MjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwICovLAogCQkJCTA3MjBCMDlGMTRE
MzMyMzUwMDY0Mjk1NSAvKiBHZW5lcmljRXZlbnRRdWV1ZS5oICovLAogCQkJCTdDNDE4OUFCMUIw
N0MxNzAwMDBGQTc1NyAvKiBHbG9iYWxFdmVudEhhbmRsZXJzLmlkbCAqLywKQEAgLTI2NjAwLDgg
KzI2NjE3LDYgQEAKIAkJCQk4MTAyQzU4NzEzMjVCQjExMDBEREU2N0EgLyogU3RyaW5nQ2FsbGJh
Y2suY3BwICovLAogCQkJCTgxQUM2QzM1MTMxQzU3RDMwMDA5QTdFMCAvKiBTdHJpbmdDYWxsYmFj
ay5oICovLAogCQkJCTgxQUM2QzM0MTMxQzU3QzIwMDA5QTdFMCAvKiBTdHJpbmdDYWxsYmFjay5p
ZGwgKi8sCi0JCQkJOUJBQUM0NTgyMTUxRTc3QTAwM0Q0QTk4IC8qIEdDUmVhY2hhYmxlUmVmLmNw
cCAqLywKLQkJCQk5QkFBQzQ1NjIxNTFFMzlFMDAzRDRBOTggLyogR0NSZWFjaGFibGVSZWYuaCAq
LywKIAkJCQlBOEM0QTdFQzA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAgKi8s
CiAJCQkJQThDNEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAqLywKIAkJ
CQlDOTkwNTgxMjFFMzJCNzM0MDA3M0JEREEgLyogU3VjY2Vzc09yLmggKi8sCkBAIC0yNzQ3Niw2
ICsyNzQ5MSw3IEBACiAJCQkJQjI3NTM1NjcwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMzMwQTIyMzEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29sb3JD
aG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDhEMkFBNTIxNTk3NDBEMDBDNjc1
MkIgLyogQ29sb3JDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwM0I3REYxREIwMTU2NzAw
OEJCODkwIC8qIENvbG9ySGFzaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQjQxMjUxRjEy
RDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFREUzQTUw
MDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMjgwNzQs
NiArMjgwOTAsNyBAQAogCQkJCUIyQzNEQTY1MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUMyRDg5RDFCMUUyOTFGMDBENTJFODcgLyogRm9udEFudGlhbGlh
c2luZ1N0YXRlU2F2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RTU3RURDMjEzRjNGNUYwMDRF
QTk4RSAvKiBGb250QXR0cmlidXRlQ2hhbmdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ4RDJB
N0UyMTU3MTgyNjAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0I5MkQ0RjEyOTM1NTBCMDBDODM4N0YgLyogRm9udEJhc2VsaW5lLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkMzREE2MzBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udENhY2hlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDMjQ1OEU2MzFGRTg5N0IwMDA1OTQ3NTkgLyogRm9udENhY2hlQ29yZVRleHQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjgwOTAsNiArMjgxMDcsNyBAQAogCQkJCUMyQUIwQUY3MUU2
QjNDNkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uQWxnb3JpdGhtLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkMzREE2QjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udFNlbGVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDE5MDQxRjFDQzY0ODZCMDBDMzVGNUQgLyogRm9udFNlbGVjdG9yQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDhEMkE2QzIxNTYyM0I0MDBDNjc1MkIgLyogRm9udFNo
YWRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE2RTlGQzgxM0MxN0Q1NzAwNDZBN0Y4IC8qIEZv
bnRUYWdnZWRTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIwMTVDMEExQkU2RkVCMjAw
ODIyMzg5IC8qIEZvbnRWYXJpYW50QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEwREEy
RkYxMjlCMjQxOTAwQUI2MUUxIC8qIEZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODEzMyw2ICsyODE1MSw3IEBACiAJCQkJOEVDNkM5NjMyMDFBMjUxNjAwRkJGQTUz
IC8qIEdhcExlbmd0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NzUwOUFDNEQ4RTAwQTZB
QUI0IC8qIEdhcFJlY3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDMyRTg0NzBDNTE0OTM4MDBC
MTUwMEYgLyogR0NDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5QkFBQzQ1QzIxNTIw
MTI4MDAzRDRBOTggLyogR0NSZWFjaGFibGVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQzA1
NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMjNGMERCMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDQzOCw3ICszMDQ1Nyw2IEBACiAJ
CQkJRUNBNjgwQzcxRTY3NzI0NTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUI2QzQxNTMxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJv
a2VTdHlsZUFwcGxpZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTlCQUFDNDVDMjE1MjAxMjgwMDNE
NEE5OCAvKiBHQ1JlYWNoYWJsZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE0QjgyMDUxRDZE
RjBFNTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1
RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNUVCNjdCMEU4MUQzQkUwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDJkNDdkYzdjZWRhMDQw
N2M5MzhiN2ZiODU2MTIyMjM1Nzk3ODI1MzYuLmUzYjQ0MzZiOTYxNTQyZDhiMWZkNzljZmE2ZmJl
YTA0MDE3MGQzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUg
IkZvY3VzQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZvbnRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJl
ZS5oIgpAQCAtMzg1MSw2ICszODUyLDgzIEBAIHZvaWQgRWRpdG9yOjpzY2hlZHVsZUVkaXRvclVJ
VXBkYXRlKCkKICAgICBtX2VkaXRvclVJVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9
CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK3ZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRy
aWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxl
JikgY29uc3QKK3sKK30KKworI2VuZGlmCisKK0ZvbnRBdHRyaWJ1dGVzIEVkaXRvcjo6Zm9udEF0
dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkgY29uc3QKK3sKKyAgICBGb250QXR0cmlidXRlcyBh
dHRyaWJ1dGVzOworICAgIE5vZGUqIG5vZGVUb1JlbW92ZSA9IG51bGxwdHI7CisgICAgYXV0byog
c3R5bGUgPSBzdHlsZUZvclNlbGVjdGlvblN0YXJ0KCZtX2ZyYW1lLCBub2RlVG9SZW1vdmUpOwor
ICAgIGlmICghc3R5bGUpIHsKKyAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkKKyAgICAgICAgICAg
IG5vZGVUb1JlbW92ZS0+cmVtb3ZlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAg
IH0KKworICAgIHBsYXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGF0dHJpYnV0
ZXMsICpzdHlsZSk7CisKKyAgICAvLyBGSVhNRTogZm9yIG5vdywgYWx3YXlzIHJlcG9ydCB0aGUg
Y29sb3JzIGFmdGVyIGFwcGx5aW5nIC1hcHBsZS1jb2xvci1maWx0ZXIuIEluIGZ1dHVyZSBub3Qg
YWxsIGNsaWVudHMKKyAgICAvLyBtYXkgd2FudCB0aGlzLCBzbyB3ZSBtYXkgaGF2ZSB0byBhZGQg
YSBzZXR0aW5nIHRvIGNvbnRyb2wgaXQuIFNlZSBhbHNvIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5n
RnJvbVJhbmdlKCkuCisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERl
cGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
KyAgICBpZiAoYmFja2dyb3VuZENvbG9yLmlzVmlzaWJsZSgpKQorICAgICAgICBhdHRyaWJ1dGVz
LmJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKKworICAgIGF1dG8gZm9yZWdyb3Vu
ZENvbG9yID0gc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQ
cm9wZXJ0eUNvbG9yKTsKKyAgICAvLyBGSVhNRTogaXNCbGFja0NvbG9yIG5vdCBzdWl0YWJsZSBm
b3IgZGFyayBtb2RlLgorICAgIGlmIChmb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmICFDb2xv
cjo6aXNCbGFja0NvbG9yKGZvcmVncm91bmRDb2xvcikpCisgICAgICAgIGF0dHJpYnV0ZXMuZm9y
ZWdyb3VuZENvbG9yID0gZm9yZWdyb3VuZENvbG9yOworCisgICAgaWYgKGF1dG8qIHNoYWRvd0Rh
dGEgPSBzdHlsZS0+dGV4dFNoYWRvdygpKQorICAgICAgICBhdHRyaWJ1dGVzLmZvbnRTaGFkb3cg
PSB7IHNoYWRvd0RhdGEtPmNvbG9yKCksIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNoYWRvd0RhdGEt
PngoKSksIHN0YXRpY19jYXN0PGZsb2F0PihzaGFkb3dEYXRhLT55KCkpIH0sIHN0YXRpY19jYXN0
PGRvdWJsZT4oc2hhZG93RGF0YS0+cmFkaXVzKCkpIH07CisKKyAgICBzd2l0Y2ggKHN0eWxlLT52
ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgorICAg
IGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgorICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFz
ZWxpbmVNaWRkbGU6CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpMZW5ndGg6CisgICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpNaWRkbGU6CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9t
OgorICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dFRvcDoKKyAgICBjYXNlIFZlcnRpY2FsQWxp
Z246OlRvcDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpTdWI6Cisg
ICAgICAgIGF0dHJpYnV0ZXMuc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9IFN1YnNjcmlwdE9yU3Vw
ZXJzY3JpcHQ6OlN1YnNjcmlwdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWZXJ0aWNhbEFs
aWduOjpTdXBlcjoKKyAgICAgICAgYXR0cmlidXRlcy5zdWJzY3JpcHRPclN1cGVyc2NyaXB0ID0g
U3Vic2NyaXB0T3JTdXBlcnNjcmlwdDo6U3VwZXJzY3JpcHQ7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGF1dG8gdHlwaW5nU3R5bGUgPSBtYWtlUmVmUHRyKG1fZnJhbWUuc2VsZWN0aW9u
KCkudHlwaW5nU3R5bGUoKSk7CisgICAgaWYgKHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5z
dHlsZSgpKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0
KTsKKyAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAg
ICAgICBDU1NWYWx1ZUxpc3QmIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZh
bHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMaW5lVGhyb3VnaCkucHRy
KCkpKQorICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuaGFzU3RyaWtlVGhyb3VnaCA9IHRydWU7
CisgICAgICAgICAgICBpZiAodmFsdWVMaXN0Lmhhc1ZhbHVlKENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKS5wdHIoKSkpCisg
ICAgICAgICAgICAgICAgYXR0cmlidXRlcy5oYXNVbmRlcmxpbmUgPSB0cnVlOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBkZWNvcmF0aW9uID0gc3R5bGUtPnRleHREZWNv
cmF0aW9uc0luRWZmZWN0KCk7CisgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRp
b246OkxpbmVUaHJvdWdoKQorICAgICAgICAgICAgYXR0cmlidXRlcy5oYXNTdHJpa2VUaHJvdWdo
ID0gdHJ1ZTsKKyAgICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJs
aW5lKQorICAgICAgICAgICAgYXR0cmlidXRlcy5oYXNVbmRlcmxpbmUgPSB0cnVlOworICAgIH0K
KworICAgIGlmIChub2RlVG9SZW1vdmUpCisgICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKCk7
CisKKyAgICByZXR1cm4gYXR0cmlidXRlczsKK30KKwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCiAKIHZvaWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKaW5kZXggMzMyM2EzMzhhMjExMDRiN2Q4NDg1YTJkOWU0MTE3MDhlOTkz
MmQwMS4uZGI5NGFmZjZiNTA4MDBjYzU0NzY1NzdhNDgzZTU0Y2NlMGZmYmYxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0
Q2hlY2tlckNsaWVudDsKIGNsYXNzIFRleHRFdmVudDsKIAorc3RydWN0IEZvbnRBdHRyaWJ1dGVz
Owogc3RydWN0IFBhc3RlYm9hcmRQbGFpblRleHQ7CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0
cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CkBAIC00NjksMTAgKzQ3MCw5IEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZvbnQqIGZvbnRGb3JTZWxlY3Rpb24oYm9vbCYgaGFz
TXVsdGlwbGVGb250cykgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZUZvclNlbGVjdGlvblN0YXJ0KEZyYW1lKiAsIE5vZGUgKiZub2RlVG9S
ZW1vdmUpOworICAgIFdFQkNPUkVfRVhQT1JUIEZvbnRBdHRyaWJ1dGVzIGZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9p
ZCBnZXRUZXh0RGVjb3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUoY29uc3Qg
UmVuZGVyU3R5bGUmLCBOU011dGFibGVEaWN0aW9uYXJ5KikgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25T
dGFydCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKCk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmRX
aXRoSW1hZ2VBbHRUZXh0KCk7CiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTU2Miw2ICs1NjIsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9y
bWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YUluUlRGRm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgorICAgIHZv
aWQgcGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMm
LCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwogCiAgICAgdm9pZCBzY2hlZHVsZUVkaXRvclVJ
VXBkYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJp
YnV0ZUNoYW5nZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hh
bmdlcy5jcHAKaW5kZXggN2I1NGM0NWU2YmU0ZDZmNGMwYTVlYjJmMzg2ZGRkMDJmM2E5ZDVhOS4u
M2ExNTM3NmQ2NGMxY2MzNTZmN2I2NzAwNmI1OGZkNjEzODFmNGQ4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKQEAgLTgxLDEzICs4MSwx
MyBAQCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gRm9udENoYW5nZXM6OmNyZWF0ZVN0eWxl
UHJvcGVydGllcygpIGNvbnN0CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjc3NWYWx1
ZUxpc3RGb3JTaGFkb3coY29uc3QgRm9udFNoYWRvdyYgc2hhZG93KQogewotICAgIGlmICghc2hh
ZG93LndpZHRoICYmICFzaGFkb3cuaGVpZ2h0ICYmICFzaGFkb3cuYmx1clJhZGl1cykKKyAgICBp
ZiAoc2hhZG93Lm9mZnNldC5pc0VtcHR5KCkgJiYgIXNoYWRvdy5ibHVyUmFkaXVzKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpOwotICAgIGF1dG8gd2lkdGggPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUo
c2hhZG93LndpZHRoLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBhdXRvIGhlaWdo
dCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzaGFkb3cuaGVpZ2h0LCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKTsKKyAgICBhdXRvIHdpZHRoID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHNoYWRvdy5vZmZzZXQud2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAg
YXV0byBoZWlnaHQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhZG93Lm9mZnNldC5oZWln
aHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiAgICAgYXV0byBibHVyUmFkaXVzID0g
Y3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYWRvdy5ibHVyUmFkaXVzLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYKTsKICAgICBhdXRvIGNvbG9yID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KHNoYWRvdy5jb2xvcik7CiAgICAgbGlzdC0+cHJlcGVuZChDU1NTaGFkb3dWYWx1ZTo6Y3JlYXRl
KFdURk1vdmUod2lkdGgpLCBXVEZNb3ZlKGhlaWdodCksIFdURk1vdmUoYmx1clJhZGl1cyksIHsg
fSwgeyB9LCBXVEZNb3ZlKGNvbG9yKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250
QXR0cmlidXRlQ2hhbmdlcy5oCmluZGV4IGRlN2FlNTNkMzc4MmM0MGY3MTFlNDg0ZjVhZWQyYzUy
NWE5ZDYwZGQuLmRjMThkMDQ5Mjc2NmY1NjU1NTllM2FkOTViMWM2NmFiNWVkNWFiZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJG
b250U2hhZG93LmgiCiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNjksMTYgKzcwLDYgQEAg
cHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faXRhbGljOwogfTsKIAotc3RydWN0
IEZvbnRTaGFkb3cgewotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIEZvbnRTaGFkb3cmKTsKLQotICAgIENvbG9yIGNvbG9yOwotICAgIGRv
dWJsZSB3aWR0aCB7IDAgfTsKLSAgICBkb3VibGUgaGVpZ2h0IHsgMCB9OwotICAgIGRvdWJsZSBi
bHVyUmFkaXVzIHsgMCB9OwotfTsKLQogY2xhc3MgRm9udEF0dHJpYnV0ZUNoYW5nZXMgewogcHVi
bGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKQEAgLTEzNywzMCArMTI4LDYgQEAgYm9vbCBGb250Q2hhbmdlczo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIEZvbnRDaGFuZ2VzJiBjaGFuZ2VzKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBGb250U2hhZG93OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGNvbG9yIDw8IHdpZHRoIDw8IGhl
aWdodCA8PCBibHVyUmFkaXVzOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9vbCBG
b250U2hhZG93OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRm9udFNoYWRvdyYgc2hhZG93KQot
ewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93LmNvbG9yKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaGFkb3cud2lkdGgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5oZWlnaHQp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRv
dy5ibHVyUmFkaXVzKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEZvbnRBdHRyaWJ1dGVDaGFuZ2Vz
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Rm9udEF0dHJpYnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjJkYjRmZjUzY2ExZmY1ZjE0MDRiNzkwYzY1
MGEyOGQ2ODdlYjhhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
b250QXR0cmlidXRlcy5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkZvbnRTaGFkb3cuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworT0JKQ19DTEFTUyBOU0ZvbnQ7CitPQkpDX0NM
QVNTIFVJRm9udDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFN1YnNjcmlw
dE9yU3VwZXJzY3JpcHQgOiB1aW50OF90IHsgTm9uZSwgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9
OworCitzdHJ1Y3QgRm9udEF0dHJpYnV0ZXMgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGNyZWF0ZURpY3Rpb25hcnkoKSBj
b25zdDsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxOU0ZvbnQ+
IGZvbnQ7CisjZWxpZiBQTEFURk9STShJT1MpCisgICAgUmV0YWluUHRyPFVJRm9udD4gZm9udDsK
KyNlbmRpZgorICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKKyAgICBDb2xvciBmb3JlZ3JvdW5k
Q29sb3I7CisgICAgRm9udFNoYWRvdyBmb250U2hhZG93OworICAgIFN1YnNjcmlwdE9yU3VwZXJz
Y3JpcHQgc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCB7IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6Ok5v
bmUgfTsKKyAgICBib29sIGhhc1VuZGVybGluZSB7IGZhbHNlIH07CisgICAgYm9vbCBoYXNTdHJp
a2VUaHJvdWdoIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3Vi
c2NyaXB0T3JTdXBlcnNjcmlwdD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Cisg
ICAgICAgIFdlYkNvcmU6OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQsCisgICAgICAgIFdlYkNvcmU6
OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6OlN1YnNjcmlw
dE9yU3VwZXJzY3JpcHQ6OlN1YnNjcmlwdCwKKyAgICAgICAgV2ViQ29yZTo6U3Vic2NyaXB0T3JT
dXBlcnNjcmlwdDo6U3VwZXJzY3JpcHQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRm9udFNoYWRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5OWY4NGI0ZDFiOTk1
YzU2MTM3NzllM2U1MDMxNDVlZmE4YjM5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5o
IgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JK
Q19DTEFTUyBOU1NoYWRvdzsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVj
dCBGb250U2hhZG93IHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wg
ZGVjb2RlKERlY29kZXImLCBGb250U2hhZG93Jik7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAg
ICBSZXRhaW5QdHI8TlNTaGFkb3c+IGNyZWF0ZVNoYWRvdygpIGNvbnN0OworI2VuZGlmCisKKyAg
ICBDb2xvciBjb2xvcjsKKyAgICBGbG9hdFNpemUgb2Zmc2V0OworICAgIGRvdWJsZSBibHVyUmFk
aXVzIHsgMCB9OworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRm9udFNoYWRv
dzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBjb2xv
ciA8PCBvZmZzZXQgPDwgYmx1clJhZGl1czsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K2Jvb2wgRm9udFNoYWRvdzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEZvbnRTaGFkb3cmIHNo
YWRvdykKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5jb2xvcikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93Lm9mZnNldCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93
LmJsdXJSYWRpdXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRWRpdG9yQ29jb2EubW0KaW5kZXggZTM3NzFiN2M1NDIzMGY4ZTQ2YzA4NzE3N2ZiYmZkZmMy
MjRjNDNkNy4uODUwNjVjOGNlNDZmYjhjYjI0N2FkMzA1YTkxZDJiZDU1MTc3YzMzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC0zNiw2ICszNiw3
IEBACiAjaW1wb3J0ICJFZGl0aW5nLmgiCiAjaW1wb3J0ICJFZGl0aW5nU3R5bGUuaCIKICNpbXBv
cnQgIkVkaXRvckNsaWVudC5oIgorI2ltcG9ydCAiRm9udEF0dHJpYnV0ZXMuaCIKICNpbXBvcnQg
IkZvbnRDYXNjYWRlLmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIu
aCIKQEAgLTU4LDg5ICs1OSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgRWRp
dG9yOjpnZXRUZXh0RGVjb3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUoY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBOU011dGFibGVEaWN0aW9uYXJ5KiByZXN1bHQpIGNvbnN0
Cit2b2lkIEVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9u
dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QK
IHsKLSAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IG1fZnJhbWUuc2VsZWN0
aW9uKCkudHlwaW5nU3R5bGUoKTsKLSAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5bGUt
PnN0eWxlKCkpIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHR5cGluZ1N0eWxl
LT5zdHlsZSgpLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29y
YXRpb25zSW5FZmZlY3QpOwotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUtPmlzVmFsdWVMaXN0
KCkpIHsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8Q1NT
VmFsdWVMaXN0PigqdmFsdWUpOwotICAgICAgICAgICAgaWYgKHZhbHVlTGlzdC5oYXNWYWx1ZShD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxp
bmVUaHJvdWdoKS5wdHIoKSkpCi0gICAgICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6QChO
U1VuZGVybGluZVN0eWxlU2luZ2xlKSBmb3JLZXk6TlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1
dGVOYW1lXTsKLSAgICAgICAgICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUpLnB0
cigpKSkKLSAgICAgICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5
bGVTaW5nbGUpIGZvcktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGRlY29yYXRpb24gPSBzdHlsZS50ZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCgpOwotICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0
aW9uOjpMaW5lVGhyb3VnaCkKLSAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRl
cmxpbmVTdHlsZVNpbmdsZSkgZm9yS2V5Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFt
ZV07Ci0gICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkK
LSAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSkg
Zm9yS2V5Ok5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKLSAgICB9Ci19Ci0KLVJldGFp
blB0cjxOU0RpY3Rpb25hcnk+IEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFy
dCgpIGNvbnN0Ci17Ci0gICAgTm9kZSogbm9kZVRvUmVtb3ZlOwotICAgIGF1dG8qIHN0eWxlID0g
c3R5bGVGb3JTZWxlY3Rpb25TdGFydCgmbV9mcmFtZSwgbm9kZVRvUmVtb3ZlKTsKLSAgICBpZiAo
IXN0eWxlKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IGF0dHJpYnV0ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF0pOwotCi0gICAgaWYgKGF1dG8gY3RGb250ID0gc3R5bGUtPmZvbnRDYXNjYWRlKCku
cHJpbWFyeUZvbnQoKS5nZXRDVEZvbnQoKSkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0
OihfX2JyaWRnZSBpZCljdEZvbnQgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwotCi0gICAg
Ly8gRklYTUU6IFdoeSB3b3VsZCB3ZSBub3Qgd2FudCB0byByZXRyaWV2ZSB0aGVzZSBhdHRyaWJ1
dGVzIG9uIGlPUz8KLSNpZiBQTEFURk9STShNQUMpCi0gICAgLy8gRklYTUU6IGZvciBub3csIGFs
d2F5cyByZXBvcnQgdGhlIGNvbG9ycyBhZnRlciBhcHBseWluZyAtYXBwbGUtY29sb3ItZmlsdGVy
LiBJbiBmdXR1cmUgbm90IGFsbCBjbGllbnRzCi0gICAgLy8gbWF5IHdhbnQgdGhpcywgc28gd2Ug
bWF5IGhhdmUgdG8gYWRkIGEgc2V0dGluZyB0byBjb250cm9sIGl0LiBTZWUgYWxzbyBlZGl0aW5n
QXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSgpLgotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9
IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpOwotICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkpCi0g
ICAgICAgIFthdHRyaWJ1dGVzIHNldE9iamVjdDpuc0NvbG9yKGJhY2tncm91bmRDb2xvcikgZm9y
S2V5Ok5TQmFja2dyb3VuZENvbG9yQXR0cmlidXRlTmFtZV07Ci0KLSAgICBDb2xvciBmb3JlZ3Jv
dW5kQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENT
U1Byb3BlcnR5Q29sb3IpOwotICAgIC8vIEZJWE1FOiBpc0JsYWNrQ29sb3Igbm90IHN1aXRhYmxl
IGZvciBkYXJrIG1vZGUuCi0gICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgIUNv
bG9yOjppc0JsYWNrQ29sb3IoZm9yZWdyb3VuZENvbG9yKSkKLSAgICAgICAgW2F0dHJpYnV0ZXMg
c2V0T2JqZWN0Om5zQ29sb3IoZm9yZWdyb3VuZENvbG9yKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lXTsKLQotICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvd0RhdGEgPSBz
dHlsZS0+dGV4dFNoYWRvdygpOwotICAgIGlmIChzaGFkb3dEYXRhKSB7Ci0gICAgICAgIFJldGFp
blB0cjxOU1NoYWRvdz4gcGxhdGZvcm1TaGFkb3cgPSBhZG9wdE5TKFtbTlNTaGFkb3cgYWxsb2Nd
IGluaXRdKTsKLSAgICAgICAgW3BsYXRmb3JtU2hhZG93IHNldFNoYWRvd09mZnNldDpOU01ha2VT
aXplKHNoYWRvd0RhdGEtPngoKSwgc2hhZG93RGF0YS0+eSgpKV07Ci0gICAgICAgIFtwbGF0Zm9y
bVNoYWRvdyBzZXRTaGFkb3dCbHVyUmFkaXVzOnNoYWRvd0RhdGEtPnJhZGl1cygpXTsKLSAgICAg
ICAgW3BsYXRmb3JtU2hhZG93IHNldFNoYWRvd0NvbG9yOm5zQ29sb3Ioc2hhZG93RGF0YS0+Y29s
b3IoKSldOwotICAgICAgICBbYXR0cmlidXRlcyBzZXRPYmplY3Q6cGxhdGZvcm1TaGFkb3cuZ2V0
KCkgZm9yS2V5Ok5TU2hhZG93QXR0cmlidXRlTmFtZV07Ci0gICAgfQotCi0gICAgaW50IHN1cGVy
c2NyaXB0SW50ID0gMDsKLSAgICBzd2l0Y2ggKHN0eWxlLT52ZXJ0aWNhbEFsaWduKCkpIHsKLSAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6
Qm90dG9tOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6Ci0gICAgY2Fz
ZSBWZXJ0aWNhbEFsaWduOjpMZW5ndGg6Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6
Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgotICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6VGV4dFRvcDoKLSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpTdWI6Ci0gICAgICAgIHN1cGVyc2NyaXB0SW50
ID0gLTE7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6U3VwZXI6Ci0g
ICAgICAgIHN1cGVyc2NyaXB0SW50ID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlm
IChzdXBlcnNjcmlwdEludCkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OkAoc3VwZXJz
Y3JpcHRJbnQpIGZvcktleTpOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV07Ci0jZW5kaWYKLQot
ICAgIGdldFRleHREZWNvcmF0aW9uQXR0cmlidXRlc1Jlc3BlY3RpbmdUeXBpbmdTdHlsZSgqc3R5
bGUsIGF0dHJpYnV0ZXMuZ2V0KCkpOwotCi0gICAgaWYgKG5vZGVUb1JlbW92ZSkKLSAgICAgICAg
bm9kZVRvUmVtb3ZlLT5yZW1vdmUoKTsKLQotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIGlm
IChhdXRvIGN0Rm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5nZXRDVEZv
bnQoKSkKKyAgICAgICAgYXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0K
IAogc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRT
dHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUxMjJhYmI4MzRiMjhjNzJmYjcyOTBkOTc2MDRhMjE5NGNmNjgzNDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2Eu
bW0KQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiRm9udEF0dHJpYnV0ZXMuaCIKKworI2ltcG9ydCAiQ29sb3JDb2NvYS5oIgorI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gRm9udEF0dHJpYnV0ZXM6OmNyZWF0ZURpY3Rpb25hcnkoKSBjb25zdAor
eworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbTlNNdXRhYmxlRGljdGlv
bmFyeSBkaWN0aW9uYXJ5XTsKKyAgICBpZiAoZm9udCkKKyAgICAgICAgYXR0cmlidXRlc1tOU0Zv
bnRBdHRyaWJ1dGVOYW1lXSA9IGZvbnQuZ2V0KCk7CisKKyAgICBpZiAoZm9yZWdyb3VuZENvbG9y
LmlzVmFsaWQoKSkKKyAgICAgICAgYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0
ZU5hbWVdID0gcGxhdGZvcm1Db2xvcihmb3JlZ3JvdW5kQ29sb3IpOworCisgICAgaWYgKGJhY2tn
cm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lXSA9IHBsYXRmb3JtQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKKworICAg
IGlmIChmb250U2hhZG93LmNvbG9yLmlzVmFsaWQoKSAmJiAoIWZvbnRTaGFkb3cub2Zmc2V0Lmlz
RW1wdHkoKSB8fCBmb250U2hhZG93LmJsdXJSYWRpdXMpKSB7CisgICAgICAgIGF1dG8gc2hhZG93
ID0gZm9udFNoYWRvdy5jcmVhdGVTaGFkb3coKTsKKyAgICAgICAgYXR0cmlidXRlc1tOU1NoYWRv
d0F0dHJpYnV0ZU5hbWVdID0gc2hhZG93LmdldCgpOworICAgIH0KKworICAgIGlmIChzdWJzY3Jp
cHRPclN1cGVyc2NyaXB0ID09IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1YnNjcmlwdCkKKyAg
ICAgICAgYXR0cmlidXRlc1tOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gPSBAKC0xKTsKKyAg
ICBlbHNlIGlmIChzdWJzY3JpcHRPclN1cGVyc2NyaXB0ID09IFN1YnNjcmlwdE9yU3VwZXJzY3Jp
cHQ6OlN1cGVyc2NyaXB0KQorICAgICAgICBhdHRyaWJ1dGVzW05TU3VwZXJzY3JpcHRBdHRyaWJ1
dGVOYW1lXSA9IEAxOworCisgICAgaWYgKGhhc1VuZGVybGluZSkKKyAgICAgICAgYXR0cmlidXRl
c1tOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV0gPSBAKE5TVW5kZXJsaW5lU3R5bGVTaW5n
bGUpOworCisgICAgaWYgKGhhc1N0cmlrZVRocm91Z2gpCisgICAgICAgIGF0dHJpYnV0ZXNbTlNT
dHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXSA9IEAoTlNVbmRlcmxpbmVTdHlsZVNpbmds
ZSk7CisKKyAgICByZXR1cm4gYXR0cmlidXRlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iNTRhZmM5YjhhYWE2MTY2YTlmZTJiZGYzMDAxNWJmMWU2ODk2ZDMyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29j
b2EubW0KQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiRm9udFNoYWRvdy5oIgorCisjaW1wb3J0ICJDb2xvckNvY29hLmgiCisjaW1wb3J0
ICJDb2xvck1hYy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorU09GVF9MSU5LX0ZSQU1FV09SS19G
T1JfU09VUkNFKFdlYkNvcmUsIFVJS2l0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgVUlLaXQsIE5TU2hhZG93KQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmV0YWluUHRyPE5TU2hhZG93PiBGb250U2hhZG93OjpjcmVhdGVTaGFkb3coKSBjb25zdAorewor
I2lmIFVTRShBUFBLSVQpCisgICAgYXV0byBzaGFkb3cgPSBhZG9wdE5TKFtOU1NoYWRvdyBuZXdd
KTsKKyNlbGlmIFBMQVRGT1JNKElPUykKKyAgICBhdXRvIHNoYWRvdyA9IGFkb3B0TlMoW2dldF9V
SUtpdF9OU1NoYWRvd0NsYXNzKCkgbmV3XSk7CisjZW5kaWYKKyAgICBbc2hhZG93IHNldFNoYWRv
d0NvbG9yOnBsYXRmb3JtQ29sb3IoY29sb3IpXTsKKyAgICBbc2hhZG93IHNldFNoYWRvd09mZnNl
dDpvZmZzZXRdOworICAgIFtzaGFkb3cgc2V0U2hhZG93Qmx1clJhZGl1czpibHVyUmFkaXVzXTsK
KyAgICByZXR1cm4gc2hhZG93OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggYTNkZDY5ZWU2YWViYTkwODM1MTg5ZTNiMjc2Mjk4
MWViNzMzYjQyMS4uNzY3ZWU4ZGMxY2UwZDQ3MDc1ZTg5NWUwYzQ5NzIxYzE5YjM1MTk4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMzIs
NiArMzIsNyBAQAogI2ltcG9ydCAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbXBvcnQgIkNhY2hl
ZEltYWdlLmgiCiAjaW1wb3J0ICJDaGFyYWN0ZXJEYXRhLmgiCisjaW1wb3J0ICJDb2xvckNvY29h
LmgiCiAjaW1wb3J0ICJDb2xvck1hYy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQg
IkRvY3VtZW50TG9hZGVyLmgiCkBAIC0yMDUsNyArMjA2LDYgQEAgdHlwZWRlZiBOU1VJbnRlZ2Vy
IE5TVGV4dFRhYlR5cGU7CiBAaW50ZXJmYWNlIFVJQ29sb3IgOiBOU09iamVjdAogKyAoVUlDb2xv
ciAqKWNsZWFyQ29sb3I7CiAtIChDR0Zsb2F0KWFscGhhQ29tcG9uZW50OwotKyAoVUlDb2xvciAq
KV9kaXNhbWJpZ3VhdGVkX2R1ZV90b19DSUltYWdlX2NvbG9yV2l0aENHQ29sb3I6KENHQ29sb3JS
ZWYpY2dDb2xvcjsKIEBlbmQKIAogQGludGVyZmFjZSBOU0NvbG9yIDogVUlDb2xvcgpAQCAtODYz
LDE2ICs4NjMsNiBAQCBzdGF0aWMgTlNCdW5kbGUgKl93ZWJLaXRCdW5kbGUoKQogICAgICAgICBi
dW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlV2l0aFBhdGg6W19OU1N5c3RlbUxpYnJhcnlQYXRoKCkg
c3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRnJhbWV3b3Jrcy9XZWJLaXQuZnJhbWV3
b3JrIl1dOwogICAgIHJldHVybiBidW5kbGU7CiB9Ci0KLXN0YXRpYyBpbmxpbmUgVUlDb2xvciAq
X3BsYXRmb3JtQ29sb3IoQ29sb3IgY29sb3IpCi17Ci0gICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xh
c3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hl
ZENHQ29sb3IoY29sb3IpXTsKLX0KLSNlbHNlCi1zdGF0aWMgaW5saW5lIE5TQ29sb3IgKl9wbGF0
Zm9ybUNvbG9yKENvbG9yIGNvbG9yKQotewotICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKTsKLX0K
ICNlbmRpZgogCiBzdGF0aWMgaW5saW5lIE5TU2hhZG93ICpfc2hhZG93Rm9yU2hhZG93U3R5bGUo
TlNTdHJpbmcgKnNoYWRvd1N0eWxlKQpAQCAtMTAyMCw3ICsxMDEwLDcgQEAgUGxhdGZvcm1Db2xv
ciAqSFRNTENvbnZlcnRlcjo6X2NvbG9yRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBDU1NQ
cm9wZXJ0eUlEIHAKICAgICBDb2xvciByZXN1bHQgPSBfY2FjaGVzLT5jb2xvclByb3BlcnR5VmFs
dWVGb3JOb2RlKGVsZW1lbnQsIHByb3BlcnR5SWQpOwogICAgIGlmICghcmVzdWx0LmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBQbGF0Zm9ybUNvbG9yICpwbGF0Zm9ybVJlc3Vs
dCA9IF9wbGF0Zm9ybUNvbG9yKHJlc3VsdCk7CisgICAgUGxhdGZvcm1Db2xvciAqcGxhdGZvcm1S
ZXN1bHQgPSBwbGF0Zm9ybUNvbG9yKHJlc3VsdCk7CiAgICAgaWYgKFtbUGxhdGZvcm1Db2xvckNs
YXNzIGNsZWFyQ29sb3JdIGlzRXF1YWw6cGxhdGZvcm1SZXN1bHRdIHx8IChbcGxhdGZvcm1SZXN1
bHQgYWxwaGFDb21wb25lbnRdID09IDAuMCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0
dXJuIHBsYXRmb3JtUmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvQ29sb3JDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMTY0YmMwYmNiNWRhY2VjNWIz
MDU4NWI0MjQwMzEzNWIzY2Q2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Db2xvckNvY29hLmgKQEAgLTAsMCArMSw0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCitPQkpDX0NMQVNTIE5TQ29sb3I7CitPQkpDX0NMQVNT
IFVJQ29sb3I7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7CisKKyNpZiBV
U0UoQVBQS0lUKQorTlNDb2xvciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xvciYpOworI2VuZGlm
CisKKyNpZiBQTEFURk9STShJT1MpCitVSUNvbG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9y
Jik7CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWI2MTQ3OTFiZjllZjQ2MzBiZDA1NTUxZWYwNTE0ZDI2YWNiZWI1MAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0K
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiQ29sb3JDb2NvYS5oIgorCisjaW1wb3J0ICJDb2xvck1hYy5oIgorI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CisKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxwYWwvc3BpL2lvcy9V
SUtpdFNQSS5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgVUlL
aXQpCitTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRShXZWJDb3JlLCBVSUtpdCwgVUlDb2xvcikK
KyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQVBQS0lUKQorCitOU0Nv
bG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gbnND
b2xvcihjb2xvcik7Cit9CisKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorCitVSUNvbG9y
ICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gW2dldF9V
SUtpdF9VSUNvbG9yQ2xhc3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldp
dGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29sb3IpXTsKK30KKworI2VuZGlmCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21ldGFsL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1t
CmluZGV4IDMzNTY2YWNmYWU1MzY3ZjMxOTdjNzkzZmZhYWUzNjFkMzliOWQ4NTQuLmI3YWUxOGJm
MTY2ZGRhZDE4NTJhODdjOThiMDE0OGI4MzA0ODA2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVy
UGFzc0Rlc2NyaXB0b3JNZXRhbC5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiR1BVUmVu
ZGVyUGFzc0RlcHRoQXR0YWNobWVudERlc2NyaXB0b3IuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgPE1ldGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVOU0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IDI2MDQ3YWI5Yjk5NmRkZjcy
ZGYzNGYxMmExMGY0MzY1NTRkNzM4YmQuLjlmN2Q3ZGQ5ODJlM2IwODgzNWJlMmI4MzczZWM4YmU1
N2UzYzZlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3Jl
TlNGb250TWFuYWdlckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW0KQEAgLTEzNiw4ICsxMzYsOCBAQCBGb250QXR0
cmlidXRlQ2hhbmdlcyBjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKE5TRm9udE1hbmFnZXIg
KmZvbnRNYW5hZ2VyLCBpZAogCiAgICAgTlNTaGFkb3cgKmNvbnZlcnRlZFNoYWRvdyA9IFtjb252
ZXJ0ZWRBdHRyaWJ1dGVzQSBvYmplY3RGb3JLZXk6TlNTaGFkb3dBdHRyaWJ1dGVOYW1lXTsKICAg
ICBpZiAoY29udmVydGVkU2hhZG93KSB7Ci0gICAgICAgIGF1dG8gb2Zmc2V0ID0gY29udmVydGVk
U2hhZG93LnNoYWRvd09mZnNldDsKLSAgICAgICAgY2hhbmdlcy5zZXRTaGFkb3coeyBjb2xvckZy
b21OU0NvbG9yKGNvbnZlcnRlZFNoYWRvdy5zaGFkb3dDb2xvciA/OiBOU0NvbG9yLmJsYWNrQ29s
b3IpLCBvZmZzZXQud2lkdGgsIG9mZnNldC5oZWlnaHQsIGNvbnZlcnRlZFNoYWRvdy5zaGFkb3dC
bHVyUmFkaXVzIH0pOworICAgICAgICBGbG9hdFNpemUgb2Zmc2V0IHsgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNvbnZlcnRlZFNoYWRvdy5zaGFkb3dPZmZzZXQud2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9h
dD4oY29udmVydGVkU2hhZG93LnNoYWRvd09mZnNldC5oZWlnaHQpIH07CisgICAgICAgIGNoYW5n
ZXMuc2V0U2hhZG93KHsgY29sb3JGcm9tTlNDb2xvcihjb252ZXJ0ZWRTaGFkb3cuc2hhZG93Q29s
b3IgPzogTlNDb2xvci5ibGFja0NvbG9yKSwgb2Zmc2V0LCBjb252ZXJ0ZWRTaGFkb3cuc2hhZG93
Qmx1clJhZGl1cyB9KTsKICAgICB9IGVsc2UgaWYgKCFbY29udmVydGVkQXR0cmlidXRlc0Igb2Jq
ZWN0Rm9yS2V5Ok5TU2hhZG93QXR0cmlidXRlTmFtZV0pCiAgICAgICAgIGNoYW5nZXMuc2V0U2hh
ZG93KHsgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLmgKaW5kZXggZjY2Y2VhNjM5NDQ2ZmRiZmM0ZTc4Y2M2MzVhNzFmOGIyZDczNWI5OS4uZDc3
YWZiMjY2ZmI5NGIwNjlhYjUyZDgwY2ZjOTc1YzJiMGZlNzNjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZUNvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCIKIAogdXNpbmcgQ01TYW1wbGVC
dWZmZXJSZWYgPSBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIqOwordXNpbmcgQ1ZQaXhlbEJ1
ZmZlclBvb2xSZWYgPSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiB1c2luZyBDVlBpeGVs
QnVmZmVyUmVmID0gc3RydWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXgg
MWJiNWZhNjBhZjIxNmMyMjAxNGJhYzdkMDUxZDUxMDNkMmQ3N2NiMC4uNWYzZDY4MGE0MTQ5MGQ5
ZGU3YmVmMWE3ODJkM2UzZDViYWQyOGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2VDb2NvYS5tbQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2luY2x1ZGUgIlJl
YWx0aW1lVmlkZW9VdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExp
bmsuaD4KIAogQUxMT1dfVU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDI2NGI4YjBjOTIxMGU0YjI0
ZGU4NGNhN2Y0YjkyNzU5NmExYTljMzIuLmMwZmExNDRmMjExYmEwNjcwZjhiMjY4ZGU1YWYyNDJh
ZTFkY2JhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQpAQCAtOTYsNiArOTYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xs
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9udC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0
cmlidXRlQ2hhbmdlcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KQEAgLTUwNTcsNyArNTA1OCw3IEBAIHN0YXRp
YyBSZWZQdHI8S2V5Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVG
cmFtZSkKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoU3RyaW5nOkAieCIKLSAgICAgICAgYXR0cmlidXRlczpjb3JlRnJhbWUgPyBjb3JlRnJhbWUt
PmVkaXRvcigpLmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKS5nZXQoKSA6IG5pbF0p
OworICAgICAgICBhdHRyaWJ1dGVzOmNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9u
dEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCkuY3JlYXRlRGljdGlvbmFyeSgpLmdldCgpIDog
bmlsXSk7CiAgICAgcmV0dXJuIFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtz
dHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dOwogfQogCkBAIC01NzA0LDcg
KzU3MDUsNyBAQCBzdGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVk
KCkKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKICAg
ICAgICAgaWYgKGNvbnN0IEZvbnQqIGZkID0gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250Rm9yU2Vs
ZWN0aW9uKG11bHRpcGxlRm9udHMpKQogICAgICAgICAgICAgZm9udCA9IChOU0ZvbnQgKilmZC0+
cGxhdGZvcm1EYXRhKCkucmVnaXN0ZXJlZEZvbnQoKTsKLSAgICAgICAgYXR0cmlidXRlcyA9IGNv
cmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpOworICAg
ICAgICBhdHRyaWJ1dGVzID0gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0F0U2Vs
ZWN0aW9uU3RhcnQoKS5jcmVhdGVEaWN0aW9uYXJ5KCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6
IGZvciBub3csIHJldHVybiBhIGJvZ3VzIGZvbnQgdGhhdCBkaXN0aW5ndWlzaGVzIHRoZSBlbXB0
eSBzZWxlY3Rpb24gZnJvbSB0aGUgbm9uLWVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZmYxNTEyZmYwZjhjNWUzYjk1MzVkZTk1ZjYyN2MyNzcx
MTkwYzJhNC4uNDY3YzBlM2RjYmI4MWEwM2VkNmU0YWJlYmZlODI5NmExNjc4Mzc3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTQ0LDYgKzE0NCw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2Fk
ZXIuaD4KQEAgLTg2MjMsOSArODYyNCw4IEBAIEZPUldBUkQodG9nZ2xlVW5kZXJsaW5lKQogCiAt
IChOU0RpY3Rpb25hcnkgKil0eXBpbmdBdHRyaWJ1dGVzCiB7Ci0gICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoW3NlbGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdKTsKLSAgICBpZiAoY29yZUZyYW1l
KQotICAgICAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0ZvclNl
bGVjdGlvblN0YXJ0KCkuYXV0b3JlbGVhc2UoKTsKKyAgICBpZiAoYXV0byogY29yZUZyYW1lID0g
Y29yZShbc2VsZiBfc2VsZWN0ZWRPck1haW5GcmFtZV0pKQorICAgICAgICByZXR1cm4gY29yZUZy
YW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKS5jcmVhdGVEaWN0
aW9uYXJ5KCkuYXV0b3JlbGVhc2UoKTsKICAgICAKICAgICByZXR1cm4gbmlsOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350697</attachid>
            <date>2018-09-24 14:54:26 -0700</date>
            <delta_ts>2018-09-24 17:17:36 -0700</delta_ts>
            <desc>Patch for EWS #2.1 (rebase on trunk)</desc>
            <filename>bug-189918-20180924145425.patch</filename>
            <type>text/plain</type>
            <size>50198</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEzZGExYTVjMWRkN2Yx
NjU5MGZhMTU4N2VmOGJhYWFiMTVjZDRiMS4uZjEyMWZiYWI4YTk0MmE2NmMxNTJlYjY3NzE5ZTc2
YTBlNmZmNGQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE4LTA5LTI0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEVk
aXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCB0byBiZSBwbGF0Zm9ybS1hZ25v
c3RpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5
OTE4CisgICAgICAgIFdvcmsgdG93YXJkcyA8cmRhcjovL3Byb2JsZW0vNDQ2NDg3MDU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICBSZWZhY3RvcnMgdGhlIGZ1
bmN0aW9uYWxpdHkgaW4gRWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0IHRv
IG5vdCBiZSBDb2NvYS1vbmx5LiBSZW5hbWUgdGhpcyB0bworICAgICAgICBmb250QXR0cmlidXRl
c0F0U2VsZWN0aW9uU3RhcnQgKHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBgRWRpdGluZ1N0eWxlOjpz
dHlsZUF0U2VsZWN0aW9uU3RhcnRgKSBhbmQgbW92ZSBpdCBmcm9tCisgICAgICAgIEVkaXRvckNv
Y29hLm1tIHRvIEVkaXRvci5jcHA7IGluc3RlYWQgb2YgY3JlYXRpbmcgYW5kIHBvcHVsYXRpbmcg
YW4gTlNEaWN0aW9uYXJ5IHdpdGggZm9udCBhdHRyaWJ1dGUKKyAgICAgICAgaW5mb3JtYXRpb24s
IGNyZWF0ZSBhbmQgcG9wdWxhdGUgYSBuZXcgYEZvbnRBdHRyaWJ1dGVzYCBzdHJ1Y3QgdGhhdCBj
b250YWlucyB0aGUgc2FtZSBpbmZvcm1hdGlvbi4gQ29jb2EgY2xpZW50cworICAgICAgICBpbiBX
ZWJLaXRMZWdhY3kgbWF5IHRoZW4gY3JlYXRlIGFuIGBOU0RpY3Rpb25hcnlgIGFzIG5lZWRlZCBm
cm9tIHRoZSBgRm9udEF0dHJpYnV0ZXNgLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpwbGF0Zm9ybUZv
bnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaG9v
ayB0byBhbGxvdyBwbGF0Zm9ybXMgdG8gc3VwcGx5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4g
Rm9udEF0dHJpYnV0ZXMuIE9uIENvY29hLCB0aGlzIGFkZHMgYSBVSUZvbnQKKyAgICAgICAgb3Ig
TlNGb250IHRvIEZvbnRBdHRyaWJ1dGVzOyBvdGhlcndpc2UsIHRoaXMgaXMgYSBuby1vcC4KKwor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQg
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9G
b250QXR0cmlidXRlQ2hhbmdlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjc3NWYWx1ZUxpc3RG
b3JTaGFkb3cpOgorICAgICAgICAqIGVkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaDoKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93OjplbmNvZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6ZGVjb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRBdHRyaWJ1dGVzLmg6IEFkZGVkLgorCisg
ICAgICAgIEludHJvZHVjZSBhIG5ldyBzdHJ1Y3QgdGhhdCBjb250YWlucyBmb250IGF0dHJpYnV0
ZSBpbmZvcm1hdGlvbi4gTWF5IGJlIGNvbnZlcnRlZCBpbnRvIGFuIE5TRGljdGlvbmFyeSBmb3Ig
dXNlCisgICAgICAgIGJ5IENvY29hIGNsaWVudHMgaW4gV2ViS2l0TGVnYWN5IGFuZCBXZWJLaXQu
IEluIGEgZnV0dXJlIHBhdGNoLCB0aGlzIHdpbGwgYmVjb21lIHNlcmlhbGl6YWJsZSBvdmVyIElQ
QyBmb3IgdXNlCisgICAgICAgIGluIFdlYktpdDIuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZvbnRT
aGFkb3cuaDogQWRkZWQuCisKKyAgICAgICAgTW92ZSBGb250U2hhZG93IG91dCBpbnRvIGEgc2Vw
YXJhdGUgaGVhZGVyIGZpbGUsIGluY2x1ZGVkIGluIGBGb250QXR0cmlidXRlQ2hhbmdlcy5oYCBh
bmQgYEZvbnRBdHRyaWJ1dGVzLmhgLgorCisgICAgICAgIChXZWJDb3JlOjpGb250U2hhZG93Ojpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFNoYWRvdzo6ZGVjb2RlKToKKyAg
ICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgorCisgICAgICAgIEFkZCBhIGhl
bHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgV2ViQ29yZTo6Q29sb3IgdG8gZWl0aGVyIGBVSUNv
bG9yYCBvbiBpT1Mgb3IgYE5TQ29sb3JgIHdoZW4gQXBwS2l0IGlzIGJlaW5nCisgICAgICAgIHVz
ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpnZXRUZXh0
RGVjb3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUgY29uc3QpOiBEZWxldGVk
LgorCisgICAgICAgIFJlbW92ZSBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHdhcyBvbmx5IHVzZWQg
dG8gY29tcHV0ZSB0ZXh0IGRlY29yYXRpb24gYXR0cmlidXRlcyBpbgorICAgICAgICBmb250QXR0
cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0LgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZv
bnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGVkaXRpbmcvY29jb2EvRm9udEF0dHJpYnV0ZXNDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGb250QXR0cmlidXRlczo6Y3JlYXRlRGljdGlvbmFyeSBjb25zdCk6CisgICAgICAg
ICogZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFNoYWRvdzo6Y3JlYXRlU2hhZG93IGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5n
L2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChfd2ViS2l0QnVuZGxlKToKKyAgICAg
ICAgKEhUTUxDb252ZXJ0ZXI6Ol9jb2xvckZvckVsZW1lbnQpOgorICAgICAgICAoX3BsYXRmb3Jt
Q29sb3IpOiBEZWxldGVkLgorCisgICAgICAgIEFkb3B0IHBsYXRmb3JtQ29sb3IoKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EuaDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tOgorCisgICAgICAgIEJ1aWxk
IGZpeCBkdWUgdG8gY2hhbmdlcyBpbiB1bmlmaWVkIHNvdXJjZXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvV2ViQ29yZU5TRm9udE1hbmFnZXJFeHRyYXMubW06CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW06CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNv
Y29hLm1tOgorCisgICAgICAgIE1vcmUgYnVpbGQgZml4ZXMgZHVlIHRvIGNoYW5nZXMgaW4gdW5p
ZmllZCBzb3VyY2VzLgorCiAyMDE4LTA5LTI0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBFdmVudHMgY2xlYW51cApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggY2FlMWIwZjAzYjFkZjBkMTNkMGEzZDY1MDJjODQ5ZmE3NGFlN2ZhZi4uNWE0
NTU0NmZhNTdjYzYzYzQ1NTc0YzA3NWZkNWU3YjBlNWYwMDkxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDktMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgRWRpdG9yOjpmb250QXR0cmlidXRlc0Zv
clNlbGVjdGlvblN0YXJ0IHRvIGJlIHBsYXRmb3JtLWFnbm9zdGljCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk5MTgKKyAgICAgICAgV29yayB0b3dh
cmRzIDxyZGFyOi8vcHJvYmxlbS80NDY0ODcwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0g
SG9ydG9uLgorCisgICAgICAgIEFkZCBgK19kaXNhbWJpZ3VhdGVkX2R1ZV90b19DSUltYWdlX2Nv
bG9yV2l0aENHQ29sb3I6YCBhcyBhIFVJQ29sb3IgU1BJIGRlZmluaXRpb24uIEFsc28sIGltcG9y
dAorICAgICAgICBgVUlDb2xvcl9Qcml2YXRlLmhgIGRpcmVjdGx5IHdoZW4gdGhlIEFwcGxlIGlu
dGVybmFsIFNESyBpcyB1c2VkLgorCisgICAgICAgICogcGFsL3NwaS9pb3MvVUlLaXRTUEkuaDoK
KwogMjAxOC0wOS0yMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkIFNpZXJyYSBCdWlsZCBGaXg7IGVuc3VyZSBBVlZpZGVvUGVyZm9ybWFuY2VN
ZXRyaWNzIGFyZSBkZWZpbmVkIG9uIFNpZXJyYS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpp
bmRleCAyOGRhOGU4ZTllMTRhMmIyZjIwYTJmN2QxOWQwMDk5NDU1ZjA4YjZlLi42MWQzYTZkMTFm
ZjZlOGU0MmI4NDFkNDlkY2YzZmVhZTU0NjRjMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDktMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgRWRpdG9yOjpmb250QXR0cmlidXRl
c0ZvclNlbGVjdGlvblN0YXJ0IHRvIGJlIHBsYXRmb3JtLWFnbm9zdGljCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODk5MTgKKyAgICAgICAgV29yayB0
b3dhcmRzIDxyZGFyOi8vcHJvYmxlbS80NDY0ODcwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBU
aW0gSG9ydG9uLgorCisgICAgICAgIFJlcGxhY2UgY2FsbCBzaXRlcyBvZiBmb250QXR0cmlidXRl
c0ZvclNlbGVjdGlvblN0YXJ0KCkgdG8gZm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KCku
Y3JlYXRlRGljdGlvbmFyeSgpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX3NlbGVjdGlvblN0YXJ0Rm9udEF0dHJpYnV0ZXNBc1JU
Rl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfdXBkYXRlRm9udFBhbmVsXSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IHR5cGluZ0F0dHJpYnV0
ZXNdKToKKwogMjAxOC0wOS0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIE9wYXF1ZUpTU3RyaW5nIHJhdGhlciB0aGFuIEpTUmV0YWluUHRyIGluc2lkZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9VSUtpdFNQ
SS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggMjEy
ZDQ2MjgwNmQ2NmU5NzRmZTVkOGI5OTRjNzA2NjQ5MzlhYjViOS4uOWRiN2Y1N2I5MjZkNzE0MmJi
YTJmOWQzNWZlMTM0YmVlZmFlYzAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9z
L1VJS2l0U1BJLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2ltcG9ydCA8VUlLaXQvVUlBcHBsaWNh
dGlvblNjZW5lQ29uc3RhbnRzLmg+CiAjaW1wb3J0IDxVSUtpdC9VSUFwcGxpY2F0aW9uX1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJQ29sb3JfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQv
VUlJbnRlcmZhY2VfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlTY3JlZW5fUHJpdmF0ZS5o
PgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CkBAIC03NCw2ICs3
NSw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJQXBwbGljYXRpb25TY2VuZUNsYXNz
aWNNb2RlKSB7CiArIChVSUNvbG9yICopc3lzdGVtUmVkQ29sb3I7CiArIChVSUNvbG9yICopc3lz
dGVtWWVsbG93Q29sb3I7CiAKKysgKFVJQ29sb3IgKilfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJ
bWFnZV9jb2xvcldpdGhDR0NvbG9yOihDR0NvbG9yUmVmKWNnQ29sb3I7CisKIEBlbmQKIAogQGlu
dGVyZmFjZSBVSVNjcmVlbiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNjJiZmQ4ZDhj
MjA3YTA5NDk4OTNlNWM0NThhYmNlNzA3YmNmZjY3Zi4uZDdjMGFjN2IzZGJhOTAyOTNjNjI1YTdk
MDdkZDNlNWY3YzI5OTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC03OSw2ICs3OSw4
IEBAIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwCiBlZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW0KIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KIGVkaXRpbmcvY29jb2EvRm9udEF0
dHJpYnV0ZUNoYW5nZXNDb2NvYS5tbQorZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29h
Lm1tCitlZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbQogZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tIEBuby11bmlmeQogZWRpdGluZy9jb2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VG
cm9tTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCiBlZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJj
ZVdlYlJlc291cmNlSGFuZGxlci5tbQpAQCAtMjkzLDYgKzI5NSw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvVVRJUmVnaXN0
cnkuY3BwCiAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dDNEQ29jb2EubW0KIHBsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZmZlZjVjNmU0MTZlNzlhMDY0YzlhZDFmODhk
NzAyYmE1YTNlNjMyLi5jY2EzMTU3MzZlOTBmNDdkNjQ1MmI5YTYzMmU1ZThhMWQ3OTUwNmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00ODQzLDYgKzQ4NDMsOSBAQAogCQlGNDgyMjMxMDFFMzg2OUI4MDA2NkZDNzkgLyogV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0ODIyMzBFMUUzODY5QjgwMDY2RkM3OSAvKiBXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLm1tICovOyB9OwogCQlGNDgyMjMxMTFFMzg2OUI4MDA2NkZDNzkgLyogV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ4MjIzMEYxRTM4NjlCODAwNjZGQzc5IC8qIFdlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlGNDgyMjMxMzFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMxMjFF
Mzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ4RDJBNkMyMTU2MjNCNDAwQzY3NTJC
IC8qIEZvbnRTaGFkb3cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0OEQyQTZBMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ4RDJBN0UyMTU3MTgy
NjAwQzY3NTJCIC8qIEZvbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDhEMkE3MTIxNTZEQzBBMDBDNjc1MkIgLyogRm9udEF0dHJp
YnV0ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlGNDhEMkFBNTIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4RDJBQTMyMTU5NzQwRDAwQzY3NTJC
IC8qIENvbG9yQ29jb2EuaCAqLzsgfTsKIAkJRjQ5Nzg2ODgxRkY0NUZBNTAwRTA2MEFCIC8qIFBh
c3RlYm9hcmRJdGVtSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFCIC8qIFBhc3RlYm9hcmRJdGVtSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0QkZC
OTg1MUUxRERGOUIwMDg2MkMyNCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4gQ29weSBTY3Jp
cHRzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgzMUUxRERGMkIw
MDc2QjdFQSAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZCOTg2MUUxRERG
OUIwMDg2MkMyNCAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3JpcHRzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAv
KiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi87IH07CkBAIC0xNDU4Myw2ICsxNDU4NiwxMiBAQAog
CQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UGFzdGVib2FyZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVk
aXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0g
RHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0gU2NyaXB0cy9EdW1wRWRpdGluZ0hpc3Rvcnku
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTg0MUUxRERGMkIwMDc2QjdF
QSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3Jp
cHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwuanM7IHBhdGggPSBTY3JpcHRzL0VkaXRpbmdI
aXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4RDJBNkEyMTU2
MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFkb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFNoYWRvdy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhEMkE3MTIxNTZEQzBBMDBDNjc1MkIg
LyogRm9udEF0dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEF0dHJpYnV0ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ4RDJBNzUyMTU2RkU1NzAwQzY3NTJCIC8qIEZv
bnRBdHRyaWJ1dGVzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGb250QXR0cmlidXRl
c0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhEMkE3QTIxNTcwNTFF
MDBDNjc1MkIgLyogRm9udFNoYWRvd0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9u
dFNoYWRvd0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhEMkFBMzIx
NTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNvY29h
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0OEQyQUE0MjE1OTc0MEQwMEM2NzUy
QiAvKiBDb2xvckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5Nzg2ODcxRkY0NUZBNTAwRTA2MEFCIC8q
IFBhc3RlYm9hcmRJdGVtSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkSXRlbUluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFNTdFREEyMTNGM0Y1RjAwNEVBOThF
IC8qIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRBdHRyaWJ1dGVD
aGFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RTU3RURGMjEzRjQzNEEw
MDRFQTk4RSAvKiBXZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJDb3JlTlNGb250TWFuYWdlckV4dHJhcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTk5NDEsNiArMTk5NTAsOCBAQAogCQkJCUM1MjI3REYwMUMzQzZERDcwMEY1RUQ1NCAvKiBE
YXRhRGV0ZWN0aW9uLm1tICovLAogCQkJCTlCNTVFRUU4MUIzRTg4OTgwMDUzNDJCQyAvKiBFZGl0
b3JDb2NvYS5tbSAqLywKIAkJCQlGNDJDRUI1NDIxNDAzMUVFMDAyRENBNzIgLyogRm9udEF0dHJp
YnV0ZUNoYW5nZXNDb2NvYS5tbSAqLywKKwkJCQlGNDhEMkE3NTIxNTZGRTU3MDBDNjc1MkIgLyog
Rm9udEF0dHJpYnV0ZXNDb2NvYS5tbSAqLywKKwkJCQlGNDhEMkE3QTIxNTcwNTFFMDBDNjc1MkIg
LyogRm9udFNoYWRvd0NvY29hLm1tICovLAogCQkJCTdDM0U1MTA4MThERjhGMzUwMEMxMTJGNyAv
KiBIVE1MQ29udmVydGVyLmggKi8sCiAJCQkJN0MzRTUxMDkxOERGOEYzNTAwQzExMkY3IC8qIEhU
TUxDb252ZXJ0ZXIubW0gKi8sCiAJCQkJRTE4NTM2ODExRjRFNDcyNzAwRkUwOTFCIC8qIFdlYkFy
Y2hpdmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0ZWRTdHJpbmcuaCAqLywKQEAgLTIwMjQ1LDYgKzIw
MjU2LDggQEAKIAkJCQkzNzJDMDBEODEyOTYxOUY4MDA1Qzk1NzUgLyogRmluZE9wdGlvbnMuaCAq
LywKIAkJCQlGNDQyODUwQjIxNDA0MTI1MDBDQ0RBMjIgLyogRm9udEF0dHJpYnV0ZUNoYW5nZXMu
Y3BwICovLAogCQkJCUY0RTU3RURBMjEzRjNGNUYwMDRFQTk4RSAvKiBGb250QXR0cmlidXRlQ2hh
bmdlcy5oICovLAorCQkJCUY0OEQyQTcxMjE1NkRDMEEwMEM2NzUyQiAvKiBGb250QXR0cmlidXRl
cy5oICovLAorCQkJCUY0OEQyQTZBMjE1NjIzQjQwMEM2NzUyQiAvKiBGb250U2hhZG93LmggKi8s
CiAJCQkJRDA1Q0VEMjcwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5jcHAg
Ki8sCiAJCQkJRDA1Q0VEMjgwQTQwQkIyQzAwQzVBRjM4IC8qIEZvcm1hdEJsb2NrQ29tbWFuZC5o
ICovLAogCQkJCTkzMzA5REJFMDk5RTY0OTEwMDU2RTU4MSAvKiBGcmFtZVNlbGVjdGlvbi5jcHAg
Ki8sCkBAIC0yMzk0NSw2ICsyMzk1OCw4IEBACiAJCUI1MzIwRDY4MTIyQTI0RTkwMDJEMTQ0MCAv
KiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RjQ4RDJBQTMyMTU5NzQwRDAwQzY3NTJCIC8qIENvbG9yQ29jb2EuaCAqLywKKwkJCQlGNDhEMkFB
NDIxNTk3NDBEMDBDNjc1MkIgLyogQ29sb3JDb2NvYS5tbSAqLywKIAkJCQkxQzM5NjlDRjFCNzQy
MTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQuY3BwICovLAogCQkJCUMyNDU4RTYxMUZF
ODk3OUUwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovLAogCQkJCUIyQUZGQzc4MEQw
MEE1QzEwMDMwMDc0RCAvKiBGb250Q2FzY2FkZUNvY29hLm1tICovLApAQCAtMjc0NjYsNiArMjc0
ODEsNyBAQAogCQkJCUIyNzUzNTY3MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzMzMEEyMjMxM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzM3Q0RFQkQxNDlFRjIwMzAwNDIwOTBEIC8qIENvbG9yQ2hvb3Nl
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ4RDJBQTUyMTU5NzQwRDAwQzY3NTJCIC8q
IENvbG9yQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDNCN0RGMURCMDE1NjcwMDhCQjg5
MCAvKiBDb2xvckhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREI0MTI1MUYxMkQwMDNF
RjI2OSAvKiBDb2xvcklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRURFM0E1MDAwQzdB
NDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MDY0LDYgKzI4
MDgwLDcgQEAKIAkJCQlCMkMzREE2NTBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDMkQ4OUQxQjFFMjkxRjAwRDUyRTg3IC8qIEZvbnRBbnRpYWxpYXNpbmdT
dGF0ZVNhdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEU1N0VEQzIxM0YzRjVGMDA0RUE5OEUg
LyogRm9udEF0dHJpYnV0ZUNoYW5nZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0OEQyQTdFMjE1
NzE4MjYwMEM2NzUyQiAvKiBGb250QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNC
OTJENEYxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjJDM0RBNjMwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzI0NThFNjMxRkU4OTdCMDAwNTk0NzU5IC8qIEZvbnRDYWNoZUNvcmVUZXh0LmggaW4g
SGVhZGVycyAqLywKQEAgLTI4MDgwLDYgKzI4MDk3LDcgQEAKIAkJCQlDMkFCMEFGNzFFNkIzQzZD
MDAxMzQ4QzUgLyogRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJDM0RBNkIwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTQxOTA0MUYxQ0M2NDg2QjAwQzM1RjVEIC8qIEZvbnRTZWxlY3RvckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRjQ4RDJBNkMyMTU2MjNCNDAwQzY3NTJCIC8qIEZvbnRTaGFkb3cu
aCBpbiBIZWFkZXJzICovLAogCQkJCTRBNkU5RkM4MTNDMTdENTcwMDQ2QTdGOCAvKiBGb250VGFn
Z2VkU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMDE1QzBBMUJFNkZFQjIwMDgyMjM4
OSAvKiBGb250VmFyaWFudEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBMERBMkZGMTI5
QjI0MTkwMEFCNjFFMSAvKiBGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDJkNDdkYzdjZWRhMDQwN2M5MzhiN2ZiODU2
MTIyMjM1Nzk3ODI1MzYuLmUzYjQ0MzZiOTYxNTQyZDhiMWZkNzljZmE2ZmJlYTA0MDE3MGQzNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJv
bGxlci5oIgorI2luY2x1ZGUgIkZvbnRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgpAQCAtMzg1
MSw2ICszODUyLDgzIEBAIHZvaWQgRWRpdG9yOjpzY2hlZHVsZUVkaXRvclVJVXBkYXRlKCkKICAg
ICBtX2VkaXRvclVJVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCisKK3ZvaWQgRWRpdG9yOjpwbGF0Zm9ybUZvbnRBdHRyaWJ1dGVzQXRTZWxl
Y3Rpb25TdGFydChGb250QXR0cmlidXRlcyYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QKK3sK
K30KKworI2VuZGlmCisKK0ZvbnRBdHRyaWJ1dGVzIEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNBdFNl
bGVjdGlvblN0YXJ0KCkgY29uc3QKK3sKKyAgICBGb250QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwor
ICAgIE5vZGUqIG5vZGVUb1JlbW92ZSA9IG51bGxwdHI7CisgICAgYXV0byogc3R5bGUgPSBzdHls
ZUZvclNlbGVjdGlvblN0YXJ0KCZtX2ZyYW1lLCBub2RlVG9SZW1vdmUpOworICAgIGlmICghc3R5
bGUpIHsKKyAgICAgICAgaWYgKG5vZGVUb1JlbW92ZSkKKyAgICAgICAgICAgIG5vZGVUb1JlbW92
ZS0+cmVtb3ZlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIH0KKworICAgIHBs
YXRmb3JtRm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGF0dHJpYnV0ZXMsICpzdHlsZSk7
CisKKyAgICAvLyBGSVhNRTogZm9yIG5vdywgYWx3YXlzIHJlcG9ydCB0aGUgY29sb3JzIGFmdGVy
IGFwcGx5aW5nIC1hcHBsZS1jb2xvci1maWx0ZXIuIEluIGZ1dHVyZSBub3QgYWxsIGNsaWVudHMK
KyAgICAvLyBtYXkgd2FudCB0aGlzLCBzbyB3ZSBtYXkgaGF2ZSB0byBhZGQgYSBzZXR0aW5nIHRv
IGNvbnRyb2wgaXQuIFNlZSBhbHNvIGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKCku
CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9y
V2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICBpZiAoYmFj
a2dyb3VuZENvbG9yLmlzVmlzaWJsZSgpKQorICAgICAgICBhdHRyaWJ1dGVzLmJhY2tncm91bmRD
b2xvciA9IGJhY2tncm91bmRDb2xvcjsKKworICAgIGF1dG8gZm9yZWdyb3VuZENvbG9yID0gc3R5
bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcldpdGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eUNvbG9y
KTsKKyAgICAvLyBGSVhNRTogaXNCbGFja0NvbG9yIG5vdCBzdWl0YWJsZSBmb3IgZGFyayBtb2Rl
LgorICAgIGlmIChmb3JlZ3JvdW5kQ29sb3IuaXNWYWxpZCgpICYmICFDb2xvcjo6aXNCbGFja0Nv
bG9yKGZvcmVncm91bmRDb2xvcikpCisgICAgICAgIGF0dHJpYnV0ZXMuZm9yZWdyb3VuZENvbG9y
ID0gZm9yZWdyb3VuZENvbG9yOworCisgICAgaWYgKGF1dG8qIHNoYWRvd0RhdGEgPSBzdHlsZS0+
dGV4dFNoYWRvdygpKQorICAgICAgICBhdHRyaWJ1dGVzLmZvbnRTaGFkb3cgPSB7IHNoYWRvd0Rh
dGEtPmNvbG9yKCksIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNoYWRvd0RhdGEtPngoKSksIHN0YXRp
Y19jYXN0PGZsb2F0PihzaGFkb3dEYXRhLT55KCkpIH0sIHN0YXRpY19jYXN0PGRvdWJsZT4oc2hh
ZG93RGF0YS0+cmFkaXVzKCkpIH07CisKKyAgICBzd2l0Y2ggKHN0eWxlLT52ZXJ0aWNhbEFsaWdu
KCkpIHsKKyAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgorICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6Qm90dG9tOgorICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6
CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpMZW5ndGg6CisgICAgY2FzZSBWZXJ0aWNhbEFsaWdu
OjpNaWRkbGU6CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgorICAgIGNhc2Ug
VmVydGljYWxBbGlnbjo6VGV4dFRvcDoKKyAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpTdWI6CisgICAgICAgIGF0dHJp
YnV0ZXMuc3Vic2NyaXB0T3JTdXBlcnNjcmlwdCA9IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1
YnNjcmlwdDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpTdXBlcjoK
KyAgICAgICAgYXR0cmlidXRlcy5zdWJzY3JpcHRPclN1cGVyc2NyaXB0ID0gU3Vic2NyaXB0T3JT
dXBlcnNjcmlwdDo6U3VwZXJzY3JpcHQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGF1
dG8gdHlwaW5nU3R5bGUgPSBtYWtlUmVmUHRyKG1fZnJhbWUuc2VsZWN0aW9uKCkudHlwaW5nU3R5
bGUoKSk7CisgICAgaWYgKHR5cGluZ1N0eWxlICYmIHR5cGluZ1N0eWxlLT5zdHlsZSgpKSB7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSB0eXBpbmdTdHlsZS0+c3R5bGUoKS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKKyAgICAgICAg
aWYgKHZhbHVlICYmIHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NWYWx1
ZUxpc3QmIHZhbHVlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKnZhbHVlKTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVMaW5lVGhyb3VnaCkucHRyKCkpKQorICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZXMuaGFzU3RyaWtlVGhyb3VnaCA9IHRydWU7CisgICAgICAgICAg
ICBpZiAodmFsdWVMaXN0Lmhhc1ZhbHVlKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlVW5kZXJsaW5lKS5wdHIoKSkpCisgICAgICAgICAgICAg
ICAgYXR0cmlidXRlcy5oYXNVbmRlcmxpbmUgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgYXV0byBkZWNvcmF0aW9uID0gc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCk7CisgICAgICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OkxpbmVUaHJv
dWdoKQorICAgICAgICAgICAgYXR0cmlidXRlcy5oYXNTdHJpa2VUaHJvdWdoID0gdHJ1ZTsKKyAg
ICAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKQorICAgICAg
ICAgICAgYXR0cmlidXRlcy5oYXNVbmRlcmxpbmUgPSB0cnVlOworICAgIH0KKworICAgIGlmIChu
b2RlVG9SZW1vdmUpCisgICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKCk7CisKKyAgICByZXR1
cm4gYXR0cmlidXRlczsKK30KKwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKIHZv
aWQgRWRpdG9yOjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJy
ZWRGaWxlTmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKaW5kZXggMzMyM2EzMzhhMjExMDRiN2Q4NDg1YTJkOWU0MTE3MDhlOTkzMmQwMS4uZGI5NGFm
ZjZiNTA4MDBjYzU0NzY1NzdhNDgzZTU0Y2NlMGZmYmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCkBAIC04MSw2ICs4MSw3IEBAIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0Q2hlY2tlckNsaWVu
dDsKIGNsYXNzIFRleHRFdmVudDsKIAorc3RydWN0IEZvbnRBdHRyaWJ1dGVzOwogc3RydWN0IFBh
c3RlYm9hcmRQbGFpblRleHQ7CiBzdHJ1Y3QgUGFzdGVib2FyZFVSTDsKIHN0cnVjdCBUZXh0Q2hl
Y2tpbmdSZXN1bHQ7CkBAIC00NjksMTAgKzQ3MCw5IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIGNvbnN0IEZvbnQqIGZvbnRGb3JTZWxlY3Rpb24oYm9vbCYgaGFzTXVsdGlwbGVGb250
cykgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZUZvclNlbGVjdGlvblN0YXJ0KEZyYW1lKiAsIE5vZGUgKiZub2RlVG9SZW1vdmUpOworICAg
IFdFQkNPUkVfRVhQT1JUIEZvbnRBdHRyaWJ1dGVzIGZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25T
dGFydCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBnZXRUZXh0RGVj
b3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUm
LCBOU011dGFibGVEaWN0aW9uYXJ5KikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmV0YWlu
UHRyPE5TRGljdGlvbmFyeT4gZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
KCk7CiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmRXaXRoSW1hZ2VBbHRU
ZXh0KCk7CiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTU2Miw2ICs1NjIsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0KE5TQXR0cmli
dXRlZFN0cmluZyAqKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRG
Rm9ybWF0KE5TQXR0cmlidXRlZFN0cmluZyAqKTsKICNlbmRpZgorICAgIHZvaWQgcGxhdGZvcm1G
b250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0OwogCiAgICAgdm9pZCBzY2hlZHVsZUVkaXRvclVJVXBkYXRlKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKaW5k
ZXggN2I1NGM0NWU2YmU0ZDZmNGMwYTVlYjJmMzg2ZGRkMDJmM2E5ZDVhOS4uM2ExNTM3NmQ2NGMx
Y2MzNTZmN2I2NzAwNmI1OGZkNjEzODFmNGQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Gb250QXR0cmlidXRlQ2hhbmdlcy5jcHAKQEAgLTgxLDEzICs4MSwxMyBAQCBSZWY8TXV0
YWJsZVN0eWxlUHJvcGVydGllcz4gRm9udENoYW5nZXM6OmNyZWF0ZVN0eWxlUHJvcGVydGllcygp
IGNvbnN0CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjc3NWYWx1ZUxpc3RGb3JTaGFk
b3coY29uc3QgRm9udFNoYWRvdyYgc2hhZG93KQogewotICAgIGlmICghc2hhZG93LndpZHRoICYm
ICFzaGFkb3cuaGVpZ2h0ICYmICFzaGFkb3cuYmx1clJhZGl1cykKKyAgICBpZiAoc2hhZG93Lm9m
ZnNldC5pc0VtcHR5KCkgJiYgIXNoYWRvdy5ibHVyUmFkaXVzKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0
ZWQoKTsKICAgICBhdXRvJiBjc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
OwotICAgIGF1dG8gd2lkdGggPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhZG93LndpZHRo
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICBhdXRvIGhlaWdodCA9IGNzc1ZhbHVl
UG9vbC5jcmVhdGVWYWx1ZShzaGFkb3cuaGVpZ2h0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KTsKKyAgICBhdXRvIHdpZHRoID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYWRvdy5vZmZz
ZXQud2lkdGgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgYXV0byBoZWlnaHQg
PSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc2hhZG93Lm9mZnNldC5oZWlnaHQoKSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCk7CiAgICAgYXV0byBibHVyUmFkaXVzID0gY3NzVmFsdWVQb29s
LmNyZWF0ZVZhbHVlKHNoYWRvdy5ibHVyUmFkaXVzLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BY
KTsKICAgICBhdXRvIGNvbG9yID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHNoYWRvdy5jb2xv
cik7CiAgICAgbGlzdC0+cHJlcGVuZChDU1NTaGFkb3dWYWx1ZTo6Y3JlYXRlKFdURk1vdmUod2lk
dGgpLCBXVEZNb3ZlKGhlaWdodCksIFdURk1vdmUoYmx1clJhZGl1cyksIHsgfSwgeyB9LCBXVEZN
b3ZlKGNvbG9yKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0
cmlidXRlQ2hhbmdlcy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRlQ2hh
bmdlcy5oCmluZGV4IGRlN2FlNTNkMzc4MmM0MGY3MTFlNDg0ZjVhZWQyYzUyNWE5ZDYwZGQuLmRj
MThkMDQ5Mjc2NmY1NjU1NTllM2FkOTViMWM2NmFiNWVkNWFiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0ZUNoYW5nZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZvbnRBdHRyaWJ1dGVDaGFuZ2VzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGb250U2hhZG93Lmgi
CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNjksMTYgKzcwLDYgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faXRhbGljOwogfTsKIAotc3RydWN0IEZvbnRTaGFkb3cg
ewotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIEZvbnRTaGFkb3cmKTsKLQotICAgIENvbG9yIGNvbG9yOwotICAgIGRvdWJsZSB3aWR0aCB7
IDAgfTsKLSAgICBkb3VibGUgaGVpZ2h0IHsgMCB9OwotICAgIGRvdWJsZSBibHVyUmFkaXVzIHsg
MCB9OwotfTsKLQogY2xhc3MgRm9udEF0dHJpYnV0ZUNoYW5nZXMgewogcHVibGljOgogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTEz
NywzMCArMTI4LDYgQEAgYm9vbCBGb250Q2hhbmdlczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IEZvbnRDaGFuZ2VzJiBjaGFuZ2VzKQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgotdm9pZCBGb250U2hhZG93OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGNvbG9yIDw8IHdpZHRoIDw8IGhlaWdodCA8PCBibHVy
UmFkaXVzOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9vbCBGb250U2hhZG93Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRm9udFNoYWRvdyYgc2hhZG93KQotewotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc2hhZG93LmNvbG9yKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaGFkb3cud2lkdGgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5oZWlnaHQpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5ibHVyUmFkaXVz
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEZvbnRBdHRyaWJ1dGVDaGFuZ2VzOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRm9udEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRm9udEF0dHJpYnV0
ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYjJkYjRmZjUzY2ExZmY1ZjE0MDRiNzkwYzY1MGEyOGQ2ODdlYjhh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Gb250QXR0cmlidXRl
cy5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkZvbnRTaGFkb3cuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xB
U1MgTlNEaWN0aW9uYXJ5OworT0JKQ19DTEFTUyBOU0ZvbnQ7CitPQkpDX0NMQVNTIFVJRm9udDsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFN1YnNjcmlwdE9yU3VwZXJzY3Jp
cHQgOiB1aW50OF90IHsgTm9uZSwgU3Vic2NyaXB0LCBTdXBlcnNjcmlwdCB9OworCitzdHJ1Y3Qg
Rm9udEF0dHJpYnV0ZXMgeworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFdFQkNPUkVfRVhQT1JU
IFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGNyZWF0ZURpY3Rpb25hcnkoKSBjb25zdDsKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxOU0ZvbnQ+IGZvbnQ7CisjZWxp
ZiBQTEFURk9STShJT1MpCisgICAgUmV0YWluUHRyPFVJRm9udD4gZm9udDsKKyNlbmRpZgorICAg
IENvbG9yIGJhY2tncm91bmRDb2xvcjsKKyAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3I7CisgICAg
Rm9udFNoYWRvdyBmb250U2hhZG93OworICAgIFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQgc3Vic2Ny
aXB0T3JTdXBlcnNjcmlwdCB7IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6Ok5vbmUgfTsKKyAgICBi
b29sIGhhc1VuZGVybGluZSB7IGZhbHNlIH07CisgICAgYm9vbCBoYXNTdHJpa2VUaHJvdWdoIHsg
ZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3Vic2NyaXB0T3JTdXBl
cnNjcmlwdD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNv
cmU6OlN1YnNjcmlwdE9yU3VwZXJzY3JpcHQsCisgICAgICAgIFdlYkNvcmU6OlN1YnNjcmlwdE9y
U3VwZXJzY3JpcHQ6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6OlN1YnNjcmlwdE9yU3VwZXJzY3Jp
cHQ6OlN1YnNjcmlwdCwKKyAgICAgICAgV2ViQ29yZTo6U3Vic2NyaXB0T3JTdXBlcnNjcmlwdDo6
U3VwZXJzY3JpcHQKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZvbnRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRm9udFNoYWRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5OWY4NGI0ZDFiOTk1YzU2MTM3NzllM2U1
MDMxNDVlZmE4YjM5NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZvbnRTaGFkb3cuaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19DTEFTUyBOU1No
YWRvdzsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBGb250U2hhZG93
IHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBGb250U2hhZG93Jik7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8
TlNTaGFkb3c+IGNyZWF0ZVNoYWRvdygpIGNvbnN0OworI2VuZGlmCisKKyAgICBDb2xvciBjb2xv
cjsKKyAgICBGbG9hdFNpemUgb2Zmc2V0OworICAgIGRvdWJsZSBibHVyUmFkaXVzIHsgMCB9Owor
fTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRm9udFNoYWRvdzo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBjb2xvciA8PCBvZmZzZXQg
PDwgYmx1clJhZGl1czsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK2Jvb2wgRm9udFNo
YWRvdzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEZvbnRTaGFkb3cmIHNoYWRvdykKK3sKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHNoYWRvdy5jb2xvcikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93Lm9mZnNldCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2hhZG93LmJsdXJSYWRpdXMp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29j
b2EubW0KaW5kZXggZTM3NzFiN2M1NDIzMGY4ZTQ2YzA4NzE3N2ZiYmZkZmMyMjRjNDNkNy4uODUw
NjVjOGNlNDZmYjhjYjI0N2FkMzA1YTkxZDJiZDU1MTc3YzMzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0
ICJFZGl0aW5nLmgiCiAjaW1wb3J0ICJFZGl0aW5nU3R5bGUuaCIKICNpbXBvcnQgIkVkaXRvckNs
aWVudC5oIgorI2ltcG9ydCAiRm9udEF0dHJpYnV0ZXMuaCIKICNpbXBvcnQgIkZvbnRDYXNjYWRl
LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKQEAgLTU4LDg5
ICs1OSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgRWRpdG9yOjpnZXRUZXh0
RGVjb3JhdGlvbkF0dHJpYnV0ZXNSZXNwZWN0aW5nVHlwaW5nU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBOU011dGFibGVEaWN0aW9uYXJ5KiByZXN1bHQpIGNvbnN0Cit2b2lkIEVkaXRv
cjo6cGxhdGZvcm1Gb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRm9udEF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKLSAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiB0eXBpbmdTdHlsZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkudHlwaW5n
U3R5bGUoKTsKLSAgICBpZiAodHlwaW5nU3R5bGUgJiYgdHlwaW5nU3R5bGUtPnN0eWxlKCkpIHsK
LSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHR5cGluZ1N0eWxlLT5zdHlsZSgpLT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZl
Y3QpOwotICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAg
ICAgICAgIENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pigq
dmFsdWUpOwotICAgICAgICAgICAgaWYgKHZhbHVlTGlzdC5oYXNWYWx1ZShDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUxpbmVUaHJvdWdoKS5w
dHIoKSkpCi0gICAgICAgICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6QChOU1VuZGVybGluZVN0
eWxlU2luZ2xlKSBmb3JLZXk6TlNTdHJpa2V0aHJvdWdoU3R5bGVBdHRyaWJ1dGVOYW1lXTsKLSAg
ICAgICAgICAgIGlmICh2YWx1ZUxpc3QuaGFzVmFsdWUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVVbmRlcmxpbmUpLnB0cigpKSkKLSAgICAg
ICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpIGZv
cktleTpOU1VuZGVybGluZVN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAgIH0KLSAgICB9IGVs
c2UgewotICAgICAgICBhdXRvIGRlY29yYXRpb24gPSBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCgpOwotICAgICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpMaW5lVGhy
b3VnaCkKLSAgICAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNp
bmdsZSkgZm9yS2V5Ok5TU3RyaWtldGhyb3VnaFN0eWxlQXR0cmlidXRlTmFtZV07Ci0gICAgICAg
IGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKLSAgICAgICAgICAg
IFtyZXN1bHQgc2V0T2JqZWN0OkAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSkgZm9yS2V5Ok5TVW5k
ZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKLSAgICB9Ci19Ci0KLVJldGFpblB0cjxOU0RpY3Rp
b25hcnk+IEVkaXRvcjo6Zm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpIGNvbnN0Ci17
Ci0gICAgTm9kZSogbm9kZVRvUmVtb3ZlOwotICAgIGF1dG8qIHN0eWxlID0gc3R5bGVGb3JTZWxl
Y3Rpb25TdGFydCgmbV9mcmFtZSwgbm9kZVRvUmVtb3ZlKTsKLSAgICBpZiAoIXN0eWxlKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGF0
dHJpYnV0ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwot
Ci0gICAgaWYgKGF1dG8gY3RGb250ID0gc3R5bGUtPmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQo
KS5nZXRDVEZvbnQoKSkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OihfX2JyaWRnZSBp
ZCljdEZvbnQgZm9yS2V5Ok5TRm9udEF0dHJpYnV0ZU5hbWVdOwotCi0gICAgLy8gRklYTUU6IFdo
eSB3b3VsZCB3ZSBub3Qgd2FudCB0byByZXRyaWV2ZSB0aGVzZSBhdHRyaWJ1dGVzIG9uIGlPUz8K
LSNpZiBQTEFURk9STShNQUMpCi0gICAgLy8gRklYTUU6IGZvciBub3csIGFsd2F5cyByZXBvcnQg
dGhlIGNvbG9ycyBhZnRlciBhcHBseWluZyAtYXBwbGUtY29sb3ItZmlsdGVyLiBJbiBmdXR1cmUg
bm90IGFsbCBjbGllbnRzCi0gICAgLy8gbWF5IHdhbnQgdGhpcywgc28gd2UgbWF5IGhhdmUgdG8g
YWRkIGEgc2V0dGluZyB0byBjb250cm9sIGl0LiBTZWUgYWxzbyBlZGl0aW5nQXR0cmlidXRlZFN0
cmluZ0Zyb21SYW5nZSgpLgotICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IHN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwotICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWaXNpYmxlKCkpCi0gICAgICAgIFthdHRy
aWJ1dGVzIHNldE9iamVjdDpuc0NvbG9yKGJhY2tncm91bmRDb2xvcikgZm9yS2V5Ok5TQmFja2dy
b3VuZENvbG9yQXR0cmlidXRlTmFtZV07Ci0KLSAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3IgPSBz
dHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENTU1Byb3BlcnR5Q29s
b3IpOwotICAgIC8vIEZJWE1FOiBpc0JsYWNrQ29sb3Igbm90IHN1aXRhYmxlIGZvciBkYXJrIG1v
ZGUuCi0gICAgaWYgKGZvcmVncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgIUNvbG9yOjppc0JsYWNr
Q29sb3IoZm9yZWdyb3VuZENvbG9yKSkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0Om5z
Q29sb3IoZm9yZWdyb3VuZENvbG9yKSBmb3JLZXk6TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVO
YW1lXTsKLQotICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvd0RhdGEgPSBzdHlsZS0+dGV4dFNo
YWRvdygpOwotICAgIGlmIChzaGFkb3dEYXRhKSB7Ci0gICAgICAgIFJldGFpblB0cjxOU1NoYWRv
dz4gcGxhdGZvcm1TaGFkb3cgPSBhZG9wdE5TKFtbTlNTaGFkb3cgYWxsb2NdIGluaXRdKTsKLSAg
ICAgICAgW3BsYXRmb3JtU2hhZG93IHNldFNoYWRvd09mZnNldDpOU01ha2VTaXplKHNoYWRvd0Rh
dGEtPngoKSwgc2hhZG93RGF0YS0+eSgpKV07Ci0gICAgICAgIFtwbGF0Zm9ybVNoYWRvdyBzZXRT
aGFkb3dCbHVyUmFkaXVzOnNoYWRvd0RhdGEtPnJhZGl1cygpXTsKLSAgICAgICAgW3BsYXRmb3Jt
U2hhZG93IHNldFNoYWRvd0NvbG9yOm5zQ29sb3Ioc2hhZG93RGF0YS0+Y29sb3IoKSldOwotICAg
ICAgICBbYXR0cmlidXRlcyBzZXRPYmplY3Q6cGxhdGZvcm1TaGFkb3cuZ2V0KCkgZm9yS2V5Ok5T
U2hhZG93QXR0cmlidXRlTmFtZV07Ci0gICAgfQotCi0gICAgaW50IHN1cGVyc2NyaXB0SW50ID0g
MDsKLSAgICBzd2l0Y2ggKHN0eWxlLT52ZXJ0aWNhbEFsaWduKCkpIHsKLSAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OkJhc2VsaW5lOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgotICAg
IGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6Ci0gICAgY2FzZSBWZXJ0aWNhbEFs
aWduOjpMZW5ndGg6Ci0gICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6Ci0gICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dFRv
cDoKLSAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBWZXJ0aWNhbEFsaWduOjpTdWI6Ci0gICAgICAgIHN1cGVyc2NyaXB0SW50ID0gLTE7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgVmVydGljYWxBbGlnbjo6U3VwZXI6Ci0gICAgICAgIHN1cGVy
c2NyaXB0SW50ID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChzdXBlcnNjcmlw
dEludCkKLSAgICAgICAgW2F0dHJpYnV0ZXMgc2V0T2JqZWN0OkAoc3VwZXJzY3JpcHRJbnQpIGZv
cktleTpOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV07Ci0jZW5kaWYKLQotICAgIGdldFRleHRE
ZWNvcmF0aW9uQXR0cmlidXRlc1Jlc3BlY3RpbmdUeXBpbmdTdHlsZSgqc3R5bGUsIGF0dHJpYnV0
ZXMuZ2V0KCkpOwotCi0gICAgaWYgKG5vZGVUb1JlbW92ZSkKLSAgICAgICAgbm9kZVRvUmVtb3Zl
LT5yZW1vdmUoKTsKLQotICAgIHJldHVybiBhdHRyaWJ1dGVzOworICAgIGlmIChhdXRvIGN0Rm9u
dCA9IHN0eWxlLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5nZXRDVEZvbnQoKSkKKyAgICAg
ICAgYXR0cmlidXRlcy5mb250ID0gKF9fYnJpZGdlIGlkKWN0Rm9udDsKIH0KIAogc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRy
aWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9Gb250QXR0cmlidXRlc0NvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxMjJhYmI4
MzRiMjhjNzJmYjcyOTBkOTc2MDRhMjE5NGNmNjgzNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRBdHRyaWJ1dGVzQ29jb2EubW0KQEAgLTAsMCAr
MSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRm9udEF0
dHJpYnV0ZXMuaCIKKworI2ltcG9ydCAiQ29sb3JDb2NvYS5oIgorI2ltcG9ydCA8d3RmL1NvZnRM
aW5raW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmV0YWluUHRyPE5TRGljdGlvbmFy
eT4gRm9udEF0dHJpYnV0ZXM6OmNyZWF0ZURpY3Rpb25hcnkoKSBjb25zdAoreworICAgIE5TTXV0
YWJsZURpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9u
YXJ5XTsKKyAgICBpZiAoZm9udCkKKyAgICAgICAgYXR0cmlidXRlc1tOU0ZvbnRBdHRyaWJ1dGVO
YW1lXSA9IGZvbnQuZ2V0KCk7CisKKyAgICBpZiAoZm9yZWdyb3VuZENvbG9yLmlzVmFsaWQoKSkK
KyAgICAgICAgYXR0cmlidXRlc1tOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdID0gcGxh
dGZvcm1Db2xvcihmb3JlZ3JvdW5kQ29sb3IpOworCisgICAgaWYgKGJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkpCisgICAgICAgIGF0dHJpYnV0ZXNbTlNCYWNrZ3JvdW5kQ29sb3JBdHRyaWJ1dGVO
YW1lXSA9IHBsYXRmb3JtQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKKworICAgIGlmIChmb250U2hh
ZG93LmNvbG9yLmlzVmFsaWQoKSAmJiAoIWZvbnRTaGFkb3cub2Zmc2V0LmlzRW1wdHkoKSB8fCBm
b250U2hhZG93LmJsdXJSYWRpdXMpKSB7CisgICAgICAgIGF1dG8gc2hhZG93ID0gZm9udFNoYWRv
dy5jcmVhdGVTaGFkb3coKTsKKyAgICAgICAgYXR0cmlidXRlc1tOU1NoYWRvd0F0dHJpYnV0ZU5h
bWVdID0gc2hhZG93LmdldCgpOworICAgIH0KKworICAgIGlmIChzdWJzY3JpcHRPclN1cGVyc2Ny
aXB0ID09IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1YnNjcmlwdCkKKyAgICAgICAgYXR0cmli
dXRlc1tOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV0gPSBAKC0xKTsKKyAgICBlbHNlIGlmIChz
dWJzY3JpcHRPclN1cGVyc2NyaXB0ID09IFN1YnNjcmlwdE9yU3VwZXJzY3JpcHQ6OlN1cGVyc2Ny
aXB0KQorICAgICAgICBhdHRyaWJ1dGVzW05TU3VwZXJzY3JpcHRBdHRyaWJ1dGVOYW1lXSA9IEAx
OworCisgICAgaWYgKGhhc1VuZGVybGluZSkKKyAgICAgICAgYXR0cmlidXRlc1tOU1VuZGVybGlu
ZVN0eWxlQXR0cmlidXRlTmFtZV0gPSBAKE5TVW5kZXJsaW5lU3R5bGVTaW5nbGUpOworCisgICAg
aWYgKGhhc1N0cmlrZVRocm91Z2gpCisgICAgICAgIGF0dHJpYnV0ZXNbTlNTdHJpa2V0aHJvdWdo
U3R5bGVBdHRyaWJ1dGVOYW1lXSA9IEAoTlNVbmRlcmxpbmVTdHlsZVNpbmdsZSk7CisKKyAgICBy
ZXR1cm4gYXR0cmlidXRlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0ZvbnRTaGFkb3dDb2NvYS5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
NTRhZmM5YjhhYWE2MTY2YTlmZTJiZGYzMDAxNWJmMWU2ODk2ZDMyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9Gb250U2hhZG93Q29jb2EubW0KQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiRm9u
dFNoYWRvdy5oIgorCisjaW1wb3J0ICJDb2xvckNvY29hLmgiCisjaW1wb3J0ICJDb2xvck1hYy5o
IgorCisjaWYgUExBVEZPUk0oSU9TKQorU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFdl
YkNvcmUsIFVJS2l0KQorU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgVUlLaXQs
IE5TU2hhZG93KQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmV0YWluUHRyPE5T
U2hhZG93PiBGb250U2hhZG93OjpjcmVhdGVTaGFkb3coKSBjb25zdAoreworI2lmIFVTRShBUFBL
SVQpCisgICAgYXV0byBzaGFkb3cgPSBhZG9wdE5TKFtOU1NoYWRvdyBuZXddKTsKKyNlbGlmIFBM
QVRGT1JNKElPUykKKyAgICBhdXRvIHNoYWRvdyA9IGFkb3B0TlMoW2dldF9VSUtpdF9OU1NoYWRv
d0NsYXNzKCkgbmV3XSk7CisjZW5kaWYKKyAgICBbc2hhZG93IHNldFNoYWRvd0NvbG9yOnBsYXRm
b3JtQ29sb3IoY29sb3IpXTsKKyAgICBbc2hhZG93IHNldFNoYWRvd09mZnNldDpvZmZzZXRdOwor
ICAgIFtzaGFkb3cgc2V0U2hhZG93Qmx1clJhZGl1czpibHVyUmFkaXVzXTsKKyAgICByZXR1cm4g
c2hhZG93OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0KaW5kZXggYTNkZDY5ZWU2YWViYTkwODM1MTg5ZTNiMjc2Mjk4MWViNzMzYjQyMS4u
NzY3ZWU4ZGMxY2UwZDQ3MDc1ZTg5NWUwYzQ5NzIxYzE5YjM1MTk4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMzIsNiArMzIsNyBAQAog
I2ltcG9ydCAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCiAj
aW1wb3J0ICJDaGFyYWN0ZXJEYXRhLmgiCisjaW1wb3J0ICJDb2xvckNvY29hLmgiCiAjaW1wb3J0
ICJDb2xvck1hYy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQgIkRvY3VtZW50TG9h
ZGVyLmgiCkBAIC0yMDUsNyArMjA2LDYgQEAgdHlwZWRlZiBOU1VJbnRlZ2VyIE5TVGV4dFRhYlR5
cGU7CiBAaW50ZXJmYWNlIFVJQ29sb3IgOiBOU09iamVjdAogKyAoVUlDb2xvciAqKWNsZWFyQ29s
b3I7CiAtIChDR0Zsb2F0KWFscGhhQ29tcG9uZW50OwotKyAoVUlDb2xvciAqKV9kaXNhbWJpZ3Vh
dGVkX2R1ZV90b19DSUltYWdlX2NvbG9yV2l0aENHQ29sb3I6KENHQ29sb3JSZWYpY2dDb2xvcjsK
IEBlbmQKIAogQGludGVyZmFjZSBOU0NvbG9yIDogVUlDb2xvcgpAQCAtODYzLDE2ICs4NjMsNiBA
QCBzdGF0aWMgTlNCdW5kbGUgKl93ZWJLaXRCdW5kbGUoKQogICAgICAgICBidW5kbGUgPSBbTlNC
dW5kbGUgYnVuZGxlV2l0aFBhdGg6W19OU1N5c3RlbUxpYnJhcnlQYXRoKCkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiRnJhbWV3b3Jrcy9XZWJLaXQuZnJhbWV3b3JrIl1dOwogICAg
IHJldHVybiBidW5kbGU7CiB9Ci0KLXN0YXRpYyBpbmxpbmUgVUlDb2xvciAqX3BsYXRmb3JtQ29s
b3IoQ29sb3IgY29sb3IpCi17Ci0gICAgcmV0dXJuIFtnZXRVSUNvbG9yQ2xhc3MoKSBfZGlzYW1i
aWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3IoY29s
b3IpXTsKLX0KLSNlbHNlCi1zdGF0aWMgaW5saW5lIE5TQ29sb3IgKl9wbGF0Zm9ybUNvbG9yKENv
bG9yIGNvbG9yKQotewotICAgIHJldHVybiBuc0NvbG9yKGNvbG9yKTsKLX0KICNlbmRpZgogCiBz
dGF0aWMgaW5saW5lIE5TU2hhZG93ICpfc2hhZG93Rm9yU2hhZG93U3R5bGUoTlNTdHJpbmcgKnNo
YWRvd1N0eWxlKQpAQCAtMTAyMCw3ICsxMDEwLDcgQEAgUGxhdGZvcm1Db2xvciAqSFRNTENvbnZl
cnRlcjo6X2NvbG9yRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHAK
ICAgICBDb2xvciByZXN1bHQgPSBfY2FjaGVzLT5jb2xvclByb3BlcnR5VmFsdWVGb3JOb2RlKGVs
ZW1lbnQsIHByb3BlcnR5SWQpOwogICAgIGlmICghcmVzdWx0LmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICBQbGF0Zm9ybUNvbG9yICpwbGF0Zm9ybVJlc3VsdCA9IF9wbGF0Zm9y
bUNvbG9yKHJlc3VsdCk7CisgICAgUGxhdGZvcm1Db2xvciAqcGxhdGZvcm1SZXN1bHQgPSBwbGF0
Zm9ybUNvbG9yKHJlc3VsdCk7CiAgICAgaWYgKFtbUGxhdGZvcm1Db2xvckNsYXNzIGNsZWFyQ29s
b3JdIGlzRXF1YWw6cGxhdGZvcm1SZXN1bHRdIHx8IChbcGxhdGZvcm1SZXN1bHQgYWxwaGFDb21w
b25lbnRdID09IDAuMCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIHBsYXRmb3Jt
UmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvQ29sb3JDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
Q29sb3JDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMTY0YmMwYmNiNWRhY2VjNWIzMDU4NWI0MjQwMzEz
NWIzY2Q2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Db2xvckNvY29hLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCitPQkpDX0NMQVNTIE5TQ29sb3I7CitPQkpDX0NMQVNTIFVJQ29sb3I7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29sb3I7CisKKyNpZiBVU0UoQVBQS0lUKQor
TlNDb2xvciAqcGxhdGZvcm1Db2xvcihjb25zdCBDb2xvciYpOworI2VuZGlmCisKKyNpZiBQTEFU
Rk9STShJT1MpCitVSUNvbG9yICpwbGF0Zm9ybUNvbG9yKGNvbnN0IENvbG9yJik7CisjZW5kaWYK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvQ29sb3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI2MTQ3OTFiZjll
ZjQ2MzBiZDA1NTUxZWYwNTE0ZDI2YWNiZWI1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0NvbG9yQ29jb2EubW0KQEAgLTAsMCArMSw1
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ29sb3JDb2Nv
YS5oIgorCisjaW1wb3J0ICJDb2xvck1hYy5oIgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+
CisKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgor
CitTT0ZUX0xJTktfRlJBTUVXT1JLX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgVUlLaXQpCitTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRShXZWJDb3JlLCBVSUtpdCwgVUlDb2xvcikKKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQVBQS0lUKQorCitOU0NvbG9yICpwbGF0Zm9y
bUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gbnNDb2xvcihjb2xvcik7
Cit9CisKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TKQorCitVSUNvbG9yICpwbGF0Zm9ybUNv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gW2dldF9VSUtpdF9VSUNvbG9y
Q2xhc3MoKSBfZGlzYW1iaWd1YXRlZF9kdWVfdG9fQ0lJbWFnZV9jb2xvcldpdGhDR0NvbG9yOmNh
Y2hlZENHQ29sb3IoY29sb3IpXTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21ldGFsL0dQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tZXRhbC9HUFVSZW5kZXJQYXNzRGVzY3JpcHRvck1ldGFsLm1tCmluZGV4IDMzNTY2
YWNmYWU1MzY3ZjMxOTdjNzkzZmZhYWUzNjFkMzliOWQ4NTQuLmI3YWUxOGJmMTY2ZGRhZDE4NTJh
ODdjOThiMDE0OGI4MzA0ODA2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21ldGFsL0dQVVJlbmRlclBhc3NEZXNjcmlwdG9yTWV0YWwubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWV0YWwvR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3JNZXRhbC5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiR1BVUmVuZGVyUGFzc0RlcHRo
QXR0YWNobWVudERlc2NyaXB0b3IuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgPE1l
dGFsL01ldGFsLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU0Zv
bnRNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVO
U0ZvbnRNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IDI2MDQ3YWI5Yjk5NmRkZjcyZGYzNGYxMmExMGY0
MzY1NTRkNzM4YmQuLjlmN2Q3ZGQ5ODJlM2IwODgzNWJlMmI4MzczZWM4YmU1N2UzYzZlNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNGb250TWFuYWdl
ckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TRm9u
dE1hbmFnZXJFeHRyYXMubW0KQEAgLTEzNiw4ICsxMzYsOCBAQCBGb250QXR0cmlidXRlQ2hhbmdl
cyBjb21wdXRlZEZvbnRBdHRyaWJ1dGVDaGFuZ2VzKE5TRm9udE1hbmFnZXIgKmZvbnRNYW5hZ2Vy
LCBpZAogCiAgICAgTlNTaGFkb3cgKmNvbnZlcnRlZFNoYWRvdyA9IFtjb252ZXJ0ZWRBdHRyaWJ1
dGVzQSBvYmplY3RGb3JLZXk6TlNTaGFkb3dBdHRyaWJ1dGVOYW1lXTsKICAgICBpZiAoY29udmVy
dGVkU2hhZG93KSB7Ci0gICAgICAgIGF1dG8gb2Zmc2V0ID0gY29udmVydGVkU2hhZG93LnNoYWRv
d09mZnNldDsKLSAgICAgICAgY2hhbmdlcy5zZXRTaGFkb3coeyBjb2xvckZyb21OU0NvbG9yKGNv
bnZlcnRlZFNoYWRvdy5zaGFkb3dDb2xvciA/OiBOU0NvbG9yLmJsYWNrQ29sb3IpLCBvZmZzZXQu
d2lkdGgsIG9mZnNldC5oZWlnaHQsIGNvbnZlcnRlZFNoYWRvdy5zaGFkb3dCbHVyUmFkaXVzIH0p
OworICAgICAgICBGbG9hdFNpemUgb2Zmc2V0IHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbnZlcnRl
ZFNoYWRvdy5zaGFkb3dPZmZzZXQud2lkdGgpLCBzdGF0aWNfY2FzdDxmbG9hdD4oY29udmVydGVk
U2hhZG93LnNoYWRvd09mZnNldC5oZWlnaHQpIH07CisgICAgICAgIGNoYW5nZXMuc2V0U2hhZG93
KHsgY29sb3JGcm9tTlNDb2xvcihjb252ZXJ0ZWRTaGFkb3cuc2hhZG93Q29sb3IgPzogTlNDb2xv
ci5ibGFja0NvbG9yKSwgb2Zmc2V0LCBjb252ZXJ0ZWRTaGFkb3cuc2hhZG93Qmx1clJhZGl1cyB9
KTsKICAgICB9IGVsc2UgaWYgKCFbY29udmVydGVkQXR0cmlidXRlc0Igb2JqZWN0Rm9yS2V5Ok5T
U2hhZG93QXR0cmlidXRlTmFtZV0pCiAgICAgICAgIGNoYW5nZXMuc2V0U2hhZG93KHsgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgKaW5kZXgg
ZjY2Y2VhNjM5NDQ2ZmRiZmM0ZTc4Y2M2MzVhNzFmOGIyZDczNWI5OS4uZDc3YWZiMjY2ZmI5NGIw
NjlhYjUyZDgwY2ZjOTc1YzJiMGZlNzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1JlYWx0aW1lSW5j
b21pbmdWaWRlb1NvdXJjZUNvY29hLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCIKIAogdXNpbmcgQ01TYW1wbGVCdWZmZXJSZWYgPSBz
dHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIqOwordXNpbmcgQ1ZQaXhlbEJ1ZmZlclBvb2xSZWYg
PSBzdHJ1Y3QgX19DVlBpeGVsQnVmZmVyUG9vbCo7CiB1c2luZyBDVlBpeGVsQnVmZmVyUmVmID0g
c3RydWN0IF9fQ1ZCdWZmZXIqOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvUmVhbHRpbWVJbmNvbWluZ1Zp
ZGVvU291cmNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EubW0KaW5kZXggMWJiNWZhNjBhZjIx
NmMyMjAxNGJhYzdkMDUxZDUxMDNkMmQ3N2NiMC4uNWYzZDY4MGE0MTQ5MGQ5ZGU3YmVmMWE3ODJk
M2UzZDViYWQyOGNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1JlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9SZWFsdGltZUluY29taW5nVmlkZW9T
b3VyY2VDb2NvYS5tbQpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2luY2x1ZGUgIlJlYWx0aW1lVmlkZW9V
dGlsaXRpZXMuaCIKICNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KIAogQUxM
T1dfVU5VU0VEX1BBUkFNRVRFUlNfQkVHSU4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDI2NGI4YjBjOTIxMGU0YjI0ZGU4NGNhN2Y0Yjky
NzU5NmExYTljMzIuLmMwZmExNDRmMjExYmEwNjcwZjhiMjY4ZGU1YWYyNDJhZTFkY2JhMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAt
OTYsNiArOTYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRm9udC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlQ2hhbmdl
cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRnJhbWVMb2FkZXIuaD4KQEAgLTUwNTcsNyArNTA1OCw3IEBAIHN0YXRpYyBSZWZQdHI8S2V5
Ym9hcmRFdmVudD4gY3VycmVudEtleWJvYXJkRXZlbnQoRnJhbWUqIGNvcmVGcmFtZSkKIHsKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBhdXRvIHN0cmlu
ZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAi
eCIKLSAgICAgICAgYXR0cmlidXRlczpjb3JlRnJhbWUgPyBjb3JlRnJhbWUtPmVkaXRvcigpLmZv
bnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKS5nZXQoKSA6IG5pbF0pOworICAgICAgICBh
dHRyaWJ1dGVzOmNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+ZWRpdG9yKCkuZm9udEF0dHJpYnV0ZXNB
dFNlbGVjdGlvblN0YXJ0KCkuY3JlYXRlRGljdGlvbmFyeSgpLmdldCgpIDogbmlsXSk7CiAgICAg
cmV0dXJuIFtzdHJpbmcgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFtzdHJpbmcgbGVuZ3Ro
XSkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7IH1dOwogfQogCkBAIC01NzA0LDcgKzU3MDUsNyBAQCBz
dGF0aWMgQk9PTCB3cml0aW5nRGlyZWN0aW9uS2V5QmluZGluZ3NFbmFibGVkKCkKICAgICBpZiAo
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpIHsKICAgICAgICAgaWYgKGNv
bnN0IEZvbnQqIGZkID0gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250Rm9yU2VsZWN0aW9uKG11bHRp
cGxlRm9udHMpKQogICAgICAgICAgICAgZm9udCA9IChOU0ZvbnQgKilmZC0+cGxhdGZvcm1EYXRh
KCkucmVnaXN0ZXJlZEZvbnQoKTsKLSAgICAgICAgYXR0cmlidXRlcyA9IGNvcmVGcmFtZS0+ZWRp
dG9yKCkuZm9udEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCgpOworICAgICAgICBhdHRyaWJ1
dGVzID0gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQo
KS5jcmVhdGVEaWN0aW9uYXJ5KCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IGZvciBub3csIHJl
dHVybiBhIGJvZ3VzIGZvbnQgdGhhdCBkaXN0aW5ndWlzaGVzIHRoZSBlbXB0eSBzZWxlY3Rpb24g
ZnJvbSB0aGUgbm9uLWVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KaW5kZXggZmYxNTEyZmYwZjhjNWUzYjk1MzVkZTk1ZjYyN2MyNzcxMTkwYzJhNC4uNDY3
YzBlM2RjYmI4MWEwM2VkNmU0YWJlYmZlODI5NmExNjc4Mzc3MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTQ0LDYgKzE0NCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9G
b250QXR0cmlidXRlcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KQEAgLTg2
MjMsOSArODYyNCw4IEBAIEZPUldBUkQodG9nZ2xlVW5kZXJsaW5lKQogCiAtIChOU0RpY3Rpb25h
cnkgKil0eXBpbmdBdHRyaWJ1dGVzCiB7Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3Nl
bGYgX3NlbGVjdGVkT3JNYWluRnJhbWVdKTsKLSAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICBy
ZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS5mb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0YXJ0
KCkuYXV0b3JlbGVhc2UoKTsKKyAgICBpZiAoYXV0byogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
c2VsZWN0ZWRPck1haW5GcmFtZV0pKQorICAgICAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3Io
KS5mb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKS5jcmVhdGVEaWN0aW9uYXJ5KCkuYXV0
b3JlbGVhc2UoKTsKICAgICAKICAgICByZXR1cm4gbmlsOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>