<?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>96590</bug_id>
          
          <creation_ts>2012-09-12 18:51:39 -0700</creation_ts>
          <short_desc>Added 8 bit path to WidthIterator::advance()</short_desc>
          <delta_ts>2022-02-27 23:35:00 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>718973</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-09-12 18:51:39 -0700</bug_when>
    <thetext>This is part of adding 8 bit code path to text rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718984</commentid>
    <comment_count>1</comment_count>
      <attachid>163758</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-09-12 19:11:07 -0700</bug_when>
    <thetext>Created attachment 163758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719607</commentid>
    <comment_count>2</comment_count>
      <attachid>163893</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-09-13 09:54:19 -0700</bug_when>
    <thetext>Created attachment 163893
Patch with updates 

Updated the original patch with two changes.

Changed Source/WebCore/platform/graphics/Latin1TextIterator.h to be an svn copy of Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.h to retain history.

Ran performance tests of original patch and it showed a regression in the Layout test.  Changed SurrogatePairAwareTextIterator to have inline versions of advance and consume with a new consumeSlowCase for the possible surrogate pair cases.  Performance result of this patch are:

                        Baseline        With patch      Diff
flexbox-column-nowrap   103708.6        109858.0
flexbox-column-nowrap   109955.7        106864.1
flexbox-column-nowrap   108447.6        106678.0        
flexbox-column-nowrap   106098.8        107921.9        
                Mean    107052.7        107830.5       -0.81%
flexbox-column-wrap     109909.5        106872.5       
flexbox-column-wrap     108883.3        105228.3        
flexbox-column-wrap     106647.2        106476.6        
flexbox-column-wrap     105324.4        107460.5        
                Mean    107691.1        106509.5        1.10%
flexbox-row-nowrap      146211.5        142378.8        
flexbox-row-nowrap      147438.1        143749.6        
flexbox-row-nowrap      143789.2        144680.3        
flexbox-row-nowrap      148418.2        145950.7        
                Mean    146464.3        144189.8       -1.55%
flexbox-row-wrap        104452.9        109111.9       
flexbox-row-wrap        109038.1        109778.9        
flexbox-row-wrap        107117.2        109969.8        
flexbox-row-wrap        107728.8        107058.3        
                Mean    107084.3        108979.7        1.77%
floats_100_100_nested      222.5           217.5        
floats_100_100_nested      224.0           215.5
floats_100_100_nested      224.5           214.5
floats_100_100_nested      224.0           216.5
                Mean       223.8           216.0        3.46%
floats_100_100             205.0           198.5        
floats_100_100             207.0           201.0
floats_100_100             205.5           199.5
floats_100_100             206.0           200.5
                Mean       205.9           199.9        2.91%
floats_2_100_nested        463.3           463.2        
floats_2_100_nested        462.7           464.3
floats_2_100_nested        464.7           463.7
floats_2_100_nested        467.0           462.3
                Mean       464.4           463.4        0.23%
floats_2_100               203.0           203.2        
floats_2_100               203.8           207.6
floats_2_100               205.9           207.5
floats_2_100               203.3           203.7
                Mean       204.0           205.5       -0.74%
floats_20_100_nested       623.5           613.7       
floats_20_100_nested       621.5           617.2
floats_20_100_nested       629.8           615.8
floats_20_100_nested       627.3           615.2
                Mean       625.5           615.5        1.61%
floats_20_100              426.3           424.0        
floats_20_100              422.6           420.3
floats_20_100              423.6           420.3
floats_20_100              426.9           420.1
                Mean       424.8           421.2        0.86%
floats_50_100_nested       380.0           372.8        
floats_50_100_nested       378.0           368.0
floats_50_100_nested       378.0           370.6
floats_50_100_nested       377.4           371.4
                Mean       378.4           370.7        2.02%
floats_50_100              307.2           300.4        
floats_50_100              304.4           300.0
floats_50_100              307.2           299.0
floats_50_100              304.4           299.8
                Mean       305.8           299.8        1.96%
line-layout                 75.5            78.2        
line-layout                 75.7            78.5
line-layout                 75.4            78.2
line-layout                 75.4            78.2
                Mean        75.5            78.3        3.68%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719609</commentid>
    <comment_count>3</comment_count>
      <attachid>163894</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-09-13 09:58:34 -0700</bug_when>
    <thetext>Created attachment 163894
Updated Patch with development #if

Same comments as prior patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719621</commentid>
    <comment_count>4</comment_count>
      <attachid>163894</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-13 10:08:25 -0700</bug_when>
    <thetext>Comment on attachment 163894
Updated Patch with development #if

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

&gt; Source/WebCore/platform/graphics/Latin1TextIterator.h:2
&gt; + * Copyright (C) Research In Motion Limited 2011. All rights reserved.

Why the RIM copyright, and no Apple copyright?

If this is new code, please use the license @ http://www.webkit.org/coding/bsd-license.html.

&gt; Source/WebCore/platform/graphics/Latin1TextIterator.h:30
&gt; +    // The passed in UChar pointer starts at &apos;currentCharacter&apos;. The iterator operatoes on the range [currentCharacter, lastCharacter].

Typo: operatoes.

&gt; Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.h:42
&gt; +        if (character &lt; 0x3041)

This should be a named constant.

&gt; Source/WebCore/platform/graphics/WidthIterator.cpp:257
&gt; +    if (int(m_currentCharacter) &gt;= offset)

No need to cast: m_currentCharacter is an int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719659</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-09-13 10:43:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 163894 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163894&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/Latin1TextIterator.h:2
&gt; &gt; + * Copyright (C) Research In Motion Limited 2011. All rights reserved.
&gt; 
&gt; Why the RIM copyright, and no Apple copyright?
&gt;
&gt; If this is new code, please use the license @ http://www.webkit.org/coding/bsd-license.html.

The Apple copyright is above the RIM copyright.  This file is largely leveraged from SurrogatePairAwareTextIterator.h and therefore I kept the copyright from that file and added the Apple copyright after consulting.  Consulted with Dan on this.
 
&gt; &gt; Source/WebCore/platform/graphics/Latin1TextIterator.h:30
&gt; &gt; +    // The passed in UChar pointer starts at &apos;currentCharacter&apos;. The iterator operatoes on the range [currentCharacter, lastCharacter].
&gt; 
&gt; Typo: operatoes.

Fixed.

&gt; &gt; Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.h:42
&gt; &gt; +        if (character &lt; 0x3041)
&gt; 
&gt; This should be a named constant.

Added constant to WTF/wtf/unicode/CharacterNames.h.

&gt; &gt; Source/WebCore/platform/graphics/WidthIterator.cpp:257
&gt; &gt; +    if (int(m_currentCharacter) &gt;= offset)
&gt; 
&gt; No need to cast: m_currentCharacter is an int.

m_currentCharacter is an unsigned (Source/WebCore/platform/graphics/WidthIterator.h line 62).
I changed this to
    if (m_currentCharacter &gt;= static_cast&lt;unsigned&gt;(offset))
since we really want to change offset to unsigned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719902</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-09-13 14:03:33 -0700</bug_when>
    <thetext>Committed r128504: &lt;http://trac.webkit.org/changeset/128504&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163758</attachid>
            <date>2012-09-12 19:11:07 -0700</date>
            <delta_ts>2012-09-13 09:54:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>96590.patch</filename>
            <type>text/plain</type>
            <size>21107</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODM5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA5LTEyICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGVkIDggYml0IHBhdGgg
