<?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>48234</bug_id>
          
          <creation_ts>2010-10-25 06:35:06 -0700</creation_ts>
          <short_desc>Size of text in popup menu doesn&apos;t match size of text in &lt;select&gt; itself in WebKit2</short_desc>
          <delta_ts>2011-02-28 11:19:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>data:text/html,%3Cselect%20style=%22font-size:5px%22%3E%3Coption%3Ea%3Coption%3Eb</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="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>298817</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-25 06:35:06 -0700</bug_when>
    <thetext>To reproduce:

1. Go to data:text/html,%3Cselect%20style=%22font-size:5px%22%3E%3Coption%3Ea%3Coption%3Eb
2. Click on the &lt;select&gt;

The menu that opens has text that is larger than the text in the &lt;select&gt; in the page. The font sizes are supposed to match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298818</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-10-25 06:35:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/8589450&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358627</commentid>
    <comment_count>2</comment_count>
      <attachid>83960</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-02-26 19:36:53 -0800</bug_when>
    <thetext>Created attachment 83960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358631</commentid>
    <comment_count>3</comment_count>
      <attachid>83960</attachid>
    <who name="">mitz</who>
    <bug_when>2011-02-26 20:01:08 -0800</bug_when>
    <thetext>Comment on attachment 83960
Patch

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

&gt; Source/WebKit2/ChangeLog:6
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=48234

&lt;rdar://problem/8589450&gt;

&gt; Source/WebKit2/ChangeLog:13
&gt; +        Add class to encapsulate passing a font description over the wire.

Why isn’t it called FontDescription, then?

&gt; Source/WebKit2/Shared/PlatformPopupMenuData.cpp:32
&gt; +    

Whitespace

&gt; Source/WebKit2/Shared/PlatformPopupMenuData.h:39
&gt; +    

Here too

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:33
&gt;  #include &quot;DrawingAreaProxy.h&quot;
&gt; +#include &quot;DictionaryPopupInfo.h&quot;

Not in ASCII order.

&gt; Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.h:53
&gt; +    void populate(const Vector&lt;WebPopupItem&gt;&amp;, NSFont*, WebCore::TextDirection);

Missing space after “NSFont”

&gt; Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.mm:51
&gt; +void WebPopupMenuProxyMac::populate(const Vector&lt;WebPopupItem&gt;&amp; items, NSFont* font, TextDirection menuTextDirection)

Ditto. Also extra space before “font”.

&gt; Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.mm:94
&gt; +    NSFont *font = nil;

No need to initialize this to nil.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358653</commentid>
    <comment_count>4</comment_count>
      <attachid>83960</attachid>
    <who name="">mitz</who>
    <bug_when>2011-02-27 00:06:40 -0800</bug_when>
    <thetext>Comment on attachment 83960
Patch

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

r- since this breaks Qt and Windows. But please also consider my previous comments and the next one.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/mac/WebPopupMenuMac.mm:53
&gt; +    data.fontInfo.fontAttributeDictionary = fontDescriptorAttributes;
&gt; +    data.fontInfo.fontOverrideSize = frame-&gt;pageScaleFactor() == 1 ? 0 : ([[font fontDescriptor] pointSize] * frame-&gt;pageScaleFactor());

The “override” concept seems unnecessarily cumbersome. Why not simply make a mutable copy of the dictionary and change the font size attribute? Alternatively, since the UI process knows the page scale factor, why not leave this multiplication exercise up to it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358727</commentid>
    <comment_count>5</comment_count>
      <attachid>83980</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-02-27 10:42:33 -0800</bug_when>
    <thetext>Created attachment 83980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358743</commentid>
    <comment_count>6</comment_count>
      <attachid>83983</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-02-27 11:45:59 -0800</bug_when>
    <thetext>Created attachment 83983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358746</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-02-27 12:27:28 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=83983) [details]
&gt; Patch

This patch addresses many of the review comments but does not change FontInfo to be named FontDescription because that led to a name clash with WebCore that was confusing the message generator and does not remove the overrideSize concept, since that existed prior to this patch (for the dictionary lookup stuff) and I can change them both in a follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359162</commentid>
    <comment_count>8</comment_count>
      <attachid>84081</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-02-28 10:38:53 -0800</bug_when>
    <thetext>Created attachment 84081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359171</commentid>
    <comment_count>9</comment_count>
      <attachid>84081</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-02-28 10:53:04 -0800</bug_when>
    <thetext>Comment on attachment 84081
Patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        * Shared/TextInfo.cpp: Removed.
&gt; +        * Shared/TextInfo.h: Removed.
&gt; +        Replace this with the more appropriately DictionaryPopupInfo.

I am not a big fan of the “info” suffix. Not sure what it means, since data is info and most classes have data.