dG8gV2lkdGhJdGVyYXRvcjo6YWR2YW5jZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NjU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIDggYml0IHBhdGggdG8gYWR2YW5jZSgpIGJ5IGFkZGlu
ZyBhIHRlbXBsYXRpemVkIGFkdmFuY2VJbnRlcm5hbCBwcml2YXRlCisgICAgICAgIG1ldGhvZCBh
bmQgYWRkZWQgYSBzaW1wbGUgOCBiaXQgTGF0aW4tMSBUZXh0SXRlcmF0b3IuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGJlY2F1c2Ugb2Ygbm8gYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0xhdGluMVRleHRJdGVyYXRvci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoTGF0aW4xVGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkxhdGluMVRleHRJdGVyYXRvcjo6TGF0aW4xVGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkxhdGluMVRleHRJdGVyYXRvcjo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXRp
bjFUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF0aW4xVGV4dEl0
ZXJhdG9yOjpjdXJyZW50Q2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxhdGluMVRleHRJ
dGVyYXRvcjo6Y2hhcmFjdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRo
SXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJh
dG9yOjphZHZhbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
Lmg6CisgICAgICAgIChXaWR0aEl0ZXJhdG9yKToKKwogMjAxMi0wOS0xMiAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIFZhbGlkYXRpb25NZXNz
YWdlQ2xpZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEy
ODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ0MTgsNiArNDQxOCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemVIYXNoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xh
dGluMVRleHRJdGVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
UHJpdmF0ZS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTI4MzYyKQorKysgU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMjExMyw2ICsyMTEzLDcgQEAg
SEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNoLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lu
dFJlY3QuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlUHRyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW50eXBlL09w
ZW5UeXBlVmVydGljYWxEYXRhLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTI4
MzYyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00
NzcxLDYgKzQ3NzEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPcmllbnRhdGlv
bi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgnICwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMjgzNjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMzM2NzAsNiArMzM2NzAsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJ
CQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXExhdGluMVRl
eHRJdGVyYXRvci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxMaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaCIKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyODM2MikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NjU0OCw3ICs2NTQ4LDYgQEAKIAkJRkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRp
bmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwogCQlG
RTZGRDQ4RTBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEMwRjY3NkU5MzAwMDkyODcz
IC8qIEpTQ29vcmRpbmF0ZXMuaCAqLzsgfTsKIAkJRkU3MDBERDEwRjkyRDgxQTAwOEUyQkZFIC8q
IEpTQ29vcmRpbmF0ZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU3MDBERDAwRjkyRDgxQTAwOEUyQkZFIC8qIEpTQ29vcmRpbmF0ZXND
dXN0b20uY3BwICovOyB9OwotCQlGRkQ4NkU3ODE1Rjk1ODM2MDAwNDcyMzMgLyogSlNEZXBlbmRl
bnRSZXRhaW5lZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkZEODZFNzcxNUY5NTgzNjAwMDQ3MjMzIC8qIEpTRGVwZW5kZW50UmV0YWluZWQuaCAqLzsg
fTsKIAkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTYw
RTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovOyB9OwogCQlGRTgw
REE2MzBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE1RjBFOUM0NzAzMDAwRDZGNzUg
LyogSlNHZW9sb2NhdGlvbi5jcHAgKi87IH07CiAJCUZFODBEQTY0MEU5QzQ3MDMwMDBENkY3NSAv
KiBKU0dlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTgwREE2MDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oICovOyB9
OwpAQCAtNjU1OCw2ICs2NTU3LDcgQEAKIAkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpT
UG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovOyB9
OwogCQlGRkQ1Qjk3QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3NzEz
NUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi87IH07CiAJCUZGRDVC
OTdCMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3ODEzNUNDOTc4MDBENUU5
MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUZGRDg2RTc4MTVGOTU4MzYwMDA0NzIzMyAvKiBKU0RlcGVu
ZGVudFJldGFpbmVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRkQ4NkU3NzE1Rjk1ODM2MDAwNDcyMzMgLyogSlNEZXBlbmRlbnRSZXRhaW5lZC5oICov
OyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC04OTc1LDYgKzg5NzUsNyBAQAogCQk2NUM5N0FG
MjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVDQkZFRjcwOTc0RjYwNzAwMURB
QzI1IC8qIEZyYW1lVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRnJhbWVWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVDQkZFRjgw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY1Q0M2
QkVEMTYwMTRFQzAwMDBFRDI3RCAvKiBMYXRpbjFUZXh0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGF0aW4xVGV4dEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1REYzMUQ4MDlEMUMxMjIwMDBCRTMyNSAvKiBKU0F0dHIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXR0ci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1REYzMUQ5MDlEMUMxMjMwMDBCRTMyNSAvKiBKU0F0dHIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXR0ci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NURGMzFERjA5RDFDQzYwMDAwQkUzMjUgLyogSlNDaGFyYWN0
ZXJEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NoYXJh
Y3RlckRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5ODksNyArMTM5
OTAsNiBAQAogCQlGRTZGRDQ4QjBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Nvb3JkaW5hdGVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0OEMwRjY3NkU5MzAwMDkyODczIC8q
IEpTQ29vcmRpbmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDb29y
ZGluYXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTcwMEREMDBGOTJEODFB
MDA4RTJCRkUgLyogSlNDb29yZGluYXRlc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRkZEODZFNzcxNUY5NTgzNjAwMDQ3MjMzIC8qIEpTRGVwZW5kZW50UmV0
YWluZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZXBlbmRlbnRSZXRh
aW5lZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwRDdBNjBFOUMxRUQyMDAw
RDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkU4MERBNUYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9sb2NhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAv
KiBKU0dlb2xvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2Vv
bG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTk5LDYgKzEzOTk5
LDcgQEAKIAkJRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZENUI5NzcxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VW
aXNpYmlsaXR5U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZG
RDVCOTc4MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkZEODZFNzcxNUY5NTgzNjAwMDQ3MjMzIC8qIEpTRGVwZW5k
ZW50UmV0YWluZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZXBlbmRl
bnRSZXRhaW5lZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVS
ZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCkBAIC0xOTk2NSw2ICsxOTk2Niw3IEBACiAJCQkJQjIzNTQwRjAwRDAwNzgyRTAw
MjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5jcHAgKi8sCiAJCQkJQjIzNTQwRjEwRDAwNzgyRTAw
MjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oICovLAogCQkJCTA4NzU1OEMzMTNCNEE1N0QwMEY0
OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwICovLAorCQkJCTY1Q0M2
QkVEMTYwMTRFQzAwMDBFRDI3RCAvKiBMYXRpbjFUZXh0SXRlcmF0b3IuaCAqLywKIAkJCQkwODc1
NThDNDEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgg
Ki8sCiAJCQkJMDg3RTBBRjQxMzYwNkQwQjAwRkE0QkE4IC8qIFNWR0dseXBoLmNwcCAqLywKIAkJ
CQkwODdFMEFGNTEzNjA2RDBCMDBGQTRCQTggLyogU1ZHR2x5cGguaCAqLywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xhdGluMVRleHRJdGVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xhdGluMVRleHRJdGVyYXRv
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0
aW4xVGV4dEl0ZXJhdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIEFwcGxlIDIwMTIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVm
IExhdGluMVRleHRJdGVyYXRvcl9oCisjZGVmaW5lIExhdGluMVRleHRJdGVyYXRvcl9oCisKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBMYXRpbjFUZXh0SXRlcmF0b3IgeworcHVibGljOgorICAgIC8vIFRoZSBwYXNzZWQgaW4g
TENoYXIgcG9pbnRlciBzdGFydHMgYXQgJ2N1cnJlbnRDaGFyYWN0ZXInLiBUaGUgaXRlcmF0b3Ig
b3BlcmF0b2VzIG9uIHRoZSByYW5nZSBbY3VycmVudENoYXJhY3RlciwgbGFzdENoYXJhY3Rlcl0u
CisgICAgLy8gJ2VuZENoYXJhY3RlcicgZGVub3RlcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhl
IFVDaGFyIGFycmF5LCB3aGljaCBtaWdodCBleGNlZWQgJ2xhc3RDaGFyYWN0ZXInLgorICAgIExh
dGluMVRleHRJdGVyYXRvcihjb25zdCBMQ2hhciogY2hhcmFjdGVycywgaW50IGN1cnJlbnRDaGFy
YWN0ZXIsIGludCBsYXN0Q2hhcmFjdGVyLCBpbnQgZW5kQ2hhcmFjdGVyKQorICAgICAgICA6IG1f
Y2hhcmFjdGVycyhjaGFyYWN0ZXJzKQorICAgICAgICAsIG1fY3VycmVudENoYXJhY3RlcihjdXJy
ZW50Q2hhcmFjdGVyKQorICAgICAgICAsIG1fbGFzdENoYXJhY3RlcihsYXN0Q2hhcmFjdGVyKQor
ICAgICAgICAsIG1fZW5kQ2hhcmFjdGVyKGVuZENoYXJhY3RlcikKKyAgICB7CisgICAgfQorCisg
ICAgYm9vbCBjb25zdW1lKFVDaGFyMzImIGNoYXJhY3RlciwgdW5zaWduZWQmIGNsdXN0ZXJMZW5n
dGgpCisgICAgeworICAgICAgICBpZiAobV9jdXJyZW50Q2hhcmFjdGVyID49IG1fbGFzdENoYXJh
Y3RlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjaGFyYWN0ZXIgPSAq
bV9jaGFyYWN0ZXJzOworICAgICAgICBjbHVzdGVyTGVuZ3RoID0gMTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVkIGFkdmFuY2VMZW5ndGgp
CisgICAgeworICAgICAgICBtX2NoYXJhY3RlcnMgKz0gYWR2YW5jZUxlbmd0aDsKKyAgICAgICAg
bV9jdXJyZW50Q2hhcmFjdGVyICs9IGFkdmFuY2VMZW5ndGg7CisgICAgfQorCisgICAgaW50IGN1
cnJlbnRDaGFyYWN0ZXIoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRDaGFyYWN0ZXI7IH0KKyAg
ICBjb25zdCBMQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsg
fQorCitwcml2YXRlOgorICAgIGNvbnN0IExDaGFyKiBtX2NoYXJhY3RlcnM7CisgICAgaW50IG1f
Y3VycmVudENoYXJhY3RlcjsKKyAgICBpbnQgbV9sYXN0Q2hhcmFjdGVyOworICAgIGludCBtX2Vu
ZENoYXJhY3RlcjsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMTI4MzYy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkZvbnQuaCIKICNp
bmNsdWRlICJHbHlwaEJ1ZmZlci5oIgorI2luY2x1ZGUgIkxhdGluMVRleHRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAjaW5jbHVkZSAiU3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgpAQCAtODMsNTAgKzg0LDQ1IEBA
IEdseXBoRGF0YSBXaWR0aEl0ZXJhdG9yOjpnbHlwaERhdGFGb3JDaGEKICAgICByZXR1cm4gbV9m
b250LT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBtaXJyb3IpOwogfQogCi11bnNp
Z25lZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlKGludCBvZmZzZXQsIEdseXBoQnVmZmVyKiBnbHlw
aEJ1ZmZlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBUZXh0SXRlcmF0b3I+CitpbmxpbmUgdW5zaWdu
ZWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZUludGVybmFsKFRleHRJdGVyYXRvciYgdGV4dEl0ZXJh
dG9yLCBHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIpCiB7Ci0gICAgaWYgKG9mZnNldCA+IG1fcnVu
Lmxlbmd0aCgpKQotICAgICAgICBvZmZzZXQgPSBtX3J1bi5sZW5ndGgoKTsKLQotICAgIGlmIChp
bnQobV9jdXJyZW50Q2hhcmFjdGVyKSA+PSBvZmZzZXQpCi0gICAgICAgIHJldHVybiAwOwotCiAg
ICAgYm9vbCBydGwgPSBtX3J1bi5ydGwoKTsKICAgICBib29sIGhhc0V4dHJhU3BhY2luZyA9ICht
X2ZvbnQtPmxldHRlclNwYWNpbmcoKSB8fCBtX2ZvbnQtPndvcmRTcGFjaW5nKCkgfHwgbV9leHBh
bnNpb24pICYmICFtX3J1bi5zcGFjaW5nRGlzYWJsZWQoKTsKLQorICAgIAogICAgIGZsb2F0IHdp
ZHRoU2luY2VMYXN0Um91bmRpbmcgPSBtX3J1bldpZHRoU29GYXI7CiAgICAgbV9ydW5XaWR0aFNv
RmFyID0gZmxvb3JmKG1fcnVuV2lkdGhTb0Zhcik7CiAgICAgd2lkdGhTaW5jZUxhc3RSb3VuZGlu
ZyAtPSBtX3J1bldpZHRoU29GYXI7Ci0KKyAgICAKICAgICBmbG9hdCBsYXN0Um91bmRpbmdXaWR0
aCA9IG1fZmluYWxSb3VuZGluZ1dpZHRoOwogICAgIEZsb2F0UmVjdCBib3VuZHM7Ci0KKyAgICAK
ICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogcHJpbWFyeUZvbnQgPSBtX2ZvbnQtPnByaW1hcnlG
b250KCk7CiAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGxhc3RGb250RGF0YSA9IHByaW1hcnlG
b250OwotCisgICAgCiAgICAgVUNoYXIzMiBjaGFyYWN0ZXIgPSAwOwogICAgIHVuc2lnbmVkIGNs
dXN0ZXJMZW5ndGggPSAwOwotICAgIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvciB0ZXh0
SXRlcmF0b3IobV9ydW4uZGF0YTE2KG1fY3VycmVudENoYXJhY3RlciksIG1fY3VycmVudENoYXJh
Y3Rlciwgb2Zmc2V0LCBtX3J1bi5sZW5ndGgoKSk7CisKICAgICB3aGlsZSAodGV4dEl0ZXJhdG9y
LmNvbnN1bWUoY2hhcmFjdGVyLCBjbHVzdGVyTGVuZ3RoKSkgewogICAgICAgICB1bnNpZ25lZCBh
ZHZhbmNlTGVuZ3RoID0gY2x1c3Rlckxlbmd0aDsKICAgICAgICAgY29uc3QgR2x5cGhEYXRhJiBn
bHlwaERhdGEgPSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyLCBydGwsIHRleHRJdGVy
YXRvci5jdXJyZW50Q2hhcmFjdGVyKCksIGFkdmFuY2VMZW5ndGgpOwogICAgICAgICBHbHlwaCBn
bHlwaCA9IGdseXBoRGF0YS5nbHlwaDsKICAgICAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGZv
bnREYXRhID0gZ2x5cGhEYXRhLmZvbnREYXRhOwotCisgICAgICAgIAogICAgICAgICBBU1NFUlQo
Zm9udERhdGEpOwotCisgICAgICAgIAogICAgICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGEgZ2x5
cGggYW5kIGZvbnQgZGF0YSwgZ2V0IGl0cyB3aWR0aC4KICAgICAgICAgZmxvYXQgd2lkdGg7CiAg
ICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJ1x0JyAmJiBtX3J1bi5hbGxvd1RhYnMoKSkKICAgICAg
ICAgICAgIHdpZHRoID0gbV9mb250LT50YWJXaWR0aCgqZm9udERhdGEsIG1fcnVuLnRhYlNpemUo
KSwgbV9ydW4ueFBvcygpICsgbV9ydW5XaWR0aFNvRmFyICsgd2lkdGhTaW5jZUxhc3RSb3VuZGlu
Zyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgd2lkdGggPSBmb250RGF0YS0+d2lkdGhG
b3JHbHlwaChnbHlwaCk7Ci0KKyAgICAgICAgICAgIAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAg
ICAgICAvLyBTVkcgdXNlcyBob3Jpem9udGFsR2x5cGhTdHJldGNoKCksIHdoZW4gdGV4dExlbmd0
aCBpcyB1c2VkIHRvIHN0cmV0Y2gvc3F1ZWV6ZSB0ZXh0LgogICAgICAgICAgICAgd2lkdGggKj0g
bV9ydW4uaG9yaXpvbnRhbEdseXBoU3RyZXRjaCgpOwogI2VuZGlmCi0KKyAgICAgICAgICAgIAog
ICAgICAgICAgICAgLy8gV2Ugc3BlY2lhbCBjYXNlIHNwYWNlcyBpbiB0d28gd2F5cyB3aGVuIGFw
cGx5aW5nIHdvcmQgcm91bmRpbmcuCiAgICAgICAgICAgICAvLyBGaXJzdCwgd2Ugcm91bmQgc3Bh
Y2VzIHRvIGFuIGFkanVzdGVkIHdpZHRoIGluIGFsbCBmb250cy4KICAgICAgICAgICAgIC8vIFNl
Y29uZCwgaW4gZml4ZWQtcGl0Y2ggZm9udHMgd2UgZW5zdXJlIHRoYXQgYWxsIGNoYXJhY3RlcnMg
dGhhdApAQCAtMTM0LDcgKzEzMCw3IEBAIHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2Uo
aW50IG9mZnMKICAgICAgICAgICAgIGlmIChtX3J1bi5hcHBseVdvcmRSb3VuZGluZygpICYmIHdp
ZHRoID09IGZvbnREYXRhLT5zcGFjZVdpZHRoKCkgJiYgKGZvbnREYXRhLT5waXRjaCgpID09IEZp
eGVkUGl0Y2ggfHwgZ2x5cGggPT0gZm9udERhdGEtPnNwYWNlR2x5cGgoKSkpCiAgICAgICAgICAg
ICAgICAgd2lkdGggPSBmb250RGF0YS0+YWRqdXN0ZWRTcGFjZVdpZHRoKCk7CiAgICAgICAgIH0K
LQorICAgICAgICAKICAgICAgICAgaWYgKGZvbnREYXRhICE9IGxhc3RGb250RGF0YSAmJiB3aWR0
aCkgewogICAgICAgICAgICAgbGFzdEZvbnREYXRhID0gZm9udERhdGE7CiAgICAgICAgICAgICBp
ZiAobV9mYWxsYmFja0ZvbnRzICYmIGZvbnREYXRhICE9IHByaW1hcnlGb250KSB7CkBAIC0xNDks
MTIgKzE0NSwxMiBAQCB1bnNpZ25lZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlKGludCBvZmZzCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KKyAgICAgICAgCiAg
ICAgICAgIGlmIChoYXNFeHRyYVNwYWNpbmcpIHsKICAgICAgICAgICAgIC8vIEFjY291bnQgZm9y
IGxldHRlci1zcGFjaW5nLgogICAgICAgICAgICAgaWYgKHdpZHRoICYmIG1fZm9udC0+bGV0dGVy
U3BhY2luZygpKQogICAgICAgICAgICAgICAgIHdpZHRoICs9IG1fZm9udC0+bGV0dGVyU3BhY2lu
ZygpOwotCisgICAgICAgICAgICAKICAgICAgICAgICAgIHN0YXRpYyBib29sIGV4cGFuZEFyb3Vu
ZElkZW9ncmFwaHMgPSBGb250OjpjYW5FeHBhbmRBcm91bmRJZGVvZ3JhcGhzSW5Db21wbGV4VGV4
dCgpOwogICAgICAgICAgICAgYm9vbCB0cmVhdEFzU3BhY2UgPSBGb250Ojp0cmVhdEFzU3BhY2Uo
Y2hhcmFjdGVyKTsKICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2UgfHwgKGV4cGFuZEFyb3Vu
ZElkZW9ncmFwaHMgJiYgRm9udDo6aXNDSktJZGVvZ3JhcGhPclN5bWJvbChjaGFyYWN0ZXIpKSkg
ewpAQCAtMTgyLDcgKzE3OCw3IEBAIHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2UoaW50
IG9mZnMKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgICAgICBtX2lzQWZ0ZXJFeHBhbnNpb24gPSBmYWxzZTsKLQorICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIC8vIEFjY291bnQgZm9yIHdvcmQgc3BhY2luZy4KICAg
ICAgICAgICAgICAgICAvLyBXZSBhcHBseSBhZGRpdGlvbmFsIHNwYWNlIGJldHdlZW4gIndvcmRz
IiBieSBhZGRpbmcgd2lkdGggdG8gdGhlIHNwYWNlIGNoYXJhY3Rlci4KICAgICAgICAgICAgICAg
ICAvLyBXb3JkLXNwYWNpbmcgYWZmZWN0cyBlYWNoIHNwYWNlIChVKzAwMjApIGFuZCBub24tYnJl
YWtpbmcgc3BhY2UgKFUrMDBBMCkuCkBAIC0xOTEsMzAgKzE4NywzMCBAQCB1bnNpZ25lZCBXaWR0
aEl0ZXJhdG9yOjphZHZhbmNlKGludCBvZmZzCiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICBtX2lzQWZ0ZXJFeHBhbnNpb24gPSBmYWxzZTsKICAgICAgICAgfQotCisgICAgICAg
IAogICAgICAgICBpZiAobV9hY2NvdW50Rm9yR2x5cGhCb3VuZHMpIHsKICAgICAgICAgICAgIGJv
dW5kcyA9IGZvbnREYXRhLT5ib3VuZHNGb3JHbHlwaChnbHlwaCk7CiAgICAgICAgICAgICBpZiAo
IXRleHRJdGVyYXRvci5jdXJyZW50Q2hhcmFjdGVyKCkpCiAgICAgICAgICAgICAgICAgbV9maXJz
dEdseXBoT3ZlcmZsb3cgPSBtYXg8ZmxvYXQ+KDAsIC1ib3VuZHMueCgpKTsKICAgICAgICAgfQot
CisgICAgICAgIAogICAgICAgICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgIUZvbnQ6OmNhblJl
Y2VpdmVUZXh0RW1waGFzaXMoY2hhcmFjdGVyKSkKICAgICAgICAgICAgIGdseXBoID0gMDsKLQor
ICAgICAgICAKICAgICAgICAgLy8gQWR2YW5jZSBwYXN0IHRoZSBjaGFyYWN0ZXIgd2UganVzdCBk
ZWFsdCB3aXRoLgogICAgICAgICB0ZXh0SXRlcmF0b3IuYWR2YW5jZShhZHZhbmNlTGVuZ3RoKTsK
LQotICAgICAgICBmbG9hdCBvbGRXaWR0aCA9IHdpZHRoOyAKLQorICAgICAgICAKKyAgICAgICAg
ZmxvYXQgb2xkV2lkdGggPSB3aWR0aDsKKyAgICAgICAgCiAgICAgICAgIC8vIEZvcmNlIGNoYXJh
Y3RlcnMgdGhhdCBhcmUgdXNlZCB0byBkZXRlcm1pbmUgd29yZCBib3VuZGFyaWVzIGZvciB0aGUg
cm91bmRpbmcgaGFjawogICAgICAgICAvLyB0byBiZSBpbnRlZ2VyIHdpZHRoLCBzbyBmb2xsb3dp
bmcgd29yZHMgd2lsbCBzdGFydCBvbiBhbiBpbnRlZ2VyIGJvdW5kYXJ5LgogICAgICAgICBpZiAo
bV9ydW4uYXBwbHlXb3JkUm91bmRpbmcoKSAmJiBGb250Ojppc1JvdW5kaW5nSGFja0NoYXJhY3Rl
cihjaGFyYWN0ZXIpKSB7CiAgICAgICAgICAgICB3aWR0aCA9IGNlaWxmKHdpZHRoKTsKLQorICAg
ICAgICAgICAgCiAgICAgICAgICAgICAvLyBTaW5jZSB3aWR0aFNpbmNlTGFzdFJvdW5kaW5nIGNh
biBsb3NlIHByZWNpc2lvbiBpZiB3ZSBpbmNsdWRlIG1lYXN1cmVtZW50cyBmb3IKICAgICAgICAg
ICAgIC8vIHByZWNlZGluZyB3aGl0ZXNwYWNlLCB3ZSBieXBhc3MgaXQgaGVyZS4KICAgICAgICAg
ICAgIG1fcnVuV2lkdGhTb0ZhciArPSB3aWR0aDsKLQorICAgICAgICAgICAgCiAgICAgICAgICAg
ICAvLyBTaW5jZSB0aGlzIGlzIGEgcm91bmRpbmcgaGFjayBjaGFyYWN0ZXIsIHdlIHNob3VsZCBo
YXZlIHJlc2V0IHRoaXMgc3VtIG9uIHRoZSBwcmV2aW91cwogICAgICAgICAgICAgLy8gaXRlcmF0
aW9uLgogICAgICAgICAgICAgQVNTRVJUKCF3aWR0aFNpbmNlTGFzdFJvdW5kaW5nKTsKQEAgLTIy
Miw3ICsyMTgsNyBAQCB1bnNpZ25lZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlKGludCBvZmZzCiAg
ICAgICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgdGhlIG5leHQgY2hhcmFjdGVyIGlzIGEgInJv
dW5kaW5nIGhhY2sgY2hhcmFjdGVyIiwgaWYgc28sIGFkanVzdAogICAgICAgICAgICAgLy8gd2lk
dGggc28gdGhhdCB0aGUgdG90YWwgcnVuIHdpZHRoIHdpbGwgYmUgb24gYW4gaW50ZWdlciBib3Vu
ZGFyeS4KICAgICAgICAgICAgIGlmICgobV9ydW4uYXBwbHlXb3JkUm91bmRpbmcoKSAmJiB0ZXh0
SXRlcmF0b3IuY3VycmVudENoYXJhY3RlcigpIDwgbV9ydW4ubGVuZ3RoKCkgJiYgRm9udDo6aXNS
b3VuZGluZ0hhY2tDaGFyYWN0ZXIoKih0ZXh0SXRlcmF0b3IuY2hhcmFjdGVycygpKSkpCi0gICAg
ICAgICAgICAgICAgICAgIHx8IChtX3J1bi5hcHBseVJ1blJvdW5kaW5nKCkgJiYgdGV4dEl0ZXJh
dG9yLmN1cnJlbnRDaGFyYWN0ZXIoKSA+PSBtX3J1bi5sZW5ndGgoKSkpIHsKKyAgICAgICAgICAg
ICAgICB8fCAobV9ydW4uYXBwbHlSdW5Sb3VuZGluZygpICYmIHRleHRJdGVyYXRvci5jdXJyZW50
Q2hhcmFjdGVyKCkgPj0gbV9ydW4ubGVuZ3RoKCkpKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQg
dG90YWxXaWR0aCA9IHdpZHRoU2luY2VMYXN0Um91bmRpbmcgKyB3aWR0aDsKICAgICAgICAgICAg
ICAgICB3aWR0aFNpbmNlTGFzdFJvdW5kaW5nID0gY2VpbGYodG90YWxXaWR0aCk7CiAgICAgICAg
ICAgICAgICAgd2lkdGggKz0gd2lkdGhTaW5jZUxhc3RSb3VuZGluZyAtIHRvdGFsV2lkdGg7CkBA
IC0yMzEsMTkgKzIyNywxOSBAQCB1bnNpZ25lZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlKGludCBv
ZmZzCiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICB3aWR0aFNpbmNlTGFzdFJv
dW5kaW5nICs9IHdpZHRoOwogICAgICAgICB9Ci0KKyAgICAgICAgCiAgICAgICAgIGlmIChnbHlw
aEJ1ZmZlcikKICAgICAgICAgICAgIGdseXBoQnVmZmVyLT5hZGQoZ2x5cGgsIGZvbnREYXRhLCAo
cnRsID8gb2xkV2lkdGggKyBsYXN0Um91bmRpbmdXaWR0aCA6IHdpZHRoKSk7Ci0KKyAgICAgICAg
CiAgICAgICAgIGxhc3RSb3VuZGluZ1dpZHRoID0gd2lkdGggLSBvbGRXaWR0aDsKLQorICAgICAg
ICAKICAgICAgICAgaWYgKG1fYWNjb3VudEZvckdseXBoQm91bmRzKSB7CiAgICAgICAgICAgICBt
X21heEdseXBoQm91bmRpbmdCb3hZID0gbWF4KG1fbWF4R2x5cGhCb3VuZGluZ0JveFksIGJvdW5k
cy5tYXhZKCkpOwogICAgICAgICAgICAgbV9taW5HbHlwaEJvdW5kaW5nQm94WSA9IG1pbihtX21p
bkdseXBoQm91bmRpbmdCb3hZLCBib3VuZHMueSgpKTsKICAgICAgICAgICAgIG1fbGFzdEdseXBo
T3ZlcmZsb3cgPSBtYXg8ZmxvYXQ+KDAsIGJvdW5kcy5tYXhYKCkgLSB3aWR0aCk7CiAgICAgICAg
IH0KICAgICB9Ci0KKyAgICAKICAgICB1bnNpZ25lZCBjb25zdW1lZENoYXJhY3RlcnMgPSB0ZXh0
SXRlcmF0b3IuY3VycmVudENoYXJhY3RlcigpIC0gbV9jdXJyZW50Q2hhcmFjdGVyOwogICAgIG1f
Y3VycmVudENoYXJhY3RlciA9IHRleHRJdGVyYXRvci5jdXJyZW50Q2hhcmFjdGVyKCk7CiAgICAg
bV9ydW5XaWR0aFNvRmFyICs9IHdpZHRoU2luY2VMYXN0Um91bmRpbmc7CkBAIC0yNTEsNiArMjQ3
LDIzIEBAIHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2UoaW50IG9mZnMKICAgICByZXR1
cm4gY29uc3VtZWRDaGFyYWN0ZXJzOwogfQogCit1bnNpZ25lZCBXaWR0aEl0ZXJhdG9yOjphZHZh
bmNlKGludCBvZmZzZXQsIEdseXBoQnVmZmVyKiBnbHlwaEJ1ZmZlcikKK3sKKyAgICBpZiAob2Zm
c2V0ID4gbV9ydW4ubGVuZ3RoKCkpCisgICAgICAgIG9mZnNldCA9IG1fcnVuLmxlbmd0aCgpOwor
ICAgIAorICAgIGlmIChpbnQobV9jdXJyZW50Q2hhcmFjdGVyKSA+PSBvZmZzZXQpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIGlmIChtX3J1bi5pczhCaXQoKSkgeworICAgICAgICBMYXRp
bjFUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKG1fcnVuLmRhdGE4KG1fY3VycmVudENoYXJhY3Rl
ciksIG1fY3VycmVudENoYXJhY3Rlciwgb2Zmc2V0LCBtX3J1bi5sZW5ndGgoKSk7CisgICAgICAg
IHJldHVybiBhZHZhbmNlSW50ZXJuYWwodGV4dEl0ZXJhdG9yLCBnbHlwaEJ1ZmZlcik7CisgICAg
fQorCisgICAgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yIHRleHRJdGVyYXRvcihtX3J1
bi5kYXRhMTYobV9jdXJyZW50Q2hhcmFjdGVyKSwgbV9jdXJyZW50Q2hhcmFjdGVyLCBvZmZzZXQs
IG1fcnVuLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gYWR2YW5jZUludGVybmFsKHRleHRJdGVyYXRv
ciwgZ2x5cGhCdWZmZXIpOworfQorCiBib29sIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VPbmVDaGFy
YWN0ZXIoZmxvYXQmIHdpZHRoLCBHbHlwaEJ1ZmZlciogZ2x5cGhCdWZmZXIpCiB7CiAgICAgaW50
IG9sZFNpemUgPSBnbHlwaEJ1ZmZlci0+c2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAkocmV2aXNpb24gMTI4MzYyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBAIHN0cnVjdCBXaWR0aEl0ZXJhdG9yIHsKIAogcHJp
dmF0ZToKICAgICBHbHlwaERhdGEgZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIsIGJvb2wg
bWlycm9yLCBpbnQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgpOwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUZXh0SXRlcmF0b3I+CisgICAgdW5zaWduZWQgYWR2YW5j
ZUludGVybmFsKFRleHRJdGVyYXRvciYsIEdseXBoQnVmZmVyKik7CiAKICAgICBIYXNoU2V0PGNv
bnN0IFNpbXBsZUZvbnREYXRhKj4qIG1fZmFsbGJhY2tGb250czsKICAgICBib29sIG1fYWNjb3Vu
dEZvckdseXBoQm91bmRzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163893</attachid>
            <date>2012-09-13 09:54:19 -0700</date>
            <delta_ts>2012-09-13 09:58:34 -0700</delta_ts>
            <desc>Patch with updates </desc>
            <filename>96590-2.patch</filename>
            <type>text/plain</type>
            <size>22249</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODQ3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA5LTEzICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGVkIDggYml0IHBhdGgg
dG8gV2lkdGhJdGVyYXRvcjo6YWR2YW5jZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NjU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIDggYml0IHBhdGggdG8gYWR2YW5jZSgpIGJ5IGFkZGlu
ZyBhIHRlbXBsYXRpemVkIGFkdmFuY2VJbnRlcm5hbCBwcml2YXRlCisgICAgICAgIG1ldGhvZCBh
bmQgYWRkZWQgYSBzaW1wbGUgOCBiaXQgTGF0aW4tMSBUZXh0SXRlcmF0b3IuICBVcGRhdGVkIFN1
cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcgorICAgICAgICBieSBtYWtpbmcgYm90aCBjb25z
dW1lKCkgYW5kIGFkdmFuY2UoKSBpbmxpbmVkIGFuZCBhZGRpbmcgY29uc3VtZVNsb3dDYXNlKCkg
Zm9yCisgICAgICAgIHN1cnJvZ2F0ZSBoYW5kbGluZy4gIFRoZXNlIGNoYW5nZXMgYXJlIGEgcGVy
Zm9ybWFuY2UgcHJvZ3Jlc3Npb24gb24gdGhlIExheW91dCB0ZXN0cy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSBvZiBubyBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oLgor
ICAgICAgICAoTGF0aW4xVGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxhdGluMVRl
eHRJdGVyYXRvcjo6TGF0aW4xVGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxhdGlu
MVRleHRJdGVyYXRvcjo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXRpbjFUZXh0SXRl
cmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF0aW4xVGV4dEl0ZXJhdG9yOjpj
aGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdh
cmVUZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yOjpjb25zdW1lU2xvd0Nhc2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3I6OmNvbnN1
bWUpOgorICAgICAgICAoU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmg6CisgICAgICAgIChXaWR0aEl0ZXJhdG9y
KToKKwogMjAxMi0wOS0xMyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFN0b3Agc2h1dHRsaW5nIFBzZXVkb0lkIGZyb20gU3R5bGVSZXNvbHZlciB0
byBTZWxlY3RvckNoZWNrZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEyODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ0MTgsNiArNDQxOCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemVIYXNoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0xhdGluMVRleHRJdGVyYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTI4MzYyKQor
KysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMjExMyw2ICsy
MTEzLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNoLmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuaCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJh
dG9yLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW50eXBlL09wZW5UeXBlVmVydGljYWxEYXRhLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2
aXNpb24gMTI4MzYyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC00NzcxLDYgKzQ3NzEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VP
cmllbnRhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJh
dG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlUHRyLmgnICwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lv
biAxMjgzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzM2NzAsNiArMzM2NzAsMTAgQEAKIAkJCQkJPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XExhdGluMVRleHRJdGVyYXRvci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxMaW5lQnJlYWtJdGVyYXRvclBvb2xJ
Q1UuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyODM2MikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNjU0OCw3ICs2NTQ4LDYgQEAKIAkJRkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8q
IEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICov
OyB9OwogCQlGRTZGRDQ4RTBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEMwRjY3NkU5
MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAqLzsgfTsKIAkJRkU3MDBERDEwRjkyRDgxQTAw
OEUyQkZFIC8qIEpTQ29vcmRpbmF0ZXNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU3MDBERDAwRjkyRDgxQTAwOEUyQkZFIC8qIEpTQ29v
cmRpbmF0ZXNDdXN0b20uY3BwICovOyB9OwotCQlGRkQ4NkU3ODE1Rjk1ODM2MDAwNDcyMzMgLyog
SlNEZXBlbmRlbnRSZXRhaW5lZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkZEODZFNzcxNUY5NTgzNjAwMDQ3MjMzIC8qIEpTRGVwZW5kZW50UmV0YWlu
ZWQuaCAqLzsgfTsKIAkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25D
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovOyB9
OwogCQlGRTgwREE2MzBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE1RjBFOUM0NzAz
MDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgKi87IH07CiAJCUZFODBEQTY0MEU5QzQ3MDMw
MDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2MDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlv
bi5oICovOyB9OwpAQCAtNjU1OCw2ICs2NTU3LDcgQEAKIAkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2
Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJv
ci5oICovOyB9OwogCQlGRkQ1Qjk3QTEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlT
dGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RkQ1Qjk3NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi87IH07
CiAJCUZGRDVCOTdCMTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ1Qjk3ODEzNUND
OTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZGRDg2RTc4MTVGOTU4MzYwMDA0NzIzMyAv
KiBKU0RlcGVuZGVudFJldGFpbmVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRkQ4NkU3NzE1Rjk1ODM2MDAwNDcyMzMgLyogSlNEZXBlbmRlbnRSZXRh
aW5lZC5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC04OTc1LDYgKzg5NzUsNyBAQAog
CQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVDQkZFRjcwOTc0
RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRnJhbWVWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTY1Q0M2QkVEMTYwMTRFQzAwMDBFRDI3RCAvKiBMYXRpbjFUZXh0SXRlcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF0aW4xVGV4dEl0ZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1REYzMUQ4MDlEMUMxMjIwMDBCRTMyNSAvKiBKU0F0
dHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXR0ci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1REYzMUQ5MDlEMUMxMjMwMDBCRTMyNSAv
KiBKU0F0dHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXR0ci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NURGMzFERjA5RDFDQzYwMDAwQkUzMjUgLyog
SlNDaGFyYWN0ZXJEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0NoYXJhY3RlckRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM5
ODksNyArMTM5OTAsNiBAQAogCQlGRTZGRDQ4QjBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGlu
YXRlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Nvb3JkaW5h
dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU2RkQ0OEMwRjY3NkU5MzAw
MDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNDb29yZGluYXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTcwMERE
MDBGOTJEODFBMDA4RTJCRkUgLyogSlNDb29yZGluYXRlc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkZEODZFNzcxNUY5NTgzNjAwMDQ3MjMzIC8qIEpTRGVw
ZW5kZW50UmV0YWluZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZXBl
bmRlbnRSZXRhaW5lZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwRDdBNjBF
OUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNUYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9j
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9sb2Nh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODBEQTYwMEU5QzQ3MDMw
MDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTR2VvbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTk5
LDYgKzEzOTk5LDcgQEAKIAkJRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25F
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZENUI5NzcxMzVDQzk3ODAwRDVFOTJB
IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZGRDVCOTc4MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkZEODZFNzcxNUY5NTgzNjAwMDQ3MjMzIC8q
IEpTRGVwZW5kZW50UmV0YWluZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNEZXBlbmRlbnRSZXRhaW5lZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5k
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCkBAIC0xOTk2NSw2ICsxOTk2Niw3IEBACiAJCQkJQjIzNTQwRjAw
RDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5jcHAgKi8sCiAJCQkJQjIzNTQwRjEw
RDAwNzgyRTAwMjM4MkZBIC8qIFN0cmluZ1RydW5jYXRvci5oICovLAogCQkJCTA4NzU1OEMzMTNC
NEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwICovLAor
CQkJCTY1Q0M2QkVEMTYwMTRFQzAwMDBFRDI3RCAvKiBMYXRpbjFUZXh0SXRlcmF0b3IuaCAqLywK
IAkJCQkwODc1NThDNDEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0
ZXJhdG9yLmggKi8sCiAJCQkJMDg3RTBBRjQxMzYwNkQwQjAwRkE0QkE4IC8qIFNWR0dseXBoLmNw
cCAqLywKIAkJCQkwODdFMEFGNTEzNjA2RDBCMDBGQTRCQTggLyogU1ZHR2x5cGguaCAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xhdGluMVRleHRJdGVyYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xhdGluMVRl
eHRJdGVyYXRvci5oCShyZXZpc2lvbiAxMjgzNjIpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oOjEyODM2MikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xhdGluMVRleHRJdGVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZu
ZGVmIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcl9oCisjZGVmaW5lIFN1cnJvZ2F0ZVBh
aXJBd2FyZVRleHRJdGVyYXRvcl9oCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRl
cmF0b3IgeworcHVibGljOgorICAgIC8vIFRoZSBwYXNzZWQgaW4gVUNoYXIgcG9pbnRlciBzdGFy
dHMgYXQgJ2N1cnJlbnRDaGFyYWN0ZXInLiBUaGUgaXRlcmF0b3Igb3BlcmF0b2VzIG9uIHRoZSBy
YW5nZSBbY3VycmVudENoYXJhY3RlciwgbGFzdENoYXJhY3Rlcl0uCisgICAgLy8gJ2VuZENoYXJh
Y3RlcicgZGVub3RlcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgdGhlIFVDaGFyIGFycmF5LCB3aGlj
aCBtaWdodCBleGNlZWQgJ2xhc3RDaGFyYWN0ZXInLgorICAgIFN1cnJvZ2F0ZVBhaXJBd2FyZVRl
eHRJdGVyYXRvcihjb25zdCBVQ2hhciosIGludCBjdXJyZW50Q2hhcmFjdGVyLCBpbnQgbGFzdENo
YXJhY3RlciwgaW50IGVuZENoYXJhY3Rlcik7CisKKyAgICBib29sIGNvbnN1bWUoVUNoYXIzMiYg
Y2hhcmFjdGVyLCB1bnNpZ25lZCYgY2x1c3Rlckxlbmd0aCk7CisgICAgdm9pZCBhZHZhbmNlKHVu
c2lnbmVkIGFkdmFuY2VMZW5ndGgpOworCisgICAgaW50IGN1cnJlbnRDaGFyYWN0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRDaGFyYWN0ZXI7IH0KKyAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQorCitwcml2YXRlOgorICAgIFVD
aGFyMzIgbm9ybWFsaXplVm9pY2luZ01hcmtzKCk7CisKKyAgICBjb25zdCBVQ2hhciogbV9jaGFy
YWN0ZXJzOworICAgIGludCBtX2N1cnJlbnRDaGFyYWN0ZXI7CisgICAgaW50IG1fbGFzdENoYXJh
Y3RlcjsKKyAgICBpbnQgbV9lbmRDaGFyYWN0ZXI7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0
ZXJhdG9yLmgJKHJldmlzaW9uIDEyODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0xhdGluMVRleHRJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBA
QAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMTgsMjkgKzE5LDQ2IEBACiAgKgog
ICovCiAKLSNpZm5kZWYgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yX2gKLSNkZWZpbmUg
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yX2gKKyNpZm5kZWYgTGF0aW4xVGV4dEl0ZXJh
dG9yX2gKKyNkZWZpbmUgTGF0aW4xVGV4dEl0ZXJhdG9yX2gKIAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFN1cnJvZ2F0ZVBh
aXJBd2FyZVRleHRJdGVyYXRvciB7CitjbGFzcyBMYXRpbjFUZXh0SXRlcmF0b3IgewogcHVibGlj
OgotICAgIC8vIFRoZSBwYXNzZWQgaW4gVUNoYXIgcG9pbnRlciBzdGFydHMgYXQgJ2N1cnJlbnRD
aGFyYWN0ZXInLiBUaGUgaXRlcmF0b3Igb3BlcmF0b2VzIG9uIHRoZSByYW5nZSBbY3VycmVudENo
YXJhY3RlciwgbGFzdENoYXJhY3Rlcl0uCisgICAgLy8gVGhlIHBhc3NlZCBpbiBMQ2hhciBwb2lu
dGVyIHN0YXJ0cyBhdCAnY3VycmVudENoYXJhY3RlcicuIFRoZSBpdGVyYXRvciBvcGVyYXRvZXMg
b24gdGhlIHJhbmdlIFtjdXJyZW50Q2hhcmFjdGVyLCBsYXN0Q2hhcmFjdGVyXS4KICAgICAvLyAn
ZW5kQ2hhcmFjdGVyJyBkZW5vdGVzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUgVUNoYXIgYXJy
YXksIHdoaWNoIG1pZ2h0IGV4Y2VlZCAnbGFzdENoYXJhY3RlcicuCi0gICAgU3Vycm9nYXRlUGFp
ckF3YXJlVGV4dEl0ZXJhdG9yKGNvbnN0IFVDaGFyKiwgaW50IGN1cnJlbnRDaGFyYWN0ZXIsIGlu
dCBsYXN0Q2hhcmFjdGVyLCBpbnQgZW5kQ2hhcmFjdGVyKTsKLQotICAgIGJvb2wgY29uc3VtZShV
Q2hhcjMyJiBjaGFyYWN0ZXIsIHVuc2lnbmVkJiBjbHVzdGVyTGVuZ3RoKTsKLSAgICB2b2lkIGFk
dmFuY2UodW5zaWduZWQgYWR2YW5jZUxlbmd0aCk7CisgICAgTGF0aW4xVGV4dEl0ZXJhdG9yKGNv
bnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgY3VycmVudENoYXJhY3RlciwgaW50IGxhc3RDaGFy
YWN0ZXIsIGludCBlbmRDaGFyYWN0ZXIpCisgICAgICAgIDogbV9jaGFyYWN0ZXJzKGNoYXJhY3Rl
cnMpCisgICAgICAgICwgbV9jdXJyZW50Q2hhcmFjdGVyKGN1cnJlbnRDaGFyYWN0ZXIpCisgICAg
ICAgICwgbV9sYXN0Q2hhcmFjdGVyKGxhc3RDaGFyYWN0ZXIpCisgICAgICAgICwgbV9lbmRDaGFy
YWN0ZXIoZW5kQ2hhcmFjdGVyKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGNvbnN1bWUoVUNo
YXIzMiYgY2hhcmFjdGVyLCB1bnNpZ25lZCYgY2x1c3Rlckxlbmd0aCkKKyAgICB7CisgICAgICAg
IGlmIChtX2N1cnJlbnRDaGFyYWN0ZXIgPj0gbV9sYXN0Q2hhcmFjdGVyKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGNoYXJhY3RlciA9ICptX2NoYXJhY3RlcnM7CisgICAg
ICAgIGNsdXN0ZXJMZW5ndGggPSAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICB2b2lkIGFkdmFuY2UodW5zaWduZWQgYWR2YW5jZUxlbmd0aCkKKyAgICB7CisgICAgICAgIG1f
Y2hhcmFjdGVycyArPSBhZHZhbmNlTGVuZ3RoOworICAgICAgICBtX2N1cnJlbnRDaGFyYWN0ZXIg
Kz0gYWR2YW5jZUxlbmd0aDsKKyAgICB9CiAKICAgICBpbnQgY3VycmVudENoYXJhY3RlcigpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudENoYXJhY3RlcjsgfQotICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CisgICAgY29uc3QgTENoYXIq
IGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KIAogcHJpdmF0ZToK
LSAgICBVQ2hhcjMyIG5vcm1hbGl6ZVZvaWNpbmdNYXJrcygpOwotCi0gICAgY29uc3QgVUNoYXIq
IG1fY2hhcmFjdGVyczsKKyAgICBjb25zdCBMQ2hhciogbV9jaGFyYWN0ZXJzOwogICAgIGludCBt
X2N1cnJlbnRDaGFyYWN0ZXI7CiAgICAgaW50IG1fbGFzdENoYXJhY3RlcjsKICAgICBpbnQgbV9l
bmRDaGFyYWN0ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdXJy
b2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAJ
KHJldmlzaW9uIDEyODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1
cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDgg
KzQwLDkgQEAgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yOjpTdXJyb2dhdAogewogfQog
Ci1ib29sIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcjo6Y29uc3VtZShVQ2hhcjMyJiBj
aGFyYWN0ZXIsIHVuc2lnbmVkJiBjbHVzdGVyTGVuZ3RoKQorYm9vbCBTdXJyb2dhdGVQYWlyQXdh
cmVUZXh0SXRlcmF0b3I6OmNvbnN1bWVTbG93Q2FzZShVQ2hhcjMyJiBjaGFyYWN0ZXIsIHVuc2ln
bmVkJiBjbHVzdGVyTGVuZ3RoKQogeworI2lmIDAKICAgICBpZiAobV9jdXJyZW50Q2hhcmFjdGVy
ID49IG1fbGFzdENoYXJhY3RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MCw3ICs1
MSw3IEBAIGJvb2wgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yOjpjb24KIAogICAgIGlm
IChjaGFyYWN0ZXIgPCAweDMwNDEpCiAgICAgICAgIHJldHVybiB0cnVlOwotCisjZW5kaWYKICAg
ICBpZiAoY2hhcmFjdGVyIDw9IDB4MzBGRSkgewogICAgICAgICAvLyBEZWFsIHdpdGggSGlyYWdh
bmEgYW5kIEthdGFrYW5hIHZvaWNlZCBhbmQgc2VtaS12b2ljZWQgc3lsbGFibGVzLgogICAgICAg
ICAvLyBOb3JtYWxpemUgaW50byBjb21wb3NlZCBmb3JtLCBhbmQgdGhlbiBsb29rIGZvciBnbHlw
aCB3aXRoIGJhc2UgKyBjb21iaW5lZCBtYXJrLgpAQCAtODMsMTIgKzg0LDYgQEAgYm9vbCBTdXJy
b2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3I6OmNvbgogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcjo6YWR2YW5jZSh1bnNpZ25lZCBhZHZh
bmNlTGVuZ3RoKQotewotICAgIG1fY2hhcmFjdGVycyArPSBhZHZhbmNlTGVuZ3RoOwotICAgIG1f
Y3VycmVudENoYXJhY3RlciArPSBhZHZhbmNlTGVuZ3RoOwotfQotCiBVQ2hhcjMyIFN1cnJvZ2F0
ZVBhaXJBd2FyZVRleHRJdGVyYXRvcjo6bm9ybWFsaXplVm9pY2luZ01hcmtzKCkKIHsKICAgICAv
LyBBY2NvcmRpbmcgdG8gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvVU5JREFUQS9VQ0Qu
aHRtbCNDYW5vbmljYWxfQ29tYmluaW5nX0NsYXNzX1ZhbHVlcwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFp
ckF3YXJlVGV4dEl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyODM2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMzEgQEAgcHVibGljOgogICAgIC8vICdlbmRDaGFyYWN0
ZXInIGRlbm90ZXMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBVQ2hhciBhcnJheSwgd2hpY2gg
bWlnaHQgZXhjZWVkICdsYXN0Q2hhcmFjdGVyJy4KICAgICBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0
SXRlcmF0b3IoY29uc3QgVUNoYXIqLCBpbnQgY3VycmVudENoYXJhY3RlciwgaW50IGxhc3RDaGFy
YWN0ZXIsIGludCBlbmRDaGFyYWN0ZXIpOwogCi0gICAgYm9vbCBjb25zdW1lKFVDaGFyMzImIGNo
YXJhY3RlciwgdW5zaWduZWQmIGNsdXN0ZXJMZW5ndGgpOwotICAgIHZvaWQgYWR2YW5jZSh1bnNp
Z25lZCBhZHZhbmNlTGVuZ3RoKTsKKyAgICBpbmxpbmUgYm9vbCBjb25zdW1lKFVDaGFyMzImIGNo
YXJhY3RlciwgdW5zaWduZWQmIGNsdXN0ZXJMZW5ndGgpCisgICAgeworICAgICAgICBpZiAobV9j
dXJyZW50Q2hhcmFjdGVyID49IG1fbGFzdENoYXJhY3RlcikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBjaGFyYWN0ZXIgPSAqbV9jaGFyYWN0ZXJzOworICAgICAgICBjbHVz
dGVyTGVuZ3RoID0gMTsKKworICAgICAgICBpZiAoY2hhcmFjdGVyIDwgMHgzMDQxKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTbG93Q2FzZShjaGFy
YWN0ZXIsIGNsdXN0ZXJMZW5ndGgpOworICAgIH0KKworICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25l
ZCBhZHZhbmNlTGVuZ3RoKQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzICs9IGFkdmFuY2VM
ZW5ndGg7CisgICAgICAgIG1fY3VycmVudENoYXJhY3RlciArPSBhZHZhbmNlTGVuZ3RoOworICAg
IH0KIAogICAgIGludCBjdXJyZW50Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
Q2hhcmFjdGVyOyB9CiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVy
biBtX2NoYXJhY3RlcnM7IH0KIAogcHJpdmF0ZToKKyAgICBib29sIGNvbnN1bWVTbG93Q2FzZShV
Q2hhcjMyJiwgdW5zaWduZWQmKTsKICAgICBVQ2hhcjMyIG5vcm1hbGl6ZVZvaWNpbmdNYXJrcygp
OwogCiAgICAgY29uc3QgVUNoYXIqIG1fY2hhcmFjdGVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAx
MjgzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiRm9udC5o
IgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF0aW4xVGV4dEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlICJTdXJyb2dhdGVQYWly
QXdhcmVUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCkBAIC04MywxNCArODQs
OSBAQCBHbHlwaERhdGEgV2lkdGhJdGVyYXRvcjo6Z2x5cGhEYXRhRm9yQ2hhCiAgICAgcmV0dXJu
IG1fZm9udC0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgbWlycm9yKTsKIH0KIAot
dW5zaWduZWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZShpbnQgb2Zmc2V0LCBHbHlwaEJ1ZmZlciog
Z2x5cGhCdWZmZXIpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGV4dEl0ZXJhdG9yPgoraW5saW5lIHVu
c2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJ
dGVyYXRvciwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQogewotICAgIGlmIChvZmZzZXQgPiBt
X3J1bi5sZW5ndGgoKSkKLSAgICAgICAgb2Zmc2V0ID0gbV9ydW4ubGVuZ3RoKCk7Ci0KLSAgICBp
ZiAoaW50KG1fY3VycmVudENoYXJhY3RlcikgPj0gb2Zmc2V0KQotICAgICAgICByZXR1cm4gMDsK
LQogICAgIGJvb2wgcnRsID0gbV9ydW4ucnRsKCk7CiAgICAgYm9vbCBoYXNFeHRyYVNwYWNpbmcg
PSAobV9mb250LT5sZXR0ZXJTcGFjaW5nKCkgfHwgbV9mb250LT53b3JkU3BhY2luZygpIHx8IG1f
ZXhwYW5zaW9uKSAmJiAhbV9ydW4uc3BhY2luZ0Rpc2FibGVkKCk7CiAKQEAgLTEwNiw3ICsxMDIs
NyBAQCB1bnNpZ25lZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlKGludCBvZmZzCiAKICAgICBVQ2hh
cjMyIGNoYXJhY3RlciA9IDA7CiAgICAgdW5zaWduZWQgY2x1c3Rlckxlbmd0aCA9IDA7Ci0gICAg
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yIHRleHRJdGVyYXRvcihtX3J1bi5kYXRhMTYo
bV9jdXJyZW50Q2hhcmFjdGVyKSwgbV9jdXJyZW50Q2hhcmFjdGVyLCBvZmZzZXQsIG1fcnVuLmxl
bmd0aCgpKTsKKwogICAgIHdoaWxlICh0ZXh0SXRlcmF0b3IuY29uc3VtZShjaGFyYWN0ZXIsIGNs
dXN0ZXJMZW5ndGgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGFkdmFuY2VMZW5ndGggPSBjbHVzdGVy
TGVuZ3RoOwogICAgICAgICBjb25zdCBHbHlwaERhdGEmIGdseXBoRGF0YSA9IGdseXBoRGF0YUZv
ckNoYXJhY3RlcihjaGFyYWN0ZXIsIHJ0bCwgdGV4dEl0ZXJhdG9yLmN1cnJlbnRDaGFyYWN0ZXIo
KSwgYWR2YW5jZUxlbmd0aCk7CkBAIC0yMDQsNyArMjAwLDcgQEAgdW5zaWduZWQgV2lkdGhJdGVy
YXRvcjo6YWR2YW5jZShpbnQgb2ZmcwogICAgICAgICAvLyBBZHZhbmNlIHBhc3QgdGhlIGNoYXJh
Y3RlciB3ZSBqdXN0IGRlYWx0IHdpdGguCiAgICAgICAgIHRleHRJdGVyYXRvci5hZHZhbmNlKGFk
dmFuY2VMZW5ndGgpOwogCi0gICAgICAgIGZsb2F0IG9sZFdpZHRoID0gd2lkdGg7IAorICAgICAg
ICBmbG9hdCBvbGRXaWR0aCA9IHdpZHRoOwogCiAgICAgICAgIC8vIEZvcmNlIGNoYXJhY3RlcnMg
dGhhdCBhcmUgdXNlZCB0byBkZXRlcm1pbmUgd29yZCBib3VuZGFyaWVzIGZvciB0aGUgcm91bmRp
bmcgaGFjawogICAgICAgICAvLyB0byBiZSBpbnRlZ2VyIHdpZHRoLCBzbyBmb2xsb3dpbmcgd29y
ZHMgd2lsbCBzdGFydCBvbiBhbiBpbnRlZ2VyIGJvdW5kYXJ5LgpAQCAtMjIyLDcgKzIxOCw3IEBA
IHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2UoaW50IG9mZnMKICAgICAgICAgICAgIC8v
IENoZWNrIHRvIHNlZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgYSAicm91bmRpbmcgaGFjayBj
aGFyYWN0ZXIiLCBpZiBzbywgYWRqdXN0CiAgICAgICAgICAgICAvLyB3aWR0aCBzbyB0aGF0IHRo
ZSB0b3RhbCBydW4gd2lkdGggd2lsbCBiZSBvbiBhbiBpbnRlZ2VyIGJvdW5kYXJ5LgogICAgICAg
ICAgICAgaWYgKChtX3J1bi5hcHBseVdvcmRSb3VuZGluZygpICYmIHRleHRJdGVyYXRvci5jdXJy
ZW50Q2hhcmFjdGVyKCkgPCBtX3J1bi5sZW5ndGgoKSAmJiBGb250Ojppc1JvdW5kaW5nSGFja0No
YXJhY3RlcigqKHRleHRJdGVyYXRvci5jaGFyYWN0ZXJzKCkpKSkKLSAgICAgICAgICAgICAgICAg
ICAgfHwgKG1fcnVuLmFwcGx5UnVuUm91bmRpbmcoKSAmJiB0ZXh0SXRlcmF0b3IuY3VycmVudENo
YXJhY3RlcigpID49IG1fcnVuLmxlbmd0aCgpKSkgeworICAgICAgICAgICAgICAgIHx8IChtX3J1
bi5hcHBseVJ1blJvdW5kaW5nKCkgJiYgdGV4dEl0ZXJhdG9yLmN1cnJlbnRDaGFyYWN0ZXIoKSA+
PSBtX3J1bi5sZW5ndGgoKSkpIHsKICAgICAgICAgICAgICAgICBmbG9hdCB0b3RhbFdpZHRoID0g
d2lkdGhTaW5jZUxhc3RSb3VuZGluZyArIHdpZHRoOwogICAgICAgICAgICAgICAgIHdpZHRoU2lu
Y2VMYXN0Um91bmRpbmcgPSBjZWlsZih0b3RhbFdpZHRoKTsKICAgICAgICAgICAgICAgICB3aWR0
aCArPSB3aWR0aFNpbmNlTGFzdFJvdW5kaW5nIC0gdG90YWxXaWR0aDsKQEAgLTI1MSw2ICsyNDcs
MjUgQEAgdW5zaWduZWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZShpbnQgb2ZmcwogICAgIHJldHVy
biBjb25zdW1lZENoYXJhY3RlcnM7CiB9CiAKK3Vuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFu
Y2UoaW50IG9mZnNldCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQoreworICAgIGludCBsZW5n
dGggPSBtX3J1bi5sZW5ndGgoKTsKKworICAgIGlmIChvZmZzZXQgPiBsZW5ndGgpCisgICAgICAg
IG9mZnNldCA9IGxlbmd0aDsKKworICAgIGlmIChpbnQobV9jdXJyZW50Q2hhcmFjdGVyKSA+PSBv
ZmZzZXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fcnVuLmlzOEJpdCgpKSB7Cisg
ICAgICAgIExhdGluMVRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IobV9ydW4uZGF0YTgobV9jdXJy
ZW50Q2hhcmFjdGVyKSwgbV9jdXJyZW50Q2hhcmFjdGVyLCBvZmZzZXQsIGxlbmd0aCk7CisgICAg
ICAgIHJldHVybiBhZHZhbmNlSW50ZXJuYWwodGV4dEl0ZXJhdG9yLCBnbHlwaEJ1ZmZlcik7Cisg
ICAgfQorCisgICAgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yIHRleHRJdGVyYXRvciht
X3J1bi5kYXRhMTYobV9jdXJyZW50Q2hhcmFjdGVyKSwgbV9jdXJyZW50Q2hhcmFjdGVyLCBvZmZz
ZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIGFkdmFuY2VJbnRlcm5hbCh0ZXh0SXRlcmF0b3IsIGds
eXBoQnVmZmVyKTsKK30KKwogYm9vbCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlT25lQ2hhcmFjdGVy
KGZsb2F0JiB3aWR0aCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQogewogICAgIGludCBvbGRT
aXplID0gZ2x5cGhCdWZmZXItPnNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyODM2MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNzMsNiArNzMsOCBAQCBzdHJ1Y3QgV2lkdGhJdGVyYXRvciB7CiAKIHByaXZhdGU6
CiAgICAgR2x5cGhEYXRhIGdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyLCBib29sIG1pcnJv
ciwgaW50IGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoKTsKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGV4dEl0ZXJhdG9yPgorICAgIGlubGluZSB1bnNpZ25lZCBhZHZh
bmNlSW50ZXJuYWwoVGV4dEl0ZXJhdG9yJiwgR2x5cGhCdWZmZXIqKTsKIAogICAgIEhhc2hTZXQ8
Y29uc3QgU2ltcGxlRm9udERhdGEqPiogbV9mYWxsYmFja0ZvbnRzOwogICAgIGJvb2wgbV9hY2Nv
dW50Rm9yR2x5cGhCb3VuZHM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163894</attachid>
            <date>2012-09-13 09:58:34 -0700</date>
            <delta_ts>2022-02-27 23:35:00 -0800</delta_ts>
            <desc>Updated Patch with development #if</desc>
            <filename>96590-3.patch</filename>
            <type>text/plain</type>
            <size>22192</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyODQ3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA5LTEzICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIEFkZGVkIDggYml0IHBhdGgg