&gt; Source/WebKit2/Shared/DictionaryPopupInfo.h:43
&gt; -class TextInfo {
&gt; +class DictionaryPopupInfo {
&gt;  public:
&gt; -    TextInfo() { }
&gt; +    DictionaryPopupInfo()
&gt; +    {
&gt; +    }

Normally we use struct when we have something with all public data members.

The explicit constructor isn’t needed. The compiler does this by default unless you tell it not to. It is valid to do this if you want to make the constructor private or protected, but that is not the case here.

&gt; Source/WebKit2/Shared/FontInfo.cpp:39
&gt; +#if PLATFORM(MAC)
&gt; +#endif

What is this about? Please remove it.

&gt; Source/WebKit2/UIProcess/mac/WebPopupMenuProxyMac.mm:97
&gt; +        NSFontDescriptor *fontDescriptor = [NSFontDescriptor fontDescriptorWithFontAttributes:(NSDictionary *)data.fontInfo.fontAttributeDictionary.get()];
&gt; +        font = [NSFont fontWithDescriptor:fontDescriptor size:((scaleFactor != 1) ? [fontDescriptor pointSize] * scaleFactor : 0)];

Can we share this code with PageClientImpl.mm?

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:305
&gt; +    FloatPoint origin(finalRangeRect.x(), finalRangeRect.y());

I don’t think we need a local variable for this. Can’t we just do this in the assignment statement?

    dictionaryPopupInfo.origin = finalRangeRect.location();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359188</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-02-28 11:19:14 -0800</bug_when>
    <thetext>Landed in 79886.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83960</attachid>
            <date>2011-02-26 19:36:53 -0800</date>
            <delta_ts>2011-02-27 10:42:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48234-20110226193652.patch</filename>
            <type>text/plain</type>
            <size>52183</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5ODE0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTEtMDItMjYgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaXplIG9mIHRleHQgaW4gcG9wdXAgbWVudSBkb2Vzbid0IG1hdGNoIHNp
emUgb2YgdGV4dCBpbiA8c2VsZWN0PiBpdHNlbGYgaW4gV2ViS2l0MgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyMzQKKworICAgICAgICAqIFNoYXJl
ZC9Gb250SW5mby5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpGb250SW5mbzo6Rm9udElu
Zm8pOgorICAgICAgICAoV2ViS2l0OjpGb250SW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6Rm9udEluZm86OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0ZvbnRJbmZvLmg6IEFkZGVk
LgorICAgICAgICBBZGQgY2xhc3MgdG8gZW5jYXBzdWxhdGUgcGFzc2luZyBhIGZvbnQgZGVzY3Jp
cHRpb24gb3ZlciB0aGUgd2lyZS4KKworICAgICAgICAqIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVu
dURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGE6OmVuY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmg6CisgICAgICAgIEFkZCBGb250
SW5mbyBhcyBleHRyYSBkYXRhIGZvciB0aGUgTWFjLgorCisgICAgICAgICogU2hhcmVkL1RleHRJ
bmZvLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvVGV4dEluZm8uaDogUmVtb3ZlZC4K
KyAgICAgICAgUmVwbGFjZSB0aGlzIHdpdGggdGhlIG1vcmUgYXBwcm9wcmlhdGVseSBEaWN0aW9u
YXJ5UG9wdXBJbmZvLgorCisgICAgICAgICogU2hhcmVkL21hYy9EaWN0aW9uYXJ5UG9wdXBJbmZv
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmZvLmNwcC4KKyAg
ICAgICAgKFdlYktpdDo6RGljdGlvbmFyeVBvcHVwSW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6RGljdGlvbmFyeVBvcHVwSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvbWFj
L0RpY3Rpb25hcnlQb3B1cEluZm8uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVk
L1RleHRJbmZvLmguCisgICAgICAgIChXZWJLaXQ6OkRpY3Rpb25hcnlQb3B1cEluZm86OkRpY3Rp
b25hcnlQb3B1cEluZm8pOgorICAgICAgICBSZXBsYWNlIGluZGl2aWR1YWwgZm9udCByZWxhdGVk
IGZpZWxkcyB3aXRoIEZvbnRJbmZvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFn
ZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbik6
CisgICAgICAgIFJlbmFtZSBUZXh0SW5mbyAtPiBEaWN0aW9uYXJ5UG9wdXBJbmZvLgorCisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVw
TWVudVByb3h5TWFjOjpzaG93UG9wdXBNZW51KToKKyAgICAgICAgVXNlIEZvbnRJbmZvIHRvIGNv
bnN0cnVjdCBhIEZvbnQgYW5kIHVzZSBpdCBmb3IgdGhlIHBvcHVwIG1lbnUuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQb3B1cE1lbnUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJQb3B1cE1lbnVHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1l
bnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJQb3B1cE1lbnVNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dTo6c2V0VXBQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6
OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6
OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgQWRkIEZyYW1lVmlldyogcGFyYW1ldGVyIHRv
IHNldFVwUGxhdGZvcm1EYXRhIHRvIGdldCB0aGUgY3VycmVudCBzY2FsZSBmYWN0b3IuCisKKyAg
ICAgICAgKiBXZWJLaXQyLnBybzoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDExLTAyLTI2ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA3OTgxMikKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL0NoaWxkUHJvY2Vzcy5oIFwKICAgICBTaGFy
ZWQvQ29yZUlQQ1N1cHBvcnQvRHJhd2luZ0FyZWFNZXNzYWdlS2luZHMuaCBcCiAgICAgU2hhcmVk
L0NvcmVJUENTdXBwb3J0L0RyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCBcCisgICAgU2hh
cmVkL0ZvbnRJbmZvLmggXAogICAgIFNoYXJlZC9JbWFnZU9wdGlvbnMuaCBcCiAgICAgU2hhcmVk
L0ltbXV0YWJsZUFycmF5LmggXAogICAgIFNoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmggXApA
QCAtMTE4LDcgKzExOSw2IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9TZWN1cml0eU9yaWdp
bkRhdGEuaCBcCiAgICAgU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIFwKICAgICBTaGFyZWQvU3RyaW5n
UGFpclZlY3Rvci5oIFwKLSAgICBTaGFyZWQvVGV4dEluZm8uaCBcCiAgICAgU2hhcmVkL1VzZXJN
ZXNzYWdlQ29kZXJzLmggXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmggXAogICAgIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBcCkBAIC0yODQsNiArMjg0LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9k
dWxlWDExLmNwcCBcCiAgICAgU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgXAogICAgIFNoYXJl
ZC9DaGlsZFByb2Nlc3MuY3BwIFwKKyAgICBTaGFyZWQvRm9udEluZm8uY3BwIFwKICAgICBTaGFy
ZWQvSW1tdXRhYmxlQXJyYXkuY3BwIFwKICAgICBTaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5j
cHAgXAogICAgIFNoYXJlZC9NdXRhYmxlQXJyYXkuY3BwIFwKQEAgLTI5Myw3ICsyOTQsNiBAQCBT
T1VSQ0VTICs9IFwKICAgICBTaGFyZWQvUHJpbnRJbmZvLmNwcCBcCiAgICAgU2hhcmVkL1NlY3Vy
aXR5T3JpZ2luRGF0YS5jcHAgXAogICAgIFNoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIFwKLSAgICBT
aGFyZWQvVGV4dEluZm8uY3BwIFwKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAgXAog
ICAgIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAgICAgU2hhcmVkL1dlYkNv
bnRleHRNZW51SXRlbS5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZv
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRm9udEluZm8uY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJGb250SW5mby5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitGb250SW5mbzo6Rm9udEluZm8oKQorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICA6IGZvbnRPdmVycmlkZVNpemUoMCkKKyNlbmRpZgoreworfQor
Cit2b2lkIEZvbnRJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
KSBjb25zdAoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rl
ciwgZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkuZ2V0KCkpOworICAgIGVuY29kZXItPmVuY29kZShm
b250T3ZlcnJpZGVTaXplKTsKKyNlbmRpZgorfQorCitib29sIEZvbnRJbmZvOjpkZWNvZGUoQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBGb250SW5mbyYgZm9udEluZm8pCit7ICAg
IAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIUNvcmVJUEM6OmRlY29kZShkZWNvZGVyLCBm
b250SW5mby5mb250QXR0cmlidXRlRGljdGlvbmFyeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWRlY29kZXItPmRlY29kZShmb250SW5mby5mb250T3ZlcnJpZGVTaXplKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRm9udEluZm8uaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRm9udEluZm9faAorI2Rl
ZmluZSBGb250SW5mb19oCisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1bWVu
dERlY29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKyAgICAKK3N0cnVjdCBGb250SW5mbyB7CisgICAgRm9udEluZm8oKTsKKyAgICAKKyAg
ICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKKyAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgRm9udEluZm8mKTsKKyAg
ICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZm9u
dEF0dHJpYnV0ZURpY3Rpb25hcnk7CisgICAgZG91YmxlIGZvbnRPdmVycmlkZVNpemU7CisjZW5k
aWYKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEZvbnRJbmZv
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURh
dGEuY3BwCShyZXZpc2lvbiA3OTgxMikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9y
bVBvcHVwTWVudURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotCisgICAg
CiBQbGF0Zm9ybVBvcHVwTWVudURhdGE6OlBsYXRmb3JtUG9wdXBNZW51RGF0YSgpCiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIDogbV9jbGllbnRQYWRkaW5nTGVmdCgwKQpAQCAtNjAsNDAgKzYwLDQz
IEBAIHZvaWQgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUoQ29yZUkKICAgICBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBzZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZTsKICAgICBtX3NlbGVjdGVk
QmFja2luZ1N0b3JlLT5jcmVhdGVIYW5kbGUoc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOwog
ICAgIGVuY29kZXItPmVuY29kZShzZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSk7CisjZWxpZiBQ
TEFURk9STShNQUMpCisgICAgZW5jb2Rlci0+ZW5jb2RlKGZvbnRJbmZvKTsKICNlbmRpZgogfQog
CiBib29sIFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhKQogewogI2lmIFBMQVRG
T1JNKFdJTikKLSAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEgZDsKLSAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShkLm1fY2xpZW50UGFkZGluZ0xlZnQpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGRhdGEubV9jbGllbnRQYWRkaW5nTGVmdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShkLm1fY2xpZW50UGFkZGluZ1JpZ2h0KSkKKyAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShkYXRhLm1fY2xpZW50UGFkZGluZ1JpZ2h0KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGQubV9jbGllbnRJbnNldExlZnQpKQor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubV9jbGllbnRJbnNldExlZnQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZC5tX2NsaWVudEluc2V0
UmlnaHQpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubV9jbGllbnRJbnNldFJpZ2h0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGQubV9w
b3B1cFdpZHRoKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShkYXRhLm1fcG9wdXBXaWR0aCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShkLm1faXRl
bUhlaWdodCkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGF0YS5tX2l0ZW1IZWlnaHQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZC5tX2JhY2tp
bmdTdG9yZVNpemUpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubV9iYWNraW5nU3Rv
cmVTaXplKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5k
bGUgbm90U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUobm90U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgZC5tX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGUoZC5tX2JhY2tpbmdTdG9yZVNpemUsIG5vdFNlbGVjdGVkQmFja2luZ1N0b3JlSGFuZGxlKTsK
KyAgICBkYXRhLm1fbm90U2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShkYXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgbm90U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5k
bGUpOwogCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5k
bGU7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZC5tX3NlbGVjdGVkQmFja2luZ1N0b3JlID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZC5tX2JhY2tpbmdTdG9yZVNpemUsIHNlbGVjdGVkQmFj
a2luZ1N0b3JlSGFuZGxlKTsKLQotICAgIGRhdGEgPSBkOworICAgIGRhdGEubV9zZWxlY3RlZEJh
Y2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRhdGEubV9iYWNraW5nU3RvcmVT
aXplLCBzZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSk7CisjZWxpZiBQTEFURk9STShNQUMpCisg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGF0YS5mb250SW5mbykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgorICAgIAogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oCShyZXZpc2lvbiA3OTgx
MikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQbGF0Zm9ybVBvcHVwTWVudURhdGFf
aAogI2RlZmluZSBQbGF0Zm9ybVBvcHVwTWVudURhdGFfaAogCisjaW5jbHVkZSAiRm9udEluZm8u
aCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtMzUsNyArMzYsNyBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewotCisgICAgCiBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHsK
ICAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEoKTsKICAgICAKQEAgLTUyLDYgKzUzLDggQEAgc3Ry
dWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSB7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2JhY2tp
bmdTdG9yZVNpemU7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9ub3RTZWxlY3RlZEJh
Y2tpbmdTdG9yZTsKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3NlbGVjdGVkQmFja2lu
Z1N0b3JlOworI2VsaWYgUExBVEZPUk0oTUFDKQorICAgIEZvbnRJbmZvIGZvbnRJbmZvOwogI2Vu
ZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVGV4dEluZm8uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5mby5jcHAJKHJldmlzaW9uIDc5
ODEyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmZvLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlRleHRJbmZvLmgiCi0KLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
LQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCi0jZW5k
aWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgVGV4dEluZm86OmVuY29kZShDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci0+ZW5jb2Rl
KGJhc2VsaW5lT3JpZ2luKTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgQ29yZUlQQzo6ZW5jb2Rl
KGVuY29kZXIsIGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgpKTsKLSAgICBlbmNvZGVyLT5l
bmNvZGUoZm9udE92ZXJyaWRlU2l6ZSk7Ci0jZW5kaWYKLX0KLQotYm9vbCBUZXh0SW5mbzo6ZGVj
b2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgVGV4dEluZm8mIHJlc3VsdCkK
LXsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuYmFzZWxpbmVPcmlnaW4pKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghQ29yZUlQQzo6
ZGVjb2RlKGRlY29kZXIsIHJlc3VsdC5mb250QXR0cmlidXRlRGljdGlvbmFyeSkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuZm9udE92ZXJy
aWRlU2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVl
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9UZXh0SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5m
by5oCShyZXZpc2lvbiA3OTgxMikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFRl
eHRJbmZvX2gKLSNkZWZpbmUgVGV4dEluZm9faAotCi0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBv
aW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1uYW1lc3BhY2UgQ29yZUlQQyB7
Ci0gICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOwotICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsK
LX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFRleHRJbmZvIHsKLXB1YmxpYzoKLSAg
ICBUZXh0SW5mbygpIHsgfQotCi0gICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNv
ZGVyKikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciosIFRleHRJbmZvJik7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGJhc2VsaW5lT3Jp
Z2luOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBm
b250QXR0cmlidXRlRGljdGlvbmFyeTsKLSAgICBkb3VibGUgZm9udE92ZXJyaWRlU2l6ZTsKLSNl
bmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBUZXh0SW5mb19o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0RpY3Rpb25hcnlQb3B1cEluZm8uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvRGljdGlvbmFyeVBvcHVw
SW5mby5jcHAJKHJldmlzaW9uIDc5ODEyKQkoZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVGV4
dEluZm8uY3BwOjc5ODEyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9EaWN0aW9uYXJ5
UG9wdXBJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHRJbmZvLmgiCisKKyNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRl
ICJBcmd1bWVudENvZGVyc0NGLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Zv
aWQgVGV4dEluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGJhc2VsaW5lT3JpZ2luKTsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGZvbnRBdHRyaWJ1dGVEaWN0aW9u
YXJ5LmdldCgpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoZm9udE92ZXJyaWRlU2l6ZSk7CisjZW5k
aWYKK30KKworYm9vbCBUZXh0SW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgVGV4dEluZm8mIHJlc3VsdCkKK3sKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShy
ZXN1bHQuYmFzZWxpbmVPcmlnaW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIGlmICghQ29yZUlQQzo6ZGVjb2RlKGRlY29kZXIsIHJlc3VsdC5mb250QXR0
cmlidXRlRGljdGlvbmFyeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShyZXN1bHQuZm9udE92ZXJyaWRlU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9EaWN0aW9uYXJ5UG9wdXBJ
bmZvLmNwcAkocmV2aXNpb24gNzk4MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Rp
Y3Rpb25hcnlQb3B1cEluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwzNSArMjQsMjQgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dEluZm8uaCIKKyNpbmNs
dWRlICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NG
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgVGV4dEluZm86OmVuY29k
ZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit2b2lkIERpY3Rpb25h
cnlQb3B1cEluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNv
bnN0CiB7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGJhc2VsaW5lT3JpZ2luKTsKLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGZvbnRBdHRyaWJ1dGVEaWN0aW9u
YXJ5LmdldCgpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoZm9udE92ZXJyaWRlU2l6ZSk7Ci0jZW5k
aWYKKyAgICBlbmNvZGVyLT5lbmNvZGUoZm9udEluZm8pOwogfQogCi1ib29sIFRleHRJbmZvOjpk
ZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUZXh0SW5mbyYgcmVzdWx0
KQorYm9vbCBEaWN0aW9uYXJ5UG9wdXBJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiBkZWNvZGVyLCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiByZXN1bHQpCiB7CiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocmVzdWx0LmJhc2VsaW5lT3JpZ2luKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIUNvcmVJUEM6OmRlY29kZShkZWNvZGVy
LCByZXN1bHQuZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LmZvbnRPdmVycmlkZVNpemUpKQorICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5mb250SW5mbykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0RpY3Rpb25hcnlQb3B1cEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL0RpY3Rpb25hcnlQb3B1cEluZm8uaAkocmV2aXNpb24gNzk4MTIp
CShmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5mby5oOjc5ODEyKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dEluZm9faAorI2RlZmlu
ZSBUZXh0SW5mb19oCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1
bWVudERlY29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgVGV4dEluZm8geworcHVibGljOgorICAgIFRleHRJbmZvKCkgeyB9
CisKKyAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKKyAg
ICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgVGV4dEluZm8m
KTsKKworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgYmFzZWxpbmVPcmlnaW47CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGZvbnRBdHRyaWJ1dGVEaWN0
aW9uYXJ5OworICAgIGRvdWJsZSBmb250T3ZlcnJpZGVTaXplOworI2VuZGlmCit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFRleHRJbmZvX2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvRGljdGlvbmFyeVBvcHVwSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvRGljdGlvbmFyeVBvcHVwSW5mby5oCShyZXZpc2lvbiA3
OTgxMikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvRGljdGlvbmFyeVBvcHVwSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFRleHRJbmZvX2gKLSNkZWZpbmUgVGV4dElu
Zm9faAorI2lmbmRlZiBEaWN0aW9uYXJ5UG9wdXBJbmZvX2gKKyNkZWZpbmUgRGljdGlvbmFyeVBv
cHVwSW5mb19oCiAKKyNpbmNsdWRlICJGb250SW5mby5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxv
YXRQb2ludC5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIENvcmVJ
UEMgewogICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKQEAgLTM2LDIwICszNiwxOSBAQCBuYW1l
c3BhY2UgQ29yZUlQQyB7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBUZXh0SW5mbyB7
CitjbGFzcyBEaWN0aW9uYXJ5UG9wdXBJbmZvIHsKIHB1YmxpYzoKLSAgICBUZXh0SW5mbygpIHsg
fQorICAgIERpY3Rpb25hcnlQb3B1cEluZm8oKQorICAgIHsKKyAgICB9CiAKICAgICB2b2lkIGVu
Y29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgVGV4dEluZm8mKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgRGljdGlvbmFyeVBvcHVwSW5m
byYpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBiYXNlbGluZU9yaWdpbjsKLSNpZiBQTEFU
Rk9STShNQUMpCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZm9udEF0dHJpYnV0ZURp
Y3Rpb25hcnk7Ci0gICAgZG91YmxlIGZvbnRPdmVycmlkZVNpemU7Ci0jZW5kaWYKKyAgICBGb250
SW5mbyBmb250SW5mbzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8g
VGV4dEluZm9faAorI2VuZGlmIC8vIERpY3Rpb25hcnlQb3B1cEluZm9faApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lvbiA3OTgxMikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCwxMCAr
MTI4LDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29tcGxleFRleHRJbnB1dEVuYWJsZWQodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElk
ZW50aWZpZXIsIGJvb2wgY29tcGxleFRleHRJbnB1dEVuYWJsZWQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0QXV0b2Rpc3BsYXkoYm9vbCkgPSAwOwotCiAgICAgdmlydHVhbCBDR0NvbnRleHRS
ZWYgY29udGFpbmluZ1dpbmRvd0dyYXBoaWNzQ29udGV4dCgpID0gMDsKLQotICAgIHZpcnR1YWwg
dm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0
SW5mbyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAo
Y29uc3QgU3RyaW5nJiwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpID0gMDsKICNlbmRpZgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoKSBjb25z
dCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gNzk4MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRp
Y2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeVBvcHVwSW5m
by5oIgogI2luY2x1ZGUgIkZpbmRJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJNZXNzYWdlSUQuaCIK
ICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCkBAIC0zOSw3ICs0MCw2IEBACiAj
aW5jbHVkZSAiU3RyaW5nUGFpclZlY3Rvci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAj
aW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgotI2luY2x1ZGUgIlRleHRJbmZvLmgiCiAjaW5j
bHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5o
IgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKQEAgLTI0NTAsOSArMjQ1MCw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlZFBhZ2VzQ2FsbGJhY2sKIH0KIAogI2lmIFBM
QVRGT1JNKE1BQykKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1
cChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFRleHRJbmZvJiB0ZXh0SW5mbykKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8pCiB7Ci0gICAg
bV9wYWdlQ2xpZW50LT5kaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cCh0ZXh0LCB0ZXh0SW5mbyk7
CisgICAgbV9wYWdlQ2xpZW50LT5kaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cCh0ZXh0LCBkaWN0
aW9uYXJ5UG9wdXBJbmZvKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3Rlcldl
YlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlz
aW9uIDc5ODEyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04MywxMiArODMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgRGljdGlvbmFyeVBvcHVwSW5mbzsKIGNsYXNzIERy
YXdpbmdBcmVhUHJveHk7CiBjbGFzcyBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgUGFn
ZUNsaWVudDsKIGNsYXNzIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgU3RyaW5nUGFp
clZlY3RvcjsKLWNsYXNzIFRleHRJbmZvOwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0OwogY2xh
c3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkNvbnRleHRNZW51UHJveHk7CkBA
IC01NDIsMTQgKzU0MiwxNCBAQCBwcml2YXRlOgogICAgIC8vIENvbnRleHQgTWVudS4KICAgICB2
b2lkIHNob3dDb250ZXh0TWVudShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9u
LCBjb25zdCBDb250ZXh0TWVudVN0YXRlJiwgY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bURhdGE+JiwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAKLSAgICAvLyBTcGVlY2guCiAj
aWYgUExBVEZPUk0oTUFDKQorICAgIC8vIFNwZWVjaC4KICAgICB2b2lkIGdldElzU3BlYWtpbmco
Ym9vbCYpOwogICAgIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdG9wU3Bl
YWtpbmcoKTsKIAogICAgIC8vIERpY3Rpb25hcnkuCi0gICAgdm9pZCBkaWRQZXJmb3JtRGljdGlv
bmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0SW5mbyYpOworICAgIHZvaWQgZGlk
UGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgU3RyaW5nJiwgY29uc3QgRGljdGlvbmFyeVBv
cHVwSW5mbyYpOwogI2VuZGlmCiAKICAgICAvLyBTcGVsbGluZyBhbmQgZ3JhbW1hci4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gNzk4MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAjIERpY3Rpb25h
cnkgc3VwcG9ydC4KLSAgICBEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChXVEY6OlN0cmluZyB0
ZXh0LCBXZWJLaXQ6OlRleHRJbmZvIHRleHRJbmZvKQorICAgIERpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKFdURjo6U3RyaW5nIHRleHQsIFdlYktpdDo6RGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0
aW9uYXJ5UG9wdXBJbmZvKQogCiAgICAgIyBLZXlib2FyZCBzdXBwb3J0IG1lc3NhZ2VzCiAgICAg
SW50ZXJwcmV0S2V5RXZlbnQodWludDMyX3QgdHlwZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpLZXlw
cmVzc0NvbW1hbmQ+IGNvbW1hbmROYW1lLCB1aW50MzJfdCBzZWxlY3Rpb25TdGFydCwgdWludDMy
X3Qgc2VsZWN0aW9uRW5kLCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVu
ZGVybGluZXMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDc5ODEyKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcg
KzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZmxhc2hCYWNraW5nU3RvcmVV
cGRhdGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgdXBkYXRlUmVjdHMpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFRleHRJbmZvJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKGNvbnN0IFN0cmluZyYsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKTsKIAogICAg
IFdLVmlldyogbV93a1ZpZXc7CiAgICAgUmV0YWluUHRyPFdlYkVkaXRvclVuZG9UYXJnZXRPYmpD
PiBtX3VuZG9UYXJnZXQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gNzk4MTIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjcsOSArMjcsOSBAQAogI2ltcG9ydCAiUGFnZUNsaWVudEltcGwuaCIKIAogI2ltcG9ydCAi
RGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9y
dCAiRmluZEluZGljYXRvci5oIgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgot
I2ltcG9ydCAiVGV4dEluZm8uaCIKICNpbXBvcnQgIldLQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tT
dHJpbmdDRi5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKQEAgLTQxMywxNSArNDEzLDE1
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmZsYXNoQmFja2luZ1N0b3JlVXAKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRGljdGlvbmFy
eUxvb2t1cChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFRleHRJbmZvJiB0ZXh0SW5mbykKK3Zv
aWQgUGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykK
IHsKLSAgICBOU0ZvbnREZXNjcmlwdG9yICpmb250RGVzY3JpcHRvciA9IFtOU0ZvbnREZXNjcmlw
dG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKil0ZXh0
SW5mby5mb250QXR0cmlidXRlRGljdGlvbmFyeS5nZXQoKV07Ci0gICAgTlNGb250ICpmb250ID0g
W05TRm9udCBmb250V2l0aERlc2NyaXB0b3I6Zm9udERlc2NyaXB0b3Igc2l6ZTp0ZXh0SW5mby5m
b250T3ZlcnJpZGVTaXplXTsKKyAgICBOU0ZvbnREZXNjcmlwdG9yICpmb250RGVzY3JpcHRvciA9
IFtOU0ZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOihOU0Rp
Y3Rpb25hcnkgKilkaWN0aW9uYXJ5UG9wdXBJbmZvLmZvbnRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0
aW9uYXJ5LmdldCgpXTsKKyAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZvbnRXaXRoRGVzY3Jp
cHRvcjpmb250RGVzY3JpcHRvciBzaXplOmRpY3Rpb25hcnlQb3B1cEluZm8uZm9udEluZm8uZm9u
dE92ZXJyaWRlU2l6ZV07CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
Zz4gYXR0cmlidXRlZFN0cmluZyhBZG9wdE5TLCBbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcodGV4dCldKTsK
ICAgICBbYXR0cmlidXRlZFN0cmluZy5nZXQoKSBhZGRBdHRyaWJ1dGU6TlNGb250QXR0cmlidXRl
TmFtZSB2YWx1ZTpmb250IHJhbmdlOk5TTWFrZVJhbmdlKDAsIFthdHRyaWJ1dGVkU3RyaW5nLmdl
dCgpIGxlbmd0aF0pXTsKIAotICAgIFttX3drVmlldyBzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0
ZWRTdHJpbmc6YXR0cmlidXRlZFN0cmluZy5nZXQoKSBhdFBvaW50OnRleHRJbmZvLmJhc2VsaW5l
T3JpZ2luXTsKKyAgICBbbV93a1ZpZXcgc2hvd0RlZmluaXRpb25Gb3JBdHRyaWJ1dGVkU3RyaW5n
OmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgYXRQb2ludDpkaWN0aW9uYXJ5UG9wdXBJbmZvLmJhc2Vs
aW5lT3JpZ2luXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5oCShyZXZp
c2lvbiA3OTgxMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51
UHJveHlNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFdlYlBvcHVwTWVudVByb3h5TWFjKFdLVmlldyosIFdlYlBvcHVwTWVudVByb3h5
OjpDbGllbnQqIGNsaWVudCk7CiAKLSAgICB2b2lkIHBvcHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbik7CisgICAgdm9pZCBwb3B1bGF0ZShj
b25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIE5TRm9udCosIFdlYkNvcmU6OlRleHREaXJlY3Rp
b24pOwogCiAgICAgUmV0YWluUHRyPE5TUG9wVXBCdXR0b25DZWxsPiBtX3BvcHVwOwogICAgIFdL
VmlldyogbV93ZWJWaWV3OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
b3B1cE1lbnVQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tCShyZXZpc2lvbiA3OTgxMikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgV2ViUG9wdXBNZW51UHJveHlNYWM6On5XZWJQb3B1cE1l
bnVQcm94eQogICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRDb250cm9sVmlldzpuaWxdOwogfQog
Ci12b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViUG9w
dXBJdGVtPiYgaXRlbXMsIFRleHREaXJlY3Rpb24gbWVudVRleHREaXJlY3Rpb24pCit2b2lkIFdl
YlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYg
aXRlbXMsIE5TRm9udCogZm9udCwgVGV4dERpcmVjdGlvbiBtZW51VGV4dERpcmVjdGlvbikKIHsK
ICAgICBpZiAobV9wb3B1cCkKICAgICAgICAgW21fcG9wdXAuZ2V0KCkgcmVtb3ZlQWxsSXRlbXNd
OwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShj
b25zCiAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUuZ2V0KCkgc2V0QWxpZ25tZW50Om1lbnVU
ZXh0RGlyZWN0aW9uID09IExUUiA/IE5TTGVmdFRleHRBbGlnbm1lbnQgOiBOU1JpZ2h0VGV4dEFs
aWdubWVudF07CiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gYXR0
cmlidXRlcyhBZG9wdE5TLCBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0c0FuZEtleXM6CiAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3R5bGUuZ2V0KCksIE5TUGFy
YWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgICAgIFttX3BvcHVwLmdldCgp
IGZvbnRdLCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLAorICAgICAgICAgICAgICAgIGZvbnQsIE5TRm9u
dEF0dHJpYnV0ZU5hbWUsCiAgICAgICAgICAgICBuaWxdKTsKICAgICAgICAgICAgIGlmIChpdGVt
c1tpXS5tX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZSkgewogICAgICAgICAgICAgICAgIFJldGFp
blB0cjxOU051bWJlcj4gd3JpdGluZ0RpcmVjdGlvblZhbHVlKEFkb3B0TlMsIFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoSW50ZWdlcjp3cml0aW5nRGlyZWN0aW9uICsgTlNUZXh0V3JpdGluZ0Rp
cmVjdGlvbk92ZXJyaWRlXSk7CkBAIC04OSw5ICs4OSwxNSBAQCB2b2lkIFdlYlBvcHVwTWVudVBy
b3h5TWFjOjpwb3B1bGF0ZShjb25zCiAgICAgfQogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5
TWFjOjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4
dERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0
Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBvcHVw
TWVudVByb3h5TWFjOjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJl
Y3Rpb24gdGV4dERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBj
b25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkK
IHsKLSAgICBwb3B1bGF0ZShpdGVtcywgdGV4dERpcmVjdGlvbik7CisgICAgTlNGb250ICpmb250
ID0gbmlsOworICAgIGlmIChkYXRhLmZvbnRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5KQor
ICAgICAgICBmb250ID0gW05TRm9udCBmb250V2l0aERlc2NyaXB0b3I6W05TRm9udERlc2NyaXB0
b3IgZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRhdGEu
Zm9udEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkuZ2V0KCldIHNpemU6ZGF0YS5mb250SW5m
by5mb250T3ZlcnJpZGVTaXplXTsKKyAgICBlbHNlCisgICAgICAgIGZvbnQgPSBbTlNGb250IG1l
bnVGb250T2ZTaXplOjBdOworCisgICAgcG9wdWxhdGUoaXRlbXMsIGZvbnQsIHRleHREaXJlY3Rp
b24pOwogCiAgICAgW21fcG9wdXAuZ2V0KCkgYXR0YWNoUG9wVXBXaXRoRnJhbWU6cmVjdCBpblZp
ZXc6bV93ZWJWaWV3XTsKICAgICBbbV9wb3B1cC5nZXQoKSBzZWxlY3RJdGVtQXRJbmRleDpzZWxl
Y3RlZEluZGV4XTsKQEAgLTExMSw3ICsxMTcsNyBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFj
OjpzaG93UG9wdXBNZW51CiAgICAgW21fd2ViVmlldyBhZGRTdWJ2aWV3OmR1bW15Vmlldy5nZXQo
KV07CiAgICAgbG9jYXRpb24gPSBbZHVtbXlWaWV3LmdldCgpIGNvbnZlcnRQb2ludDpsb2NhdGlv
biBmcm9tVmlldzptX3dlYlZpZXddOwogCi0gICAgV0tQb3B1cE1lbnUobWVudSwgbG9jYXRpb24s
IHJvdW5kZihOU1dpZHRoKHJlY3QpKSwgZHVtbXlWaWV3LmdldCgpLCBzZWxlY3RlZEluZGV4LCBb
TlNGb250IG1lbnVGb250T2ZTaXplOjBdKTsKKyAgICBXS1BvcHVwTWVudShtZW51LCBsb2NhdGlv
biwgcm91bmRmKE5TV2lkdGgocmVjdCkpLCBkdW1teVZpZXcuZ2V0KCksIHNlbGVjdGVkSW5kZXgs
IGZvbnQpOwogCiAgICAgW21fcG9wdXAuZ2V0KCkgZGlzbWlzc1BvcFVwXTsKICAgICBbZHVtbXlW
aWV3LmdldCgpIHJlbW92ZUZyb21TdXBlcnZpZXddOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNzk4MTIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTUxNCw4ICs1MTQsNiBAQAogCQlCQzQwNzYyQjEyNEZGMDQwMDA2OEYyMEEg
LyogV0tVUkxSZXNwb25zZU5TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzQwNzYyNTEyNEZGMDQwMDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQlCQzQwNzYy
QzEyNEZGMDQwMDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0MDc2MjYxMjRGRjA0MDAwNjhGMjBBIC8q
IFdLVVJMUmVzcG9uc2VOUy5tbSAqLzsgfTsKIAkJQkM0MDc4M0QxMjUwRkFERDAwNjhGMjBBIC8q
IFdLRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNDA3ODNDMTI1MEZBREQwMDY4RjIwQSAvKiBXS0V2ZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwotCQlCQzQ1NDIzNDEzMEM1RjNGMDA3M0UxQzEg
LyogVGV4dEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDNDU0MjMyMTMwQzVGM0YwMDczRTFDMSAvKiBUZXh0SW5mby5oICovOyB9OwotCQlCQzQ1
NDIzNTEzMEM1RjNGMDA3M0UxQzEgLyogVGV4dEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0NTQyMzMxMzBDNUYzRjAwNzNFMUMxIC8qIFRl
eHRJbmZvLmNwcCAqLzsgfTsKIAkJQkM0OTg2MTgxMjREMTBFMjAwRDgzNEUxIC8qIEluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM0OTg2MTYxMjREMTBFMjAwRDgzNEUxIC8qIEluamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5oICovOyB9OwogCQlCQzQ5ODYxOTEyNEQxMEUyMDBEODM0RTEgLyogSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNDk4NjE3MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQuY3BwICovOyB9OwogCQlCQzQ5ODYyRjEyNEQxOEMxMDBEODM0RTEgLyog
V0tCdW5kbGVIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzQ5ODYyRDEyNEQxOEMxMDBEODM0RTEgLyogV0tCdW5kbGVIaXRUZXN0
UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpA
QCAtNjkzLDYgKzY5MSwxMCBAQAogCQlCQ0U0Njk1QTEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3Jt
U3VibWlzc2lvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0U0Njk1ODEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxp
c3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9Owog
CQlCQ0U0Njk3NzEyMTRGMjdCMDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U0Njk3NjEyMTRG
MjdCMDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmggKi87IH07CiAJCUJDRTQ2OTc5
MTIxNEYyQjQwMDBCOThFQiAvKiBXZWJGcmFtZUxpc3RlbmVyUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFNDY5NzgxMjE0RjJCNDAwMEI5
OEVCIC8qIFdlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHAgKi87IH07CisJCUJDRTgxRDhDMTMxOUY3
RUYwMDI0MTkxMCAvKiBGb250SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0U4MUQ4QTEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8uY3Bw
ICovOyB9OworCQlCQ0U4MUQ4RDEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTgxRDhCMTMxOUY3RUYw
MDI0MTkxMCAvKiBGb250SW5mby5oICovOyB9OworCQlCQ0U4MUQ5NDEzMTlGQTVFMDAyNDE5MTAg
LyogRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0U4MUQ5MjEzMTlGQTVFMDAyNDE5MTAgLyogRGljdGlvbmFyeVBv
cHVwSW5mby5jcHAgKi87IH07CisJCUJDRTgxRDk1MTMxOUZBNUUwMDI0MTkxMCAvKiBEaWN0aW9u
YXJ5UG9wdXBJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0U4MUQ5MzEzMTlGQTVFMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oICov
OyB9OwogCQlCQ0VFN0FEMDEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRUU3QUNDMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQlCQ0VFN0FEMTEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRUU3QUNEMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdl
cy5oICovOyB9OwogCQlCQ0VFN0QwRDEyODQ2RjY5MDA5ODI3REEgLyogV2ViQ29udGV4dE1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0VFN0QwQjEyODQ2RjY5MDA5ODI3REEgLyogV2ViQ29udGV4dE1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CkBAIC0xMzQ2LDggKzEzNDgsNiBAQAogCQlCQzQwNzYyNTEyNEZGMDQwMDA2
OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLVVJMUmVzcG9uc2VOUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQw
NzYyNjEyNEZGMDQwMDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tVUkxSZXNwb25zZU5TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzQwNzgzQzEyNTBGQUREMDA2OEYyMEEgLyogV0tFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0V2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUJDNDU0MjMyMTMwQzVGM0YwMDczRTFDMSAvKiBUZXh0SW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0SW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQzQ1NDIzMzEzMEM1RjNGMDA3M0UxQzEgLyogVGV4dEluZm8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEluZm8uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ5ODYxNjEyNEQxMEUyMDBEODM0RTEgLyog
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzQ5ODYxNzEyNEQxMEUyMDBEODM0RTEgLyogSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNDk4NjJEMTI0RDE4QzEwMEQ4MzRFMSAvKiBXS0J1bmRsZUhpdFRlc3RSZXN1bHQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCdW5kbGVIaXRUZXN0UmVzdWx0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTI1LDYgKzE1MjUsMTAgQEAKIAkJQkNFNDY5
NTgxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFNDY5NzYxMjE0RjI3QjAwMEI5OEVCIC8qIFdl
YkZyYW1lTGlzdGVuZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJGcmFtZUxpc3RlbmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNF
NDY5NzgxMjE0RjJCNDAwMEI5OEVCIC8qIFdlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJGcmFtZUxpc3RlbmVyUHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0U4MUQ4QTEzMTlGN0VGMDAyNDE5MTAg
LyogRm9udEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9u
dEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0U4MUQ4QjEzMTlGN0VG
MDAyNDE5MTAgLyogRm9udEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Rm9udEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFODFEOTIxMzE5RkE1
RTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGljdGlvbmFyeVBvcHVwSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDRTgxRDkzMTMxOUZBNUUwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9w
dXBJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpY3Rpb25hcnlQb3B1
cEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFRTdBQjMxMjgxNzA5NTAw
OTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDRUU3QUNDMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUHJv
Y2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNFRTdBQ0QxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NQcm94eU1lc3NhZ2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTMyLDYgKzE5MzYsOCBAQAogCQkJ
CUJDQzQzQUI5MTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCAqLywK
IAkJCQlFMThDOTJGMzEyREI5RTcxMDBDRjJBRUIgLyogUHJpbnRJbmZvLmNwcCAqLywKIAkJCQlF
MUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8sCisJCQkJQkNFODFEOEEx
MzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmNwcCAqLywKKwkJCQlCQ0U4MUQ4QjEzMTlGN0VG
MDAyNDE5MTAgLyogRm9udEluZm8uaCAqLywKIAkJCQlCQzJEMDIxNjEyQUM0MUNCMDBFNzMyQTMg
LyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCAqLywKIAkJCQkxQUFCNEE4QzEyOTZGMEEy
MDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbi5oICovLAogCQkJCTMzMTUyOTczMTMwRDBDQjIw
MEVEMjQ4MyAvKiBTZWN1cml0eU9yaWdpbkRhdGEuY3BwICovLApAQCAtMTk0Myw4ICsxOTQ5LDYg
QEAKIAkJCQkxQTY0MjBFMzEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmggKi8s
CiAJCQkJQkNCRDNDM0ExMjVCRkE3QTAwRDJDMjlGIC8qIFN0cmluZ1BhaXJWZWN0b3IuaCAqLywK
IAkJCQkxQTVFNERBMzEyRDNCRDNEMDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oICovLAot
CQkJCUJDNDU0MjMzMTMwQzVGM0YwMDczRTFDMSAvKiBUZXh0SW5mby5jcHAgKi8sCi0JCQkJQkM0
NTQyMzIxMzBDNUYzRjAwNzNFMUMxIC8qIFRleHRJbmZvLmggKi8sCiAJCQkJMUE2NDI0NUQxMkRF
MjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8uY3BwICovLAogCQkJCTFBNjQyNDVDMTJERTI5QTEw
MENBQUUyQyAvKiBVcGRhdGVJbmZvLmggKi8sCiAJCQkJQkNCMEIwREYxMjMwNUFCMTAwQjEzNDFF
IC8qIFVzZXJNZXNzYWdlQ29kZXJzLmggKi8sCkBAIC0yNTc0LDYgKzI1NzgsOCBAQAogCQkJCTFB
NkY5RkI2MTFFMTQwODUwMERCMTM3MSAvKiBDb21tYW5kTGluZU1hYy5jcHAgKi8sCiAJCQkJMUE5
NjM5RjUxMkYzOEVDRDAwNzhBMDYyIC8qIENvcmVBbmltYXRpb25SZW5kZXJlci5oICovLAogCQkJ
CTFBOTYzOUY2MTJGMzhFQ0QwMDc4QTA2MiAvKiBDb3JlQW5pbWF0aW9uUmVuZGVyZXIubW0gKi8s
CisJCQkJQkNFODFEOTIxMzE5RkE1RTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uY3Bw
ICovLAorCQkJCUJDRTgxRDkzMTMxOUZBNUUwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZv
LmggKi8sCiAJCQkJMUE5MkRDMTIxMkY4QkFCOTAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHRN
YWMubW0gKi8sCiAJCQkJQzAyQkZGMUQxMjUxNTAyRTAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJv
YXJkRXZlbnRNYWMubW0gKi8sCiAJCQkJQzU3NEE1N0YxMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3Rl
Ym9hcmRUeXBlcy5oICovLApAQCAtMzM2Myw3ICszMzY5LDYgQEAKIAkJCQk1MTJFMzUyRjEzMEI1
NUFGMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMkUzNTZCMTMwQjU3RjAwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJFMzVGOTEzMEI2NDJFMDBBQkQx
OUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlCQzQ1NDIzNDEzMEM1RjNGMDA3M0UxQzEgLyogVGV4dEluZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQzg2RkY0MTMwQjQ2RDMwMDJDMTI1NyAvKiBXS1BsdWdpblNpdGVEYXRh
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDODcwMkQxMzBCNDlBMjAwMkMxMjU3IC8q
IFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMzNjc2MzAx
MzBDOTk5ODAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKQEAgLTMzODEsNiArMzM4Niw4IEBACiAJCQkJMzMwOTM0NTAxMzE1Qjk0RDAwOTdBN0JDIC8q
IFdlYkNvb2tpZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMDkzNDU2MTMxNUI5NzUw
MDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTMz
MDkzNDVCMTMxNUI5OTgwMDk3QTdCQyAvKiBXS0Nvb2tpZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDRTgxRDhEMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNFODFEOTUxMzE5RkE1RTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMzg2Miw3ICszODY5LDYgQEAKIAkJCQk1MTJFMzUyRTEzMEI1
NUFGMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTEyRTM1NkExMzBCNTdGMDAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkUzNUY4MTMw
QjY0MkUwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDNDU0MjM1MTMwQzVGM0YwMDczRTFDMSAv
KiBUZXh0SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM4NkZGMzEzMEI0NkQzMDAyQzEy
NTcgLyogV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFD
ODcwMkUxMzBCNDlBMjAwMkMxMjU3IC8qIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzMzM2NzYyRjEzMEM5OTk4MDA2QzlERTIgLyogV2ViUmVzb3VyY2VD
YWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODg0LDYgKzM4OTAsOCBAQAogCQkJ
CTMzMDkzNDRGMTMxNUI5NEQwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMzMDkzNDU1MTMxNUI5NzUwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2Vy
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMwOTM0NUExMzE1Qjk5ODAwOTdBN0JDIC8q
IFdLQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0U4MUQ4QzEzMTlGN0VG
MDAyNDE5MTAgLyogRm9udEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNFODFEOTQxMzE5
RkE1RTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVu
dS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQb3B1cE1lbnUuY3BwCShyZXZpc2lvbiA3OTgxMikKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgV2ViUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJl
Y3QmIHIKICAgICBJbnRSZWN0IHBhZ2VDb29yZGluYXRlcyh2aWV3LT5jb250ZW50c1RvV2luZG93
KHJlY3QubG9jYXRpb24oKSksIHJlY3Quc2l6ZSgpKTsKIAogICAgIFBsYXRmb3JtUG9wdXBNZW51
RGF0YSBwbGF0Zm9ybURhdGE7Ci0gICAgc2V0VXBQbGF0Zm9ybURhdGEocGFnZUNvb3JkaW5hdGVz
LCBwbGF0Zm9ybURhdGEpOworICAgIHNldFVwUGxhdGZvcm1EYXRhKHBhZ2VDb29yZGluYXRlcywg
dmlldywgcGxhdGZvcm1EYXRhKTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93UG9wdXBNZW51KHBhZ2VDb29y
ZGluYXRlcywgbV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCkudGV4dERpcmVjdGlvbigpLCBpdGVt
cywgaW5kZXgsIHBsYXRmb3JtRGF0YSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBv
cHVwTWVudS5oCShyZXZpc2lvbiA3OTgxMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQb3B1cE1lbnUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVw
TWVudUNsaWVudCopOwogCiAgICAgVmVjdG9yPFdlYlBvcHVwSXRlbT4gcG9wdWxhdGVJdGVtcygp
OwotICAgIHZvaWQgc2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcGFn
ZUNvb3JkaW5hdGVzLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKTsKKyAgICB2b2lkIHNldFVwUGxh
dGZvcm1EYXRhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhZ2VDb29yZGluYXRlcywgV2ViQ29y
ZTo6RnJhbWVWaWV3KiwgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJik7CiAKICAgICBXZWJDb3JlOjpQ
b3B1cE1lbnVDbGllbnQqIG1fcG9wdXBDbGllbnQ7CiAgICAgV2ViUGFnZSogbV9wYWdlOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViUG9wdXBN
ZW51R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2d0ay9XZWJQb3B1cE1lbnVHdGsuY3BwCShyZXZpc2lvbiA3OTgxMikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYlBvcHVwTWVudUd0
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQ
bGF0Zm9ybURhdGEoY29uc3QgSW50UmVjdCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpCit2b2lk
IFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50UmVjdCYsIEZyYW1lVmll
dyosIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBv
cHVwTWVudU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJQb3B1cE1lbnVNYWMubW0JKHJldmlzaW9uIDc5ODEyKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUG9wdXBNZW51
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcsMzAgQEAKICNpbXBvcnQgIldlYlBv
cHVwTWVudS5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVBvcHVwTWVudURhdGEuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvRnJhbWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL1BvcHVwTWVudUNsaWVudC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3Jt
RGF0YShjb25zdCBJbnRSZWN0JiwgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJikKK3ZvaWQgV2ViUG9w
dXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiB2aWV3
LCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEpCiB7CisgICAgTlNGb250ICpmb250ID0gbV9w
b3B1cENsaWVudC0+bWVudVN0eWxlKCkuZm9udCgpLnByaW1hcnlGb250KCktPmdldE5TRm9udCgp
OworICAgIGlmICghZm9udCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIENGRGljdGlvbmFy
eVJlZiBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMgPSAoQ0ZEaWN0aW9uYXJ5UmVmKVtbZm9udCBm
b250RGVzY3JpcHRvcl0gZm9udEF0dHJpYnV0ZXNdOworICAgIGlmICghZm9udERlc2NyaXB0b3JB
dHRyaWJ1dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBGcmFtZSogZnJhbWUgPSB2aWV3LT5m
cmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBkYXRh
LmZvbnRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5ID0gZm9udERlc2NyaXB0b3JBdHRyaWJ1
dGVzOworICAgIGRhdGEuZm9udEluZm8uZm9udE92ZXJyaWRlU2l6ZSA9IGZyYW1lLT5wYWdlU2Nh
bGVGYWN0b3IoKSA9PSAxID8gMCA6IChbW2ZvbnQgZm9udERlc2NyaXB0b3JdIHBvaW50U2l6ZV0g
KiBmcmFtZS0+cGFnZVNjYWxlRmFjdG9yKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9w
dXBNZW51UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCShyZXZpc2lvbiA3OTgxMikKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxh
dGZvcm1EYXRhKGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKQordm9pZCBX
ZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcq
LCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBv
cHVwTWVudVdpbi5jcHAJKHJldmlzaW9uIDc5ODEyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgY29uc3QgaW50IHNlcGFyYXRvclBhZGRpbmcgPSA0
Owogc3RhdGljIGNvbnN0IGludCBzZXBhcmF0b3JIZWlnaHQgPSAxOwogc3RhdGljIGNvbnN0IGlu
dCBwb3B1cFdpbmRvd0JvcmRlcldpZHRoID0gMTsKIAotdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVw
UGxhdGZvcm1EYXRhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhZ2VDb29yZGluYXRlcywgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhKQordm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZv
cm1EYXRhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhZ2VDb29yZGluYXRlcywgRnJhbWVWaWV3
KiwgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhKQogewogICAgIGludCBpdGVtQ291bnQgPSBt
X3BvcHVwQ2xpZW50LT5saXN0U2l6ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCShyZXZpc2lvbiA3OTgxMikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdC5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgorI2ltcG9ydCAiRGlj
dGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgotI2ltcG9ydCAiVGV4
dEluZm8uaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2Vi
RXZlbnQuaCIKICNpbXBvcnQgIldlYkZyYW1lLmgiCkBAIC0zMDQsMTIgKzMwNCwxMiBAQCB2b2lk
IFdlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMCiAgICAgSW50UmVjdCBmaW5hbFJh
bmdlUmVjdCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocXVhZHNbMF0uZW5jbG9z
aW5nQm91bmRpbmdCb3goKSk7CiAgICAgRmxvYXRQb2ludCBiYXNlbGluZU9yaWdpbihmaW5hbFJh
bmdlUmVjdC54KCksIChmaW5hbFJhbmdlUmVjdC55KCkgKyAoW2ZvbnQgYXNjZW5kZXJdICogZnJh
bWUtPnBhZ2VTY2FsZUZhY3RvcigpKSkpOwogICAgIAotICAgIFRleHRJbmZvIHRleHRJbmZvOwot
ICAgIHRleHRJbmZvLmJhc2VsaW5lT3JpZ2luID0gYmFzZWxpbmVPcmlnaW47Ci0gICAgdGV4dElu
Zm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkgPSBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXM7Ci0g
ICAgdGV4dEluZm8uZm9udE92ZXJyaWRlU2l6ZSA9IGZyYW1lLT5wYWdlU2NhbGVGYWN0b3IoKSA9
PSAxID8gMCA6IChbW2ZvbnQgZm9udERlc2NyaXB0b3JdIHBvaW50U2l6ZV0gKiBmcmFtZS0+cGFn
ZVNjYWxlRmFjdG9yKCkpOworICAgIERpY3Rpb25hcnlQb3B1cEluZm8gZGljdGlvbmFyeVBvcHVw
SW5mbzsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLmJhc2VsaW5lT3JpZ2luID0gYmFzZWxpbmVP
cmlnaW47CisgICAgZGljdGlvbmFyeVBvcHVwSW5mby5mb250SW5mby5mb250QXR0cmlidXRlRGlj
dGlvbmFyeSA9IGZvbnREZXNjcmlwdG9yQXR0cmlidXRlczsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJ
bmZvLmZvbnRJbmZvLmZvbnRPdmVycmlkZVNpemUgPSBmcmFtZS0+cGFnZVNjYWxlRmFjdG9yKCkg
PT0gMSA/IDAgOiAoW1tmb250IGZvbnREZXNjcmlwdG9yXSBwb2ludFNpemVdICogZnJhbWUtPnBh
Z2VTY2FsZUZhY3RvcigpKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZmluYWxSYW5nZS0+dGV4dCgpLCB0ZXh0SW5mbykpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURpY3Rpb25hcnlMb29r
dXAoZmluYWxSYW5nZS0+dGV4dCgpLCBkaWN0aW9uYXJ5UG9wdXBJbmZvKSk7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgdm9pZCBzY3JvbGwoUGFnZSogcGFnZSwgU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIudmNwcm9qCShyZXZpc2lvbiA3OTgxMikKKysrIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDIzLDYgKzQyMywxNCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcRm9udEluZm8uY3Bw
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFy
ZWRcRm9udEluZm8uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cU2hhcmVkXEZvbnRTbW9vdGhpbmdMZXZlbC5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
QEAgLTUzMSwxNCArNTM5LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cU2hhcmVkXFRleHRJbmZvLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0J
CQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFRleHRJbmZvLmgiCi0JCQkJPgot
CQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxVcGRhdGVJ
bmZvLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83980</attachid>
            <date>2011-02-27 10:42:33 -0800</date>
            <delta_ts>2011-02-27 11:45:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48234-20110227104232.patch</filename>
            <type>text/plain</type>
            <size>53832</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTEtMDItMjYgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaXplIG9mIHRleHQgaW4gcG9wdXAgbWVudSBkb2Vzbid0IG1hdGNoIHNp
emUgb2YgdGV4dCBpbiA8c2VsZWN0PiBpdHNlbGYgaW4gV2ViS2l0MgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyMzQKKworICAgICAgICAqIFNoYXJl
ZC9Gb250SW5mby5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpGb250SW5mbzo6Rm9udElu
Zm8pOgorICAgICAgICAoV2ViS2l0OjpGb250SW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6Rm9udEluZm86OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0ZvbnRJbmZvLmg6IEFkZGVk
LgorICAgICAgICBBZGQgY2xhc3MgdG8gZW5jYXBzdWxhdGUgcGFzc2luZyBhIGZvbnQgZGVzY3Jp
cHRpb24gb3ZlciB0aGUgd2lyZS4KKworICAgICAgICAqIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVu
dURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGE6OmVuY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmg6CisgICAgICAgIEFkZCBGb250
SW5mbyBhcyBleHRyYSBkYXRhIGZvciB0aGUgTWFjLgorCisgICAgICAgICogU2hhcmVkL1RleHRJ
bmZvLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvVGV4dEluZm8uaDogUmVtb3ZlZC4K
KyAgICAgICAgUmVwbGFjZSB0aGlzIHdpdGggdGhlIG1vcmUgYXBwcm9wcmlhdGVseSBEaWN0aW9u
YXJ5UG9wdXBJbmZvLgorCisgICAgICAgICogU2hhcmVkL21hYy9EaWN0aW9uYXJ5UG9wdXBJbmZv
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmZvLmNwcC4KKyAg
ICAgICAgKFdlYktpdDo6RGljdGlvbmFyeVBvcHVwSW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdl
YktpdDo6RGljdGlvbmFyeVBvcHVwSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvbWFj
L0RpY3Rpb25hcnlQb3B1cEluZm8uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVk
L1RleHRJbmZvLmguCisgICAgICAgIChXZWJLaXQ6OkRpY3Rpb25hcnlQb3B1cEluZm86OkRpY3Rp
b25hcnlQb3B1cEluZm8pOgorICAgICAgICBSZXBsYWNlIGluZGl2aWR1YWwgZm9udCByZWxhdGVk
IGZpZWxkcyB3aXRoIEZvbnRJbmZvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFn
ZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbik6
CisgICAgICAgIFJlbmFtZSBUZXh0SW5mbyAtPiBEaWN0aW9uYXJ5UG9wdXBJbmZvLgorCisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVw
TWVudVByb3h5TWFjOjpzaG93UG9wdXBNZW51KToKKyAgICAgICAgVXNlIEZvbnRJbmZvIHRvIGNv
bnN0cnVjdCBhIEZvbnQgYW5kIHVzZSBpdCBmb3IgdGhlIHBvcHVwIG1lbnUuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQb3B1cE1lbnUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJQb3B1cE1lbnVHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1l
bnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJQb3B1cE1lbnVNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dTo6c2V0VXBQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6
OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6
OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgQWRkIEZyYW1lVmlldyogcGFyYW1ldGVyIHRv
IHNldFVwUGxhdGZvcm1EYXRhIHRvIGdldCB0aGUgY3VycmVudCBzY2FsZSBmYWN0b3IuCisKKyAg
ICAgICAgKiBXZWJLaXQyLnBybzoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogd2luL1dlYktpdDIudmNwcm9qOgorCiAyMDExLTAyLTI2ICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA3OTgyMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL0NoaWxkUHJvY2Vzcy5oIFwKICAgICBTaGFy
ZWQvQ29yZUlQQ1N1cHBvcnQvRHJhd2luZ0FyZWFNZXNzYWdlS2luZHMuaCBcCiAgICAgU2hhcmVk
L0NvcmVJUENTdXBwb3J0L0RyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCBcCisgICAgU2hh
cmVkL0ZvbnRJbmZvLmggXAogICAgIFNoYXJlZC9JbWFnZU9wdGlvbnMuaCBcCiAgICAgU2hhcmVk
L0ltbXV0YWJsZUFycmF5LmggXAogICAgIFNoYXJlZC9JbW11dGFibGVEaWN0aW9uYXJ5LmggXApA
QCAtMTE4LDcgKzExOSw2IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9TZWN1cml0eU9yaWdp
bkRhdGEuaCBcCiAgICAgU2hhcmVkL1Nlc3Npb25TdGF0ZS5oIFwKICAgICBTaGFyZWQvU3RyaW5n
UGFpclZlY3Rvci5oIFwKLSAgICBTaGFyZWQvVGV4dEluZm8uaCBcCiAgICAgU2hhcmVkL1VzZXJN
ZXNzYWdlQ29kZXJzLmggXAogICAgIFNoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmggXAogICAgIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBcCkBAIC0yODQsNiArMjg0LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9k
dWxlWDExLmNwcCBcCiAgICAgU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAgXAogICAgIFNoYXJl
ZC9DaGlsZFByb2Nlc3MuY3BwIFwKKyAgICBTaGFyZWQvRm9udEluZm8uY3BwIFwKICAgICBTaGFy
ZWQvSW1tdXRhYmxlQXJyYXkuY3BwIFwKICAgICBTaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5j
cHAgXAogICAgIFNoYXJlZC9NdXRhYmxlQXJyYXkuY3BwIFwKQEAgLTI5Myw3ICsyOTQsNiBAQCBT
T1VSQ0VTICs9IFwKICAgICBTaGFyZWQvUHJpbnRJbmZvLmNwcCBcCiAgICAgU2hhcmVkL1NlY3Vy
aXR5T3JpZ2luRGF0YS5jcHAgXAogICAgIFNoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIFwKLSAgICBT
aGFyZWQvVGV4dEluZm8uY3BwIFwKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAgXAog
ICAgIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAgICAgU2hhcmVkL1dlYkNv
bnRleHRNZW51SXRlbS5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZv
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRm9udEluZm8uY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJGb250SW5mby5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitGb250SW5mbzo6Rm9udEluZm8oKQorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICA6IGZvbnRPdmVycmlkZVNpemUoMCkKKyNlbmRpZgoreworfQor
Cit2b2lkIEZvbnRJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
KSBjb25zdAoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2Rl
ciwgZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkuZ2V0KCkpOworICAgIGVuY29kZXItPmVuY29kZShm
b250T3ZlcnJpZGVTaXplKTsKKyNlbmRpZgorfQorCitib29sIEZvbnRJbmZvOjpkZWNvZGUoQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBGb250SW5mbyYgZm9udEluZm8pCit7ICAg
IAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIUNvcmVJUEM6OmRlY29kZShkZWNvZGVyLCBm
b250SW5mby5mb250QXR0cmlidXRlRGljdGlvbmFyeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAoIWRlY29kZXItPmRlY29kZShmb250SW5mby5mb250T3ZlcnJpZGVTaXplKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRm9udEluZm8uaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRm9udEluZm9faAorI2Rl
ZmluZSBGb250SW5mb19oCisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1bWVu
dERlY29kZXI7CisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKyAgICAKK3N0cnVjdCBGb250SW5mbyB7CisgICAgRm9udEluZm8oKTsKKyAgICAKKyAg
ICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKKyAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgRm9udEluZm8mKTsKKyAg
ICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZm9u
dEF0dHJpYnV0ZURpY3Rpb25hcnk7CisgICAgZG91YmxlIGZvbnRPdmVycmlkZVNpemU7CisjZW5k
aWYKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEZvbnRJbmZv
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURh
dGEuY3BwCShyZXZpc2lvbiA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9y
bVBvcHVwTWVudURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw0MCArNjAsNDMgQEAgdm9pZCBQ
bGF0Zm9ybVBvcHVwTWVudURhdGE6OmVuY29kZShDb3JlSQogICAgIFNoYXJlZE1lbW9yeTo6SGFu
ZGxlIHNlbGVjdGVkQmFja2luZ1N0b3JlSGFuZGxlOwogICAgIG1fc2VsZWN0ZWRCYWNraW5nU3Rv
cmUtPmNyZWF0ZUhhbmRsZShzZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSk7CiAgICAgZW5jb2Rl
ci0+ZW5jb2RlKHNlbGVjdGVkQmFja2luZ1N0b3JlSGFuZGxlKTsKKyNlbGlmIFBMQVRGT1JNKE1B
QykKKyAgICBlbmNvZGVyLT5lbmNvZGUoZm9udEluZm8pOwogI2VuZGlmCiB9CiAKIGJvb2wgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEpCiB7CiAjaWYgUExBVEZPUk0oV0lOKQot
ICAgIFBsYXRmb3JtUG9wdXBNZW51RGF0YSBkOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGQu
bV9jbGllbnRQYWRkaW5nTGVmdCkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGF0YS5tX2Ns
aWVudFBhZGRpbmdMZWZ0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGQubV9jbGllbnRQYWRkaW5nUmlnaHQpKQorICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGRhdGEubV9jbGllbnRQYWRkaW5nUmlnaHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZC5tX2NsaWVudEluc2V0TGVmdCkpCisgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUoZGF0YS5tX2NsaWVudEluc2V0TGVmdCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShkLm1fY2xpZW50SW5zZXRSaWdodCkpCisg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGF0YS5tX2NsaWVudEluc2V0UmlnaHQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZC5tX3BvcHVwV2lkdGgp
KQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubV9wb3B1cFdpZHRoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGQubV9pdGVtSGVpZ2h0KSkK
KyAgICBpZiAoIWRlY29kZXItPmRlY29kZShkYXRhLm1faXRlbUhlaWdodCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShkLm1fYmFja2luZ1N0b3JlU2l6
ZSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBub3RTZWxl
Y3RlZEJhY2tpbmdTdG9yZUhhbmRsZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShub3RTZWxl
Y3RlZEJhY2tpbmdTdG9yZUhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkLm1f
bm90U2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShkLm1fYmFj
a2luZ1N0b3JlU2l6ZSwgbm90U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOworICAgIGRhdGEu
bV9ub3RTZWxlY3RlZEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRhdGEu
bV9iYWNraW5nU3RvcmVTaXplLCBub3RTZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSk7CiAKICAg
ICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBzZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZTsKICAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShzZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBkLm1fc2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZShkLm1fYmFja2luZ1N0b3JlU2l6ZSwgc2VsZWN0ZWRCYWNraW5nU3RvcmVI
YW5kbGUpOwotCi0gICAgZGF0YSA9IGQ7CisgICAgZGF0YS5tX3NlbGVjdGVkQmFja2luZ1N0b3Jl
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZGF0YS5tX2JhY2tpbmdTdG9yZVNpemUsIHNlbGVj
dGVkQmFja2luZ1N0b3JlSGFuZGxlKTsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShkYXRhLmZvbnRJbmZvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCisgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgJKHJldmlzaW9uIDc5ODIwKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFBsYXRmb3JtUG9wdXBNZW51RGF0YV9oCiAjZGVmaW5l
IFBsYXRmb3JtUG9wdXBNZW51RGF0YV9oCiAKKyNpbmNsdWRlICJGb250SW5mby5oIgogI2luY2x1
ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC0zOCw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhIHsKICAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEoKTsKLSAgICAKKwogICAg
IHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OwogICAgIHN0YXRp
YyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEmKTsKIApAQCAtNTIsNiArNTMsOCBAQCBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
IHsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fYmFja2luZ1N0b3JlU2l6ZTsKICAgICBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBtX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlOwogICAgIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IG1fc2VsZWN0ZWRCYWNraW5nU3RvcmU7CisjZWxpZiBQTEFURk9STShN
QUMpCisgICAgRm9udEluZm8gZm9udEluZm87CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9UZXh0SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1RleHRJbmZvLmNwcAkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvVGV4dEluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dEluZm8uaCIKLQotI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQotI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotdm9pZCBUZXh0SW5mbzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
cikgY29uc3QKLXsKLSAgICBlbmNvZGVyLT5lbmNvZGUoYmFzZWxpbmVPcmlnaW4pOwotI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBDb3JlSVBDOjplbmNvZGUoZW5jb2RlciwgZm9udEF0dHJpYnV0ZURp
Y3Rpb25hcnkuZ2V0KCkpOwotICAgIGVuY29kZXItPmVuY29kZShmb250T3ZlcnJpZGVTaXplKTsK
LSNlbmRpZgotfQotCi1ib29sIFRleHRJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiBkZWNvZGVyLCBUZXh0SW5mbyYgcmVzdWx0KQotewotICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKHJlc3VsdC5iYXNlbGluZU9yaWdpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQ
TEFURk9STShNQUMpCi0gICAgaWYgKCFDb3JlSVBDOjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0LmZv
bnRBdHRyaWJ1dGVEaWN0aW9uYXJ5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5mb250T3ZlcnJpZGVTaXplKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmZvLmgJKHJldmlzaW9uIDc5ODIwKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVGV4dEluZm9faAotI2RlZmluZSBUZXh0SW5m
b19oCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KLSNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBDb3JlSVBDIHsKLSAgICBjbGFzcyBBcmd1bWVudERlY29k
ZXI7Ci0gICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgVGV4dEluZm8gewotcHVibGljOgotICAgIFRleHRJbmZvKCkgeyB9Ci0KLSAgICB2
b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKLSAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgVGV4dEluZm8mKTsKLQotICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgYmFzZWxpbmVPcmlnaW47Ci0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5Owot
ICAgIGRvdWJsZSBmb250T3ZlcnJpZGVTaXplOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFRleHRJbmZvX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcAkocmV2aXNpb24gNzk4MTIp
CShmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5mby5jcHA6Nzk4MTIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0RpY3Rpb25hcnlQb3B1cEluZm8uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVGV4dEluZm8uaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBUZXh0SW5mbzo6ZW5jb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyLT5lbmNv
ZGUoYmFzZWxpbmVPcmlnaW4pOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBDb3JlSVBDOjplbmNv
ZGUoZW5jb2RlciwgZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkuZ2V0KCkpOworICAgIGVuY29kZXIt
PmVuY29kZShmb250T3ZlcnJpZGVTaXplKTsKKyNlbmRpZgorfQorCitib29sIFRleHRJbmZvOjpk
ZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUZXh0SW5mbyYgcmVzdWx0
KQoreworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5iYXNlbGluZU9yaWdpbikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFDb3JlSVBD
OjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0LmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5mb250T3Zl
cnJpZGVTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL0RpY3Rpb25hcnlQb3B1cEluZm8uY3BwCShyZXZpc2lvbiA3OTgxMikK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDM1ICsyNCwyNCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJUZXh0SW5mby5oIgorI2luY2x1ZGUgIkRpY3Rpb25hcnlQb3B1cEluZm8u
aCIKIAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCi0jaWYgUExBVEZPUk0o
TUFDKQotI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotdm9pZCBUZXh0SW5mbzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rl
ciogZW5jb2RlcikgY29uc3QKK3ZvaWQgRGljdGlvbmFyeVBvcHVwSW5mbzo6ZW5jb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyLT5lbmNv
ZGUoYmFzZWxpbmVPcmlnaW4pOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb3JlSVBDOjplbmNv
ZGUoZW5jb2RlciwgZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkuZ2V0KCkpOwotICAgIGVuY29kZXIt
PmVuY29kZShmb250T3ZlcnJpZGVTaXplKTsKLSNlbmRpZgorICAgIGVuY29kZXItPmVuY29kZShm
b250SW5mbyk7CiB9CiAKLWJvb2wgVGV4dEluZm86OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIFRleHRJbmZvJiByZXN1bHQpCitib29sIERpY3Rpb25hcnlQb3B1cElu
Zm86OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIERpY3Rpb25hcnlQ
b3B1cEluZm8mIHJlc3VsdCkKIHsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuYmFz
ZWxpbmVPcmlnaW4pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIGlmICghQ29yZUlQQzo6ZGVjb2RlKGRlY29kZXIsIHJlc3VsdC5mb250QXR0cmlidXRlRGlj
dGlvbmFyeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShyZXN1bHQuZm9udE92ZXJyaWRlU2l6ZSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVz
dWx0LmZvbnRJbmZvKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvRGljdGlvbmFyeVBv
cHVwSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvRGljdGlv
bmFyeVBvcHVwSW5mby5oCShyZXZpc2lvbiA3OTgxMikJKGZyb20gU291cmNlL1dlYktpdDIvU2hh
cmVkL1RleHRJbmZvLmg6Nzk4MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0RpY3Rp
b25hcnlQb3B1cEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBUZXh0SW5mb19oCisjZGVmaW5lIFRleHRJbmZvX2gKKworI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRQb2ludC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFt
ZXNwYWNlIENvcmVJUEMgeworICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFzcyBB
cmd1bWVudEVuY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBUZXh0SW5m
byB7CitwdWJsaWM6CisgICAgVGV4dEluZm8oKSB7IH0KKworICAgIHZvaWQgZW5jb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0OworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqLCBUZXh0SW5mbyYpOworCisgICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCBiYXNlbGluZU9yaWdpbjsKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gZm9udEF0dHJpYnV0ZURpY3Rpb25hcnk7CisgICAgZG91YmxlIGZvbnRP
dmVycmlkZVNpemU7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gVGV4dEluZm9faApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9EaWN0aW9u
YXJ5UG9wdXBJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9E
aWN0aW9uYXJ5UG9wdXBJbmZvLmgJKHJldmlzaW9uIDc5ODEyKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEx
ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgVGV4dEluZm9faAotI2RlZmluZSBUZXh0SW5mb19oCisjaWZuZGVmIERpY3Rpb25hcnlQ
b3B1cEluZm9faAorI2RlZmluZSBEaWN0aW9uYXJ5UG9wdXBJbmZvX2gKIAorI2luY2x1ZGUgIkZv
bnRJbmZvLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAgICAgY2xhc3MgQXJndW1lbnRE
ZWNvZGVyOwpAQCAtMzYsMjAgKzM2LDE5IEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIFRleHRJbmZvIHsKK2NsYXNzIERpY3Rpb25hcnlQb3B1cElu
Zm8gewogcHVibGljOgotICAgIFRleHRJbmZvKCkgeyB9CisgICAgRGljdGlvbmFyeVBvcHVwSW5m
bygpCisgICAgeworICAgIH0KIAogICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciopIGNvbnN0OwotICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqLCBUZXh0SW5mbyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqLCBEaWN0aW9uYXJ5UG9wdXBJbmZvJik7CiAKICAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IGJhc2VsaW5lT3JpZ2luOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBmb250QXR0cmlidXRlRGljdGlvbmFyeTsKLSAgICBkb3VibGUgZm9u
dE92ZXJyaWRlU2l6ZTsKLSNlbmRpZgorICAgIEZvbnRJbmZvIGZvbnRJbmZvOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBUZXh0SW5mb19oCisjZW5kaWYgLy8gRGlj
dGlvbmFyeVBvcHVwSW5mb19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDEwICsxMjgsOCBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZCh1
aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBjb21wbGV4VGV4
dElucHV0RW5hYmxlZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdXRvZGlzcGxheShib29s
KSA9IDA7Ci0KICAgICB2aXJ0dWFsIENHQ29udGV4dFJlZiBjb250YWluaW5nV2luZG93R3JhcGhp
Y3NDb250ZXh0KCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRJbmZvJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0
aW9uYXJ5UG9wdXBJbmZvJikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA3OTgyMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw2IEBACiAjaW5jbHVkZSAiU3RyaW5nUGFpclZlY3Rvci5oIgogI2luY2x1ZGUgIlRl
eHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgotI2luY2x1ZGUgIlRl
eHRJbmZvLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkJh
Y2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKQEAg
LTY2LDYgKzY1LDE2IEBACiAjaW5jbHVkZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCiAjaW5jbHVk
ZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9XaW5kb3dGZWF0dXJlcy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZiBQTEFURk9STShN
QUMpCisjaW5jbHVkZSAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgorI2VuZGlmCisKICNpZiBQTEFU
Rk9STShXSU4pCiAjaW5jbHVkZSAiV2ViRHJhZ1NvdXJjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Qml0bWFwSW5mby5oPgpAQCAtNzMsMTEgKzgyLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dDRGF0
YU9iamVjdC5oPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2VuZGlmCi0jaW5jbHVkZSA8V2ViQ29y
ZS9EcmFnRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0
dXJlcy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpZm5kZWYgTkRFQlVHCiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpAQCAtMjQ1MCw5ICsyNDU0LDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjawogfQogCiAjaWYgUExBVEZPUk0oTUFD
KQotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0
cmluZyYgdGV4dCwgY29uc3QgVGV4dEluZm8mIHRleHRJbmZvKQordm9pZCBXZWJQYWdlUHJveHk6
OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRGlj
dGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykKIHsKLSAgICBtX3BhZ2VDbGll
bnQtPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKHRleHQsIHRleHRJbmZvKTsKKyAgICBtX3Bh
Z2VDbGllbnQtPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKHRleHQsIGRpY3Rpb25hcnlQb3B1
cEluZm8pOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyV2ViUHJvY2Vzc0Fj
Y2Vzc2liaWxpdHlUb2tlbihjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gNzk4MjAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDEyICs4MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitjbGFzcyBEaWN0aW9uYXJ5UG9wdXBJbmZvOwogY2xhc3MgRHJhd2luZ0FyZWFQ
cm94eTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlQ2xpZW50Owog
Y2xhc3MgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBTdHJpbmdQYWlyVmVjdG9yOwot
Y2xhc3MgVGV4dEluZm87CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViQ29udGV4dE1lbnVQcm94eTsKQEAgLTU0MiwxNCAr
NTQyLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gQ29udGV4dCBNZW51LgogICAgIHZvaWQgc2hvd0Nv
bnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0IENv
bnRleHRNZW51U3RhdGUmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0YT4mLCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAotICAgIC8vIFNwZWVjaC4KICNpZiBQTEFURk9S
TShNQUMpCisgICAgLy8gU3BlZWNoLgogICAgIHZvaWQgZ2V0SXNTcGVha2luZyhib29sJik7CiAg
ICAgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN0b3BTcGVha2luZygpOwog
CiAgICAgLy8gRGljdGlvbmFyeS4KLSAgICB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3Vw
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRJbmZvJik7CisgICAgdm9pZCBkaWRQZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJik7
CiAjZW5kaWYKIAogICAgIC8vIFNwZWxsaW5nIGFuZCBncmFtbWFyLgpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lv
biA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICMgRGljdGlvbmFyeSBzdXBwb3J0
LgotICAgIERpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKFdURjo6U3RyaW5nIHRleHQsIFdlYktp
dDo6VGV4dEluZm8gdGV4dEluZm8pCisgICAgRGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoV1RG
OjpTdHJpbmcgdGV4dCwgV2ViS2l0OjpEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1
cEluZm8pCiAKICAgICAjIEtleWJvYXJkIHN1cHBvcnQgbWVzc2FnZXMKICAgICBJbnRlcnByZXRL
ZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFu
ZD4gY29tbWFuZE5hbWUsIHVpbnQzMl90IHNlbGVjdGlvblN0YXJ0LCB1aW50MzJfdCBzZWxlY3Rp
b25FbmQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lcykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVu
dEltcGwuaAkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgU3RyaW5nJiwgY29uc3QgVGV4
dEluZm8mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29u
c3QgU3RyaW5nJiwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYpOwogCiAgICAgV0tWaWV3KiBt
X3drVmlldzsKICAgICBSZXRhaW5QdHI8V2ViRWRpdG9yVW5kb1RhcmdldE9iakM+IG1fdW5kb1Rh
cmdldDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsy
Nyw5IEBACiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbC5oIgogCiAjaW1wb3J0ICJEYXRhUmVmZXJl
bmNlLmgiCisjaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJGaW5kSW5k
aWNhdG9yLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCi0jaW1wb3J0ICJU
ZXh0SW5mby5oIgogI2ltcG9ydCAiV0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS1N0cmluZ0NGLmgi
CiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgpAQCAtNDEzLDE1ICs0MTMsMTUgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVVcAogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVGV4dEluZm8mIHRleHRJbmZvKQordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgU3RyaW5nJiB0ZXh0LCBj
b25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBkaWN0aW9uYXJ5UG9wdXBJbmZvKQogewotICAgIE5T
Rm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9yID0gW05TRm9udERlc2NyaXB0b3IgZm9udERl
c2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKXRleHRJbmZvLmZvbnRB
dHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgpXTsKLSAgICBOU0ZvbnQgKmZvbnQgPSBbTlNGb250IGZv
bnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOnRleHRJbmZvLmZvbnRPdmVycmlk
ZVNpemVdOworICAgIE5TRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9yID0gW05TRm9udERl
c2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAq
KWRpY3Rpb25hcnlQb3B1cEluZm8uZm9udEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkuZ2V0
KCldOworICAgIE5TRm9udCAqZm9udCA9IFtOU0ZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOmZvbnRE
ZXNjcmlwdG9yIHNpemU6ZGljdGlvbmFyeVBvcHVwSW5mby5mb250SW5mby5mb250T3ZlcnJpZGVT
aXplXTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1
dGVkU3RyaW5nKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhTdHJpbmc6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyh0ZXh0KV0pOwogICAgIFthdHRy
aWJ1dGVkU3RyaW5nLmdldCgpIGFkZEF0dHJpYnV0ZTpOU0ZvbnRBdHRyaWJ1dGVOYW1lIHZhbHVl
OmZvbnQgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW2F0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgbGVuZ3Ro
XSldOwogCi0gICAgW21fd2tWaWV3IHNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZzph
dHRyaWJ1dGVkU3RyaW5nLmdldCgpIGF0UG9pbnQ6dGV4dEluZm8uYmFzZWxpbmVPcmlnaW5dOwor
ICAgIFttX3drVmlldyBzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmc6YXR0cmlidXRl
ZFN0cmluZy5nZXQoKSBhdFBvaW50OmRpY3Rpb25hcnlQb3B1cEluZm8uYmFzZWxpbmVPcmlnaW5d
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLmgJKHJldmlzaW9uIDc5ODIw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAog
Y2xhc3MgV2ViUG9wdXBNZW51UHJveHlNYWMgOiBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5TWFjPiBjcmVh
dGUoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlNYWM+IGNyZWF0ZShXS1ZpZXcg
KndlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJveHlNYWMod2ViVmlldywgY2xp
ZW50KSk7CiAgICAgfQpAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgaGlkZVBvcHVwTWVudSgpOwogCiBwcml2YXRlOgotICAgIFdlYlBvcHVwTWVudVByb3h5TWFj
KFdLVmlldyosIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCk7CisgICAgV2ViUG9w
dXBNZW51UHJveHlNYWMoV0tWaWV3ICosIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVu
dCk7CiAKLSAgICB2b2lkIHBvcHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgV2Vi
Q29yZTo6VGV4dERpcmVjdGlvbik7CisgICAgdm9pZCBwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2Vi
UG9wdXBJdGVtPiYsIE5TRm9udCAqLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uKTsKIAogICAgIFJl
dGFpblB0cjxOU1BvcFVwQnV0dG9uQ2VsbD4gbV9wb3B1cDsKLSAgICBXS1ZpZXcqIG1fd2ViVmll
dzsKKyAgICBXS1ZpZXcgKm1fd2ViVmlldzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVu
dVByb3h5TWFjLm1tCShyZXZpc2lvbiA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1X
ZWJQb3B1cE1lbnVQcm94eU1hYzo6V2ViUG9wdXBNZW51UHJveHlNYWMoV0tWaWV3KiB3ZWJWaWV3
LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCitXZWJQb3B1cE1lbnVQcm94eU1h
Yzo6V2ViUG9wdXBNZW51UHJveHlNYWMoV0tWaWV3ICp3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94
eTo6Q2xpZW50KiBjbGllbnQpCiAgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCiAgICAg
LCBtX3dlYlZpZXcod2ViVmlldykKIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgV2ViUG9wdXBNZW51UHJv
eHlNYWM6On5XZWJQb3B1cE1lbnVQcm94eQogICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRDb250
cm9sVmlldzpuaWxdOwogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShj
b25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIFRleHREaXJlY3Rpb24gbWVudVRleHRE
aXJlY3Rpb24pCit2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zdCBWZWN0
b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIE5TRm9udCAqZm9udCwgVGV4dERpcmVjdGlvbiBtZW51
VGV4dERpcmVjdGlvbikKIHsKICAgICBpZiAobV9wb3B1cCkKICAgICAgICAgW21fcG9wdXAuZ2V0
KCkgcmVtb3ZlQWxsSXRlbXNdOwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFdlYlBvcHVwTWVudVBy
b3h5TWFjOjpwb3B1bGF0ZShjb25zCiAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUuZ2V0KCkg
c2V0QWxpZ25tZW50Om1lbnVUZXh0RGlyZWN0aW9uID09IExUUiA/IE5TTGVmdFRleHRBbGlnbm1l
bnQgOiBOU1JpZ2h0VGV4dEFsaWdubWVudF07CiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlRGljdGlvbmFyeT4gYXR0cmlidXRlcyhBZG9wdE5TLCBbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgICAgICAgICAgcGFyYWdyYXBo
U3R5bGUuZ2V0KCksIE5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAg
ICAgIFttX3BvcHVwLmdldCgpIGZvbnRdLCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLAorICAgICAgICAg
ICAgICAgIGZvbnQsIE5TRm9udEF0dHJpYnV0ZU5hbWUsCiAgICAgICAgICAgICBuaWxdKTsKICAg
ICAgICAgICAgIGlmIChpdGVtc1tpXS5tX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZSkgewogICAg
ICAgICAgICAgICAgIFJldGFpblB0cjxOU051bWJlcj4gd3JpdGluZ0RpcmVjdGlvblZhbHVlKEFk
b3B0TlMsIFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50ZWdlcjp3cml0aW5nRGlyZWN0aW9u
ICsgTlNUZXh0V3JpdGluZ0RpcmVjdGlvbk92ZXJyaWRlXSk7CkBAIC04OSwxNSArODksMjEgQEAg
dm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6cG9wdWxhdGUoY29ucwogICAgIH0KIH0KIAotdm9p
ZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0
LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+
JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZElu
ZGV4KQordm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRS
ZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhLCBpbnQz
Ml90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgcG9wdWxhdGUoaXRlbXMsIHRleHREaXJlY3Rpb24p
OworICAgIE5TRm9udCAqZm9udDsKKyAgICBpZiAoZGF0YS5mb250SW5mby5mb250QXR0cmlidXRl
RGljdGlvbmFyeSkKKyAgICAgICAgZm9udCA9IFtOU0ZvbnQgZm9udFdpdGhEZXNjcmlwdG9yOltO
U0ZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRBdHRyaWJ1dGVzOihOU0RpY3Rp
b25hcnkgKilkYXRhLmZvbnRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgpXSBzaXpl
OmRhdGEuZm9udEluZm8uZm9udE92ZXJyaWRlU2l6ZV07CisgICAgZWxzZQorICAgICAgICBmb250
ID0gW05TRm9udCBtZW51Rm9udE9mU2l6ZTowXTsKKworICAgIHBvcHVsYXRlKGl0ZW1zLCBmb250
LCB0ZXh0RGlyZWN0aW9uKTsKIAogICAgIFttX3BvcHVwLmdldCgpIGF0dGFjaFBvcFVwV2l0aEZy
YW1lOnJlY3QgaW5WaWV3Om1fd2ViVmlld107CiAgICAgW21fcG9wdXAuZ2V0KCkgc2VsZWN0SXRl
bUF0SW5kZXg6c2VsZWN0ZWRJbmRleF07CiAgICAgW21fcG9wdXAuZ2V0KCkgc2V0VXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IExUUiA/IE5TVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uUmlnaHRUb0xlZnRdOwogCi0gICAgTlNNZW51KiBtZW51ID0gW21fcG9wdXAuZ2V0KCkgbWVu
dV07CisgICAgTlNNZW51ICptZW51ID0gW21fcG9wdXAuZ2V0KCkgbWVudV07CiAKICAgICAvLyBU
aGVzZSB2YWx1ZXMgd2VyZSBib3Jyb3dlZCBmcm9tIEFwcEtpdCB0byBtYXRjaCB0aGVpciBwbGFj
ZW1lbnQgb2YgdGhlIG1lbnUuCiAgICAgY29uc3QgaW50IHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0
ID0gLTEwOwpAQCAtMTExLDcgKzExNyw3IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlNYWM6OnNo
b3dQb3B1cE1lbnUKICAgICBbbV93ZWJWaWV3IGFkZFN1YnZpZXc6ZHVtbXlWaWV3LmdldCgpXTsK
ICAgICBsb2NhdGlvbiA9IFtkdW1teVZpZXcuZ2V0KCkgY29udmVydFBvaW50OmxvY2F0aW9uIGZy
b21WaWV3Om1fd2ViVmlld107CiAKLSAgICBXS1BvcHVwTWVudShtZW51LCBsb2NhdGlvbiwgcm91
bmRmKE5TV2lkdGgocmVjdCkpLCBkdW1teVZpZXcuZ2V0KCksIHNlbGVjdGVkSW5kZXgsIFtOU0Zv
bnQgbWVudUZvbnRPZlNpemU6MF0pOworICAgIFdLUG9wdXBNZW51KG1lbnUsIGxvY2F0aW9uLCBy
b3VuZGYoTlNXaWR0aChyZWN0KSksIGR1bW15Vmlldy5nZXQoKSwgc2VsZWN0ZWRJbmRleCwgZm9u
dCk7CiAKICAgICBbbV9wb3B1cC5nZXQoKSBkaXNtaXNzUG9wVXBdOwogICAgIFtkdW1teVZpZXcu
Z2V0KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3OTgyMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNTE0LDggKzUxNCw2IEBACiAJCUJDNDA3NjJCMTI0RkYwNDAwMDY4RjIwQSAvKiBX
S1VSTFJlc3BvbnNlTlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNDA3NjI1MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDNDA3NjJDMTI0
RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQwNzYyNjEyNEZGMDQwMDA2OEYyMEEgLyogV0tV
UkxSZXNwb25zZU5TLm1tICovOyB9OwogCQlCQzQwNzgzRDEyNTBGQUREMDA2OEYyMEEgLyogV0tF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0
MDc4M0MxMjUwRkFERDAwNjhGMjBBIC8qIFdLRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUJDNDU0MjM0MTMwQzVGM0YwMDczRTFDMSAvKiBU
ZXh0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM0NTQyMzIxMzBDNUYzRjAwNzNFMUMxIC8qIFRleHRJbmZvLmggKi87IH07Ci0JCUJDNDU0MjM1
MTMwQzVGM0YwMDczRTFDMSAvKiBUZXh0SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ1NDIzMzEzMEM1RjNGMDA3M0UxQzEgLyogVGV4dElu
Zm8uY3BwICovOyB9OwogCQlCQzQ5ODYxODEyNEQxMEUyMDBEODM0RTEgLyogSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzQ5ODYxNjEyNEQxMEUyMDBEODM0RTEgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0LmggKi87IH07CiAJCUJDNDk4NjE5MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM0OTg2MTcxMjREMTBFMjAwRDgzNEUxIC8qIEluamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5jcHAgKi87IH07CiAJCUJDNDk4NjJGMTI0RDE4QzEwMEQ4MzRFMSAvKiBXS0J1
bmRsZUhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNDk4NjJEMTI0RDE4QzEwMEQ4MzRFMSAvKiBXS0J1bmRsZUhpdFRlc3RSZXN1
bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC02
OTMsNiArNjkxLDEwIEBACiAJCUJDRTQ2OTVBMTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJt
aXNzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVu
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJD
RTQ2OTc3MTIxNEYyN0IwMDBCOThFQiAvKiBXZWJGcmFtZUxpc3RlbmVyUHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTQ2OTc2MTIxNEYyN0Iw
MDBCOThFQiAvKiBXZWJGcmFtZUxpc3RlbmVyUHJveHkuaCAqLzsgfTsKIAkJQkNFNDY5NzkxMjE0
RjJCNDAwMEI5OEVCIC8qIFdlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U0Njk3ODEyMTRGMkI0MDAwQjk4RUIg
LyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcCAqLzsgfTsKKwkJQkNFODFEOEMxMzE5RjdFRjAw
MjQxOTEwIC8qIEZvbnRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRTgxRDhBMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5jcHAgKi87
IH07CisJCUJDRTgxRDhEMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFODFEOEIxMzE5RjdFRjAwMjQx
OTEwIC8qIEZvbnRJbmZvLmggKi87IH07CisJCUJDRTgxRDk0MTMxOUZBNUUwMDI0MTkxMCAvKiBE
aWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRTgxRDkyMTMxOUZBNUUwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJ
bmZvLmNwcCAqLzsgfTsKKwkJQkNFODFEOTUxMzE5RkE1RTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQ
b3B1cEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRTgxRDkzMTMxOUZBNUUwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggKi87IH07
CiAJCUJDRUU3QUQwMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFRTdBQ0MxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCUJDRUU3QUQxMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJv
eHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNFRTdBQ0QxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgg
Ki87IH07CiAJCUJDRUU3RDBEMTI4NDZGNjkwMDk4MjdEQSAvKiBXZWJDb250ZXh0TWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRUU3RDBCMTI4NDZGNjkwMDk4MjdEQSAvKiBXZWJDb250ZXh0TWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKQEAgLTEzNDYsOCArMTM0OCw2IEBACiAJCUJDNDA3NjI1MTI0RkYwNDAwMDY4RjIw
QSAvKiBXS1VSTFJlc3BvbnNlTlMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tVUkxSZXNwb25zZU5TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNDA3NjI2
MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1VSTFJlc3BvbnNlTlMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDNDA3ODNDMTI1MEZBREQwMDY4RjIwQSAvKiBXS0V2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQkM0NTQyMzIxMzBDNUYzRjAwNzNFMUMxIC8qIFRleHRJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUJDNDU0MjMzMTMwQzVGM0YwMDczRTFDMSAvKiBUZXh0SW5mby5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0SW5mby5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNDk4NjE2MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDNDk4NjE3MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0
OTg2MkQxMjREMThDMTAwRDgzNEUxIC8qIFdLQnVuZGxlSGl0VGVzdFJlc3VsdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUhpdFRlc3RSZXN1bHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjUsNiArMTUyNSwxMCBAQAogCQlCQ0U0Njk1ODEy
MTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0U0Njk3NjEyMTRGMjdCMDAwQjk4RUIgLyogV2ViRnJh
bWVMaXN0ZW5lclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZy
YW1lTGlzdGVuZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0U0Njk3
ODEyMTRGMkI0MDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRTgxRDhBMTMxOUY3RUYwMDI0MTkxMCAvKiBG
b250SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250SW5m
by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRTgxRDhCMTMxOUY3RUYwMDI0
MTkxMCAvKiBGb250SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0U4MUQ5MjEzMTlGQTVFMDAy
NDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkNFODFEOTMxMzE5RkE1RTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cElu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGljdGlvbmFyeVBvcHVwSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VFN0FCMzEyODE3MDk1MDA5ODI3
REEgLyogV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNFRTdBQ0MxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQcm9jZXNz
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0VFN0FDRDEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzIsNiArMTkzNiw4IEBACiAJCQkJQkND
NDNBQjkxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5oICovLAogCQkJ
CUUxOEM5MkYzMTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8uY3BwICovLAogCQkJCUUxQ0Mx
QjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAqLywKKwkJCQlCQ0U4MUQ4QTEzMTlG
N0VGMDAyNDE5MTAgLyogRm9udEluZm8uY3BwICovLAorCQkJCUJDRTgxRDhCMTMxOUY3RUYwMDI0
MTkxMCAvKiBGb250SW5mby5oICovLAogCQkJCUJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oICovLAogCQkJCTFBQUI0QThDMTI5NkYwQTIwMDIz
OTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggKi8sCiAJCQkJMzMxNTI5NzMxMzBEMENCMjAwRUQy
NDgzIC8qIFNlY3VyaXR5T3JpZ2luRGF0YS5jcHAgKi8sCkBAIC0xOTQzLDggKzE5NDksNiBAQAog
CQkJCTFBNjQyMEUzMTJEQ0UyRkYwMENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuaCAqLywKIAkJ
CQlCQ0JEM0MzQTEyNUJGQTdBMDBEMkMyOUYgLyogU3RyaW5nUGFpclZlY3Rvci5oICovLAogCQkJ
CTFBNUU0REEzMTJEM0JEM0QwMDk5QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8sCi0JCQkJ
QkM0NTQyMzMxMzBDNUYzRjAwNzNFMUMxIC8qIFRleHRJbmZvLmNwcCAqLywKLQkJCQlCQzQ1NDIz
MjEzMEM1RjNGMDA3M0UxQzEgLyogVGV4dEluZm8uaCAqLywKIAkJCQkxQTY0MjQ1RDEyREUyOUEx
MDBDQUFFMkMgLyogVXBkYXRlSW5mby5jcHAgKi8sCiAJCQkJMUE2NDI0NUMxMkRFMjlBMTAwQ0FB
RTJDIC8qIFVwZGF0ZUluZm8uaCAqLywKIAkJCQlCQ0IwQjBERjEyMzA1QUIxMDBCMTM0MUUgLyog
VXNlck1lc3NhZ2VDb2RlcnMuaCAqLywKQEAgLTI1NzQsNiArMjU3OCw4IEBACiAJCQkJMUE2RjlG
QjYxMUUxNDA4NTAwREIxMzcxIC8qIENvbW1hbmRMaW5lTWFjLmNwcCAqLywKIAkJCQkxQTk2MzlG
NTEyRjM4RUNEMDA3OEEwNjIgLyogQ29yZUFuaW1hdGlvblJlbmRlcmVyLmggKi8sCiAJCQkJMUE5
NjM5RjYxMkYzOEVDRDAwNzhBMDYyIC8qIENvcmVBbmltYXRpb25SZW5kZXJlci5tbSAqLywKKwkJ
CQlCQ0U4MUQ5MjEzMTlGQTVFMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgKi8s
CisJCQkJQkNFODFEOTMxMzE5RkE1RTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAq
LywKIAkJCQkxQTkyREMxMjEyRjhCQUI5MDAxN0FGNjUgLyogTGF5ZXJUcmVlQ29udGV4dE1hYy5t
bSAqLywKIAkJCQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRF
dmVudE1hYy5tbSAqLywKIAkJCQlDNTc0QTU3RjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2Fy
ZFR5cGVzLmggKi8sCkBAIC0zMzYzLDcgKzMzNjksNiBAQAogCQkJCTUxMkUzNTJGMTMwQjU1QUYw
MEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEyRTM1NkIxMzBCNTdGMDAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkUzNUY5MTMwQjY0MkUwMEFCRDE5QSAv
KiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAotCQkJCUJDNDU0MjM0MTMwQzVGM0YwMDczRTFDMSAvKiBUZXh0SW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFDODZGRjQxMzBCNDZEMzAwMkMxMjU3IC8qIFdLUGx1Z2luU2l0ZURhdGFNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM4NzAyRDEzMEI0OUEyMDAyQzEyNTcgLyogV2Vi
UGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzM2NzYzMDEzMEM5
OTk4MDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMzM4MSw2ICszMzg2LDggQEAKIAkJCQkzMzA5MzQ1MDEzMTVCOTREMDA5N0E3QkMgLyogV2Vi
Q29va2llTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0NTYxMzE1Qjk3NTAwOTdB
N0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0
NUIxMzE1Qjk5ODAwOTdBN0JDIC8qIFdLQ29va2llTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkNFODFEOEQxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQ0U4MUQ5NTEzMTlGQTVFMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0zODYyLDcgKzM4NjksNiBAQAogCQkJCTUxMkUzNTJFMTMwQjU1QUYw
MEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTJFMzU2QTEzMEI1N0YwMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRTM1RjgxMzBCNjQy
RTAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkM0NTQyMzUxMzBDNUYzRjAwNzNFMUMxIC8qIFRl
eHRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzg2RkYzMTMwQjQ2RDMwMDJDMTI1NyAv
KiBXS1BsdWdpblNpdGVEYXRhTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUM4NzAy
RTEzMEI0OUEyMDAyQzEyNTcgLyogV2ViUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTMzMzY3NjJGMTMwQzk5OTgwMDZDOURFMiAvKiBXZWJSZXNvdXJjZUNhY2hl
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4ODQsNiArMzg5MCw4IEBACiAJCQkJMzMw
OTM0NEYxMzE1Qjk0RDAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzMwOTM0NTUxMzE1Qjk3NTAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzA5MzQ1QTEzMTVCOTk4MDA5N0E3QkMgLyogV0tD
b29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDRTgxRDhDMTMxOUY3RUYwMDI0
MTkxMCAvKiBGb250SW5mby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0U4MUQ5NDEzMTlGQTVF
MDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBvcHVwTWVudS5jcHAJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTAsNyArMTEwLDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYg
cgogICAgIEludFJlY3QgcGFnZUNvb3JkaW5hdGVzKHZpZXctPmNvbnRlbnRzVG9XaW5kb3cocmVj
dC5sb2NhdGlvbigpKSwgcmVjdC5zaXplKCkpOwogCiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
IHBsYXRmb3JtRGF0YTsKLSAgICBzZXRVcFBsYXRmb3JtRGF0YShwYWdlQ29vcmRpbmF0ZXMsIHBs
YXRmb3JtRGF0YSk7CisgICAgc2V0VXBQbGF0Zm9ybURhdGEocGFnZUNvb3JkaW5hdGVzLCB2aWV3
LCBwbGF0Zm9ybURhdGEpOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUocGFnZUNvb3JkaW5h
dGVzLCBtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1zLCBp
bmRleCwgcGxhdGZvcm1EYXRhKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBN
ZW51LmgJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBA
QCBwcml2YXRlOgogICAgIFdlYlBvcHVwTWVudShXZWJQYWdlKiwgV2ViQ29yZTo6UG9wdXBNZW51
Q2xpZW50Kik7CiAKICAgICBWZWN0b3I8V2ViUG9wdXBJdGVtPiBwb3B1bGF0ZUl0ZW1zKCk7Ci0g
ICAgdm9pZCBzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBwYWdlQ29v
cmRpbmF0ZXMsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpOworICAgIHZvaWQgc2V0VXBQbGF0Zm9y
bURhdGEoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcGFnZUNvb3JkaW5hdGVzLCBXZWJDb3JlOjpG
cmFtZVZpZXcqLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKTsKIAogICAgIFdlYkNvcmU6OlBvcHVw
TWVudUNsaWVudCogbV9wb3B1cENsaWVudDsKICAgICBXZWJQYWdlKiBtX3BhZ2U7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJQb3B1cE1lbnVH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ3RrL1dlYlBvcHVwTWVudUd0ay5jcHAJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViUG9wdXBNZW51R3RrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRm
b3JtRGF0YShjb25zdCBJbnRSZWN0JiwgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJikKK3ZvaWQgV2Vi
UG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3Kiwg
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUG9wdXBN
ZW51TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYlBvcHVwTWVudU1hYy5tbQkocmV2aXNpb24gNzk4MjApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJQb3B1cE1lbnVNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNywzMCBAQAogI2ltcG9ydCAiV2ViUG9wdXBN
ZW51LmgiCiAKICNpbXBvcnQgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvUG9wdXBNZW51Q2xpZW50Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRh
KGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKQordm9pZCBXZWJQb3B1cE1l
bnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqIHZpZXcsIFBs
YXRmb3JtUG9wdXBNZW51RGF0YSYgZGF0YSkKIHsKKyAgICBOU0ZvbnQgKmZvbnQgPSBtX3BvcHVw
Q2xpZW50LT5tZW51U3R5bGUoKS5mb250KCkucHJpbWFyeUZvbnQoKS0+Z2V0TlNGb250KCk7Cisg
ICAgaWYgKCFmb250KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ0ZEaWN0aW9uYXJ5UmVm
IGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IChDRkRpY3Rpb25hcnlSZWYpW1tmb250IGZvbnRE
ZXNjcmlwdG9yXSBmb250QXR0cmlidXRlc107CisgICAgaWYgKCFmb250RGVzY3JpcHRvckF0dHJp
YnV0ZXMpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IHZpZXctPmZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGRhdGEuZm9u
dEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkgPSBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXM7
CisgICAgZGF0YS5mb250SW5mby5mb250T3ZlcnJpZGVTaXplID0gZnJhbWUtPnBhZ2VTY2FsZUZh
Y3RvcigpID09IDEgPyAwIDogKFtbZm9udCBmb250RGVzY3JpcHRvcl0gcG9pbnRTaXplXSAqIGZy
YW1lLT5wYWdlU2NhbGVGYWN0b3IoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQb3B1cE1l
bnVRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5jcHAJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9y
bURhdGEoY29uc3QgSW50UmVjdCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpCit2b2lkIFdlYlBv
cHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyosIFBs
YXRmb3JtUG9wdXBNZW51RGF0YSYpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViUG9wdXBN
ZW51V2luLmNwcAkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw3IEBAIHN0YXRpYyBjb25zdCBpbnQgc2VwYXJhdG9yUGFkZGluZyA9IDQ7CiBz
dGF0aWMgY29uc3QgaW50IHNlcGFyYXRvckhlaWdodCA9IDE7CiBzdGF0aWMgY29uc3QgaW50IHBv
cHVwV2luZG93Qm9yZGVyV2lkdGggPSAxOwogCi12b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0
Zm9ybURhdGEoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcGFnZUNvb3JkaW5hdGVzLCBQbGF0Zm9y
bVBvcHVwTWVudURhdGEmIGRhdGEpCit2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURh
dGEoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcGFnZUNvb3JkaW5hdGVzLCBGcmFtZVZpZXcqLCBQ
bGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEpCiB7CiAgICAgaW50IGl0ZW1Db3VudCA9IG1fcG9w
dXBDbGllbnQtPmxpc3RTaXplKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDc5ODIwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0LmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJEaWN0aW9u
YXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCi0jaW1wb3J0ICJUZXh0SW5m
by5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJFdmVu
dC5oIgogI2ltcG9ydCAiV2ViRnJhbWUuaCIKQEAgLTMwNCwxMiArMzA0LDEyIEBAIHZvaWQgV2Vi
UGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdEwKICAgICBJbnRSZWN0IGZpbmFsUmFuZ2VS
ZWN0ID0gZnJhbWUtPnZpZXcoKS0+Y29udGVudHNUb1dpbmRvdyhxdWFkc1swXS5lbmNsb3NpbmdC
b3VuZGluZ0JveCgpKTsKICAgICBGbG9hdFBvaW50IGJhc2VsaW5lT3JpZ2luKGZpbmFsUmFuZ2VS
ZWN0LngoKSwgKGZpbmFsUmFuZ2VSZWN0LnkoKSArIChbZm9udCBhc2NlbmRlcl0gKiBmcmFtZS0+
cGFnZVNjYWxlRmFjdG9yKCkpKSk7CiAgICAgCi0gICAgVGV4dEluZm8gdGV4dEluZm87Ci0gICAg
dGV4dEluZm8uYmFzZWxpbmVPcmlnaW4gPSBiYXNlbGluZU9yaWdpbjsKLSAgICB0ZXh0SW5mby5m
b250QXR0cmlidXRlRGljdGlvbmFyeSA9IGZvbnREZXNjcmlwdG9yQXR0cmlidXRlczsKLSAgICB0
ZXh0SW5mby5mb250T3ZlcnJpZGVTaXplID0gZnJhbWUtPnBhZ2VTY2FsZUZhY3RvcigpID09IDEg
PyAwIDogKFtbZm9udCBmb250RGVzY3JpcHRvcl0gcG9pbnRTaXplXSAqIGZyYW1lLT5wYWdlU2Nh
bGVGYWN0b3IoKSk7CisgICAgRGljdGlvbmFyeVBvcHVwSW5mbyBkaWN0aW9uYXJ5UG9wdXBJbmZv
OworICAgIGRpY3Rpb25hcnlQb3B1cEluZm8uYmFzZWxpbmVPcmlnaW4gPSBiYXNlbGluZU9yaWdp
bjsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLmZvbnRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0aW9u
YXJ5ID0gZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzOworICAgIGRpY3Rpb25hcnlQb3B1cEluZm8u
Zm9udEluZm8uZm9udE92ZXJyaWRlU2l6ZSA9IGZyYW1lLT5wYWdlU2NhbGVGYWN0b3IoKSA9PSAx
ID8gMCA6IChbW2ZvbnQgZm9udERlc2NyaXB0b3JdIHBvaW50U2l6ZV0gKiBmcmFtZS0+cGFnZVNj
YWxlRmFjdG9yKCkpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJm
b3JtRGljdGlvbmFyeUxvb2t1cChmaW5hbFJhbmdlLT50ZXh0KCksIHRleHRJbmZvKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChm
aW5hbFJhbmdlLT50ZXh0KCksIGRpY3Rpb25hcnlQb3B1cEluZm8pKTsKIH0KIAogc3RhdGljIGlu
bGluZSB2b2lkIHNjcm9sbChQYWdlKiBwYWdlLCBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBT
Y3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52
Y3Byb2oJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNiArNDIzLDE0IEBACiAJCQkJPgogCQkJPC9GaWxl
PgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxGb250SW5mby5jcHAiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxG
b250SW5mby5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxTaGFyZWRcRm9udFNtb290aGluZ0xldmVsLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAt
NTMxLDE0ICs1MzksNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRp
dmVQYXRoPSIuLlxTaGFyZWRcVGV4dEluZm8uY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxG
aWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcVGV4dEluZm8uaCIKLQkJCQk+Ci0JCQk8
L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFVwZGF0ZUluZm8u
Y3BwIgogCQkJCT4KIAkJCTwvRmlsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83983</attachid>
            <date>2011-02-27 11:45:59 -0800</date>
            <delta_ts>2011-02-28 10:38:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48234-20110227114559.patch</filename>
            <type>text/plain</type>
            <size>54064</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTEtMDItMjYgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaXplIG9mIHRleHQgaW4gcG9wdXAgbWVudSBkb2Vzbid0IG1hdGNoIHNp
emUgb2YgdGV4dCBpbiA8c2VsZWN0PiBpdHNlbGYgaW4gV2ViS2l0MgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyMzQKKworICAgICAgICAqIFNoYXJl
ZC9Gb250SW5mby5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpGb250SW5mbzo6Rm9udElu
Zm8pOgorICAgICAgICAoV2ViS2l0OjpGb250SW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6Rm9udEluZm86OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0ZvbnRJbmZvLmg6IEFkZGVk
LgorICAgICAgICBBZGQgY2xhc3MgdG8gZW5jYXBzdWxhdGUgcGFzc2luZyBhIGZvbnQgZGVzY3Jp
cHRpb24gb3ZlciB0aGUgd2lyZS4KKworICAgICAgICAqIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVu
dURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGE6OmVuY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmg6CisgICAgICAgIEFkZCBGb250
SW5mbyBhcyBleHRyYSBkYXRhIGZvciB0aGUgTWFjLgorCisgICAgICAgICogU2hhcmVkL1RleHRJ
bmZvLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvVGV4dEluZm8uaDogUmVtb3ZlZC4K
KyAgICAgICAgUmVwbGFjZSB0aGlzIHdpdGggdGhlIG1vcmUgYXBwcm9wcmlhdGVseSBEaWN0aW9u
YXJ5UG9wdXBJbmZvLgorCisgICAgICAgICogU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVGV4dEluZm8uY3BwLgorICAgICAg
ICAoV2ViS2l0OjpEaWN0aW9uYXJ5UG9wdXBJbmZvOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0
OjpEaWN0aW9uYXJ5UG9wdXBJbmZvOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9EaWN0aW9u
YXJ5UG9wdXBJbmZvLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5m
by5oLgorICAgICAgICAoV2ViS2l0OjpEaWN0aW9uYXJ5UG9wdXBJbmZvOjpEaWN0aW9uYXJ5UG9w
dXBJbmZvKToKKyAgICAgICAgUmVwbGFjZSBpbmRpdmlkdWFsIGZvbnQgcmVsYXRlZCBmaWVsZHMg
d2l0aCBGb250SW5mby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1
cCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQ
ZXJmb3JtRGljdGlvbmFyeUxvb2t1cCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24pOgorICAgICAg
ICBSZW5hbWUgVGV4dEluZm8gLT4gRGljdGlvbmFyeVBvcHVwSW5mby4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1l
bnVQcm94eU1hYzo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94
eU1hYzo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgIFVzZSBGb250SW5mbyB0byBjb25zdHJ1Y3Qg
YSBGb250IGFuZCB1c2UgaXQgZm9yIHRoZSBwb3B1cCBtZW51LgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUG9wdXBNZW51Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViUG9wdXBNZW51R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpzZXRV
cFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViUG9wdXBNZW51TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNldFVw
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dl
YlBvcHVwTWVudVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpzZXRVcFBs
YXRmb3JtRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2Vi
UG9wdXBNZW51V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpzZXRVcFBs
YXRmb3JtRGF0YSk6CisgICAgICAgIEFkZCBGcmFtZVZpZXcqIHBhcmFtZXRlciB0byBzZXRVcFBs
YXRmb3JtRGF0YSB0byBnZXQgdGhlIGN1cnJlbnQgc2NhbGUgZmFjdG9yLgorCisgICAgICAgICog
V2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKwogMjAxMS0wMi0yNiAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBC
ZXJuc3RlaW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw4IEBAIEhF
QURFUlMgKz0gXAogICAgIFNoYXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAgICAgU2hhcmVkL0NvcmVJ
UENTdXBwb3J0L0RyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmggXAogICAgIFNoYXJlZC9Db3JlSVBD
U3VwcG9ydC9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmggXAorICAgIFNoYXJlZC9EaWN0
aW9uYXJ5UG9wdXBJbmZvLmggXAorICAgIFNoYXJlZC9Gb250SW5mby5oIFwKICAgICBTaGFyZWQv
SW1hZ2VPcHRpb25zLmggXAogICAgIFNoYXJlZC9JbW11dGFibGVBcnJheS5oIFwKICAgICBTaGFy
ZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5oIFwKQEAgLTExOCw3ICsxMjAsNiBAQCBIRUFERVJTICs9
IFwKICAgICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmggXAogICAgIFNoYXJlZC9TZXNzaW9u
U3RhdGUuaCBcCiAgICAgU2hhcmVkL1N0cmluZ1BhaXJWZWN0b3IuaCBcCi0gICAgU2hhcmVkL1Rl
eHRJbmZvLmggXAogICAgIFNoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oIFwKICAgICBTaGFyZWQv
VmlzaXRlZExpbmtUYWJsZS5oIFwKICAgICBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgg
XApAQCAtMjg0LDYgKzI4NSw4IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAgXAogICAgIFNoYXJlZC9TaGFy
ZWFibGVCaXRtYXAuY3BwIFwKICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBcCisgICAgU2hh
cmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uY3BwIFwKKyAgICBTaGFyZWQvRm9udEluZm8uY3BwIFwK
ICAgICBTaGFyZWQvSW1tdXRhYmxlQXJyYXkuY3BwIFwKICAgICBTaGFyZWQvSW1tdXRhYmxlRGlj
dGlvbmFyeS5jcHAgXAogICAgIFNoYXJlZC9NdXRhYmxlQXJyYXkuY3BwIFwKQEAgLTI5Myw3ICsy
OTYsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvUHJpbnRJbmZvLmNwcCBcCiAgICAgU2hh
cmVkL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgXAogICAgIFNoYXJlZC9TZXNzaW9uU3RhdGUuY3Bw
IFwKLSAgICBTaGFyZWQvVGV4dEluZm8uY3BwIFwKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJs
ZS5jcHAgXAogICAgIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAgICAgU2hh
cmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L0RpY3Rpb25hcnlQb3B1cEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcAkocmV2aXNpb24gNzk4MTIpCShmcm9tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5mby5jcHA6Nzk4MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0SW5m
by5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpZiBQTEFURk9S
TShNQUMpCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCit2b2lkIFRleHRJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNv
ZGVyKiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXItPmVuY29kZShiYXNlbGluZU9yaWdp
bik7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBmb250
QXR0cmlidXRlRGljdGlvbmFyeS5nZXQoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGZvbnRPdmVy
cmlkZVNpemUpOworI2VuZGlmCit9CisKK2Jvb2wgVGV4dEluZm86OmRlY29kZShDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIFRleHRJbmZvJiByZXN1bHQpCit7CisgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocmVzdWx0LmJhc2VsaW5lT3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIUNvcmVJUEM6OmRlY29kZShkZWNvZGVy
LCByZXN1bHQuZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LmZvbnRPdmVycmlkZVNpemUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBv
cHVwSW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25h
cnlQb3B1cEluZm8uY3BwCShyZXZpc2lvbiA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMzUgKzI0LDI0
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRJbmZvLmgiCisj
aW5jbHVkZSAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiQXJndW1lbnRDb2Rl
cnNDRi5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFRleHRJbmZvOjpl
bmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAordm9pZCBEaWN0
aW9uYXJ5UG9wdXBJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
KSBjb25zdAogewogICAgIGVuY29kZXItPmVuY29kZShiYXNlbGluZU9yaWdpbik7Ci0jaWYgUExB
VEZPUk0oTUFDKQotICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBmb250QXR0cmlidXRlRGlj
dGlvbmFyeS5nZXQoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKGZvbnRPdmVycmlkZVNpemUpOwot
I2VuZGlmCisgICAgZW5jb2Rlci0+ZW5jb2RlKGZvbnRJbmZvKTsKIH0KIAotYm9vbCBUZXh0SW5m
bzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgVGV4dEluZm8mIHJl
c3VsdCkKK2Jvb2wgRGljdGlvbmFyeVBvcHVwSW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgRGljdGlvbmFyeVBvcHVwSW5mbyYgcmVzdWx0KQogewogICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5iYXNlbGluZU9yaWdpbikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFDb3JlSVBDOjpkZWNvZGUoZGVj
b2RlciwgcmVzdWx0LmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5KSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5mb250T3ZlcnJpZGVTaXplKSkK
KyAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuZm9udEluZm8pKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0jZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oCShyZXZpc2lvbiA3OTgxMikJKGZy
b20gU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmZvLmg6Nzk4MTIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRJbmZvX2gKKyNkZWZpbmUgVGV4dElu
Zm9faAorCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisgICAgY2xhc3MgQXJndW1lbnREZWNv
ZGVyOworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFRleHRJbmZvIHsKK3B1YmxpYzoKKyAgICBUZXh0SW5mbygpIHsgfQorCisgICAg
dm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CisgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFRleHRJbmZvJik7CisKKyAg
ICBXZWJDb3JlOjpGbG9hdFBvaW50IGJhc2VsaW5lT3JpZ2luOworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBmb250QXR0cmlidXRlRGljdGlvbmFyeTsK
KyAgICBkb3VibGUgZm9udE92ZXJyaWRlU2l6ZTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBUZXh0SW5mb19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsMTEgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBUZXh0SW5mb19oCi0jZGVmaW5lIFRleHRJbmZvX2gKKyNpZm5kZWYgRGljdGlv
bmFyeVBvcHVwSW5mb19oCisjZGVmaW5lIERpY3Rpb25hcnlQb3B1cEluZm9faAogCisjaW5jbHVk
ZSAiRm9udEluZm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KLSNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1
bWVudERlY29kZXI7CkBAIC0zNiwyMCArMzYsMTkgQEAgbmFtZXNwYWNlIENvcmVJUEMgewogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgVGV4dEluZm8geworY2xhc3MgRGljdGlvbmFyeVBv
cHVwSW5mbyB7CiBwdWJsaWM6Ci0gICAgVGV4dEluZm8oKSB7IH0KKyAgICBEaWN0aW9uYXJ5UG9w
dXBJbmZvKCkKKyAgICB7CisgICAgfQogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciosIFRleHRJbmZvJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciosIERpY3Rpb25hcnlQb3B1cEluZm8mKTsKIAogICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgYmFzZWxpbmVPcmlnaW47Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5OwotICAgIGRvdWJs
ZSBmb250T3ZlcnJpZGVTaXplOwotI2VuZGlmCisgICAgRm9udEluZm8gZm9udEluZm87CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlmIC8vIFRleHRJbmZvX2gKKyNlbmRpZiAv
LyBEaWN0aW9uYXJ5UG9wdXBJbmZvX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250
SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5mby5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRm9udEluZm8uaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0Yu
aCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRm9udEluZm86OkZvbnRJbmZvKCkK
KyNpZiBQTEFURk9STShNQUMpCisgICAgOiBmb250T3ZlcnJpZGVTaXplKDApCisjZW5kaWYKK3sK
K30KKwordm9pZCBGb250SW5mbzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5j
b2RlcikgY29uc3QKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgQ29yZUlQQzo6ZW5jb2RlKGVu
Y29kZXIsIGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgpKTsKKyAgICBlbmNvZGVyLT5lbmNv
ZGUoZm9udE92ZXJyaWRlU2l6ZSk7CisjZW5kaWYKK30KKworYm9vbCBGb250SW5mbzo6ZGVjb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgRm9udEluZm8mIGZvbnRJbmZvKQor
eyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFDb3JlSVBDOjpkZWNvZGUoZGVjb2Rl
ciwgZm9udEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZm9udEluZm8uZm9udE92ZXJyaWRlU2l6ZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIAorICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9G
b250SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5mby5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZvbnRJbmZvX2gK
KyNkZWZpbmUgRm9udEluZm9faAorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisgICAgY2xhc3MgQXJn
dW1lbnREZWNvZGVyOworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisgICAgCitzdHJ1Y3QgRm9udEluZm8geworICAgIEZvbnRJbmZvKCk7CisgICAg
CisgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CisgICAg
c3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEZvbnRJbmZvJik7
CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5OworICAgIGRvdWJsZSBmb250T3ZlcnJpZGVTaXplOwor
I2VuZGlmCit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBGb250
SW5mb19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhLmNwcAkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsNDAgKzYwLDQzIEBAIHZv
aWQgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUoQ29yZUkKICAgICBTaGFyZWRNZW1vcnk6
OkhhbmRsZSBzZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZTsKICAgICBtX3NlbGVjdGVkQmFja2lu
Z1N0b3JlLT5jcmVhdGVIYW5kbGUoc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIGVu
Y29kZXItPmVuY29kZShzZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSk7CisjZWxpZiBQTEFURk9S
TShNQUMpCisgICAgZW5jb2Rlci0+ZW5jb2RlKGZvbnRJbmZvKTsKICNlbmRpZgogfQogCiBib29s
IFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhKQogewogI2lmIFBMQVRGT1JNKFdJ
TikKLSAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEgZDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShkLm1fY2xpZW50UGFkZGluZ0xlZnQpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEu
bV9jbGllbnRQYWRkaW5nTGVmdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShkLm1fY2xpZW50UGFkZGluZ1JpZ2h0KSkKKyAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShkYXRhLm1fY2xpZW50UGFkZGluZ1JpZ2h0KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGQubV9jbGllbnRJbnNldExlZnQpKQorICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubV9jbGllbnRJbnNldExlZnQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZC5tX2NsaWVudEluc2V0UmlnaHQp
KQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubV9jbGllbnRJbnNldFJpZ2h0KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGQubV9wb3B1cFdp
ZHRoKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShkYXRhLm1fcG9wdXBXaWR0aCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShkLm1faXRlbUhlaWdo
dCkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGF0YS5tX2l0ZW1IZWlnaHQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZC5tX2JhY2tpbmdTdG9y
ZVNpemUpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubV9iYWNraW5nU3RvcmVTaXpl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgbm90
U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobm90
U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ZC5tX25vdFNlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZC5t
X2JhY2tpbmdTdG9yZVNpemUsIG5vdFNlbGVjdGVkQmFja2luZ1N0b3JlSGFuZGxlKTsKKyAgICBk
YXRhLm1fbm90U2VsZWN0ZWRCYWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShk
YXRhLm1fYmFja2luZ1N0b3JlU2l6ZSwgbm90U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOwog
CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGU7CiAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZC5tX3NlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoZC5tX2JhY2tpbmdTdG9yZVNpemUsIHNlbGVjdGVkQmFja2luZ1N0
b3JlSGFuZGxlKTsKLQotICAgIGRhdGEgPSBkOworICAgIGRhdGEubV9zZWxlY3RlZEJhY2tpbmdT
dG9yZSA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRhdGEubV9iYWNraW5nU3RvcmVTaXplLCBz
ZWxlY3RlZEJhY2tpbmdTdG9yZUhhbmRsZSk7CisjZWxpZiBQTEFURk9STShNQUMpCisgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUoZGF0YS5mb250SW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgorICAgIAogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oCShyZXZpc2lvbiA3OTgyMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQbGF0Zm9ybVBvcHVwTWVudURhdGFfaAogI2Rl
ZmluZSBQbGF0Zm9ybVBvcHVwTWVudURhdGFfaAogCisjaW5jbHVkZSAiRm9udEluZm8uaCIKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApAQCAtMzgsNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFBsYXRm
b3JtUG9wdXBNZW51RGF0YSB7CiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhKCk7Ci0gICAgCisK
ICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhJik7CiAKQEAgLTUyLDYgKzUzLDggQEAgc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51
RGF0YSB7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2JhY2tpbmdTdG9yZVNpemU7CiAgICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9ub3RTZWxlY3RlZEJhY2tpbmdTdG9yZTsKICAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBtX3NlbGVjdGVkQmFja2luZ1N0b3JlOworI2VsaWYgUExBVEZP
Uk0oTUFDKQorICAgIEZvbnRJbmZvIGZvbnRJbmZvOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvVGV4dEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9UZXh0SW5mby5jcHAJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1RleHRJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRJbmZvLmgiCi0K
LSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLQotI2lmIFBMQVRGT1JNKE1BQykK
LSNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLXZvaWQgVGV4dEluZm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVu
Y29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKGJhc2VsaW5lT3JpZ2luKTsKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGZvbnRBdHRyaWJ1
dGVEaWN0aW9uYXJ5LmdldCgpKTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoZm9udE92ZXJyaWRlU2l6
ZSk7Ci0jZW5kaWYKLX0KLQotYm9vbCBUZXh0SW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgVGV4dEluZm8mIHJlc3VsdCkKLXsKLSAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShyZXN1bHQuYmFzZWxpbmVPcmlnaW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0j
aWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghQ29yZUlQQzo6ZGVjb2RlKGRlY29kZXIsIHJlc3Vs
dC5mb250QXR0cmlidXRlRGljdGlvbmFyeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuZm9udE92ZXJyaWRlU2l6ZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5mby5oCShyZXZpc2lvbiA3OTgyMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFRleHRJbmZvX2gKLSNkZWZpbmUgVGV4
dEluZm9faAotCi0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotCi1uYW1lc3BhY2UgQ29yZUlQQyB7Ci0gICAgY2xhc3MgQXJndW1lbnRE
ZWNvZGVyOwotICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKLX0KLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWNsYXNzIFRleHRJbmZvIHsKLXB1YmxpYzoKLSAgICBUZXh0SW5mbygpIHsgfQotCi0g
ICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7Ci0gICAgc3Rh
dGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFRleHRJbmZvJik7Ci0K
LSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGJhc2VsaW5lT3JpZ2luOwotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBmb250QXR0cmlidXRlRGljdGlvbmFy
eTsKLSAgICBkb3VibGUgZm9udE92ZXJyaWRlU2l6ZTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBUZXh0SW5mb19oCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDEwICsxMjgsOCBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wbGV4
VGV4dElucHV0RW5hYmxlZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmll
ciwgYm9vbCBjb21wbGV4VGV4dElucHV0RW5hYmxlZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBdXRvZGlzcGxheShib29sKSA9IDA7Ci0KICAgICB2aXJ0dWFsIENHQ29udGV4dFJlZiBjb250
YWluaW5nV2luZG93R3JhcGhpY3NDb250ZXh0KCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGRp
ZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRJbmZvJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBT
dHJpbmcmLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJikgPSAwOwogI2VuZGlmCiAKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0ID0gMDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiU3RyaW5nUGFpclZlY3Rv
ci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0
ZS5oIgotI2luY2x1ZGUgIlRleHRJbmZvLmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaCIKQEAgLTY2LDYgKzY1LDE2IEBACiAjaW5jbHVkZSAiV2ViUHJvdGVjdGlv
blNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJV
UkxSZXF1ZXN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+
CisKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgor
I2VuZGlmCisKICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSAiV2ViRHJhZ1NvdXJjZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW5mby5oPgpAQCAtNzMsMTEgKzgyLDYgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL1dDRGF0YU9iamVjdC5oPgogI2luY2x1ZGUgPHNobG9iai5oPgogI2VuZGlm
Ci0jaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRS
ZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpZm5kZWYg
TkRFQlVHCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpAQCAtMjQ1MCw5
ICsyNDU0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVkUGFnZXNDYWxsYmFjawogfQog
CiAjaWYgUExBVEZPUk0oTUFDKQotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVGV4dEluZm8mIHRleHRJbmZvKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykK
IHsKLSAgICBtX3BhZ2VDbGllbnQtPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKHRleHQsIHRl
eHRJbmZvKTsKKyAgICBtX3BhZ2VDbGllbnQtPmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKHRl
eHQsIGRpY3Rpb25hcnlQb3B1cEluZm8pOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnJl
Z2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihjb25zdCBDb3JlSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEyICs4MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBEaWN0aW9uYXJ5UG9wdXBJbmZvOwog
Y2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBj
bGFzcyBQYWdlQ2xpZW50OwogY2xhc3MgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBT
dHJpbmdQYWlyVmVjdG9yOwotY2xhc3MgVGV4dEluZm87CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViQ29udGV4dE1lbnVQ
cm94eTsKQEAgLTU0MiwxNCArNTQyLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gQ29udGV4dCBNZW51
LgogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51
TG9jYXRpb24sIGNvbnN0IENvbnRleHRNZW51U3RhdGUmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtRGF0YT4mLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAotICAgIC8vIFNw
ZWVjaC4KICNpZiBQTEFURk9STShNQUMpCisgICAgLy8gU3BlZWNoLgogICAgIHZvaWQgZ2V0SXNT
cGVha2luZyhib29sJik7CiAgICAgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHN0b3BTcGVha2luZygpOwogCiAgICAgLy8gRGljdGlvbmFyeS4KLSAgICB2b2lkIGRpZFBlcmZv
cm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRJbmZvJik7CisgICAg
dm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0
aW9uYXJ5UG9wdXBJbmZvJik7CiAjZW5kaWYKIAogICAgIC8vIFNwZWxsaW5nIGFuZCBncmFtbWFy
LgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCShyZXZpc2lvbiA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICMg
RGljdGlvbmFyeSBzdXBwb3J0LgotICAgIERpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKFdURjo6
U3RyaW5nIHRleHQsIFdlYktpdDo6VGV4dEluZm8gdGV4dEluZm8pCisgICAgRGlkUGVyZm9ybURp
Y3Rpb25hcnlMb29rdXAoV1RGOjpTdHJpbmcgdGV4dCwgV2ViS2l0OjpEaWN0aW9uYXJ5UG9wdXBJ
bmZvIGRpY3Rpb25hcnlQb3B1cEluZm8pCiAKICAgICAjIEtleWJvYXJkIHN1cHBvcnQgbWVzc2Fn
ZXMKICAgICBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUsIHVpbnQzMl90IHNlbGVjdGlvblN0YXJ0
LCB1aW50MzJfdCBzZWxlY3Rpb25FbmQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVy
bGluZT4gdW5kZXJsaW5lcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tp
bmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0
cyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3Qg
U3RyaW5nJiwgY29uc3QgVGV4dEluZm8mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybURp
Y3Rpb25hcnlMb29rdXAoY29uc3QgU3RyaW5nJiwgY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYp
OwogCiAgICAgV0tWaWV3KiBtX3drVmlldzsKICAgICBSZXRhaW5QdHI8V2ViRWRpdG9yVW5kb1Rh
cmdldE9iakM+IG1fdW5kb1RhcmdldDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCShyZXZpc2lvbiA3OTgyMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw5ICsyNyw5IEBACiAjaW1wb3J0ICJQYWdlQ2xpZW50SW1wbC5oIgogCiAj
aW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgi
CiAjaW1wb3J0ICJGaW5kSW5kaWNhdG9yLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2
ZW50LmgiCi0jaW1wb3J0ICJUZXh0SW5mby5oIgogI2ltcG9ydCAiV0tBUElDYXN0LmgiCiAjaW1w
b3J0ICJXS1N0cmluZ0NGLmgiCiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgpAQCAtNDEzLDE1
ICs0MTMsMTUgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVVcAogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVGV4dEluZm8mIHRleHRJ
bmZvKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBkaWN0aW9uYXJ5UG9w
dXBJbmZvKQogewotICAgIE5TRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9yID0gW05TRm9u
dERlc2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFy
eSAqKXRleHRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgpXTsKLSAgICBOU0ZvbnQg
KmZvbnQgPSBbTlNGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOnRl
eHRJbmZvLmZvbnRPdmVycmlkZVNpemVdOworICAgIE5TRm9udERlc2NyaXB0b3IgKmZvbnREZXNj
cmlwdG9yID0gW05TRm9udERlc2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0
ZXM6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnlQb3B1cEluZm8uZm9udEluZm8uZm9udEF0dHJp
YnV0ZURpY3Rpb25hcnkuZ2V0KCldOworICAgIE5TRm9udCAqZm9udCA9IFtOU0ZvbnQgZm9udFdp
dGhEZXNjcmlwdG9yOmZvbnREZXNjcmlwdG9yIHNpemU6ZGljdGlvbmFyeVBvcHVwSW5mby5mb250
SW5mby5mb250T3ZlcnJpZGVTaXplXTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nPiBhdHRyaWJ1dGVkU3RyaW5nKEFkb3B0TlMsIFtbTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyh0
ZXh0KV0pOwogICAgIFthdHRyaWJ1dGVkU3RyaW5nLmdldCgpIGFkZEF0dHJpYnV0ZTpOU0ZvbnRB
dHRyaWJ1dGVOYW1lIHZhbHVlOmZvbnQgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW2F0dHJpYnV0ZWRT
dHJpbmcuZ2V0KCkgbGVuZ3RoXSldOwogCi0gICAgW21fd2tWaWV3IHNob3dEZWZpbml0aW9uRm9y
QXR0cmlidXRlZFN0cmluZzphdHRyaWJ1dGVkU3RyaW5nLmdldCgpIGF0UG9pbnQ6dGV4dEluZm8u
YmFzZWxpbmVPcmlnaW5dOworICAgIFttX3drVmlldyBzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0
ZWRTdHJpbmc6YXR0cmlidXRlZFN0cmluZy5nZXQoKSBhdFBvaW50OmRpY3Rpb25hcnlQb3B1cElu
Zm8uYmFzZWxpbmVPcmlnaW5dOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFj
LmgJKHJldmlzaW9uIDc5ODIwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
b3B1cE1lbnVQcm94eU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIAogY2xhc3MgV2ViUG9wdXBNZW51UHJveHlNYWMgOiBwdWJsaWMgV2Vi
UG9wdXBNZW51UHJveHkgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVw
TWVudVByb3h5TWFjPiBjcmVhdGUoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6
Q2xpZW50KiBjbGllbnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlN
YWM+IGNyZWF0ZShXS1ZpZXcgKndlYlZpZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNs
aWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJv
eHlNYWMod2ViVmlldywgY2xpZW50KSk7CiAgICAgfQpAQCAtNDgsMTIgKzQ4LDEyIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpOwogCiBwcml2YXRlOgotICAgIFdl
YlBvcHVwTWVudVByb3h5TWFjKFdLVmlldyosIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNs
aWVudCk7CisgICAgV2ViUG9wdXBNZW51UHJveHlNYWMoV0tWaWV3ICosIFdlYlBvcHVwTWVudVBy
b3h5OjpDbGllbnQqIGNsaWVudCk7CiAKLSAgICB2b2lkIHBvcHVsYXRlKGNvbnN0IFZlY3RvcjxX
ZWJQb3B1cEl0ZW0+JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbik7CisgICAgdm9pZCBwb3B1bGF0
ZShjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIE5TRm9udCAqLCBXZWJDb3JlOjpUZXh0RGly
ZWN0aW9uKTsKIAogICAgIFJldGFpblB0cjxOU1BvcFVwQnV0dG9uQ2VsbD4gbV9wb3B1cDsKLSAg
ICBXS1ZpZXcqIG1fd2ViVmlldzsKKyAgICBXS1ZpZXcgKm1fd2ViVmlldzsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQ
b3B1cE1lbnVQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tCShyZXZpc2lvbiA3OTgyMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1XZWJQb3B1cE1lbnVQcm94eU1hYzo6V2ViUG9wdXBNZW51UHJveHlN
YWMoV0tWaWV3KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCitX
ZWJQb3B1cE1lbnVQcm94eU1hYzo6V2ViUG9wdXBNZW51UHJveHlNYWMoV0tWaWV3ICp3ZWJWaWV3
LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCiAgICAgOiBXZWJQb3B1cE1lbnVQ
cm94eShjbGllbnQpCiAgICAgLCBtX3dlYlZpZXcod2ViVmlldykKIHsKQEAgLTQ4LDcgKzQ4LDcg
QEAgV2ViUG9wdXBNZW51UHJveHlNYWM6On5XZWJQb3B1cE1lbnVQcm94eQogICAgICAgICBbbV9w
b3B1cC5nZXQoKSBzZXRDb250cm9sVmlldzpuaWxdOwogfQogCi12b2lkIFdlYlBvcHVwTWVudVBy
b3h5TWFjOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIFRleHRE
aXJlY3Rpb24gbWVudVRleHREaXJlY3Rpb24pCit2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpw
b3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIE5TRm9udCAqZm9udCwg
VGV4dERpcmVjdGlvbiBtZW51VGV4dERpcmVjdGlvbikKIHsKICAgICBpZiAobV9wb3B1cCkKICAg
ICAgICAgW21fcG9wdXAuZ2V0KCkgcmVtb3ZlQWxsSXRlbXNdOwpAQCAtNzMsNyArNzMsNyBAQCB2
b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zCiAgICAgICAgICAgICBbcGFy
YWdyYXBoU3R5bGUuZ2V0KCkgc2V0QWxpZ25tZW50Om1lbnVUZXh0RGlyZWN0aW9uID09IExUUiA/
IE5TTGVmdFRleHRBbGlnbm1lbnQgOiBOU1JpZ2h0VGV4dEFsaWdubWVudF07CiAgICAgICAgICAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gYXR0cmlidXRlcyhBZG9wdE5TLCBbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAg
ICAgICAgICAgcGFyYWdyYXBoU3R5bGUuZ2V0KCksIE5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVO
YW1lLAotICAgICAgICAgICAgICAgIFttX3BvcHVwLmdldCgpIGZvbnRdLCBOU0ZvbnRBdHRyaWJ1
dGVOYW1lLAorICAgICAgICAgICAgICAgIGZvbnQsIE5TRm9udEF0dHJpYnV0ZU5hbWUsCiAgICAg
ICAgICAgICBuaWxdKTsKICAgICAgICAgICAgIGlmIChpdGVtc1tpXS5tX2hhc1RleHREaXJlY3Rp
b25PdmVycmlkZSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxOU051bWJlcj4gd3JpdGlu
Z0RpcmVjdGlvblZhbHVlKEFkb3B0TlMsIFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50ZWdl
cjp3cml0aW5nRGlyZWN0aW9uICsgTlNUZXh0V3JpdGluZ0RpcmVjdGlvbk92ZXJyaWRlXSk7CkBA
IC04OSwxNSArODksMjEgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6cG9wdWxhdGUoY29u
cwogICAgIH0KIH0KIAotdm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudShj
b25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGNvbnN0IFZl
Y3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwg
aW50MzJfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1Bv
cHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24s
IGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhJiBkYXRhLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgcG9wdWxhdGUoaXRl
bXMsIHRleHREaXJlY3Rpb24pOworICAgIE5TRm9udCAqZm9udDsKKyAgICBpZiAoZGF0YS5mb250
SW5mby5mb250QXR0cmlidXRlRGljdGlvbmFyeSkKKyAgICAgICAgZm9udCA9IFtOU0ZvbnQgZm9u
dFdpdGhEZXNjcmlwdG9yOltOU0ZvbnREZXNjcmlwdG9yIGZvbnREZXNjcmlwdG9yV2l0aEZvbnRB
dHRyaWJ1dGVzOihOU0RpY3Rpb25hcnkgKilkYXRhLmZvbnRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0
aW9uYXJ5LmdldCgpXSBzaXplOmRhdGEuZm9udEluZm8uZm9udE92ZXJyaWRlU2l6ZV07CisgICAg
ZWxzZQorICAgICAgICBmb250ID0gW05TRm9udCBtZW51Rm9udE9mU2l6ZTowXTsKKworICAgIHBv
cHVsYXRlKGl0ZW1zLCBmb250LCB0ZXh0RGlyZWN0aW9uKTsKIAogICAgIFttX3BvcHVwLmdldCgp
IGF0dGFjaFBvcFVwV2l0aEZyYW1lOnJlY3QgaW5WaWV3Om1fd2ViVmlld107CiAgICAgW21fcG9w
dXAuZ2V0KCkgc2VsZWN0SXRlbUF0SW5kZXg6c2VsZWN0ZWRJbmRleF07CiAgICAgW21fcG9wdXAu
Z2V0KCkgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IExU
UiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOwogCi0gICAgTlNNZW51KiBtZW51ID0g
W21fcG9wdXAuZ2V0KCkgbWVudV07CisgICAgTlNNZW51ICptZW51ID0gW21fcG9wdXAuZ2V0KCkg
bWVudV07CiAKICAgICAvLyBUaGVzZSB2YWx1ZXMgd2VyZSBib3Jyb3dlZCBmcm9tIEFwcEtpdCB0
byBtYXRjaCB0aGVpciBwbGFjZW1lbnQgb2YgdGhlIG1lbnUuCiAgICAgY29uc3QgaW50IHBvcE92
ZXJIb3Jpem9udGFsQWRqdXN0ID0gLTEwOwpAQCAtMTExLDcgKzExNyw3IEBAIHZvaWQgV2ViUG9w
dXBNZW51UHJveHlNYWM6OnNob3dQb3B1cE1lbnUKICAgICBbbV93ZWJWaWV3IGFkZFN1YnZpZXc6
ZHVtbXlWaWV3LmdldCgpXTsKICAgICBsb2NhdGlvbiA9IFtkdW1teVZpZXcuZ2V0KCkgY29udmVy
dFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om1fd2ViVmlld107CiAKLSAgICBXS1BvcHVwTWVudSht
ZW51LCBsb2NhdGlvbiwgcm91bmRmKE5TV2lkdGgocmVjdCkpLCBkdW1teVZpZXcuZ2V0KCksIHNl
bGVjdGVkSW5kZXgsIFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF0pOworICAgIFdLUG9wdXBNZW51
KG1lbnUsIGxvY2F0aW9uLCByb3VuZGYoTlNXaWR0aChyZWN0KSksIGR1bW15Vmlldy5nZXQoKSwg
c2VsZWN0ZWRJbmRleCwgZm9udCk7CiAKICAgICBbbV9wb3B1cC5nZXQoKSBkaXNtaXNzUG9wVXBd
OwogICAgIFtkdW1teVZpZXcuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTE0LDggKzUxNCw2IEBACiAJCUJDNDA3NjJCMTI0
RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDA3NjI1MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VS
TFJlc3BvbnNlTlMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCUJDNDA3NjJDMTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQwNzYyNjEyNEZG
MDQwMDA2OEYyMEEgLyogV0tVUkxSZXNwb25zZU5TLm1tICovOyB9OwogCQlCQzQwNzgzRDEyNTBG
QUREMDA2OEYyMEEgLyogV0tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM0MDc4M0MxMjUwRkFERDAwNjhGMjBBIC8qIFdLRXZlbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCUJDNDU0MjM0MTMw
QzVGM0YwMDczRTFDMSAvKiBUZXh0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM0NTQyMzIxMzBDNUYzRjAwNzNFMUMxIC8qIFRleHRJbmZvLmgg
Ki87IH07Ci0JCUJDNDU0MjM1MTMwQzVGM0YwMDczRTFDMSAvKiBUZXh0SW5mby5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ1NDIzMzEzMEM1RjNG
MDA3M0UxQzEgLyogVGV4dEluZm8uY3BwICovOyB9OwogCQlCQzQ5ODYxODEyNEQxMEUyMDBEODM0
RTEgLyogSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ5ODYxNjEyNEQxMEUyMDBEODM0RTEgLyogSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggKi87IH07CiAJCUJDNDk4NjE5MTI0RDEwRTIwMEQ4
MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0OTg2MTcxMjREMTBFMjAwRDgzNEUxIC8q
IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgKi87IH07CiAJCUJDNDk4NjJGMTI0RDE4
QzEwMEQ4MzRFMSAvKiBXS0J1bmRsZUhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDk4NjJEMTI0RDE4QzEwMEQ4MzRFMSAvKiBX
S0J1bmRsZUhpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CkBAIC02OTMsNiArNjkxLDEwIEBACiAJCUJDRTQ2OTVBMTIxNEVERjQwMDBC
OThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zv
cm1TdWJtaXNzaW9uTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CiAJCUJDRTQ2OTc3MTIxNEYyN0IwMDBCOThFQiAvKiBXZWJGcmFtZUxpc3Rl
bmVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRTQ2OTc2MTIxNEYyN0IwMDBCOThFQiAvKiBXZWJGcmFtZUxpc3RlbmVyUHJveHkuaCAqLzsg
fTsKIAkJQkNFNDY5NzkxMjE0RjJCNDAwMEI5OEVCIC8qIFdlYkZyYW1lTGlzdGVuZXJQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U0Njk3
ODEyMTRGMkI0MDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcCAqLzsgfTsKKwkJ
QkNFODFEOEMxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTgxRDhBMTMxOUY3RUYwMDI0MTkxMCAv
KiBGb250SW5mby5jcHAgKi87IH07CisJCUJDRTgxRDhEMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNF
ODFEOEIxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggKi87IH07CisJCUJDRTgxRDk4MTMx
QUUwMjEwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTgxRDk2MTMxQUUwMjAwMDI0MTkxMCAv
KiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCAqLzsgfTsKKwkJQkNFODFEOTkxMzFBRTAyMTAwMjQx
OTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTgxRDk3MTMxQUUwMjEwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5
UG9wdXBJbmZvLmggKi87IH07CiAJCUJDRUU3QUQwMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9j
ZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNFRTdBQ0MxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUJDRUU3QUQxMTI4MTc5ODgwMDk4MjdE
QSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTdBQ0QxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nl
c3NQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCUJDRUU3RDBEMTI4NDZGNjkwMDk4MjdEQSAvKiBX
ZWJDb250ZXh0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU3RDBCMTI4NDZGNjkwMDk4MjdEQSAvKiBXZWJDb250ZXh0
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKQEAgLTEzNDYsOCArMTM0OCw2IEBACiAJCUJDNDA3
NjI1MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxSZXNwb25zZU5TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDNDA3NjI2MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VSTFJlc3BvbnNlTlMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1VSTFJlc3BvbnNlTlMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNDA3ODNDMTI1MEZBREQwMDY4RjIw
QSAvKiBXS0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRXZlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM0NTQyMzIxMzBDNUYzRjAwNzNFMUMx
IC8qIFRleHRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDNDU0MjMzMTMwQzVGM0YwMDczRTFD
MSAvKiBUZXh0SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZXh0SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNDk4NjE2MTI0RDEw
RTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNDk4NjE3MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM0OTg2MkQxMjREMThDMTAwRDgzNEUxIC8qIFdLQnVuZGxlSGl0VGVz
dFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0J1bmRsZUhpdFRl
c3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MjUsNiArMTUyNSwx
MCBAQAogCQlCQ0U0Njk1ODEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRm9ybVN1Ym1pc3Npb25M
aXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0U0Njk3NjEyMTRGMjdC
MDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkZyYW1lTGlzdGVuZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0U0Njk3ODEyMTRGMkI0MDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkZyYW1lTGlz
dGVuZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRTgxRDhBMTMx
OUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGb250SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
RTgxRDhCMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGb250SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
Q0U4MUQ5NjEzMUFFMDIwMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFODFEOTcxMzFBRTAyMTAwMjQxOTEwIC8q
IERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGljdGlvbmFyeVBvcHVwSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VF
N0FCMzEyODE3MDk1MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFRTdBQ0MxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nl
c3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQ0VFN0FDRDEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MTIsNiAr
MTkxNiw4IEBACiAJCQkJMUEyRDk1NkQxMjg0ODU2NDAwMUVCOTYyIC8qIENoaWxkUHJvY2Vzcy5o
ICovLAogCQkJCTFBNkY5RjhFMTFFMTNFRkMwMERCMTM3MSAvKiBDb21tYW5kTGluZS5oICovLAog
CQkJCTFBMkMzMDZGMTJENTU1NDUwMDYzREFBMiAvKiBDb250ZXh0TWVudVN0YXRlLmggKi8sCisJ
CQkJQkNFODFEOTYxMzFBRTAyMDAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uY3BwICov
LAorCQkJCUJDRTgxRDk3MTMxQUUwMjEwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmgg
Ki8sCiAJCQkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVyQWN0aW9u
LmggKi8sCiAJCQkJMEZCNjU5MjIxMjA4QjREQjAwNDQ4MTZDIC8qIERyYXdpbmdBcmVhSW5mby5o
ICovLAogCQkJCTc2MkI3NDgxMTIwQkJBMDEwMDgxOTMzOSAvKiBGb250U21vb3RoaW5nTGV2ZWwu
aCAqLywKQEAgLTE5MzIsNiArMTkzOCw4IEBACiAJCQkJQkNDNDNBQjkxMjdCOTVEQzAwMzE3RjE2
IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5oICovLAogCQkJCUUxOEM5MkYzMTJEQjlFNzEwMENG
MkFFQiAvKiBQcmludEluZm8uY3BwICovLAogCQkJCUUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAv
KiBQcmludEluZm8uaCAqLywKKwkJCQlCQ0U4MUQ4QTEzMTlGN0VGMDAyNDE5MTAgLyogRm9udElu
Zm8uY3BwICovLAorCQkJCUJDRTgxRDhCMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5oICov
LAogCQkJCUJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZS5oICovLAogCQkJCTFBQUI0QThDMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5z
aW9uLmggKi8sCiAJCQkJMzMxNTI5NzMxMzBEMENCMjAwRUQyNDgzIC8qIFNlY3VyaXR5T3JpZ2lu
RGF0YS5jcHAgKi8sCkBAIC0xOTQzLDggKzE5NTEsNiBAQAogCQkJCTFBNjQyMEUzMTJEQ0UyRkYw
MENBQUUyQyAvKiBTaGFyZWFibGVCaXRtYXAuaCAqLywKIAkJCQlCQ0JEM0MzQTEyNUJGQTdBMDBE
MkMyOUYgLyogU3RyaW5nUGFpclZlY3Rvci5oICovLAogCQkJCTFBNUU0REEzMTJEM0JEM0QwMDk5
QTJCQiAvKiBUZXh0Q2hlY2tlclN0YXRlLmggKi8sCi0JCQkJQkM0NTQyMzMxMzBDNUYzRjAwNzNF
MUMxIC8qIFRleHRJbmZvLmNwcCAqLywKLQkJCQlCQzQ1NDIzMjEzMEM1RjNGMDA3M0UxQzEgLyog
VGV4dEluZm8uaCAqLywKIAkJCQkxQTY0MjQ1RDEyREUyOUExMDBDQUFFMkMgLyogVXBkYXRlSW5m
by5jcHAgKi8sCiAJCQkJMUE2NDI0NUMxMkRFMjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8uaCAq
LywKIAkJCQlCQ0IwQjBERjEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VDb2RlcnMuaCAq
LywKQEAgLTMzNjMsNyArMzM2OSw2IEBACiAJCQkJNTEyRTM1MkYxMzBCNTVBRjAwQUJEMTlBIC8q
IFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJFMzU2
QjEzMEI1N0YwMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRTM1RjkxMzBCNjQyRTAwQUJEMTlBIC8qIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkM0
NTQyMzQxMzBDNUYzRjAwNzNFMUMxIC8qIFRleHRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUM4NkZGNDEzMEI0NkQzMDAyQzEyNTcgLyogV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQzg3MDJEMTMwQjQ5QTIwMDJDMTI1NyAvKiBXZWJQbHVnaW5TaXRl
RGF0YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMzY3NjMwMTMwQzk5OTgwMDZDOURF
MiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzgxLDYg
KzMzODYsOCBAQAogCQkJCTMzMDkzNDUwMTMxNUI5NEQwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1NjEzMTVCOTc1MDA5N0E3QkMgLyogV2Vi
Q29va2llTWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1QjEzMTVCOTk4
MDA5N0E3QkMgLyogV0tDb29raWVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0U4MUQ4
RDEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRTgx
RDk5MTMxQUUwMjEwMDI0MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTM4NjIsNyArMzg2OSw2IEBACiAJCQkJNTEyRTM1MkUxMzBCNTVBRjAwQUJEMTlBIC8q
IFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkUz
NTZBMTMwQjU3RjAwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlck1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJFMzVGODEzMEI2NDJFMDBBQkQxOUEg
LyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQlCQzQ1NDIzNTEzMEM1RjNGMDA3M0UxQzEgLyogVGV4dEluZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDODZGRjMxMzBCNDZEMzAwMkMxMjU3IC8qIFdLUGx1Z2lu
U2l0ZURhdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzg3MDJFMTMwQjQ5QTIw
MDJDMTI1NyAvKiBXZWJQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzMzNjc2MkYxMzBDOTk5ODAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMzg4NCw2ICszODkwLDggQEAKIAkJCQkzMzA5MzQ0RjEzMTVC
OTREMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
MzA5MzQ1NTEzMTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTMzMDkzNDVBMTMxNUI5OTgwMDk3QTdCQyAvKiBXS0Nvb2tpZU1hbmFn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNFODFEOEMxMzE5RjdFRjAwMjQxOTEwIC8qIEZv
bnRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDRTgxRDk4MTMxQUUwMjEwMDI0MTkxMCAv
KiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBN
ZW51LmNwcAkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsx
MTAsNyBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0JiByCiAgICAgSW50
UmVjdCBwYWdlQ29vcmRpbmF0ZXModmlldy0+Y29udGVudHNUb1dpbmRvdyhyZWN0LmxvY2F0aW9u
KCkpLCByZWN0LnNpemUoKSk7CiAKICAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEgcGxhdGZvcm1E
YXRhOwotICAgIHNldFVwUGxhdGZvcm1EYXRhKHBhZ2VDb29yZGluYXRlcywgcGxhdGZvcm1EYXRh
KTsKKyAgICBzZXRVcFBsYXRmb3JtRGF0YShwYWdlQ29vcmRpbmF0ZXMsIHZpZXcsIHBsYXRmb3Jt
RGF0YSk7CiAKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd1BvcHVwTWVudShwYWdlQ29vcmRpbmF0ZXMsIG1fcG9w
dXBDbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKSwgaXRlbXMsIGluZGV4LCBwbGF0
Zm9ybURhdGEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAkocmV2
aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBvcHVwTWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6
CiAgICAgV2ViUG9wdXBNZW51KFdlYlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsK
IAogICAgIFZlY3RvcjxXZWJQb3B1cEl0ZW0+IHBvcHVsYXRlSXRlbXMoKTsKLSAgICB2b2lkIHNl
dFVwUGxhdGZvcm1EYXRhKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhZ2VDb29yZGluYXRlcywg
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhJik7CisgICAgdm9pZCBzZXRVcFBsYXRmb3JtRGF0YShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBwYWdlQ29vcmRpbmF0ZXMsIFdlYkNvcmU6OkZyYW1lVmlldyos
IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpOwogCiAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
KiBtX3BvcHVwQ2xpZW50OwogICAgIFdlYlBhZ2UqIG1fcGFnZTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYlBvcHVwTWVudUd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViUG9wdXBNZW51R3RrLmNwcAkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJQb3B1cE1lbnVHdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNv
bnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKQordm9pZCBXZWJQb3B1cE1lbnU6
OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IEludFJlY3QmLCBGcmFtZVZpZXcqLCBQbGF0Zm9ybVBv
cHVwTWVudURhdGEmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJQb3B1cE1lbnVNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViUG9wdXBNZW51TWFjLm1tCShyZXZpc2lvbiA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBvcHVwTWVudU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDMwIEBACiAjaW1wb3J0ICJXZWJQb3B1cE1lbnUuaCIKIAog
I2ltcG9ydCAiUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgiCisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Qb3B1
cE1lbnVDbGllbnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi12b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50
UmVjdCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpCit2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQ
bGF0Zm9ybURhdGEoY29uc3QgSW50UmVjdCYsIEZyYW1lVmlldyogdmlldywgUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhJiBkYXRhKQogeworICAgIE5TRm9udCAqZm9udCA9IG1fcG9wdXBDbGllbnQtPm1l
bnVTdHlsZSgpLmZvbnQoKS5wcmltYXJ5Rm9udCgpLT5nZXROU0ZvbnQoKTsKKyAgICBpZiAoIWZv
bnQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBDRkRpY3Rpb25hcnlSZWYgZm9udERlc2Ny
aXB0b3JBdHRyaWJ1dGVzID0gKENGRGljdGlvbmFyeVJlZilbW2ZvbnQgZm9udERlc2NyaXB0b3Jd
IGZvbnRBdHRyaWJ1dGVzXTsKKyAgICBpZiAoIWZvbnREZXNjcmlwdG9yQXR0cmlidXRlcykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRnJhbWUqIGZyYW1lID0gdmlldy0+ZnJhbWUoKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZGF0YS5mb250SW5mby5mb250
QXR0cmlidXRlRGljdGlvbmFyeSA9IGZvbnREZXNjcmlwdG9yQXR0cmlidXRlczsKKyAgICBkYXRh
LmZvbnRJbmZvLmZvbnRPdmVycmlkZVNpemUgPSBmcmFtZS0+cGFnZVNjYWxlRmFjdG9yKCkgPT0g
MSA/IDAgOiAoW1tmb250IGZvbnREZXNjcmlwdG9yXSBwb2ludFNpemVdICogZnJhbWUtPnBhZ2VT
Y2FsZUZhY3RvcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYlBvcHVwTWVudVF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0
L1dlYlBvcHVwTWVudVF0LmNwcAkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYlBvcHVwTWVudVF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25z
dCBJbnRSZWN0JiwgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJikKK3ZvaWQgV2ViUG9wdXBNZW51Ojpz
ZXRVcFBsYXRmb3JtRGF0YShjb25zdCBJbnRSZWN0JiwgRnJhbWVWaWV3KiwgUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhJikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3Bw
CShyZXZpc2lvbiA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvd2luL1dlYlBvcHVwTWVudVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQy
LDcgQEAgc3RhdGljIGNvbnN0IGludCBzZXBhcmF0b3JQYWRkaW5nID0gNDsKIHN0YXRpYyBjb25z
dCBpbnQgc2VwYXJhdG9ySGVpZ2h0ID0gMTsKIHN0YXRpYyBjb25zdCBpbnQgcG9wdXBXaW5kb3dC
b3JkZXJXaWR0aCA9IDE7CiAKLXZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBwYWdlQ29vcmRpbmF0ZXMsIFBsYXRmb3JtUG9wdXBNZW51
RGF0YSYgZGF0YSkKK3ZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBwYWdlQ29vcmRpbmF0ZXMsIEZyYW1lVmlldyosIFBsYXRmb3JtUG9w
dXBNZW51RGF0YSYgZGF0YSkKIHsKICAgICBpbnQgaXRlbUNvdW50ID0gbV9wb3B1cENsaWVudC0+
bGlzdFNpemUoKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDggKzI4LDggQEAKIAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qu
aCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbXBvcnQgIkRpY3Rpb25hcnlQb3B1cElu
Zm8uaCIKICNpbXBvcnQgIlBsdWdpblZpZXcuaCIKLSNpbXBvcnQgIlRleHRJbmZvLmgiCiAjaW1w
b3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldlYkV2ZW50LmgiCiAjaW1w
b3J0ICJXZWJGcmFtZS5oIgpAQCAtMzA0LDEyICszMDQsMTIgQEAgdm9pZCBXZWJQYWdlOjpwZXJm
b3JtRGljdGlvbmFyeUxvb2t1cEF0TAogICAgIEludFJlY3QgZmluYWxSYW5nZVJlY3QgPSBmcmFt
ZS0+dmlldygpLT5jb250ZW50c1RvV2luZG93KHF1YWRzWzBdLmVuY2xvc2luZ0JvdW5kaW5nQm94
KCkpOwogICAgIEZsb2F0UG9pbnQgYmFzZWxpbmVPcmlnaW4oZmluYWxSYW5nZVJlY3QueCgpLCAo
ZmluYWxSYW5nZVJlY3QueSgpICsgKFtmb250IGFzY2VuZGVyXSAqIGZyYW1lLT5wYWdlU2NhbGVG
YWN0b3IoKSkpKTsKICAgICAKLSAgICBUZXh0SW5mbyB0ZXh0SW5mbzsKLSAgICB0ZXh0SW5mby5i
YXNlbGluZU9yaWdpbiA9IGJhc2VsaW5lT3JpZ2luOwotICAgIHRleHRJbmZvLmZvbnRBdHRyaWJ1
dGVEaWN0aW9uYXJ5ID0gZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzOwotICAgIHRleHRJbmZvLmZv
bnRPdmVycmlkZVNpemUgPSBmcmFtZS0+cGFnZVNjYWxlRmFjdG9yKCkgPT0gMSA/IDAgOiAoW1tm
b250IGZvbnREZXNjcmlwdG9yXSBwb2ludFNpemVdICogZnJhbWUtPnBhZ2VTY2FsZUZhY3Rvcigp
KTsKKyAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm87CisgICAgZGlj
dGlvbmFyeVBvcHVwSW5mby5iYXNlbGluZU9yaWdpbiA9IGJhc2VsaW5lT3JpZ2luOworICAgIGRp
Y3Rpb25hcnlQb3B1cEluZm8uZm9udEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkgPSBmb250
RGVzY3JpcHRvckF0dHJpYnV0ZXM7CisgICAgZGljdGlvbmFyeVBvcHVwSW5mby5mb250SW5mby5m
b250T3ZlcnJpZGVTaXplID0gZnJhbWUtPnBhZ2VTY2FsZUZhY3RvcigpID09IDEgPyAwIDogKFtb
Zm9udCBmb250RGVzY3JpcHRvcl0gcG9pbnRTaXplXSAqIGZyYW1lLT5wYWdlU2NhbGVGYWN0b3Io
KSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwKGZpbmFsUmFuZ2UtPnRleHQoKSwgdGV4dEluZm8pKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGZpbmFsUmFuZ2Ut
PnRleHQoKSwgZGljdGlvbmFyeVBvcHVwSW5mbykpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
c2Nyb2xsKFBhZ2UqIHBhZ2UsIFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5KQpJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2
aXNpb24gNzk4MjApCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTQxOSwxMCArNDE5LDI2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVk
XERpY3Rpb25hcnlQb3B1cEluZm8uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXERyYXdpbmdBcmVhSW5mby5oIgogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcRm9udEluZm8uY3Bw
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFy
ZWRcRm9udEluZm8uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cU2hhcmVkXEZvbnRTbW9vdGhpbmdMZXZlbC5oIgogCQkJCT4KIAkJCTwvRmlsZT4K
QEAgLTUzMSwxNCArNTQ3LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cU2hhcmVkXFRleHRJbmZvLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0J
CQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFRleHRJbmZvLmgiCi0JCQkJPgot
CQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxVcGRhdGVJ
bmZvLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84081</attachid>
            <date>2011-02-28 10:38:53 -0800</date>
            <delta_ts>2011-02-28 10:53:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48234-20110228103852.patch</filename>
            <type>text/plain</type>
            <size>55415</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5ODgyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTEtMDItMjggIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTaXplIG9mIHRleHQgaW4gcG9wdXAgbWVudSBkb2Vzbid0IG1hdGNoIHNp
emUgb2YgdGV4dCBpbiA8c2VsZWN0PiBpdHNlbGYgaW4gV2ViS2l0MgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyMzQKKworICAgICAgICAqIFNoYXJl
ZC9UZXh0SW5mby5jcHA6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL1RleHRJbmZvLmg6IFJl
bW92ZWQuCisgICAgICAgIFJlcGxhY2UgdGhpcyB3aXRoIHRoZSBtb3JlIGFwcHJvcHJpYXRlbHkg
RGljdGlvbmFyeVBvcHVwSW5mby4KKworICAgICAgICAqIFNoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJ
bmZvLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmZvLmNwcC4K
KyAgICAgICAgKFdlYktpdDo6RGljdGlvbmFyeVBvcHVwSW5mbzo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6RGljdGlvbmFyeVBvcHVwSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
RGljdGlvbmFyeVBvcHVwSW5mby5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
VGV4dEluZm8uaC4KKyAgICAgICAgKFdlYktpdDo6RGljdGlvbmFyeVBvcHVwSW5mbzo6RGljdGlv
bmFyeVBvcHVwSW5mbyk6CisgICAgICAgIFJlcGxhY2UgaW5kaXZpZHVhbCBmb250IHJlbGF0ZWQg
ZmllbGRzIHdpdGggRm9udEluZm8uCisKKyAgICAgICAgKiBTaGFyZWQvRm9udEluZm8uY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Rm9udEluZm86OkZvbnRJbmZvKToKKyAgICAgICAgKFdl
YktpdDo6Rm9udEluZm86OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkZvbnRJbmZvOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9Gb250SW5mby5oOiBBZGRlZC4KKyAgICAgICAgQWRkIGNs
YXNzIHRvIGVuY2Fwc3VsYXRlIHBhc3NpbmcgYSBmb250IGRlc2NyaXB0aW9uIG92ZXIgdGhlIHdp
cmUuCisKKyAgICAgICAgKiBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1Bs
YXRmb3JtUG9wdXBNZW51RGF0YS5oOgorICAgICAgICBBZGQgRm9udEluZm8gYXMgZXh0cmEgZGF0
YSBmb3IgdGhlIE1hYy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1
cCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgQWRkIHNjYWxl
RmFjdG9yIGFuZCB1c2UgaXQgdG8gY29uc3RydWN0IGEgZm9udCBhdCB0aGUgcmlnaHQgc2l6ZS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYlBvcHVwTWVudVByb3h5TWFjOjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMv
V2ViUG9wdXBNZW51UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVBy
b3h5TWFjOjpXZWJQb3B1cE1lbnVQcm94eU1hYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVw
TWVudVByb3h5TWFjOjpwb3B1bGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVBy
b3h5TWFjOjpzaG93UG9wdXBNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViUG9wdXBN
ZW51UHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OnNo
b3dQb3B1cE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5V2luOjpzaG93UG9wdXBNZW51KToKKyAg
ICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlBvcHVwTWVudVByb3h5V2luLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUG9wdXBNZW51TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbik6CisgICAgICAgIFBhc3Mg
c2NhbGUgZmFjdG9yIHRocm91Z2ggYW5kIHJlbmFtZSBUZXh0SW5mbyAtPiBEaWN0aW9uYXJ5UG9w
dXBJbmZvLgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKyAg
ICAgICAgQWRkIG5ldyBmaWxlcy4KKwogMjAxMS0wMi0yOCAgQWRhbSBSb2JlbiAgPGFyb2JlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgT25lIG1vcmUgcmVuYW1lIGFzIGEgZm9sbG93dXAgdG8gcjc5
ODY4CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24gNzk4ODIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw4IEBAIEhFQURFUlMg
Kz0gXAogICAgIFNoYXJlZC9DaGlsZFByb2Nlc3MuaCBcCiAgICAgU2hhcmVkL0NvcmVJUENTdXBw
b3J0L0RyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmggXAogICAgIFNoYXJlZC9Db3JlSVBDU3VwcG9y
dC9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmggXAorICAgIFNoYXJlZC9EaWN0aW9uYXJ5
UG9wdXBJbmZvLmggXAorICAgIFNoYXJlZC9Gb250SW5mby5oIFwKICAgICBTaGFyZWQvSW1hZ2VP
cHRpb25zLmggXAogICAgIFNoYXJlZC9JbW11dGFibGVBcnJheS5oIFwKICAgICBTaGFyZWQvSW1t
dXRhYmxlRGljdGlvbmFyeS5oIFwKQEAgLTExOCw3ICsxMjAsNiBAQCBIRUFERVJTICs9IFwKICAg
ICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmggXAogICAgIFNoYXJlZC9TZXNzaW9uU3RhdGUu
aCBcCiAgICAgU2hhcmVkL1N0cmluZ1BhaXJWZWN0b3IuaCBcCi0gICAgU2hhcmVkL1RleHRJbmZv
LmggXAogICAgIFNoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oIFwKICAgICBTaGFyZWQvVmlzaXRl
ZExpbmtUYWJsZS5oIFwKICAgICBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggXApAQCAt
Mjg0LDYgKzI4NSw4IEBAIFNPVVJDRVMgKz0gXAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L3gxMS9OZXRzY2FwZVBsdWdpbk1vZHVsZVgxMS5jcHAgXAogICAgIFNoYXJlZC9TaGFyZWFibGVC
aXRtYXAuY3BwIFwKICAgICBTaGFyZWQvQ2hpbGRQcm9jZXNzLmNwcCBcCisgICAgU2hhcmVkL0Rp
Y3Rpb25hcnlQb3B1cEluZm8uY3BwIFwKKyAgICBTaGFyZWQvRm9udEluZm8uY3BwIFwKICAgICBT
aGFyZWQvSW1tdXRhYmxlQXJyYXkuY3BwIFwKICAgICBTaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFy
eS5jcHAgXAogICAgIFNoYXJlZC9NdXRhYmxlQXJyYXkuY3BwIFwKQEAgLTI5Myw3ICsyOTYsNiBA
QCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvUHJpbnRJbmZvLmNwcCBcCiAgICAgU2hhcmVkL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5jcHAgXAogICAgIFNoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIFwKLSAg
ICBTaGFyZWQvVGV4dEluZm8uY3BwIFwKICAgICBTaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAg
XAogICAgIFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCiAgICAgU2hhcmVkL1dl
YkNvbnRleHRNZW51SXRlbS5jcHAgXApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rp
b25hcnlQb3B1cEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9E
aWN0aW9uYXJ5UG9wdXBJbmZvLmNwcAkocmV2aXNpb24gNzk4MTIpCShmcm9tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9UZXh0SW5mby5jcHA6Nzk4MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
RGljdGlvbmFyeVBvcHVwSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0SW5mby5oIgor
CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKKyNpZiBQTEFURk9STShNQUMp
CisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIFRleHRJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXItPmVuY29kZShiYXNlbGluZU9yaWdpbik7Cisj
aWYgUExBVEZPUk0oTUFDKQorICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBmb250QXR0cmli
dXRlRGljdGlvbmFyeS5nZXQoKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGZvbnRPdmVycmlkZVNp
emUpOworI2VuZGlmCit9CisKK2Jvb2wgVGV4dEluZm86OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFRleHRJbmZvJiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUocmVzdWx0LmJhc2VsaW5lT3JpZ2luKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAoIUNvcmVJUEM6OmRlY29kZShkZWNvZGVyLCByZXN1
bHQuZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LmZvbnRPdmVycmlkZVNpemUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5m
by5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1
cEluZm8uY3BwCShyZXZpc2lvbiA3OTgyMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9EaWN0
aW9uYXJ5UG9wdXBJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsMzUgKzI0LDI0IEBACiAg
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRJbmZvLmgiCisjaW5jbHVk
ZSAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5o
IgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFRleHRJbmZvOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAordm9pZCBEaWN0aW9uYXJ5
UG9wdXBJbmZvOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25z
dAogewotICAgIGVuY29kZXItPmVuY29kZShiYXNlbGluZU9yaWdpbik7Ci0jaWYgUExBVEZPUk0o
TUFDKQotICAgIENvcmVJUEM6OmVuY29kZShlbmNvZGVyLCBmb250QXR0cmlidXRlRGljdGlvbmFy
eS5nZXQoKSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlKGZvbnRPdmVycmlkZVNpemUpOwotI2VuZGlm
CisgICAgZW5jb2Rlci0+ZW5jb2RlKG9yaWdpbik7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGZvbnRJ
bmZvKTsKIH0KIAotYm9vbCBUZXh0SW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgVGV4dEluZm8mIHJlc3VsdCkKK2Jvb2wgRGljdGlvbmFyeVBvcHVwSW5mbzo6
ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgRGljdGlvbmFyeVBvcHVw
SW5mbyYgcmVzdWx0KQogewotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5iYXNlbGlu
ZU9yaWdpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAg
aWYgKCFDb3JlSVBDOjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0LmZvbnRBdHRyaWJ1dGVEaWN0aW9u
YXJ5KSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQub3JpZ2luKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5mb250T3ZlcnJp
ZGVTaXplKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuZm9udEluZm8pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oCShyZXZpc2lvbiA3
OTgxMikJKGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmZvLmg6Nzk4MTIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRJbmZvX2gKKyNkZWZp
bmUgVGV4dEluZm9faAorCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgQ29yZUlQQyB7CisgICAgY2xhc3MgQXJn
dW1lbnREZWNvZGVyOworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFRleHRJbmZvIHsKK3B1YmxpYzoKKyAgICBUZXh0SW5mbygpIHsg
fQorCisgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7Cisg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFRleHRJbmZv
Jik7CisKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGJhc2VsaW5lT3JpZ2luOworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBmb250QXR0cmlidXRlRGlj
dGlvbmFyeTsKKyAgICBkb3VibGUgZm9udE92ZXJyaWRlU2l6ZTsKKyNlbmRpZgorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBUZXh0SW5mb19oCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRGljdGlvbmFyeVBvcHVwSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9EaWN0aW9uYXJ5UG9wdXBJbmZvLmgJKHJldmlzaW9uIDc5ODIwKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL0RpY3Rpb25hcnlQb3B1cEluZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsMTEgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBUZXh0SW5mb19oCi0jZGVmaW5lIFRleHRJbmZvX2gKKyNpZm5k
ZWYgRGljdGlvbmFyeVBvcHVwSW5mb19oCisjZGVmaW5lIERpY3Rpb25hcnlQb3B1cEluZm9faAog
CisjaW5jbHVkZSAiRm9udEluZm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBj
bGFzcyBBcmd1bWVudERlY29kZXI7CkBAIC0zNiwyMCArMzYsMTkgQEAgbmFtZXNwYWNlIENvcmVJ
UEMgewogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgVGV4dEluZm8geworY2xhc3MgRGlj
dGlvbmFyeVBvcHVwSW5mbyB7CiBwdWJsaWM6Ci0gICAgVGV4dEluZm8oKSB7IH0KKyAgICBEaWN0
aW9uYXJ5UG9wdXBJbmZvKCkKKyAgICB7CisgICAgfQogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciosIFRleHRJbmZvJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIERpY3Rpb25hcnlQb3B1cEluZm8mKTsKIAotICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgYmFzZWxpbmVPcmlnaW47Ci0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5Owot
ICAgIGRvdWJsZSBmb250T3ZlcnJpZGVTaXplOwotI2VuZGlmCisgICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW47CisgICAgRm9udEluZm8gZm9udEluZm87CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAotI2VuZGlmIC8vIFRleHRJbmZvX2gKKyNlbmRpZiAvLyBEaWN0aW9uYXJ5UG9w
dXBJbmZvX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5mby5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJbmZvLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Gb250SW5mby5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Rm9udEluZm8uaCIKKworI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorCisjaWYg
UExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworRm9udEluZm86OkZvbnRJbmZvKCkKKyNpZiBQTEFURk9STShN
QUMpCisjZW5kaWYKK3sKK30KKwordm9pZCBGb250SW5mbzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKK3sKKyNpZiBQTEFURk9STShNQUMpCisgICAgQ29y
ZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgpKTsKKyNl
bmRpZgorfQorCitib29sIEZvbnRJbmZvOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBkZWNvZGVyLCBGb250SW5mbyYgZm9udEluZm8pCit7ICAgIAorI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBpZiAoIUNvcmVJUEM6OmRlY29kZShkZWNvZGVyLCBmb250SW5mby5mb250QXR0cmlidXRl
RGljdGlvbmFyeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIAorICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Gb250SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Gb250SW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0ZvbnRJ
bmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEZvbnRJbmZvX2gKKyNkZWZpbmUgRm9udEluZm9faAorCisjaWYgUExBVEZPUk0oTUFDKQorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgQ29yZUlQQyB7Cisg
ICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOworICAgIGNsYXNzIEFyZ3VtZW50RW5jb2RlcjsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisgICAgCitzdHJ1Y3QgRm9udEluZm8geworICAgIEZvbnRJ
bmZvKCk7CisgICAgCisgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikg
Y29uc3Q7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcios
IEZvbnRJbmZvJik7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5OworI2VuZGlmCit9OworICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBGb250SW5mb19oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAkocmV2aXNp
b24gNzk4ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsNDAgKzYwLDQzIEBAIHZvaWQgUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhOjplbmNvZGUoQ29yZUkKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBzZWxlY3RlZEJh
Y2tpbmdTdG9yZUhhbmRsZTsKICAgICBtX3NlbGVjdGVkQmFja2luZ1N0b3JlLT5jcmVhdGVIYW5k
bGUoc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOwogICAgIGVuY29kZXItPmVuY29kZShzZWxl
Y3RlZEJhY2tpbmdTdG9yZUhhbmRsZSk7CisjZWxpZiBQTEFURk9STShNQUMpCisgICAgZW5jb2Rl
ci0+ZW5jb2RlKGZvbnRJbmZvKTsKICNlbmRpZgogfQogCiBib29sIFBsYXRmb3JtUG9wdXBNZW51
RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhJiBkYXRhKQogewogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBQbGF0Zm9ybVBv
cHVwTWVudURhdGEgZDsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShkLm1fY2xpZW50UGFkZGlu
Z0xlZnQpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubV9jbGllbnRQYWRkaW5nTGVm
dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShkLm1f
Y2xpZW50UGFkZGluZ1JpZ2h0KSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShkYXRhLm1fY2xp
ZW50UGFkZGluZ1JpZ2h0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGQubV9jbGllbnRJbnNldExlZnQpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGRhdGEubV9jbGllbnRJbnNldExlZnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUoZC5tX2NsaWVudEluc2V0UmlnaHQpKQorICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGRhdGEubV9jbGllbnRJbnNldFJpZ2h0KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGQubV9wb3B1cFdpZHRoKSkKKyAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShkYXRhLm1fcG9wdXBXaWR0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIWRlY29kZXItPmRlY29kZShkLm1faXRlbUhlaWdodCkpCisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoZGF0YS5tX2l0ZW1IZWlnaHQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZC5tX2JhY2tpbmdTdG9yZVNpemUpKQorICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKGRhdGEubV9iYWNraW5nU3RvcmVTaXplKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgbm90U2VsZWN0ZWRCYWNraW5nU3Rv
cmVIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobm90U2VsZWN0ZWRCYWNraW5nU3Rv
cmVIYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZC5tX25vdFNlbGVjdGVkQmFj
a2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZC5tX2JhY2tpbmdTdG9yZVNpemUs
IG5vdFNlbGVjdGVkQmFja2luZ1N0b3JlSGFuZGxlKTsKKyAgICBkYXRhLm1fbm90U2VsZWN0ZWRC
YWNraW5nU3RvcmUgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShkYXRhLm1fYmFja2luZ1N0b3Jl
U2l6ZSwgbm90U2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpOwogCiAgICAgU2hhcmVkTWVtb3J5
OjpIYW5kbGUgc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGU7CiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoc2VsZWN0ZWRCYWNraW5nU3RvcmVIYW5kbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgZC5tX3NlbGVjdGVkQmFja2luZ1N0b3JlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUo
ZC5tX2JhY2tpbmdTdG9yZVNpemUsIHNlbGVjdGVkQmFja2luZ1N0b3JlSGFuZGxlKTsKLQotICAg
IGRhdGEgPSBkOworICAgIGRhdGEubV9zZWxlY3RlZEJhY2tpbmdTdG9yZSA9IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGRhdGEubV9iYWNraW5nU3RvcmVTaXplLCBzZWxlY3RlZEJhY2tpbmdTdG9y
ZUhhbmRsZSk7CisjZWxpZiBQTEFURk9STShNQUMpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
ZGF0YS5mb250SW5mbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgorICAgIAogICAg
IHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRm
b3JtUG9wdXBNZW51RGF0YS5oCShyZXZpc2lvbiA3OTg4MikKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBQbGF0Zm9ybVBvcHVwTWVudURhdGFfaAogI2RlZmluZSBQbGF0Zm9ybVBvcHVw
TWVudURhdGFfaAogCisjaW5jbHVkZSAiRm9udEluZm8uaCIKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzgsNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSB7
CiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhKCk7Ci0gICAgCisKICAgICB2b2lkIGVuY29kZShD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJik7CiAKQEAg
LTUyLDYgKzUzLDggQEAgc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSB7CiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSBtX2JhY2tpbmdTdG9yZVNpemU7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gbV9ub3RTZWxlY3RlZEJhY2tpbmdTdG9yZTsKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBtX3NlbGVjdGVkQmFja2luZ1N0b3JlOworI2VsaWYgUExBVEZPUk0oTUFDKQorICAgIEZvbnRJ
bmZvIGZvbnRJbmZvOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
VGV4dEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5m
by5jcHAJKHJldmlzaW9uIDc5ODgyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRJbmZv
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHRJbmZvLmgiCi0KLSNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKLQotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJBcmd1bWVu
dENvZGVyc0NGLmgiCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgVGV4dElu
Zm86OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Ci17Ci0g
ICAgZW5jb2Rlci0+ZW5jb2RlKGJhc2VsaW5lT3JpZ2luKTsKLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgQ29yZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgp
KTsKLSAgICBlbmNvZGVyLT5lbmNvZGUoZm9udE92ZXJyaWRlU2l6ZSk7Ci0jZW5kaWYKLX0KLQot
Ym9vbCBUZXh0SW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
VGV4dEluZm8mIHJlc3VsdCkKLXsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuYmFz
ZWxpbmVPcmlnaW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oTUFDKQot
ICAgIGlmICghQ29yZUlQQzo6ZGVjb2RlKGRlY29kZXIsIHJlc3VsdC5mb250QXR0cmlidXRlRGlj
dGlvbmFyeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShyZXN1bHQuZm9udE92ZXJyaWRlU2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRp
ZgotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9UZXh0SW5mby5oCShyZXZpc2lvbiA3OTg4MikKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9UZXh0SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIFRleHRJbmZvX2gKLSNkZWZpbmUgVGV4dEluZm9faAotCi0jaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1u
YW1lc3BhY2UgQ29yZUlQQyB7Ci0gICAgY2xhc3MgQXJndW1lbnREZWNvZGVyOwotICAgIGNsYXNz
IEFyZ3VtZW50RW5jb2RlcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFRleHRJ
bmZvIHsKLXB1YmxpYzoKLSAgICBUZXh0SW5mbygpIHsgfQotCi0gICAgdm9pZCBlbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFRleHRJbmZvJik7Ci0KLSAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IGJhc2VsaW5lT3JpZ2luOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBmb250QXR0cmlidXRlRGljdGlvbmFyeTsKLSAgICBkb3VibGUgZm9u
dE92ZXJyaWRlU2l6ZTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBUZXh0SW5mb19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgJKHJldmlzaW9uIDc5ODgyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDEwICsxMjgsOCBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wbGV4VGV4dElucHV0RW5hYmxlZCh1
aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBjb21wbGV4VGV4
dElucHV0RW5hYmxlZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdXRvZGlzcGxheShib29s
KSA9IDA7Ci0KICAgICB2aXJ0dWFsIENHQ29udGV4dFJlZiBjb250YWluaW5nV2luZG93R3JhcGhp
Y3NDb250ZXh0KCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRJbmZvJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBkb3VibGUgc2Nh
bGVGYWN0b3IsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKSA9IDA7CiAjZW5kaWYKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3QgPSAw
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDc5ODgyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJTdHJpbmdQYWlyVmVj
dG9yLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0
YXRlLmgiCi0jaW5jbHVkZSAiVGV4dEluZm8uaCIKICNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIgpAQCAtNjYsNiArNjUsMTYgQEAKICNpbmNsdWRlICJXZWJQcm90ZWN0
aW9uU3BhY2UuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIldl
YlVSTFJlcXVlc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnku
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CisjaW5jbHVkZSA8c3RkaW8u
aD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJEaWN0aW9uYXJ5UG9wdXBJbmZvLmgi
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlICJXZWJEcmFnU291cmNlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbmZvLmg+CkBAIC03MywxMSArODIsNiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvV0NEYXRhT2JqZWN0Lmg+CiAjaW5jbHVkZSA8c2hsb2JqLmg+CiAjZW5k
aWYKLSNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KIAogI2lmbmRl
ZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CkBAIC0yMDc2
LDcgKzIwODAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BvcHVwTWVudShjb25zdCBJCiAK
ICAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9
IG1fYWN0aXZlUG9wdXBNZW51OwogCi0gICAgcHJvdGVjdGVkQWN0aXZlUG9wdXBNZW51LT5zaG93
UG9wdXBNZW51KHJlY3QsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24p
LCBpdGVtcywgZGF0YSwgc2VsZWN0ZWRJbmRleCk7CisgICAgcHJvdGVjdGVkQWN0aXZlUG9wdXBN
ZW51LT5zaG93UG9wdXBNZW51KHJlY3QsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHRE
aXJlY3Rpb24pLCBtX3ZpZXdTY2FsZUZhY3RvciwgaXRlbXMsIGRhdGEsIHNlbGVjdGVkSW5kZXgp
OwogICAgIHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudS0+aW52YWxpZGF0ZSgpOwogICAgIHByb3Rl
Y3RlZEFjdGl2ZVBvcHVwTWVudSA9IDA7CiB9CkBAIC0yNDUwLDkgKzI0NTQsOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZWRQYWdlc0NhbGxiYWNrCiB9CiAKICNpZiBQTEFURk9STShNQUMp
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBUZXh0SW5mbyYgdGV4dEluZm8pCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBEaWN0
aW9uYXJ5UG9wdXBJbmZvJiBkaWN0aW9uYXJ5UG9wdXBJbmZvKQogewotICAgIG1fcGFnZUNsaWVu
dC0+ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAodGV4dCwgdGV4dEluZm8pOworICAgIG1fcGFn
ZUNsaWVudC0+ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAodGV4dCwgbV92aWV3U2NhbGVGYWN0
b3IsIGRpY3Rpb25hcnlQb3B1cEluZm8pOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnJl
Z2lzdGVyV2ViUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbihjb25zdCBDb3JlSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gNzk4ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEyICs4MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBEaWN0aW9uYXJ5UG9wdXBJbmZvOwog
Y2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKIGNsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7CiBj
bGFzcyBQYWdlQ2xpZW50OwogY2xhc3MgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBT
dHJpbmdQYWlyVmVjdG9yOwotY2xhc3MgVGV4dEluZm87CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3Q7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViQ29udGV4dE1lbnVQ
cm94eTsKQEAgLTU0MiwxNCArNTQyLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gQ29udGV4dCBNZW51
LgogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtZW51
TG9jYXRpb24sIGNvbnN0IENvbnRleHRNZW51U3RhdGUmLCBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dE1lbnVJdGVtRGF0YT4mLCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIAotICAgIC8vIFNw
ZWVjaC4KICNpZiBQTEFURk9STShNQUMpCisgICAgLy8gU3BlZWNoLgogICAgIHZvaWQgZ2V0SXNT
cGVha2luZyhib29sJik7CiAgICAgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHN0b3BTcGVha2luZygpOwogCiAgICAgLy8gRGljdGlvbmFyeS4KLSAgICB2b2lkIGRpZFBlcmZv
cm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRJbmZvJik7CisgICAg
dm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBjb25zdCBEaWN0
aW9uYXJ5UG9wdXBJbmZvJik7CiAjZW5kaWYKIAogICAgIC8vIFNwZWxsaW5nIGFuZCBncmFtbWFy
LgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCShyZXZpc2lvbiA3OTg4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyNSw3ICsxMjUsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICMg
RGljdGlvbmFyeSBzdXBwb3J0LgotICAgIERpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKFdURjo6
U3RyaW5nIHRleHQsIFdlYktpdDo6VGV4dEluZm8gdGV4dEluZm8pCisgICAgRGlkUGVyZm9ybURp
Y3Rpb25hcnlMb29rdXAoV1RGOjpTdHJpbmcgdGV4dCwgV2ViS2l0OjpEaWN0aW9uYXJ5UG9wdXBJ
bmZvIGRpY3Rpb25hcnlQb3B1cEluZm8pCiAKICAgICAjIEtleWJvYXJkIHN1cHBvcnQgbWVzc2Fn
ZXMKICAgICBJbnRlcnByZXRLZXlFdmVudCh1aW50MzJfdCB0eXBlKSAtPiAoVmVjdG9yPFdlYkNv
cmU6OktleXByZXNzQ29tbWFuZD4gY29tbWFuZE5hbWUsIHVpbnQzMl90IHNlbGVjdGlvblN0YXJ0
LCB1aW50MzJfdCBzZWxlY3Rpb25FbmQsIFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVy
bGluZT4gdW5kZXJsaW5lcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1
cE1lbnVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
b3B1cE1lbnVQcm94eS5oCShyZXZpc2lvbiA3OTg4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURh
dGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1Bv
cHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0
aW9uLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVt
cywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cE1lbnUoKSA9IDA7CiAKICAgICB2b2lkIGlu
dmFsaWRhdGUoKSB7IG1fY2xpZW50ID0gMDsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA3OTg4MikKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lk
IGZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4m
IHVwZGF0ZVJlY3RzKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxv
b2t1cChjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0SW5mbyYpOworICAgIHZpcnR1YWwgdm9pZCBk
aWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJpbmcmLCBkb3VibGUgc2NhbGVGYWN0
b3IsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mKTsKIAogICAgIFdLVmlldyogbV93a1ZpZXc7
CiAgICAgUmV0YWluUHRyPFdlYkVkaXRvclVuZG9UYXJnZXRPYmpDPiBtX3VuZG9UYXJnZXQ7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50
SW1wbC5tbQkocmV2aXNpb24gNzk4ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsOSBAQAog
I2ltcG9ydCAiUGFnZUNsaWVudEltcGwuaCIKIAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgor
I2ltcG9ydCAiRGljdGlvbmFyeVBvcHVwSW5mby5oIgogI2ltcG9ydCAiRmluZEluZGljYXRvci5o
IgogI2ltcG9ydCAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgotI2ltcG9ydCAiVGV4dEluZm8u
aCIKICNpbXBvcnQgIldLQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgogI2ltcG9y
dCAiV0tWaWV3SW50ZXJuYWwuaCIKQEAgLTQxMywxNiArNDEzLDE3IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OmZsYXNoQmFja2luZ1N0b3JlVXAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFRleHRJbmZvJiB0ZXh0SW5mbykKK3ZvaWQgUGFnZUNsaWVudEltcGw6
OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IFN0cmluZyYgdGV4dCwgZG91YmxlIHNj
YWxlRmFjdG9yLCBjb25zdCBEaWN0aW9uYXJ5UG9wdXBJbmZvJiBkaWN0aW9uYXJ5UG9wdXBJbmZv
KQogewotICAgIE5TRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9yID0gW05TRm9udERlc2Ny
aXB0b3IgZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKXRl
eHRJbmZvLmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5LmdldCgpXTsKLSAgICBOU0ZvbnQgKmZvbnQg
PSBbTlNGb250IGZvbnRXaXRoRGVzY3JpcHRvcjpmb250RGVzY3JpcHRvciBzaXplOnRleHRJbmZv
LmZvbnRPdmVycmlkZVNpemVdOworICAgIE5TRm9udERlc2NyaXB0b3IgKmZvbnREZXNjcmlwdG9y
ID0gW05TRm9udERlc2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoRm9udEF0dHJpYnV0ZXM6KE5T
RGljdGlvbmFyeSAqKWRpY3Rpb25hcnlQb3B1cEluZm8uZm9udEluZm8uZm9udEF0dHJpYnV0ZURp
Y3Rpb25hcnkuZ2V0KCldOworICAgIE5TRm9udCAqZm9udCA9IFtOU0ZvbnQgZm9udFdpdGhEZXNj
cmlwdG9yOmZvbnREZXNjcmlwdG9yIHNpemU6KChzY2FsZUZhY3RvciAhPSAxKSA/IFtmb250RGVz
Y3JpcHRvciBwb2ludFNpemVdICogc2NhbGVGYWN0b3IgOiAwKV07CiAKICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZz4gYXR0cmlidXRlZFN0cmluZyhBZG9wdE5TLCBbW05T
TXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOm5zU3RyaW5nRnJv
bVdlYkNvcmVTdHJpbmcodGV4dCldKTsKICAgICBbYXR0cmlidXRlZFN0cmluZy5nZXQoKSBhZGRB
dHRyaWJ1dGU6TlNGb250QXR0cmlidXRlTmFtZSB2YWx1ZTpmb250IHJhbmdlOk5TTWFrZVJhbmdl
KDAsIFthdHRyaWJ1dGVkU3RyaW5nLmdldCgpIGxlbmd0aF0pXTsKIAotICAgIE5TUG9pbnQgdGV4
dEJhc2VsaW5lT3JpZ2luID0gdGV4dEluZm8uYmFzZWxpbmVPcmlnaW47Ci0KKyAgICBOU1BvaW50
IHRleHRCYXNlbGluZU9yaWdpbiA9IGRpY3Rpb25hcnlQb3B1cEluZm8ub3JpZ2luOworICAgIHRl
eHRCYXNlbGluZU9yaWdpbi55ICs9IFtmb250IGFzY2VuZGVyXTsKKyAgICAKICAgICBOU0RpY3Rp
b25hcnkgKm9wdGlvbnMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Ok5TRGVm
aW5pdGlvblByZXNlbnRhdGlvblR5cGVPdmVybGF5IGZvcktleTpOU0RlZmluaXRpb25QcmVzZW50
YXRpb25UeXBlS2V5XTsKICAgICBbbV93a1ZpZXcgc2hvd0RlZmluaXRpb25Gb3JBdHRyaWJ1dGVk
U3RyaW5nOmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW2F0dHJp
YnV0ZWRTdHJpbmcuZ2V0KCkgbGVuZ3RoXSkgb3B0aW9uczpvcHRpb25zIGJhc2VsaW5lT3JpZ2lu
UHJvdmlkZXI6XihOU1JhbmdlIGFkanVzdGVkUmFuZ2UpIHsgcmV0dXJuIChOU1BvaW50KXRleHRC
YXNlbGluZU9yaWdpbjsgfV07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYlBvcHVwTWVudVByb3h5TWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5oCShyZXZpc2lvbiA3OTg4MikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsMjIgKzM4LDIyIEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogY2xhc3Mg
V2ViUG9wdXBNZW51UHJveHlNYWMgOiBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5TWFjPiBjcmVhdGUoV0tW
aWV3KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlNYWM+IGNyZWF0ZShXS1ZpZXcgKndlYlZp
ZXcsIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJveHlNYWMod2ViVmlldywgY2xpZW50KSk7
CiAgICAgfQogICAgIH5XZWJQb3B1cE1lbnVQcm94eU1hYygpOwogCi0gICAgdmlydHVhbCB2b2lk
IHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJl
Y3Rpb24sIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1Bv
cHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwg
ZG91YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBs
YXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAgICAgdmlydHVh
bCB2b2lkIGhpZGVQb3B1cE1lbnUoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJQb3B1cE1lbnVQcm94
eU1hYyhXS1ZpZXcqLCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpOworICAgIFdl
YlBvcHVwTWVudVByb3h5TWFjKFdLVmlldyAqLCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50Kik7
CiAKLSAgICB2b2lkIHBvcHVsYXRlKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgV2ViQ29y
ZTo6VGV4dERpcmVjdGlvbik7CisgICAgdm9pZCBwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViUG9w
dXBJdGVtPiYsIE5TRm9udCAqLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uKTsKIAogICAgIFJldGFp
blB0cjxOU1BvcFVwQnV0dG9uQ2VsbD4gbV9wb3B1cDsKLSAgICBXS1ZpZXcqIG1fd2ViVmlldzsK
KyAgICBXS1ZpZXcgKm1fd2ViVmlldzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVBy
b3h5TWFjLm1tCShyZXZpc2lvbiA3OTg4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJQ
b3B1cE1lbnVQcm94eU1hYzo6V2ViUG9wdXBNZW51UHJveHlNYWMoV0tWaWV3KiB3ZWJWaWV3LCBX
ZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCitXZWJQb3B1cE1lbnVQcm94eU1hYzo6
V2ViUG9wdXBNZW51UHJveHlNYWMoV0tWaWV3ICp3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6
Q2xpZW50KiBjbGllbnQpCiAgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCiAgICAgLCBt
X3dlYlZpZXcod2ViVmlldykKIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgV2ViUG9wdXBNZW51UHJveHlN
YWM6On5XZWJQb3B1cE1lbnVQcm94eQogICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRDb250cm9s
VmlldzpuaWxdOwogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25z
dCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIFRleHREaXJlY3Rpb24gbWVudVRleHREaXJl
Y3Rpb24pCit2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8
V2ViUG9wdXBJdGVtPiYgaXRlbXMsIE5TRm9udCAqZm9udCwgVGV4dERpcmVjdGlvbiBtZW51VGV4
dERpcmVjdGlvbikKIHsKICAgICBpZiAobV9wb3B1cCkKICAgICAgICAgW21fcG9wdXAuZ2V0KCkg
cmVtb3ZlQWxsSXRlbXNdOwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5
TWFjOjpwb3B1bGF0ZShjb25zCiAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUuZ2V0KCkgc2V0
QWxpZ25tZW50Om1lbnVUZXh0RGlyZWN0aW9uID09IExUUiA/IE5TTGVmdFRleHRBbGlnbm1lbnQg
OiBOU1JpZ2h0VGV4dEFsaWdubWVudF07CiAgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
RGljdGlvbmFyeT4gYXR0cmlidXRlcyhBZG9wdE5TLCBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3R5
bGUuZ2V0KCksIE5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lLAotICAgICAgICAgICAgICAg
IFttX3BvcHVwLmdldCgpIGZvbnRdLCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLAorICAgICAgICAgICAg
ICAgIGZvbnQsIE5TRm9udEF0dHJpYnV0ZU5hbWUsCiAgICAgICAgICAgICBuaWxdKTsKICAgICAg
ICAgICAgIGlmIChpdGVtc1tpXS5tX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZSkgewogICAgICAg
ICAgICAgICAgIFJldGFpblB0cjxOU051bWJlcj4gd3JpdGluZ0RpcmVjdGlvblZhbHVlKEFkb3B0
TlMsIFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50ZWdlcjp3cml0aW5nRGlyZWN0aW9uICsg
TlNUZXh0V3JpdGluZ0RpcmVjdGlvbk92ZXJyaWRlXSk7CkBAIC04OSwxNSArODksMjIgQEAgdm9p
ZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6cG9wdWxhdGUoY29ucwogICAgIH0KIH0KIAotdm9pZCBX
ZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBU
ZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBp
dGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4
KQordm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0
JiByZWN0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBzY2FsZUZhY3Rvciwg
Y29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEmIGRhdGEsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBwb3B1bGF0ZShpdGVt
cywgdGV4dERpcmVjdGlvbik7CisgICAgTlNGb250ICpmb250OworICAgIGlmIChkYXRhLmZvbnRJ
bmZvLmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5KSB7CisgICAgICAgIE5TRm9udERlc2NyaXB0b3Ig
KmZvbnREZXNjcmlwdG9yID0gW05TRm9udERlc2NyaXB0b3IgZm9udERlc2NyaXB0b3JXaXRoRm9u
dEF0dHJpYnV0ZXM6KE5TRGljdGlvbmFyeSAqKWRhdGEuZm9udEluZm8uZm9udEF0dHJpYnV0ZURp
Y3Rpb25hcnkuZ2V0KCldOworICAgICAgICBmb250ID0gW05TRm9udCBmb250V2l0aERlc2NyaXB0
b3I6Zm9udERlc2NyaXB0b3Igc2l6ZTooKHNjYWxlRmFjdG9yICE9IDEpID8gW2ZvbnREZXNjcmlw
dG9yIHBvaW50U2l6ZV0gKiBzY2FsZUZhY3RvciA6IDApXTsKKyAgICB9IGVsc2UKKyAgICAgICAg
Zm9udCA9IFtOU0ZvbnQgbWVudUZvbnRPZlNpemU6MF07CisKKyAgICBwb3B1bGF0ZShpdGVtcywg
Zm9udCwgdGV4dERpcmVjdGlvbik7CiAKICAgICBbbV9wb3B1cC5nZXQoKSBhdHRhY2hQb3BVcFdp
dGhGcmFtZTpyZWN0IGluVmlldzptX3dlYlZpZXddOwogICAgIFttX3BvcHVwLmdldCgpIHNlbGVj
dEl0ZW1BdEluZGV4OnNlbGVjdGVkSW5kZXhdOwogICAgIFttX3BvcHVwLmdldCgpIHNldFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvblJpZ2h0VG9MZWZ0XTsKIAotICAgIE5TTWVudSogbWVudSA9IFttX3BvcHVwLmdldCgp
IG1lbnVdOworICAgIE5TTWVudSAqbWVudSA9IFttX3BvcHVwLmdldCgpIG1lbnVdOwogCiAgICAg
Ly8gVGhlc2UgdmFsdWVzIHdlcmUgYm9ycm93ZWQgZnJvbSBBcHBLaXQgdG8gbWF0Y2ggdGhlaXIg
cGxhY2VtZW50IG9mIHRoZSBtZW51LgogICAgIGNvbnN0IGludCBwb3BPdmVySG9yaXpvbnRhbEFk
anVzdCA9IC0xMDsKQEAgLTExMSw3ICsxMTgsNyBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFj
OjpzaG93UG9wdXBNZW51CiAgICAgW21fd2ViVmlldyBhZGRTdWJ2aWV3OmR1bW15Vmlldy5nZXQo
KV07CiAgICAgbG9jYXRpb24gPSBbZHVtbXlWaWV3LmdldCgpIGNvbnZlcnRQb2ludDpsb2NhdGlv
biBmcm9tVmlldzptX3dlYlZpZXddOwogCi0gICAgV0tQb3B1cE1lbnUobWVudSwgbG9jYXRpb24s
IHJvdW5kZihOU1dpZHRoKHJlY3QpKSwgZHVtbXlWaWV3LmdldCgpLCBzZWxlY3RlZEluZGV4LCBb
TlNGb250IG1lbnVGb250T2ZTaXplOjBdKTsKKyAgICBXS1BvcHVwTWVudShtZW51LCBsb2NhdGlv
biwgcm91bmRmKE5TV2lkdGgocmVjdCkpLCBkdW1teVZpZXcuZ2V0KCksIHNlbGVjdGVkSW5kZXgs
IGZvbnQpOwogCiAgICAgW21fcG9wdXAuZ2V0KCkgZGlzbWlzc1BvcFVwXTsKICAgICBbZHVtbXlW
aWV3LmdldCgpIHJlbW92ZUZyb21TdXBlcnZpZXddOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcAkocmV2aXNpb24gNzk4
ODIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgV2ViUG9wdXBNZW51UHJveHlRdDo6
fldlYlBvcHVwTWVudVByb3h5UQogewogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNo
b3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwg
Y29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6
OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlv
biwgZG91YmxlLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRm
b3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKIHsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5o
CShyZXZpc2lvbiA3OTg4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1
cE1lbnVQcm94eVF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgog
ICAgIH0KICAgICB+V2ViUG9wdXBNZW51UHJveHlRdCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNo
b3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJlY3Rp
b24sIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVw
TWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91
YmxlIHNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRm
b3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CiAgICAgdmlydHVhbCB2
b2lkIGhpZGVQb3B1cE1lbnUoKTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJveHlXaW4uY3BwCShyZXZpc2lv
biA3OTg4MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51UHJv
eHlXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNyArMTg4LDcgQEAgV2ViUG9wdXBNZW51
UHJveHlXaW46On5XZWJQb3B1cE1lbnVQcm94eQogICAgICAgICBtX3Njcm9sbGJhci0+c2V0UGFy
ZW50KDApOwogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5V2luOjpzaG93UG9wdXBNZW51KGNv
bnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0
ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhLCBpbnQzMl90IHNl
bGVjdGVkSW5kZXgpCit2b2lkIFdlYlBvcHVwTWVudVByb3h5V2luOjpzaG93UG9wdXBNZW51KGNv
bnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24sIGRvdWJsZSwgY29uc3QgVmVjdG9yPFdl
YlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEsIGlu
dDMyX3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBtX2l0ZW1zID0gaXRlbXM7CiAgICAgbV9kYXRh
ID0gZGF0YTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViUG9wdXBNZW51
UHJveHlXaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dl
YlBvcHVwTWVudVByb3h5V2luLmgJKHJldmlzaW9uIDc5ODgyKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3dpbi9XZWJQb3B1cE1lbnVQcm94eVdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfldlYlBvcHVwTWVudVByb3h5V2luKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBj
b25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpOworICAg
IHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJD
b3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgc2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3Rl
ZEluZGV4KTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpOwogCiAgICAgdm9pZCBo
aWRlKCkgeyBoaWRlUG9wdXBNZW51KCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc5ODgyKQorKysgU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC01MTQsOCArNTE0LDYgQEAKIAkJQkM0MDc2MkIxMjRGRjA0MDAwNjhGMjBBIC8qIFdL
VVJMUmVzcG9uc2VOUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM0MDc2MjUxMjRGRjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVzcG9uc2VOUy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkM0MDc2MkMxMjRG
RjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVzcG9uc2VOUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDA3NjI2MTI0RkYwNDAwMDY4RjIwQSAvKiBXS1VS
TFJlc3BvbnNlTlMubW0gKi87IH07CiAJCUJDNDA3ODNEMTI1MEZBREQwMDY4RjIwQSAvKiBXS0V2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQw
NzgzQzEyNTBGQUREMDA2OEYyMEEgLyogV0tFdmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJQkM0NTQyMzQxMzBDNUYzRjAwNzNFMUMxIC8qIFRl
eHRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzQ1NDIzMjEzMEM1RjNGMDA3M0UxQzEgLyogVGV4dEluZm8uaCAqLzsgfTsKLQkJQkM0NTQyMzUx
MzBDNUYzRjAwNzNFMUMxIC8qIFRleHRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDU0MjMzMTMwQzVGM0YwMDczRTFDMSAvKiBUZXh0SW5m
by5jcHAgKi87IH07CiAJCUJDNDk4NjE4MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNDk4NjE2MTI0RDEwRTIwMEQ4MzRFMSAvKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuaCAqLzsgfTsKIAkJQkM0OTg2MTkxMjREMTBFMjAwRDgzNEUxIC8qIEluamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzQ5ODYxNzEyNEQxMEUyMDBEODM0RTEgLyogSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcCAqLzsgfTsKIAkJQkM0OTg2MkYxMjREMThDMTAwRDgzNEUxIC8qIFdLQnVu
ZGxlSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0OTg2MkQxMjREMThDMTAwRDgzNEUxIC8qIFdLQnVuZGxlSGl0VGVzdFJlc3Vs
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTY5
Myw2ICs2OTEsMTAgQEAKIAkJQkNFNDY5NUExMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1p
c3Npb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNFNDY5NTgxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJQkNF
NDY5NzcxMjE0RjI3QjAwMEI5OEVCIC8qIFdlYkZyYW1lTGlzdGVuZXJQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFNDY5NzYxMjE0RjI3QjAw
MEI5OEVCIC8qIFdlYkZyYW1lTGlzdGVuZXJQcm94eS5oICovOyB9OwogCQlCQ0U0Njk3OTEyMTRG
MkI0MDAwQjk4RUIgLyogV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTQ2OTc4MTIxNEYyQjQwMDBCOThFQiAv
KiBXZWJGcmFtZUxpc3RlbmVyUHJveHkuY3BwICovOyB9OworCQlCQ0U4MUQ4QzEzMTlGN0VGMDAy
NDE5MTAgLyogRm9udEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNFODFEOEExMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmNwcCAqLzsg
fTsKKwkJQkNFODFEOEQxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U4MUQ4QjEzMTlGN0VGMDAyNDE5
MTAgLyogRm9udEluZm8uaCAqLzsgfTsKKwkJQkNFODFEOTgxMzFBRTAyMTAwMjQxOTEwIC8qIERp
Y3Rpb25hcnlQb3B1cEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNFODFEOTYxMzFBRTAyMDAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cElu
Zm8uY3BwICovOyB9OworCQlCQ0U4MUQ5OTEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBv
cHVwSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFODFEOTcxMzFBRTAyMTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLzsgfTsK
IAkJQkNFRTdBRDAxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Q0VFN0FDQzEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKIAkJQkNFRTdBRDExMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0VFN0FDRDEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCAq
LzsgfTsKIAkJQkNFRTdEMEQxMjg0NkY2OTAwOTgyN0RBIC8qIFdlYkNvbnRleHRNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNFRTdEMEIxMjg0NkY2OTAwOTgyN0RBIC8qIFdlYkNvbnRleHRNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovOyB9OwpAQCAtMTM0Niw4ICsxMzQ4LDYgQEAKIAkJQkM0MDc2MjUxMjRGRjA0MDAwNjhGMjBB
IC8qIFdLVVJMUmVzcG9uc2VOUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1VSTFJlc3BvbnNlTlMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0MDc2MjYx
MjRGRjA0MDAwNjhGMjBBIC8qIFdLVVJMUmVzcG9uc2VOUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLVVJMUmVzcG9uc2VOUy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM0MDc4M0MxMjUwRkFERDAwNjhGMjBBIC8qIFdLRXZlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlCQzQ1NDIzMjEzMEM1RjNGMDA3M0UxQzEgLyogVGV4dEluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQkM0NTQyMzMxMzBDNUYzRjAwNzNFMUMxIC8qIFRleHRJbmZvLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRJbmZvLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0OTg2MTYxMjREMTBFMjAwRDgzNEUxIC8qIEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM0OTg2MTcxMjREMTBFMjAwRDgzNEUxIC8qIEluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ5
ODYyRDEyNEQxOEMxMDBEODM0RTEgLyogV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyNSw2ICsxNTI1LDEwIEBACiAJCUJDRTQ2OTU4MTIx
NEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTQ2OTc2MTIxNEYyN0IwMDBCOThFQiAvKiBXZWJGcmFt
ZUxpc3RlbmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRnJh
bWVMaXN0ZW5lclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTQ2OTc4
MTIxNEYyQjQwMDBCOThFQiAvKiBXZWJGcmFtZUxpc3RlbmVyUHJveHkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFODFEOEExMzE5RjdFRjAwMjQxOTEwIC8qIEZv
bnRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRJbmZv
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFODFEOEIxMzE5RjdFRjAwMjQx
OTEwIC8qIEZvbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRJ
bmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRTgxRDk2MTMxQUUwMjAwMDI0
MTkxMCAvKiBEaWN0aW9uYXJ5UG9wdXBJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERpY3Rpb25hcnlQb3B1cEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQ0U4MUQ5NzEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaWN0aW9uYXJ5UG9wdXBJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUU3QUIzMTI4MTcwOTUwMDk4MjdE
QSAvKiBXZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0VFN0FDQzEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlByb2Nlc3NQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
RUU3QUNEMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxMiw2ICsxOTE2LDggQEAKIAkJCQkxQTJE
OTU2RDEyODQ4NTY0MDAxRUI5NjIgLyogQ2hpbGRQcm9jZXNzLmggKi8sCiAJCQkJMUE2RjlGOEUx
MUUxM0VGQzAwREIxMzcxIC8qIENvbW1hbmRMaW5lLmggKi8sCiAJCQkJMUEyQzMwNkYxMkQ1NTU0
NTAwNjNEQUEyIC8qIENvbnRleHRNZW51U3RhdGUuaCAqLywKKwkJCQlCQ0U4MUQ5NjEzMUFFMDIw
MDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5jcHAgKi8sCisJCQkJQkNFODFEOTcxMzFB
RTAyMTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCAqLywKIAkJCQlDNTE3Mzg4MDEy
REY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRyb2xsZXJBY3Rpb24uaCAqLywKIAkJCQkwRkI2NTky
MjEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi8sCiAJCQkJNzYyQjc0ODEx
MjBCQkEwMTAwODE5MzM5IC8qIEZvbnRTbW9vdGhpbmdMZXZlbC5oICovLApAQCAtMTkzMiw2ICsx
OTM4LDggQEAKIAkJCQlCQ0M0M0FCOTEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhLmggKi8sCiAJCQkJRTE4QzkyRjMxMkRCOUU3MTAwQ0YyQUVCIC8qIFByaW50SW5mby5j
cHAgKi8sCiAJCQkJRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovLAor
CQkJCUJDRTgxRDhBMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5jcHAgKi8sCisJCQkJQkNF
ODFEOEIxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggKi8sCiAJCQkJQkMyRDAyMTYxMkFD
NDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8sCiAJCQkJMUFB
QjRBOEMxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCAqLywKIAkJCQkzMzE1
Mjk3MzEzMEQwQ0IyMDBFRDI0ODMgLyogU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCAqLywKQEAgLTE5
NDMsOCArMTk1MSw2IEBACiAJCQkJMUE2NDIwRTMxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJs
ZUJpdG1hcC5oICovLAogCQkJCUJDQkQzQzNBMTI1QkZBN0EwMEQyQzI5RiAvKiBTdHJpbmdQYWly
VmVjdG9yLmggKi8sCiAJCQkJMUE1RTREQTMxMkQzQkQzRDAwOTlBMkJCIC8qIFRleHRDaGVja2Vy
U3RhdGUuaCAqLywKLQkJCQlCQzQ1NDIzMzEzMEM1RjNGMDA3M0UxQzEgLyogVGV4dEluZm8uY3Bw
ICovLAotCQkJCUJDNDU0MjMyMTMwQzVGM0YwMDczRTFDMSAvKiBUZXh0SW5mby5oICovLAogCQkJ
CTFBNjQyNDVEMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmNwcCAqLywKIAkJCQkxQTY0
MjQ1QzEyREUyOUExMDBDQUFFMkMgLyogVXBkYXRlSW5mby5oICovLAogCQkJCUJDQjBCMERGMTIz
MDVBQjEwMEIxMzQxRSAvKiBVc2VyTWVzc2FnZUNvZGVycy5oICovLApAQCAtMzM2Myw3ICszMzY5
LDYgQEAKIAkJCQk1MTJFMzUyRjEzMEI1NUFGMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkUzNTZCMTMwQjU3RjAwMEFCRDE5QSAv
KiBXZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTJFMzVGOTEzMEI2NDJFMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQ
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzQ1NDIzNDEzMEM1RjNGMDA3M0Ux
QzEgLyogVGV4dEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzg2RkY0MTMwQjQ2RDMwMDJD
MTI1NyAvKiBXS1BsdWdpblNpdGVEYXRhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFD
ODcwMkQxMzBCNDlBMjAwMkMxMjU3IC8qIFdlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzMzNjc2MzAxMzBDOTk5ODAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2Fj
aGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTMzODEsNiArMzM4Niw4IEBACiAJCQkJMzMw
OTM0NTAxMzE1Qjk0RDAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMzMDkzNDU2MTMxNUI5NzUwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHku
aCBpbiBIZWFkZXJzICovLAogCQkJCTMzMDkzNDVCMTMxNUI5OTgwMDk3QTdCQyAvKiBXS0Nvb2tp
ZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRTgxRDhEMTMxOUY3RUYwMDI0MTkxMCAv
KiBGb250SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNFODFEOTkxMzFBRTAyMTAwMjQxOTEw
IC8qIERpY3Rpb25hcnlQb3B1cEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzg2Miw3ICszODY5
LDYgQEAKIAkJCQk1MTJFMzUyRTEzMEI1NUFGMDBBQkQxOUEgLyogV2ViQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRTM1NkExMzBCNTdGMDAwQUJEMTlB
IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxMkUzNUY4MTMwQjY0MkUwMEFCRDE5QSAvKiBXZWJBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJD
NDU0MjM1MTMwQzVGM0YwMDczRTFDMSAvKiBUZXh0SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUM4NkZGMzEzMEI0NkQzMDAyQzEyNTcgLyogV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDODcwMkUxMzBCNDlBMjAwMkMxMjU3IC8qIFdlYlBsdWdp
blNpdGVEYXRhTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzM2NzYyRjEzMEM5OTk4
MDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zODg0LDYgKzM4OTAsOCBAQAogCQkJCTMzMDkzNDRGMTMxNUI5NEQwMDk3QTdCQyAvKiBXZWJD
b29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMDkzNDU1MTMxNUI5NzUwMDk3
QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzMw
OTM0NUExMzE1Qjk5ODAwOTdBN0JDIC8qIFdLQ29va2llTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlCQ0U4MUQ4QzEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQkNFODFEOTgxMzFBRTAyMTAwMjQxOTEwIC8qIERpY3Rpb25hcnlQb3B1cElu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJQb3B1cE1lbnVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUG9wdXBNZW51TWFjLm1t
CShyZXZpc2lvbiA3OTg4MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYlBvcHVwTWVudU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3
LDI1IEBACiAjaW1wb3J0ICJXZWJQb3B1cE1lbnUuaCIKIAogI2ltcG9ydCAiUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhLmgiCisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Qb3B1cE1lbnVDbGllbnQuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBv
cHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50UmVjdCYsIFBsYXRmb3JtUG9wdXBN
ZW51RGF0YSYpCit2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50
UmVjdCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYgZGF0YSkKIHsKKyAgICBOU0ZvbnQgKmZvbnQg
PSBtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS5mb250KCkucHJpbWFyeUZvbnQoKS0+Z2V0TlNG
b250KCk7CisgICAgaWYgKCFmb250KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQ0ZEaWN0
aW9uYXJ5UmVmIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IChDRkRpY3Rpb25hcnlSZWYpW1tm
b250IGZvbnREZXNjcmlwdG9yXSBmb250QXR0cmlidXRlc107CisgICAgaWYgKCFmb250RGVzY3Jp
cHRvckF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBkYXRhLmZvbnRJbmZv
LmZvbnRBdHRyaWJ1dGVEaWN0aW9uYXJ5ID0gZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDc5ODgyKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0LmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCisjaW1wb3J0ICJEaWN0aW9u
YXJ5UG9wdXBJbmZvLmgiCiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCi0jaW1wb3J0ICJUZXh0SW5m
by5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJFdmVu
dC5oIgogI2ltcG9ydCAiV2ViRnJhbWUuaCIKQEAgLTMwMiwxNCArMzAyLDEzIEBAIHZvaWQgV2Vi
UGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdEwKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SW50UmVjdCBmaW5hbFJhbmdlUmVjdCA9IGZyYW1lLT52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3co
cXVhZHNbMF0uZW5jbG9zaW5nQm91bmRpbmdCb3goKSk7Ci0gICAgRmxvYXRQb2ludCBiYXNlbGlu
ZU9yaWdpbihmaW5hbFJhbmdlUmVjdC54KCksIChmaW5hbFJhbmdlUmVjdC55KCkgKyAoW2ZvbnQg
YXNjZW5kZXJdICogZnJhbWUtPnBhZ2VTY2FsZUZhY3RvcigpKSkpOwotICAgIAotICAgIFRleHRJ
bmZvIHRleHRJbmZvOwotICAgIHRleHRJbmZvLmJhc2VsaW5lT3JpZ2luID0gYmFzZWxpbmVPcmln
aW47Ci0gICAgdGV4dEluZm8uZm9udEF0dHJpYnV0ZURpY3Rpb25hcnkgPSBmb250RGVzY3JpcHRv
ckF0dHJpYnV0ZXM7Ci0gICAgdGV4dEluZm8uZm9udE92ZXJyaWRlU2l6ZSA9IGZyYW1lLT5wYWdl
U2NhbGVGYWN0b3IoKSA9PSAxID8gMCA6IChbW2ZvbnQgZm9udERlc2NyaXB0b3JdIHBvaW50U2l6
ZV0gKiBmcmFtZS0+cGFnZVNjYWxlRmFjdG9yKCkpOworICAgIEZsb2F0UG9pbnQgb3JpZ2luKGZp
bmFsUmFuZ2VSZWN0LngoKSwgZmluYWxSYW5nZVJlY3QueSgpKTsKKworICAgIERpY3Rpb25hcnlQ
b3B1cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mbzsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9y
aWdpbiA9IG9yaWdpbjsKKyAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLmZvbnRJbmZvLmZvbnRBdHRy
aWJ1dGVEaWN0aW9uYXJ5ID0gZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzOwogCi0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChmaW5hbFJh
bmdlLT50ZXh0KCksIHRleHRJbmZvKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChmaW5hbFJhbmdlLT50ZXh0KCksIGRpY3Rpb25h
cnlQb3B1cEluZm8pKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNjcm9sbChQYWdlKiBwYWdl
LCBTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0
eSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHJldmlzaW9uIDc5ODgyKQorKysg
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTks
MTAgKzQxOSwyNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxTaGFyZWRcRGljdGlvbmFyeVBvcHVwSW5mby5jcHAiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxEaWN0aW9uYXJ5UG9wdXBJ
bmZvLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFNoYXJlZFxEcmF3aW5nQXJlYUluZm8uaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEZvbnRJbmZvLmNwcCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXEZvbnRJbmZvLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFxG
b250U21vb3RoaW5nTGV2ZWwuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC01MzEsMTQgKzU0Nyw2
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNo
YXJlZFxUZXh0SW5mby5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFNoYXJlZFxUZXh0SW5mby5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcVXBkYXRlSW5mby5jcHAiCiAJCQkJPgog
CQkJPC9GaWxlPgo=
</data>
<flag name="review"
          id="76025"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>