dG8gV2lkdGhJdGVyYXRvcjo6YWR2YW5jZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NjU5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIDggYml0IHBhdGggdG8gYWR2YW5jZSgpIGJ5IGFkZGlu
ZyBhIHRlbXBsYXRpemVkIGFkdmFuY2VJbnRlcm5hbCBwcml2YXRlCisgICAgICAgIG1ldGhvZCBh
bmQgYWRkZWQgYSBzaW1wbGUgOCBiaXQgTGF0aW4tMSBUZXh0SXRlcmF0b3IuICBVcGRhdGVkIFN1
cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcgorICAgICAgICBieSBtYWtpbmcgYm90aCBjb25z
dW1lKCkgYW5kIGFkdmFuY2UoKSBpbmxpbmVkIGFuZCBhZGRpbmcgY29uc3VtZVNsb3dDYXNlKCkg
Zm9yCisgICAgICAgIHN1cnJvZ2F0ZSBoYW5kbGluZy4gIFRoZXNlIGNoYW5nZXMgYXJlIGEgcGVy
Zm9ybWFuY2UgcHJvZ3Jlc3Npb24gb24gdGhlIExheW91dCB0ZXN0cy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgYmVjYXVzZSBvZiBubyBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oLgor
ICAgICAgICAoTGF0aW4xVGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxhdGluMVRl
eHRJdGVyYXRvcjo6TGF0aW4xVGV4dEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxhdGlu
MVRleHRJdGVyYXRvcjo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXRpbjFUZXh0SXRl
cmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF0aW4xVGV4dEl0ZXJhdG9yOjpj
aGFyYWN0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdh
cmVUZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yOjpjb25zdW1lU2xvd0Nhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yOjpjb25zdW1lKToKKyAgICAgICAgKFN1cnJv
Z2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTdXJyb2dhdGVQ
YWlyQXdhcmVUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1dpZHRoSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkdGhJdGVyYXRvcjo6
YWR2YW5jZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFu
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaDoKKyAgICAg
ICAgKFdpZHRoSXRlcmF0b3IpOgorCiAyMDEyLTA5LTEzICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xh
emtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3RvcCBzaHV0dGxpbmcgUHNldWRvSWQgZnJv
bSBTdHlsZVJlc29sdmVyIHRvIFNlbGVjdG9yQ2hlY2tlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTI4MzYyKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNDQxOCw2ICs0NDE4LDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZUhhc2guaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggXApJbmRleDogU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShy
ZXZpc2lvbiAxMjgzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTEzLDYgKzIxMTMsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRQb2ludC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludEhhc2guaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9MYXRpbjFUZXh0SXRlcmF0b3IuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2VQdHIuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVWZXJ0aWNhbERhdGEuaCBcCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMjgzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTQ3NzEsNiArNDc3MSw3IEBACiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9MYXRpbjFUZXh0SXRlcmF0b3IuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllclByaXZhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2VQdHIuaCcgLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHJldmlzaW9uIDEyODM2MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzY3MCw2ICszMzY3MCwxMCBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3NcTGF0aW4xVGV4dEl0ZXJhdG9yLmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVS5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTI4MzYyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NTQ4LDcgKzY1NDgsNiBAQAogCQlGRTZGRDQ4RDBG
Njc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTZGRDQ4QjBGNjc2RTkzMDAwOTI4NzMgLyogSlND
b29yZGluYXRlcy5jcHAgKi87IH07CiAJCUZFNkZENDhFMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nv
b3JkaW5hdGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTZGRDQ4QzBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oICovOyB9OwogCQlG
RTcwMEREMTBGOTJEODFBMDA4RTJCRkUgLyogSlNDb29yZGluYXRlc0N1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTcwMEREMDBGOTJEODFB
MDA4RTJCRkUgLyogSlNDb29yZGluYXRlc0N1c3RvbS5jcHAgKi87IH07Ci0JCUZGRDg2RTc4MTVG
OTU4MzYwMDA0NzIzMyAvKiBKU0RlcGVuZGVudFJldGFpbmVkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRkQ4NkU3NzE1Rjk1ODM2MDAwNDcyMzMgLyog
SlNEZXBlbmRlbnRSZXRhaW5lZC5oICovOyB9OwogCQlGRTgwRDdBQjBFOUMxRUQyMDAwRDZGNzUg
LyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBNjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlv
bkN1c3RvbS5jcHAgKi87IH07CiAJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xv
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAqLzsgfTsKIAkJ
RkU4MERBNjQwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYwMEU5QzQ3MDMwMDBENkY3
NSAvKiBKU0dlb2xvY2F0aW9uLmggKi87IH07CkBAIC02NTU4LDYgKzY1NTcsNyBAQAogCQlGRTgw
REE3MjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUg
LyogSlNQb3NpdGlvbkVycm9yLmggKi87IH07CiAJCUZGRDVCOTdBMTM1Q0M5NzgwMEQ1RTkyQSAv
KiBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZGRDVCOTc3MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0
eVN0YXRlLmNwcCAqLzsgfTsKIAkJRkZENUI5N0IxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VWaXNp
YmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZGRDVCOTc4MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkZEODZFNzgx
NUY5NTgzNjAwMDQ3MjMzIC8qIEpTRGVwZW5kZW50UmV0YWluZWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGRDg2RTc3MTVGOTU4MzYwMDA0NzIzMyAv
KiBKU0RlcGVuZGVudFJldGFpbmVkLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTg5
NzUsNiArODk3NSw3IEBACiAJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmln
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgdXNlc1RhYnMgPSAwOyB9
OwogCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVZpZXcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVZpZXcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVDQzZCRUQxNjAxNEVDMDAwMEVEMjdEIC8qIExhdGluMVRl
eHRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXRpbjFUZXh0
SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVERjMxRDgwOUQxQzEy
MjAwMEJFMzI1IC8qIEpTQXR0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNBdHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVERjMxRDkw
OUQxQzEyMzAwMEJFMzI1IC8qIEpTQXR0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNBdHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1REYzMURGMDlE
MUNDNjAwMDBCRTMyNSAvKiBKU0NoYXJhY3RlckRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2hhcmFjdGVyRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzk4OSw3ICsxMzk5MCw2IEBACiAJCUZFNkZENDhCMEY2NzZFOTMwMDA5
Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQ29vcmRpbmF0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTZGRDQ4QzBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0Nvb3JkaW5hdGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFNzAwREQwMEY5MkQ4MUEwMDhFMkJGRSAvKiBKU0Nvb3JkaW5hdGVzQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29vcmRpbmF0ZXND
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRkQ4NkU3NzE1Rjk1ODM2
MDAwNDcyMzMgLyogSlNEZXBlbmRlbnRSZXRhaW5lZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RlcGVuZGVudFJldGFpbmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFODBEN0E2MEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VvbG9jYXRpb25DdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE1RjBFOUM0NzAzMDAw
RDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0dlb2xvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkU4MERBNjAwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW9sb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM5OTksNiArMTM5OTksNyBAQAogCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZG
NzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRkQ1Qjk3
NzEzNUNDOTc4MDBENUU5MkEgLyogUGFnZVZpc2liaWxpdHlTdGF0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkZENUI5NzgxMzVDQzk3ODAwRDVFOTJBIC8qIFBhZ2VW
aXNpYmlsaXR5U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZVZp
c2liaWxpdHlTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRkQ4NkU3NzE1
Rjk1ODM2MDAwNDcyMzMgLyogSlNEZXBlbmRlbnRSZXRhaW5lZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RlcGVuZGVudFJldGFpbmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTE5OTY1LDYgKzE5OTY2LDcg
QEAKIAkJCQlCMjM1NDBGMDBEMDA3ODJFMDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNhdG9yLmNwcCAq
LywKIAkJCQlCMjM1NDBGMTBEMDA3ODJFMDAyMzgyRkEgLyogU3RyaW5nVHJ1bmNhdG9yLmggKi8s
CiAJCQkJMDg3NTU4QzMxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJ
dGVyYXRvci5jcHAgKi8sCisJCQkJNjVDQzZCRUQxNjAxNEVDMDAwMEVEMjdEIC8qIExhdGluMVRl
eHRJdGVyYXRvci5oICovLAogCQkJCTA4NzU1OEM0MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dh
dGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLywKIAkJCQkwODdFMEFGNDEzNjA2RDBCMDBGQTRC
QTggLyogU1ZHR2x5cGguY3BwICovLAogCQkJCTA4N0UwQUY1MTM2MDZEMEIwMEZBNEJBOCAvKiBT
VkdHbHlwaC5oICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0
aW4xVGV4dEl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyODM2MikJKGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJh
dG9yLmg6MTI4MzYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4x
VGV4dEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yX2gKKyNk
ZWZpbmUgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yX2gKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN1cnJvZ2F0
ZVBhaXJBd2FyZVRleHRJdGVyYXRvciB7CitwdWJsaWM6CisgICAgLy8gVGhlIHBhc3NlZCBpbiBV
Q2hhciBwb2ludGVyIHN0YXJ0cyBhdCAnY3VycmVudENoYXJhY3RlcicuIFRoZSBpdGVyYXRvciBv
cGVyYXRvZXMgb24gdGhlIHJhbmdlIFtjdXJyZW50Q2hhcmFjdGVyLCBsYXN0Q2hhcmFjdGVyXS4K
KyAgICAvLyAnZW5kQ2hhcmFjdGVyJyBkZW5vdGVzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUg
VUNoYXIgYXJyYXksIHdoaWNoIG1pZ2h0IGV4Y2VlZCAnbGFzdENoYXJhY3RlcicuCisgICAgU3Vy
cm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yKGNvbnN0IFVDaGFyKiwgaW50IGN1cnJlbnRDaGFy
YWN0ZXIsIGludCBsYXN0Q2hhcmFjdGVyLCBpbnQgZW5kQ2hhcmFjdGVyKTsKKworICAgIGJvb2wg
Y29uc3VtZShVQ2hhcjMyJiBjaGFyYWN0ZXIsIHVuc2lnbmVkJiBjbHVzdGVyTGVuZ3RoKTsKKyAg
ICB2b2lkIGFkdmFuY2UodW5zaWduZWQgYWR2YW5jZUxlbmd0aCk7CisKKyAgICBpbnQgY3VycmVu
dENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudENoYXJhY3RlcjsgfQorICAgIGNv
bnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9CisK
K3ByaXZhdGU6CisgICAgVUNoYXIzMiBub3JtYWxpemVWb2ljaW5nTWFya3MoKTsKKworICAgIGNv
bnN0IFVDaGFyKiBtX2NoYXJhY3RlcnM7CisgICAgaW50IG1fY3VycmVudENoYXJhY3RlcjsKKyAg
ICBpbnQgbV9sYXN0Q2hhcmFjdGVyOworICAgIGludCBtX2VuZENoYXJhY3RlcjsKK307CisKK30K
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXRpbjFU
ZXh0SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9MYXRpbjFUZXh0SXRlcmF0b3IuaAkocmV2aXNpb24gMTI4MzYyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xOCwy
OSArMTksNDYgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRl
cmF0b3JfaAotI2RlZmluZSBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3JfaAorI2lmbmRl
ZiBMYXRpbjFUZXh0SXRlcmF0b3JfaAorI2RlZmluZSBMYXRpbjFUZXh0SXRlcmF0b3JfaAogCiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yIHsKK2NsYXNzIExhdGluMVRleHRJ
dGVyYXRvciB7CiBwdWJsaWM6Ci0gICAgLy8gVGhlIHBhc3NlZCBpbiBVQ2hhciBwb2ludGVyIHN0
YXJ0cyBhdCAnY3VycmVudENoYXJhY3RlcicuIFRoZSBpdGVyYXRvciBvcGVyYXRvZXMgb24gdGhl
IHJhbmdlIFtjdXJyZW50Q2hhcmFjdGVyLCBsYXN0Q2hhcmFjdGVyXS4KKyAgICAvLyBUaGUgcGFz
c2VkIGluIExDaGFyIHBvaW50ZXIgc3RhcnRzIGF0ICdjdXJyZW50Q2hhcmFjdGVyJy4gVGhlIGl0
ZXJhdG9yIG9wZXJhdG9lcyBvbiB0aGUgcmFuZ2UgW2N1cnJlbnRDaGFyYWN0ZXIsIGxhc3RDaGFy
YWN0ZXJdLgogICAgIC8vICdlbmRDaGFyYWN0ZXInIGRlbm90ZXMgdGhlIG1heGltdW0gbGVuZ3Ro
IG9mIHRoZSBVQ2hhciBhcnJheSwgd2hpY2ggbWlnaHQgZXhjZWVkICdsYXN0Q2hhcmFjdGVyJy4K
LSAgICBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IoY29uc3QgVUNoYXIqLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgaW50IGxhc3RDaGFyYWN0ZXIsIGludCBlbmRDaGFyYWN0ZXIpOwotCi0g
ICAgYm9vbCBjb25zdW1lKFVDaGFyMzImIGNoYXJhY3RlciwgdW5zaWduZWQmIGNsdXN0ZXJMZW5n
dGgpOwotICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBhZHZhbmNlTGVuZ3RoKTsKKyAgICBMYXRp
bjFUZXh0SXRlcmF0b3IoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIGludCBjdXJyZW50Q2hhcmFj
dGVyLCBpbnQgbGFzdENoYXJhY3RlciwgaW50IGVuZENoYXJhY3RlcikKKyAgICAgICAgOiBtX2No
YXJhY3RlcnMoY2hhcmFjdGVycykKKyAgICAgICAgLCBtX2N1cnJlbnRDaGFyYWN0ZXIoY3VycmVu
dENoYXJhY3RlcikKKyAgICAgICAgLCBtX2xhc3RDaGFyYWN0ZXIobGFzdENoYXJhY3RlcikKKyAg
ICAgICAgLCBtX2VuZENoYXJhY3RlcihlbmRDaGFyYWN0ZXIpCisgICAgeworICAgIH0KKworICAg
IGJvb2wgY29uc3VtZShVQ2hhcjMyJiBjaGFyYWN0ZXIsIHVuc2lnbmVkJiBjbHVzdGVyTGVuZ3Ro
KQorICAgIHsKKyAgICAgICAgaWYgKG1fY3VycmVudENoYXJhY3RlciA+PSBtX2xhc3RDaGFyYWN0
ZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY2hhcmFjdGVyID0gKm1f
Y2hhcmFjdGVyczsKKyAgICAgICAgY2x1c3Rlckxlbmd0aCA9IDE7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBhZHZhbmNlTGVuZ3RoKQor
ICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzICs9IGFkdmFuY2VMZW5ndGg7CisgICAgICAgIG1f
Y3VycmVudENoYXJhY3RlciArPSBhZHZhbmNlTGVuZ3RoOworICAgIH0KIAogICAgIGludCBjdXJy
ZW50Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q2hhcmFjdGVyOyB9Ci0gICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0K
KyAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVy
czsgfQogCiBwcml2YXRlOgotICAgIFVDaGFyMzIgbm9ybWFsaXplVm9pY2luZ01hcmtzKCk7Ci0K
LSAgICBjb25zdCBVQ2hhciogbV9jaGFyYWN0ZXJzOworICAgIGNvbnN0IExDaGFyKiBtX2NoYXJh
Y3RlcnM7CiAgICAgaW50IG1fY3VycmVudENoYXJhY3RlcjsKICAgICBpbnQgbV9sYXN0Q2hhcmFj
dGVyOwogICAgIGludCBtX2VuZENoYXJhY3RlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJl
VGV4dEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMTI4MzYyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAsMTcgKzQwLDggQEAgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9y
OjpTdXJyb2dhdAogewogfQogCi1ib29sIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcjo6
Y29uc3VtZShVQ2hhcjMyJiBjaGFyYWN0ZXIsIHVuc2lnbmVkJiBjbHVzdGVyTGVuZ3RoKQorYm9v
bCBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3I6OmNvbnN1bWVTbG93Q2FzZShVQ2hhcjMy
JiBjaGFyYWN0ZXIsIHVuc2lnbmVkJiBjbHVzdGVyTGVuZ3RoKQogewotICAgIGlmIChtX2N1cnJl
bnRDaGFyYWN0ZXIgPj0gbV9sYXN0Q2hhcmFjdGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBjaGFyYWN0ZXIgPSAqbV9jaGFyYWN0ZXJzOwotICAgIGNsdXN0ZXJMZW5ndGggPSAxOwot
Ci0gICAgaWYgKGNoYXJhY3RlciA8IDB4MzA0MSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAg
ICBpZiAoY2hhcmFjdGVyIDw9IDB4MzBGRSkgewogICAgICAgICAvLyBEZWFsIHdpdGggSGlyYWdh
bmEgYW5kIEthdGFrYW5hIHZvaWNlZCBhbmQgc2VtaS12b2ljZWQgc3lsbGFibGVzLgogICAgICAg
ICAvLyBOb3JtYWxpemUgaW50byBjb21wb3NlZCBmb3JtLCBhbmQgdGhlbiBsb29rIGZvciBnbHlw
aCB3aXRoIGJhc2UgKyBjb21iaW5lZCBtYXJrLgpAQCAtODMsMTIgKzc0LDYgQEAgYm9vbCBTdXJy
b2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3I6OmNvbgogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvcjo6YWR2YW5jZSh1bnNpZ25lZCBhZHZh
bmNlTGVuZ3RoKQotewotICAgIG1fY2hhcmFjdGVycyArPSBhZHZhbmNlTGVuZ3RoOwotICAgIG1f
Y3VycmVudENoYXJhY3RlciArPSBhZHZhbmNlTGVuZ3RoOwotfQotCiBVQ2hhcjMyIFN1cnJvZ2F0
ZVBhaXJBd2FyZVRleHRJdGVyYXRvcjo6bm9ybWFsaXplVm9pY2luZ01hcmtzKCkKIHsKICAgICAv
LyBBY2NvcmRpbmcgdG8gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvVU5JREFUQS9VQ0Qu
aHRtbCNDYW5vbmljYWxfQ29tYmluaW5nX0NsYXNzX1ZhbHVlcwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3Vycm9nYXRlUGFp
ckF3YXJlVGV4dEl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyODM2MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1N1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMzEgQEAgcHVibGljOgogICAgIC8vICdlbmRDaGFyYWN0
ZXInIGRlbm90ZXMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBVQ2hhciBhcnJheSwgd2hpY2gg
bWlnaHQgZXhjZWVkICdsYXN0Q2hhcmFjdGVyJy4KICAgICBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0
SXRlcmF0b3IoY29uc3QgVUNoYXIqLCBpbnQgY3VycmVudENoYXJhY3RlciwgaW50IGxhc3RDaGFy
YWN0ZXIsIGludCBlbmRDaGFyYWN0ZXIpOwogCi0gICAgYm9vbCBjb25zdW1lKFVDaGFyMzImIGNo
YXJhY3RlciwgdW5zaWduZWQmIGNsdXN0ZXJMZW5ndGgpOwotICAgIHZvaWQgYWR2YW5jZSh1bnNp
Z25lZCBhZHZhbmNlTGVuZ3RoKTsKKyAgICBpbmxpbmUgYm9vbCBjb25zdW1lKFVDaGFyMzImIGNo
YXJhY3RlciwgdW5zaWduZWQmIGNsdXN0ZXJMZW5ndGgpCisgICAgeworICAgICAgICBpZiAobV9j
dXJyZW50Q2hhcmFjdGVyID49IG1fbGFzdENoYXJhY3RlcikKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBjaGFyYWN0ZXIgPSAqbV9jaGFyYWN0ZXJzOworICAgICAgICBjbHVz
dGVyTGVuZ3RoID0gMTsKKworICAgICAgICBpZiAoY2hhcmFjdGVyIDwgMHgzMDQxKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVTbG93Q2FzZShjaGFy
YWN0ZXIsIGNsdXN0ZXJMZW5ndGgpOworICAgIH0KKworICAgIHZvaWQgYWR2YW5jZSh1bnNpZ25l
ZCBhZHZhbmNlTGVuZ3RoKQorICAgIHsKKyAgICAgICAgbV9jaGFyYWN0ZXJzICs9IGFkdmFuY2VM
ZW5ndGg7CisgICAgICAgIG1fY3VycmVudENoYXJhY3RlciArPSBhZHZhbmNlTGVuZ3RoOworICAg
IH0KIAogICAgIGludCBjdXJyZW50Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
Q2hhcmFjdGVyOyB9CiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVy
biBtX2NoYXJhY3RlcnM7IH0KIAogcHJpdmF0ZToKKyAgICBib29sIGNvbnN1bWVTbG93Q2FzZShV
Q2hhcjMyJiwgdW5zaWduZWQmKTsKICAgICBVQ2hhcjMyIG5vcm1hbGl6ZVZvaWNpbmdNYXJrcygp
OwogCiAgICAgY29uc3QgVUNoYXIqIG1fY2hhcmFjdGVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAx
MjgzNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiRm9udC5o
IgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF0aW4xVGV4dEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlICJTdXJyb2dhdGVQYWly
QXdhcmVUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCkBAIC04MywxNCArODQs
OSBAQCBHbHlwaERhdGEgV2lkdGhJdGVyYXRvcjo6Z2x5cGhEYXRhRm9yQ2hhCiAgICAgcmV0dXJu
IG1fZm9udC0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciwgbWlycm9yKTsKIH0KIAot
dW5zaWduZWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZShpbnQgb2Zmc2V0LCBHbHlwaEJ1ZmZlciog
Z2x5cGhCdWZmZXIpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVGV4dEl0ZXJhdG9yPgoraW5saW5lIHVu
c2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbChUZXh0SXRlcmF0b3ImIHRleHRJ
dGVyYXRvciwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQogewotICAgIGlmIChvZmZzZXQgPiBt
X3J1bi5sZW5ndGgoKSkKLSAgICAgICAgb2Zmc2V0ID0gbV9ydW4ubGVuZ3RoKCk7Ci0KLSAgICBp
ZiAoaW50KG1fY3VycmVudENoYXJhY3RlcikgPj0gb2Zmc2V0KQotICAgICAgICByZXR1cm4gMDsK
LQogICAgIGJvb2wgcnRsID0gbV9ydW4ucnRsKCk7CiAgICAgYm9vbCBoYXNFeHRyYVNwYWNpbmcg
PSAobV9mb250LT5sZXR0ZXJTcGFjaW5nKCkgfHwgbV9mb250LT53b3JkU3BhY2luZygpIHx8IG1f
ZXhwYW5zaW9uKSAmJiAhbV9ydW4uc3BhY2luZ0Rpc2FibGVkKCk7CiAKQEAgLTEwNiw3ICsxMDIs
NyBAQCB1bnNpZ25lZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlKGludCBvZmZzCiAKICAgICBVQ2hh
cjMyIGNoYXJhY3RlciA9IDA7CiAgICAgdW5zaWduZWQgY2x1c3Rlckxlbmd0aCA9IDA7Ci0gICAg
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yIHRleHRJdGVyYXRvcihtX3J1bi5kYXRhMTYo
bV9jdXJyZW50Q2hhcmFjdGVyKSwgbV9jdXJyZW50Q2hhcmFjdGVyLCBvZmZzZXQsIG1fcnVuLmxl
bmd0aCgpKTsKKwogICAgIHdoaWxlICh0ZXh0SXRlcmF0b3IuY29uc3VtZShjaGFyYWN0ZXIsIGNs
dXN0ZXJMZW5ndGgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGFkdmFuY2VMZW5ndGggPSBjbHVzdGVy
TGVuZ3RoOwogICAgICAgICBjb25zdCBHbHlwaERhdGEmIGdseXBoRGF0YSA9IGdseXBoRGF0YUZv
ckNoYXJhY3RlcihjaGFyYWN0ZXIsIHJ0bCwgdGV4dEl0ZXJhdG9yLmN1cnJlbnRDaGFyYWN0ZXIo
KSwgYWR2YW5jZUxlbmd0aCk7CkBAIC0yMDQsNyArMjAwLDcgQEAgdW5zaWduZWQgV2lkdGhJdGVy
YXRvcjo6YWR2YW5jZShpbnQgb2ZmcwogICAgICAgICAvLyBBZHZhbmNlIHBhc3QgdGhlIGNoYXJh
Y3RlciB3ZSBqdXN0IGRlYWx0IHdpdGguCiAgICAgICAgIHRleHRJdGVyYXRvci5hZHZhbmNlKGFk
dmFuY2VMZW5ndGgpOwogCi0gICAgICAgIGZsb2F0IG9sZFdpZHRoID0gd2lkdGg7IAorICAgICAg
ICBmbG9hdCBvbGRXaWR0aCA9IHdpZHRoOwogCiAgICAgICAgIC8vIEZvcmNlIGNoYXJhY3RlcnMg
dGhhdCBhcmUgdXNlZCB0byBkZXRlcm1pbmUgd29yZCBib3VuZGFyaWVzIGZvciB0aGUgcm91bmRp
bmcgaGFjawogICAgICAgICAvLyB0byBiZSBpbnRlZ2VyIHdpZHRoLCBzbyBmb2xsb3dpbmcgd29y
ZHMgd2lsbCBzdGFydCBvbiBhbiBpbnRlZ2VyIGJvdW5kYXJ5LgpAQCAtMjIyLDcgKzIxOCw3IEBA
IHVuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2UoaW50IG9mZnMKICAgICAgICAgICAgIC8v
IENoZWNrIHRvIHNlZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgYSAicm91bmRpbmcgaGFjayBj
aGFyYWN0ZXIiLCBpZiBzbywgYWRqdXN0CiAgICAgICAgICAgICAvLyB3aWR0aCBzbyB0aGF0IHRo
ZSB0b3RhbCBydW4gd2lkdGggd2lsbCBiZSBvbiBhbiBpbnRlZ2VyIGJvdW5kYXJ5LgogICAgICAg
ICAgICAgaWYgKChtX3J1bi5hcHBseVdvcmRSb3VuZGluZygpICYmIHRleHRJdGVyYXRvci5jdXJy
ZW50Q2hhcmFjdGVyKCkgPCBtX3J1bi5sZW5ndGgoKSAmJiBGb250Ojppc1JvdW5kaW5nSGFja0No
YXJhY3RlcigqKHRleHRJdGVyYXRvci5jaGFyYWN0ZXJzKCkpKSkKLSAgICAgICAgICAgICAgICAg
ICAgfHwgKG1fcnVuLmFwcGx5UnVuUm91bmRpbmcoKSAmJiB0ZXh0SXRlcmF0b3IuY3VycmVudENo
YXJhY3RlcigpID49IG1fcnVuLmxlbmd0aCgpKSkgeworICAgICAgICAgICAgICAgIHx8IChtX3J1
bi5hcHBseVJ1blJvdW5kaW5nKCkgJiYgdGV4dEl0ZXJhdG9yLmN1cnJlbnRDaGFyYWN0ZXIoKSA+
PSBtX3J1bi5sZW5ndGgoKSkpIHsKICAgICAgICAgICAgICAgICBmbG9hdCB0b3RhbFdpZHRoID0g
d2lkdGhTaW5jZUxhc3RSb3VuZGluZyArIHdpZHRoOwogICAgICAgICAgICAgICAgIHdpZHRoU2lu
Y2VMYXN0Um91bmRpbmcgPSBjZWlsZih0b3RhbFdpZHRoKTsKICAgICAgICAgICAgICAgICB3aWR0
aCArPSB3aWR0aFNpbmNlTGFzdFJvdW5kaW5nIC0gdG90YWxXaWR0aDsKQEAgLTI1MSw2ICsyNDcs
MjUgQEAgdW5zaWduZWQgV2lkdGhJdGVyYXRvcjo6YWR2YW5jZShpbnQgb2ZmcwogICAgIHJldHVy
biBjb25zdW1lZENoYXJhY3RlcnM7CiB9CiAKK3Vuc2lnbmVkIFdpZHRoSXRlcmF0b3I6OmFkdmFu
Y2UoaW50IG9mZnNldCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQoreworICAgIGludCBsZW5n
dGggPSBtX3J1bi5sZW5ndGgoKTsKKworICAgIGlmIChvZmZzZXQgPiBsZW5ndGgpCisgICAgICAg
IG9mZnNldCA9IGxlbmd0aDsKKworICAgIGlmIChpbnQobV9jdXJyZW50Q2hhcmFjdGVyKSA+PSBv
ZmZzZXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fcnVuLmlzOEJpdCgpKSB7Cisg
ICAgICAgIExhdGluMVRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IobV9ydW4uZGF0YTgobV9jdXJy
ZW50Q2hhcmFjdGVyKSwgbV9jdXJyZW50Q2hhcmFjdGVyLCBvZmZzZXQsIGxlbmd0aCk7CisgICAg
ICAgIHJldHVybiBhZHZhbmNlSW50ZXJuYWwodGV4dEl0ZXJhdG9yLCBnbHlwaEJ1ZmZlcik7Cisg
ICAgfQorCisgICAgU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yIHRleHRJdGVyYXRvciht
X3J1bi5kYXRhMTYobV9jdXJyZW50Q2hhcmFjdGVyKSwgbV9jdXJyZW50Q2hhcmFjdGVyLCBvZmZz
ZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIGFkdmFuY2VJbnRlcm5hbCh0ZXh0SXRlcmF0b3IsIGds
eXBoQnVmZmVyKTsKK30KKwogYm9vbCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlT25lQ2hhcmFjdGVy
KGZsb2F0JiB3aWR0aCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyKQogewogICAgIGludCBvbGRT
aXplID0gZ2x5cGhCdWZmZXItPnNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmgJKHJldmlzaW9uIDEyODM2MikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNzMsNiArNzMsOCBAQCBzdHJ1Y3QgV2lkdGhJdGVyYXRvciB7CiAKIHByaXZhdGU6
CiAgICAgR2x5cGhEYXRhIGdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyLCBib29sIG1pcnJv
ciwgaW50IGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoKTsKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVGV4dEl0ZXJhdG9yPgorICAgIGlubGluZSB1bnNpZ25lZCBhZHZh
bmNlSW50ZXJuYWwoVGV4dEl0ZXJhdG9yJiwgR2x5cGhCdWZmZXIqKTsKIAogICAgIEhhc2hTZXQ8
Y29uc3QgU2ltcGxlRm9udERhdGEqPiogbV9mYWxsYmFja0ZvbnRzOwogICAgIGJvb2wgbV9hY2Nv
dW50Rm9yR2x5cGhCb3VuZHM7Cg==
</data>
<flag name="review"
          id="175508"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>