<?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>104888</bug_id>
          
          <creation_ts>2012-12-13 00:47:00 -0800</creation_ts>
          <short_desc>Web Inspector: collect native heap graph and report it to the front-end</short_desc>
          <delta_ts>2012-12-14 00:45:30 -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>Web Inspector (Deprecated)</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="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rakuco</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>790377</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-13 00:47:00 -0800</bug_when>
    <thetext>Now that memory instrumentation has API for reporting heap nodes and edges we can serialize the graph and send it to the front-end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790392</commentid>
    <comment_count>1</comment_count>
      <attachid>179225</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-13 01:09:56 -0800</bug_when>
    <thetext>Created attachment 179225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790409</commentid>
    <comment_count>2</comment_count>
      <attachid>179225</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-13 01:33:19 -0800</bug_when>
    <thetext>Comment on attachment 179225
Patch

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

&gt; Source/WebCore/inspector/HeapGraphSerializer.cpp:81
&gt; +HeapGraphSerializer::HeapGraphSerializer()

HeapGraphSerializer -&gt; HeapGraph

&gt; Source/WebCore/inspector/HeapGraphSerializer.h:77
&gt; +    typedef HashMap&lt;String, int&gt; StringMap;
&gt; +    StringMap m_stringToIndex;
&gt; +    Vector&lt;String&gt; m_strings;
&gt; +    int m_lastReportedEdgeIndex;
&gt; +
&gt; +    typedef HashMap&lt;const void*, int&gt; ObjectToNodeIndex;
&gt; +    ObjectToNodeIndex m_objectToNodeIndex;
&gt; +
&gt; +    typedef HashMap&lt;const void*, const void*&gt; BaseToRealAddress;
&gt; +    BaseToRealAddress m_baseToRealAddress;
&gt; +
&gt; +    Vector&lt;HeapGraphNode&gt; m_nodes;
&gt; +    Vector&lt;HeapGraphEdge&gt; m_edges;

please implement reportMemoryUsage method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790467</commentid>
    <comment_count>3</comment_count>
      <attachid>179243</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-13 03:19:38 -0800</bug_when>
    <thetext>Created attachment 179243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790469</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-13 03:22:24 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 179225 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179225&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/HeapGraphSerializer.cpp:81
&gt; &gt; +HeapGraphSerializer::HeapGraphSerializer()
&gt; 
&gt; HeapGraphSerializer -&gt; HeapGraph
&gt; 
I disagree, HeapGraphSerializer better reflects intent of the class which receives signals from the memory instrumentation and serializes them into a heap graph representation, it doesn&apos;t allow you to change the graph or read it.


&gt; &gt; Source/WebCore/inspector/HeapGraphSerializer.h:77
&gt; &gt; +    typedef HashMap&lt;String, int&gt; StringMap;
&gt; &gt; +    StringMap m_stringToIndex;
&gt; &gt; +    Vector&lt;String&gt; m_strings;
&gt; &gt; +    int m_lastReportedEdgeIndex;
&gt; &gt; +
&gt; &gt; +    typedef HashMap&lt;const void*, int&gt; ObjectToNodeIndex;
&gt; &gt; +    ObjectToNodeIndex m_objectToNodeIndex;
&gt; &gt; +
&gt; &gt; +    typedef HashMap&lt;const void*, const void*&gt; BaseToRealAddress;
&gt; &gt; +    BaseToRealAddress m_baseToRealAddress;
&gt; &gt; +
&gt; &gt; +    Vector&lt;HeapGraphNode&gt; m_nodes;
&gt; &gt; +    Vector&lt;HeapGraphEdge&gt; m_edges;
&gt; 
&gt; please implement reportMemoryUsage method.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790490</commentid>
    <comment_count>5</comment_count>
      <attachid>179225</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-13 04:21:35 -0800</bug_when>
    <thetext>Comment on attachment 179225
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791431</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-14 00:45:30 -0800</bug_when>
    <thetext>Committed r137728: &lt;http://trac.webkit.org/changeset/137728&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179225</attachid>
            <date>2012-12-13 01:09:56 -0800</date>
            <delta_ts>2012-12-13 04:21:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104888-20121213130716.patch</filename>
            <type>text/plain</type>
            <size>30917</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY0OTVjYTg5MTU1NjFk
NmY0YWY0OTdiZWQ1YjYyMjQ1MjMwNTJjZS4uMDg4ZmQwZDQ1NWJmZmI1YTU2YmZmNDEzZjI0NjVj
M2U2MTM1YjA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTEyLTEzICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGNvbGxlY3QgbmF0aXZlIGhlYXAgZ3JhcGggYW5kIHJlcG9ydCBpdCB0byB0aGUgZnJvbnQt
ZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ4
ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBhbiBvcHRpb24gdG8gc2VyaWFsaXplIG5hdGl2ZSBoZWFwIGdyYXBoIGluIGEgZm9ybWF0IHNp
bWlsYXIgdG8gdGhhdAorICAgICAgICBvZiBKUyBoZWFwIHByb2ZpbGVyIGFuZCBzZW5kIGl0IGlu
IHJlcGx5IHRvIGdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24KKyAgICAgICAgY29tbWFuZC4g
VGhpcyBpcyBhIGZpcnN0IGF0dGVtcHQgYW5kIHdlIGxpa2VseSBjaGFuZ2UgdGhlIHJlcG9ydCBt
ZWNoYW5pc20gdG8KKyAgICAgICAgdXNlIGEgc3RyZWFtIGluc3RyZWFkIG9mIHNlbmRpbmcgd2hv
bGUgZ3JhcGggYXQgb25jZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGlu
c3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEhlYXBHcmFwaE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SGVhcEdyYXBo
Tm9kZTo6SGVhcEdyYXBoTm9kZSk6CisgICAgICAgIChIZWFwR3JhcGhFZGdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhlYXBHcmFwaEVkZ2U6OkhlYXBHcmFwaEVkZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SGVhcEdyYXBoU2VyaWFsaXplcjo6SGVhcEdyYXBoU2VyaWFsaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpIZWFwR3JhcGhTZXJpYWxpemVyOjp+SGVhcEdyYXBoU2VyaWFsaXplcik6CisgICAg
ICAgIChXZWJDb3JlOjpIZWFwR3JhcGhTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SGVhcEdyYXBoU2VyaWFsaXplcjo6cmVwb3J0Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpIZWFwR3JhcGhTZXJpYWxpemVyOjpyZXBvcnRFZGdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhlYXBHcmFwaFNlcmlhbGl6ZXI6OnJlcG9ydExlYWYpOgorICAgICAgICAoV2ViQ29yZTo6SGVh
cEdyYXBoU2VyaWFsaXplcjo6cmVwb3J0QmFzZUFkZHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SGVhcEdyYXBoU2VyaWFsaXplcjo6YWRqdXRFZGdlVGFyZ2V0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpIZWFwR3JhcGhTZXJpYWxpemVyOjphZGRTdHJpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9I
ZWFwR3JhcGhTZXJpYWxpemVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChI
ZWFwR3JhcGhTZXJpYWxpemVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0
aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAg
ICAgKEluc3BlY3Rvck1lbW9yeUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50
YXRpb25DbGllbnRJbXBsOjpyZXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0RWRnZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBv
cnRMZWFmKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudElt
cGw6OnJlcG9ydEJhc2VBZGRyZXNzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGll
bnRJbXBsKToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGwpOgorCiAy
MDEyLTEyLTEyICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBp
biBQbHVnSW5PcmlnaW5IYXNoIHdpdGggZW1wdHkgTUlNRSB0eXBlICgxMDQ4ODIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGU4OWZmMmU3M2Q5NmRhZWEwYTM5NTQ5MDJiMDMxODQyYTAzMTUzODQu
LmRjNGY3YzA2NGVmZGU0NjMxYjg4ZjVjNjMyYjI1NmU3MGU5MmJhMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xNTc1LDYgKzE1NzUsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKICAgICBpbnNwZWN0b3IvRE9NRWRpdG9yLmNw
cAogICAgIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisgICAgaW5zcGVjdG9yL0hlYXBH
cmFwaFNlcmlhbGl6ZXIuY3BwCiAgICAgaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAK
ICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDdiYmQ2Mzc0
N2UxYTAzNzk5Yzk5NmQzYjUwYjcyODNhNDgzN2FmNDIuLjNhYzgzYWI2ZDYzMTk0NTQwZjcxZGVl
MjBhMGU5YmZlNzNlMTNjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzY4
Nyw2ICszNjg3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NRWRpdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0hlYXBHcmFwaFNlcmlhbGl6ZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA1MWExNGYzOGI4NWFk
MTFjM2FhN2MwM2M3YWI3NDQwYjZjNGFiNjZhLi5mYTMzOWFjMWE0ZmQxMTI4ZTQxYWNkYTE3MTZm
MmU4NmRmZGVjNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTczOSw2ICs3MzksNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcCBcCiAgICAgaW5zcGVjdG9y
L0RPTUVkaXRvci5jcHAgXAogICAgIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIFwKKyAg
ICBpbnNwZWN0b3IvSGVhcEdyYXBoU2VyaWFsaXplci5jcHAgXAogICAgIGluc3BlY3Rvci9JZGVu
dGlmaWVyc0ZhY3RvcnkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIFwK
ICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBcCkBAIC0xODkzLDYgKzE4OTQs
NyBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmggXAog
ICAgIGluc3BlY3Rvci9ET01FZGl0b3IuaCBcCiAgICAgaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5oIFwKKyAgICBpbnNwZWN0b3IvSGVhcEdyYXBoU2VyaWFsaXplci5oIFwKICAgICBpbnNwZWN0
b3IvSWRlbnRpZmllcnNGYWN0b3J5LmggXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
IFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDY5MGQxODgxNjRiNDU5YzM5ZDRhMTNlMWIzZjM3NjJlOTU4NzEwZTAuLmFmY2YyZWFmMWU5
NDUzYTM5YTI0MWY3Zjc0Zjc0OGJmNmFmNzNmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE3NzQs
NiArMTc3NCw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0RPTUVkaXRvci5oJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSGVhcEdy
YXBoU2VyaWFsaXplci5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9IZWFwR3JhcGhTZXJp
YWxpemVyLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuY3Bw
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmgnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyNWVlM2MwMjk4MWM5NTRkNjBkZmYx
NTQyYjVjMDNmZmM1ZjQyZDJiLi4yOTZiYzI0MDY2YThmOGM0NDFjMWMzNDIwNDYwYjkyMmQxMmNk
M2JkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtNzQ4MTQsNiArNzQ4MTQsMzAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEhlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwIgorCQkJ
CT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSGVh
cEdyYXBoU2VyaWFsaXplci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSWRlbnRpZmllcnNGYWN0b3J5LmNwcCIKIAkJCQk+CiAJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzFiNTIxOTM5NWJjYjcwNzA1OGNkZGVmMDA4MzU0
OGI5MzY3ODBiMi4uOTVhNDcyZDQyMjQ5YmU2ODQyZDNhODU0MTAzYzQxNTM5NWUzM2VkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMzY4Myw4ICszNjgzLDYgQEAKIAkJOTdCQzZBMjcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0JDNjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLzsg
fTsKIAkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTYxNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3QkM2OUU3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTQ1NkYxODE2NzdE
NzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRh
YmFzZU1hbmFnZXIuY3BwICovOyB9OwotCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0
YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzZBMkExNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VTeW5jLmNwcCAqLzsgfTsKIAkJOTdCQzZBMkIxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
U3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdC
QzY5RTkxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oICovOyB9OwogCQk5N0JDNkEy
RDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUVCMTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZVRhc2suY3BwICovOyB9OwpAQCAtNjI4Niw2ICs2Mjg0LDggQEAKIAkJRjM2RTA3QTQx
MzU4QThCRTAwQUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2RTA3QTIxMzU4QThCRTAw
QUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlGMzZFMDdB
NTEzNThBOEJFMDBBQUNCQzkgLyogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2RTA3QTMxMzU4QThCRTAw
QUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJRjM3NUNDMDcx
MTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzc1Q0MwNjExNTBEMzAwMDA4RERC
ODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLzsgfTsKKwkJRjM3QTU2MjIxNjc5Q0Y3
QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM3QTU2MjAxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhl
YXBHcmFwaFNlcmlhbGl6ZXIuY3BwICovOyB9OworCQlGMzdBNTYyMzE2NzlDRjdCMDBDNTcwNDYg
LyogSGVhcEdyYXBoU2VyaWFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjM3QTU2MjExNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlh
bGl6ZXIuaCAqLzsgfTsKIAkJRjM4MTBDMUIxMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3Rvcldv
cmtlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYzODEwQzE5MTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAg
Ki87IH07CiAJCUYzODEwQzFDMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM4MTBD
MUExMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50LmggKi87IH07CiAJCUYz
ODIwODkyMTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlQ29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzODIwODhBMTQ3RDM1RjkwMDEw
QkMwNiAvKiBQYWdlQ29uc29sZUFnZW50LmNwcCAqLzsgfTsKQEAgLTY2NDEsNiArNjY0MSw4IEBA
CiAJCUZERjZCQUY5MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRG
NkJBRjcxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmgg
Ki87IH07CiAJCUZERjdFOUMzMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRG
N0U5QzExM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgKi87IH07
CiAJCUZERjdFOUM0MTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERjdFOUMyMTNB
QzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkU0NTZG
MTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkg
LyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5
IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkZE
NDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENv
b3JkaW5hdGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5
MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwogCQlGRTZGRDQ4RTBGNjc2RTkz
MDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEMwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0
ZXMuaCAqLzsgfTsKQEAgLTEzNzgxLDYgKzEzNzgzLDggQEAKIAkJRjM2RTA3QTIxMzU4QThCRTAw
QUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNkUwN0EzMTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvcldvcmtlclJlc291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzN0E1NjIwMTY3OUNGN0IwMEM1NzA0
NiAvKiBIZWFwR3JhcGhTZXJpYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGMzdBNTYyMTE2NzlDRjdCMDBDNTcwNDYgLyogSGVhcEdyYXBoU2VyaWFsaXplci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwR3JhcGhTZXJpYWxpemVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzODEwQzE5MTM2NUE0OTYwMEVENkUzMyAv
KiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUYzODEwQzFBMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXb3JrZXJBZ2VudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzgyMDg4QTE0N0QzNUY5MDAxMEJDMDYg
LyogUGFnZUNvbnNvbGVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQYWdlQ29uc29sZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE0ODQwLDYgKzE0ODQ0LDggQEAKIAkJCQk3QUFCQTI1ODE0QkM2MTMzMDBBQTlBMTEgLyogRE9N
RWRpdG9yLmggKi8sCiAJCQkJN0E1NDg4MTYxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3Vw
cG9ydC5jcHAgKi8sCiAJCQkJN0E1NDg4MTUxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3Vw
cG9ydC5oICovLAorCQkJCUYzN0E1NjIwMTY3OUNGN0IwMEM1NzA0NiAvKiBIZWFwR3JhcGhTZXJp
YWxpemVyLmNwcCAqLywKKwkJCQlGMzdBNTYyMTE2NzlDRjdCMDBDNTcwNDYgLyogSGVhcEdyYXBo
U2VyaWFsaXplci5oICovLAogCQkJCTU5MTNBMjNGMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVudGlm
aWVyc0ZhY3RvcnkuY3BwICovLAogCQkJCTU5MTNBMjQwMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVu
dGlmaWVyc0ZhY3RvcnkuaCAqLywKIAkJCQlGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5q
ZWN0ZWRTY3JpcHQuY3BwICovLApAQCAtMjU5MTMsNiArMjU5MTksNyBAQAogCQkJCUUxNTEzRDRG
MTY3N0VBODMwMDE0OUZDQiAvKiBJbml0aWFsaXplTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkRBOTMyNUUxNjcwM0IyQTAwODk4MkRDIC8qIE9mZmxpbmVBdWRpb0NvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEQTkzMjY3MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVBdWRp
b0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUYzN0E1NjIzMTY3OUNGN0IwMEM1NzA0NiAv
KiBIZWFwR3JhcGhTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI5MDIxLDYgKzI5MDI4
LDcgQEAKIAkJCQlGREE5MzI1RDE2NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1ZGlvQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREE5MzI2NjE2NzAzQkE5MDA4OTgyREMgLyogSlNP
ZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3
NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjM3
QTU2MjIxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSGVhcEdyYXBoU2Vy
aWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSGVhcEdyYXBoU2VyaWFsaXpl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTAxYmIwNDcwYjM5ZmI2NTdmZjAxZmRkOTViZDdlOGQ1ZWYwZjYw
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9IZWFwR3JhcGhT
ZXJpYWxpemVyLmNwcApAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJIZWFwR3JhcGhTZXJpYWxpemVyLmgiCisK
KyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5T2JqZWN0
SW5mby5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIZWFwR3JhcGhO
b2RlIHsKK3B1YmxpYzoKKyAgICBIZWFwR3JhcGhOb2RlKCkKKyAgICAgICAgOiBtX3R5cGUoMCkK
KyAgICAgICAgLCBtX3NpemUoMCkKKyAgICAgICAgLCBtX2NsYXNzTmFtZSgwKQorICAgICAgICAs
IG1fbmFtZSgwKQorICAgICAgICAsIG1fZWRnZUNvdW50KDApCisgICAgeworICAgIH0KKworICAg
IGludCBtX3R5cGU7CisgICAgdW5zaWduZWQgbV9zaXplOworICAgIGludCBtX2NsYXNzTmFtZTsK
KyAgICBpbnQgbV9uYW1lOworICAgIGludCBtX2VkZ2VDb3VudDsKK307CisKK2NsYXNzIEhlYXBH
cmFwaEVkZ2UgeworcHVibGljOgorICAgIEhlYXBHcmFwaEVkZ2UoKQorICAgICAgICA6IG1fdHlw
ZSgwKQorICAgICAgICAsIG1fdGFyZ2V0SW5kZXhJc0tub3duKGZhbHNlKQorICAgICAgICAsIG1f
dG9JbmRleCgwKQorICAgICAgICAsIG1fbmFtZSgwKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQg
bV90eXBlOworICAgIGJvb2wgbV90YXJnZXRJbmRleElzS25vd247CisgICAgdW5pb24geworICAg
ICAgICBjb25zdCB2b2lkKiBtX3RvT2JqZWN0OworICAgICAgICBpbnQgbV90b0luZGV4OworICAg
IH07CisgICAgaW50IG1fbmFtZTsKK307CisKK0hlYXBHcmFwaFNlcmlhbGl6ZXI6OkhlYXBHcmFw
aFNlcmlhbGl6ZXIoKQorICAgIDogbV9sYXN0UmVwb3J0ZWRFZGdlSW5kZXgoMCkKK3sKKyAgICBt
X3N0cmluZ3MuYXBwZW5kKFN0cmluZygpKTsKK30KKworSGVhcEdyYXBoU2VyaWFsaXplcjo6fkhl
YXBHcmFwaFNlcmlhbGl6ZXIoKQoreworfQorCitQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
SGVhcEdyYXBoU2VyaWFsaXplcjo6c2VyaWFsaXplKCkKK3sKKyAgICBhZGp1dEVkZ2VUYXJnZXRz
KCk7CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBub2RlcyA9IEluc3BlY3RvckFycmF5Ojpj
cmVhdGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbm9kZXMuc2l6ZSgpOyBpKysp
IHsKKyAgICAgICAgSGVhcEdyYXBoTm9kZSYgbm9kZSA9IG1fbm9kZXNbaV07CisgICAgICAgIG5v
ZGVzLT5wdXNoSW50KG5vZGUubV90eXBlKTsKKyAgICAgICAgbm9kZXMtPnB1c2hJbnQobm9kZS5t
X3NpemUpOworICAgICAgICBub2Rlcy0+cHVzaEludChub2RlLm1fY2xhc3NOYW1lKTsKKyAgICAg
ICAgbm9kZXMtPnB1c2hJbnQobm9kZS5tX25hbWUpOworICAgICAgICBub2Rlcy0+cHVzaEludChu
b2RlLm1fZWRnZUNvdW50KTsKKyAgICB9CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBlZGdl
cyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZWRnZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgSGVhcEdyYXBoRWRnZSYgZWRnZSA9IG1f
ZWRnZXNbaV07CisgICAgICAgIGVkZ2VzLT5wdXNoSW50KGVkZ2UubV90eXBlKTsKKyAgICAgICAg
ZWRnZXMtPnB1c2hJbnQoZWRnZS5tX3RvSW5kZXgpOworICAgICAgICBlZGdlcy0+cHVzaEludChl
ZGdlLm1fbmFtZSk7CisgICAgfQorICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gc3RyaW5ncyA9
IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
c3RyaW5ncy5zaXplKCk7IGkrKykKKyAgICAgICAgc3RyaW5ncy0+cHVzaFN0cmluZyhtX3N0cmlu
Z3NbaV0pOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZ3JhcGggPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOworICAgIGdyYXBoLT5zZXRBcnJheSgibm9kZXMiLCBub2Rlcyk7Cisg
ICAgZ3JhcGgtPnNldEFycmF5KCJlZGdlcyIsIGVkZ2VzKTsKKyAgICBncmFwaC0+c2V0QXJyYXko
InN0cmluZ3MiLCBzdHJpbmdzKTsKKyAgICByZXR1cm4gZ3JhcGgucmVsZWFzZSgpOworfQorCit2
b2lkIEhlYXBHcmFwaFNlcmlhbGl6ZXI6OnJlcG9ydE5vZGUoY29uc3QgV1RGOjpNZW1vcnlPYmpl
Y3RJbmZvJiBpbmZvKQoreworICAgIEhlYXBHcmFwaE5vZGUgbm9kZTsKKyAgICBub2RlLm1fdHlw
ZSA9IGFkZFN0cmluZyhpbmZvLm9iamVjdFR5cGUoKSk7CisgICAgbm9kZS5tX3NpemUgPSBpbmZv
Lm9iamVjdFNpemUoKTsKKyAgICBub2RlLm1fY2xhc3NOYW1lID0gYWRkU3RyaW5nKGluZm8uY2xh
c3NOYW1lKCkpOworICAgIG5vZGUubV9uYW1lID0gYWRkU3RyaW5nKGluZm8ubmFtZSgpKTsKKyAg
ICAvLyBOb2RlIGlzIGFsd2F5cyByZXBvcnRlZCBhZnRlciBpdHMgb3V0Z29pbmcgZWRnZXMgYW5k
IGxlYXZlcy4KKyAgICBub2RlLm1fZWRnZUNvdW50ID0gbV9lZGdlcy5zaXplKCkgLSBtX2xhc3RS
ZXBvcnRlZEVkZ2VJbmRleDsKKyAgICBtX2xhc3RSZXBvcnRlZEVkZ2VJbmRleCA9IG1fZWRnZXMu
c2l6ZSgpOworCisgICAgbV9vYmplY3RUb05vZGVJbmRleC5zZXQoaW5mby5yZXBvcnRlZFBvaW50
ZXIoKSwgbV9ub2Rlcy5zaXplKCkpOworICAgIG1fbm9kZXMuYXBwZW5kKG5vZGUpOworfQorCit2
b2lkIEhlYXBHcmFwaFNlcmlhbGl6ZXI6OnJlcG9ydEVkZ2UoY29uc3Qgdm9pZCosIGNvbnN0IHZv
aWQqIHRvLCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIEhlYXBHcmFwaEVkZ2UgZWRnZTsKKyAg
ICBlZGdlLm1fdG9PYmplY3QgPSB0bzsKKyAgICBlZGdlLm1fbmFtZSA9IGFkZFN0cmluZyhuYW1l
KTsKKyAgICBtX2VkZ2VzLmFwcGVuZChlZGdlKTsKK30KKwordm9pZCBIZWFwR3JhcGhTZXJpYWxp
emVyOjpyZXBvcnRMZWFmKGNvbnN0IHZvaWQqLCBjb25zdCBXVEY6Ok1lbW9yeU9iamVjdEluZm8m
IGluZm8sIGNvbnN0IGNoYXIqIGVkZ2VOYW1lKQoreworICAgIEhlYXBHcmFwaE5vZGUgbm9kZTsK
KyAgICBub2RlLm1fdHlwZSA9IGFkZFN0cmluZyhpbmZvLm9iamVjdFR5cGUoKSk7CisgICAgbm9k
ZS5tX3NpemUgPSBpbmZvLm9iamVjdFNpemUoKTsKKyAgICBub2RlLm1fY2xhc3NOYW1lID0gYWRk
U3RyaW5nKGluZm8uY2xhc3NOYW1lKCkpOworICAgIG5vZGUubV9uYW1lID0gYWRkU3RyaW5nKGlu
Zm8ubmFtZSgpKTsKKworICAgIGludCBub2RlSW5kZXggPSBtX25vZGVzLnNpemUoKTsKKyAgICBt
X25vZGVzLmFwcGVuZChub2RlKTsKKworICAgIEhlYXBHcmFwaEVkZ2UgZWRnZTsKKyAgICBlZGdl
Lm1fdG9JbmRleCA9IG5vZGVJbmRleDsKKyAgICBlZGdlLm1fdGFyZ2V0SW5kZXhJc0tub3duID0g
dHJ1ZTsKKyAgICBlZGdlLm1fbmFtZSA9IGFkZFN0cmluZyhlZGdlTmFtZSk7CisgICAgbV9lZGdl
cy5hcHBlbmQoZWRnZSk7Cit9CisKK3ZvaWQgSGVhcEdyYXBoU2VyaWFsaXplcjo6cmVwb3J0QmFz
ZUFkZHJlc3MoY29uc3Qgdm9pZCogYmFzZSwgY29uc3Qgdm9pZCogcmVhbCkKK3sKKyAgICBtX2Jh
c2VUb1JlYWxBZGRyZXNzLnNldChiYXNlLCByZWFsKTsKK30KKwordm9pZCBIZWFwR3JhcGhTZXJp
YWxpemVyOjphZGp1dEVkZ2VUYXJnZXRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZWRnZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgSGVhcEdyYXBoRWRnZSYgZWRnZSA9IG1f
ZWRnZXNbaV07CisgICAgICAgIGlmIChlZGdlLm1fdGFyZ2V0SW5kZXhJc0tub3duKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGNvbnN0IHZvaWQqIHJlYWxUYXJnZXQgPSBtX2Jhc2VU
b1JlYWxBZGRyZXNzLmdldChlZGdlLm1fdG9PYmplY3QpOworICAgICAgICBpZiAoIXJlYWxUYXJn
ZXQpCisgICAgICAgICAgICByZWFsVGFyZ2V0ID0gZWRnZS5tX3RvT2JqZWN0OworICAgICAgICBl
ZGdlLm1fdG9JbmRleCA9IG1fb2JqZWN0VG9Ob2RlSW5kZXguZ2V0KHJlYWxUYXJnZXQpOworICAg
IH0KK30KKworaW50IEhlYXBHcmFwaFNlcmlhbGl6ZXI6OmFkZFN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZykKK3sKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgU3RyaW5nTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9zdHJpbmdUb0luZGV4LmFkZChz
dHJpbmcsIG1fc3RyaW5ncy5zaXplKCkpOworICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgbV9zdHJpbmdzLmFwcGVuZChzdHJpbmcpOworICAgIHJldHVybiByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0hlYXBH
cmFwaFNlcmlhbGl6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9IZWFwR3JhcGhTZXJp
YWxpemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZWQ4ZWI2NDNmNDNmZDY2NTliYjBhZmM2MjA2YmM3NGE4MGE0
N2NhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9IZWFwR3Jh
cGhTZXJpYWxpemVyLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSGVhcEdyYXBoU2VyaWFsaXpl
cl9oCisjZGVmaW5lIEhlYXBHcmFwaFNlcmlhbGl6ZXJfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RP
UikKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIZWFwR3JhcGhF
ZGdlOworY2xhc3MgSGVhcEdyYXBoTm9kZTsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKKworY2xh
c3MgSGVhcEdyYXBoU2VyaWFsaXplciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGVhcEdy
YXBoU2VyaWFsaXplcik7CitwdWJsaWM6CisgICAgSGVhcEdyYXBoU2VyaWFsaXplcigpOworICAg
IH5IZWFwR3JhcGhTZXJpYWxpemVyKCk7CisgICAgdm9pZCByZXBvcnROb2RlKGNvbnN0IFdURjo6
TWVtb3J5T2JqZWN0SW5mbyYpOworICAgIHZvaWQgcmVwb3J0RWRnZShjb25zdCB2b2lkKiwgY29u
c3Qgdm9pZCosIGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIHJlcG9ydExlYWYoY29uc3Qgdm9pZCos
IGNvbnN0IFdURjo6TWVtb3J5T2JqZWN0SW5mbyYsIGNvbnN0IGNoYXIqKTsKKyAgICB2b2lkIHJl
cG9ydEJhc2VBZGRyZXNzKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKik7CisKKyAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gc2VyaWFsaXplKCk7CisKK3ByaXZhdGU6CisgICAgaW50IGFk
ZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFkanV0RWRnZVRhcmdldHMoKTsKKwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIGludD4gU3RyaW5nTWFwOworICAgIFN0cmluZ01h
cCBtX3N0cmluZ1RvSW5kZXg7CisgICAgVmVjdG9yPFN0cmluZz4gbV9zdHJpbmdzOworICAgIGlu
dCBtX2xhc3RSZXBvcnRlZEVkZ2VJbmRleDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCB2
b2lkKiwgaW50PiBPYmplY3RUb05vZGVJbmRleDsKKyAgICBPYmplY3RUb05vZGVJbmRleCBtX29i
amVjdFRvTm9kZUluZGV4OworCisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IHZvaWQqLCBjb25z
dCB2b2lkKj4gQmFzZVRvUmVhbEFkZHJlc3M7CisgICAgQmFzZVRvUmVhbEFkZHJlc3MgbV9iYXNl
VG9SZWFsQWRkcmVzczsKKworICAgIFZlY3RvcjxIZWFwR3JhcGhOb2RlPiBtX25vZGVzOworICAg
IFZlY3RvcjxIZWFwR3JhcGhFZGdlPiBtX2VkZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gIUVOQUJMRShJTlNQRUNUT1IpCisjZW5kaWYgLy8gIWRlZmluZWQo
SGVhcEdyYXBoU2VyaWFsaXplcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCmluZGV4IGNlN2ExYjQwZTU5MTE1NTNmYTViOWFmZTU4NzI5YmQyYTI3ZDM5MzUuLmNiNTM3
NzY2YWRlZTVmNDJiNjk5ZTEyOTNmODkxNDI1NDAxNTRlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTEwMSw4ICsxMDEsMTIgQEAKICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0UHJvY2Vzc01lbW9y
eURpc3RyaWJ1dGlvbiIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVwb3J0R3JhcGgiLCAidHlwZSI6ICJib29sZWFuIiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIldoZXRoZXIgbmF0aXZlIG1lbW9yeSBn
cmFwaCBzaG91bGQgYmUgcmVwb3J0ZWQgaW4gYWRkaXRpb24gdG8gYWdncmVnYXRlZCBzdGF0aXN0
aWNzLiIgfQorICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBb
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGlzdHJpYnV0aW9uIiwgIiRyZWYiOiAi
TWVtb3J5QmxvY2siLCAiZGVzY3JpcHRpb24iOiAiQW4gb2JqZWN0IGRlc2NyaWJpbmcgYWxsIG1l
bW9yeSBhbGxvY2F0ZWQgYnkgdGhlIHByb2Nlc3MifQorICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImRpc3RyaWJ1dGlvbiIsICIkcmVmIjogIk1lbW9yeUJsb2NrIiwgImRlc2NyaXB0aW9u
IjogIkFuIG9iamVjdCBkZXNjcmliaW5nIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBwcm9j
ZXNzIn0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3JhcGgiLCAidHlwZSI6ICJv
YmplY3QiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiTmF0aXZlIG1lbW9yeSBn
cmFwaC4ifQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAgICAgICAgXQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5k
ZXggMTQ0MTllYjY5ZjI0NmM3ZmFlYmU2Yzg1YThmOTA5NWM3N2EzYTg2ZC4uZjZlYWI4NTJkZDQz
MjM2ZmE4NDJjYzNjNmNhNWFiMWNjZGY1NjYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyTWFwLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIZWFwR3JhcGhTZXJpYWxpemVyLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKQEAgLTUzNSw5ICs1MzYsMTIgQEAgc3Rh
dGljIHZvaWQgYWRkUGxhdGZvcm1Db21wb25lbnRzSW5mbyhQYXNzUmVmUHRyPEluc3BlY3Rvck1l
bW9yeUJsb2Nrcz4gY2hpbGRyZW4KICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yTWVtb3J5QWdl
bnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5z
cGVjdG9yTWVtb3J5QmxvY2s+JiBwcm9jZXNzTWVtb3J5KQordm9pZCBJbnNwZWN0b3JNZW1vcnlB
Z2VudDo6Z2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIGNvbnN0IGJv
b2wqIHJlcG9ydEdyYXBoLCBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+JiBwcm9jZXNzTWVt
b3J5LCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgZ3JhcGgpCiB7Ci0gICAgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uQ2xpZW50SW1wbCBtZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnQ7CisgICAgT3du
UHRyPEhlYXBHcmFwaFNlcmlhbGl6ZXI+IGdyYXBoU2VyaWFsaXplcjsKKyAgICBpZiAocmVwb3J0
R3JhcGgpCisgICAgICAgIGdyYXBoU2VyaWFsaXplciA9IGFkb3B0UHRyKG5ldyBIZWFwR3JhcGhT
ZXJpYWxpemVyKCkpOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGwgbWVtb3J5
SW5zdHJ1bWVudGF0aW9uQ2xpZW50KGdyYXBoU2VyaWFsaXplci5nZXQoKSk7CiAgICAgbV9pbnNw
ZWN0b3JDbGllbnQtPmdldEFsbG9jYXRlZE9iamVjdHMobWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xp
ZW50LmFsbG9jYXRlZE9iamVjdHMoKSk7CiAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCBt
ZW1vcnlJbnN0cnVtZW50YXRpb24oJm1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudCk7CiAKQEAg
LTU2Myw2ICs1NjcsOCBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVt
b3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPElucwogICAgIHByb2Nlc3NNZW1v
cnkgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShXZWJDb3JlTWVtb3J5
VHlwZXM6OlByb2Nlc3NQcml2YXRlTWVtb3J5KTsKICAgICBwcm9jZXNzTWVtb3J5LT5zZXRDaGls
ZHJlbihjaGlsZHJlbik7CiAKKyAgICBpZiAoZ3JhcGhTZXJpYWxpemVyKQorICAgICAgICBncmFw
aCA9IGdyYXBoU2VyaWFsaXplci0+c2VyaWFsaXplKCk7CiAgICAgc2l6ZV90IHByaXZhdGVCeXRl
cyA9IDA7CiAgICAgc2l6ZV90IHNoYXJlZEJ5dGVzID0gMDsKICAgICBNZW1vcnlVc2FnZVN1cHBv
cnQ6OnByb2Nlc3NNZW1vcnlTaXplc0luQnl0ZXMoJnByaXZhdGVCeXRlcywgJnNoYXJlZEJ5dGVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgK
aW5kZXggNjFmMTE1ODBjMDcxZWJiNTM1ZTg3MDcxZDQ3ZWZjNzFlMmVhYjcwNC4uYmQzMzY1YmM3
MmEzYWQ1YWM2OGM2MzFhMzMyZDU5NjdhMmFjMTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgfkluc3BlY3Rvck1lbW9yeUFnZW50KCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0RE9NTm9kZUNvdW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6TWVtb3J5OjpET01Hcm91cD4gPiYgZG9tR3JvdXBzLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6Ok1lbW9yeTo6U3RyaW5nU3RhdGlzdGljcz4mIHN0cmluZ3MpOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrPiYgcHJvY2Vzc01lbW9yeSk7CisgICAg
dmlydHVhbCB2b2lkIGdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBj
b25zdCBib29sKiByZXBvcnRHcmFwaCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpNZW1vcnk6Ok1lbW9y
eUJsb2NrPiYgcHJvY2Vzc01lbW9yeSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGdyYXBoKTsK
IAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0
cnVtZW50YXRpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0
cnVtZW50YXRpb25JbXBsLmNwcAppbmRleCA1MzM4Mjg4NjE1ZGFlYTdjZGZlZWI1NDUyNGQwY2Y1
ZDZkNWNlZDc2Li4yZTU5ZWI2MzAxOTFlY2UyOWQxZjhiNWIyNTVmZjgyODk2MDMzYjA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlv
bkltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50
YXRpb25JbXBsLmgiCiAKKyNpbmNsdWRlICJIZWFwR3JhcGhTZXJpYWxpemVyLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KQEAg
LTk0LDYgKzk1LDMwIEBAIGJvb2wgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6Y2hl
Y2tDb3VudGVkT2JqZWN0KGNvbnN0IHZvaWQqIG9iamVjdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnROb2RlKGNvbnN0
IE1lbW9yeU9iamVjdEluZm8mIG5vZGUpCit7CisgICAgaWYgKG1fZ3JhcGhTZXJpYWxpemVyKQor
ICAgICAgICBtX2dyYXBoU2VyaWFsaXplci0+cmVwb3J0Tm9kZShub2RlKTsKK30KKwordm9pZCBN
ZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnRFZGdlKGNvbnN0IHZvaWQqIHNv
dXJjZSwgY29uc3Qgdm9pZCogdGFyZ2V0LCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGlmICht
X2dyYXBoU2VyaWFsaXplcikKKyAgICAgICAgbV9ncmFwaFNlcmlhbGl6ZXItPnJlcG9ydEVkZ2Uo
c291cmNlLCB0YXJnZXQsIG5hbWUpOworfQorCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkNs
aWVudEltcGw6OnJlcG9ydExlYWYoY29uc3Qgdm9pZCogb3duZXIsIGNvbnN0IE1lbW9yeU9iamVj
dEluZm8mIHRhcmdldCwgY29uc3QgY2hhciogZWRnZU5hbWUpCit7CisgICAgaWYgKG1fZ3JhcGhT
ZXJpYWxpemVyKQorICAgICAgICBtX2dyYXBoU2VyaWFsaXplci0+cmVwb3J0TGVhZihvd25lciwg
dGFyZ2V0LCBlZGdlTmFtZSk7Cit9CisKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50
SW1wbDo6cmVwb3J0QmFzZUFkZHJlc3MoY29uc3Qgdm9pZCogYmFzZSwgY29uc3Qgdm9pZCogcmVh
bCkKK3sKKyAgICBpZiAobV9ncmFwaFNlcmlhbGl6ZXIpCisgICAgICAgIG1fZ3JhcGhTZXJpYWxp
emVyLT5yZXBvcnRCYXNlQWRkcmVzcyhiYXNlLCByZWFsKTsKK30KKwogdm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yTWVtb3J5
QWdlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsLmgKaW5kZXggNTVkOWNkOTlmMWM1MTY0YmIwNmIwN2EzNjEyMTEyMjMwOGZm
YjNkMC4uYmE0Zjk4ZWI4YTRmYmRkZWI1MDg1NWQzYThlMjQyNjVjYmY0NDE1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5o
CkBAIC00Myw2ICs0Myw4IEBAIHVzaW5nIFdURjo6TWVtb3J5T2JqZWN0VHlwZTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBIZWFwR3JhcGhTZXJpYWxpemVyOworCiB0eXBlZGVmIEhh
c2hTZXQ8Y29uc3Qgdm9pZCo+IFZpc2l0ZWRPYmplY3RzOwogdHlwZWRlZiBIYXNoTWFwPFN0cmlu
Zywgc2l6ZV90PiBUeXBlTmFtZVRvU2l6ZU1hcDsKIApAQCAtNTAsOSArNTIsMTAgQEAgY2xhc3Mg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbCA6IHB1YmxpYyBXVEY6Ok1lbW9yeUluc3Ry
dW1lbnRhdGlvbkNsaWVudAogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCB2b2lk
Kiwgc2l6ZV90PiBPYmplY3RUb1NpemVNYXA7CiAKLSAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25D
bGllbnRJbXBsKCkKKyAgICBleHBsaWNpdCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBs
KEhlYXBHcmFwaFNlcmlhbGl6ZXIqIHNlcmlhbGl6ZXIpCiAgICAgICAgIDogbV90b3RhbENvdW50
ZWRPYmplY3RzKDApCiAgICAgICAgICwgbV90b3RhbE9iamVjdHNOb3RJbkFsbG9jYXRlZFNldCgw
KQorICAgICAgICAsIG1fZ3JhcGhTZXJpYWxpemVyKHNlcmlhbGl6ZXIpCiAgICAgeyB9CiAKICAg
ICBzaXplX3QgdG90YWxTaXplKE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSkgY29uc3QKQEAg
LTgxLDEwICs4NCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6
ZShjb25zdCB2b2lkKiwgTWVtb3J5T2JqZWN0VHlwZSwgc2l6ZV90KSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRlZChjb25zdCB2b2lkKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIGNoZWNrQ291bnRlZE9iamVjdChjb25zdCB2b2lkKikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIHJlcG9ydE5vZGUoY29uc3QgTWVtb3J5T2JqZWN0SW5mbyYpIE9WRVJSSURFIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFZGdlKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiwgY29u
c3QgY2hhciopIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRMZWFmKGNvbnN0
IHZvaWQqLCBjb25zdCBNZW1vcnlPYmplY3RJbmZvJiwgY29uc3QgY2hhciopIE9WRVJSSURFIHsg
fQotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRCYXNlQWRkcmVzcyhjb25zdCB2b2lkKiwgY29uc3Qg
dm9pZCopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvcnROb2RlKGNvbnN0IE1l
bW9yeU9iamVjdEluZm8mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RWRnZShj
b25zdCB2b2lkKiwgY29uc3Qgdm9pZCosIGNvbnN0IGNoYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0TGVhZihjb25zdCB2b2lkKiwgY29uc3QgTWVtb3J5T2JqZWN0SW5mbyYs
IGNvbnN0IGNoYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0QmFzZUFkZHJl
c3MoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqKSBPVkVSUklERTsKIAogICAgIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCkBAIC05Niw2ICs5OSw3IEBA
IHByaXZhdGU6CiAgICAgT2JqZWN0VG9TaXplTWFwIG1fY291bnRlZE9iamVjdHM7CiAgICAgc2l6
ZV90IG1fdG90YWxDb3VudGVkT2JqZWN0czsKICAgICBzaXplX3QgbV90b3RhbE9iamVjdHNOb3RJ
bkFsbG9jYXRlZFNldDsKKyAgICBIZWFwR3JhcGhTZXJpYWxpemVyKiBtX2dyYXBoU2VyaWFsaXpl
cjsKIH07CiAKIGNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGwgOiBwdWJsaWMgV1RGOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb24gewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179243</attachid>
            <date>2012-12-13 03:19:38 -0800</date>
            <delta_ts>2012-12-13 06:29:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104888-20121213151657.patch</filename>
            <type>text/plain</type>
            <size>31580</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY0OTVjYTg5MTU1NjFk
NmY0YWY0OTdiZWQ1YjYyMjQ1MjMwNTJjZS4uMDg4ZmQwZDQ1NWJmZmI1YTU2YmZmNDEzZjI0NjVj
M2U2MTM1YjA2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTEyLTEzICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGNvbGxlY3QgbmF0aXZlIGhlYXAgZ3JhcGggYW5kIHJlcG9ydCBpdCB0byB0aGUgZnJvbnQt
ZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ4
ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBhbiBvcHRpb24gdG8gc2VyaWFsaXplIG5hdGl2ZSBoZWFwIGdyYXBoIGluIGEgZm9ybWF0IHNp
bWlsYXIgdG8gdGhhdAorICAgICAgICBvZiBKUyBoZWFwIHByb2ZpbGVyIGFuZCBzZW5kIGl0IGlu
IHJlcGx5IHRvIGdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24KKyAgICAgICAgY29tbWFuZC4g
VGhpcyBpcyBhIGZpcnN0IGF0dGVtcHQgYW5kIHdlIGxpa2VseSBjaGFuZ2UgdGhlIHJlcG9ydCBt
ZWNoYW5pc20gdG8KKyAgICAgICAgdXNlIGEgc3RyZWFtIGluc3RyZWFkIG9mIHNlbmRpbmcgd2hv
bGUgZ3JhcGggYXQgb25jZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGlu
c3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEhlYXBHcmFwaE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SGVhcEdyYXBo
Tm9kZTo6SGVhcEdyYXBoTm9kZSk6CisgICAgICAgIChIZWFwR3JhcGhFZGdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhlYXBHcmFwaEVkZ2U6OkhlYXBHcmFwaEVkZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SGVhcEdyYXBoU2VyaWFsaXplcjo6SGVhcEdyYXBoU2VyaWFsaXplcik6CisgICAgICAgIChX
ZWJDb3JlOjpIZWFwR3JhcGhTZXJpYWxpemVyOjp+SGVhcEdyYXBoU2VyaWFsaXplcik6CisgICAg
ICAgIChXZWJDb3JlOjpIZWFwR3JhcGhTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SGVhcEdyYXBoU2VyaWFsaXplcjo6cmVwb3J0Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpIZWFwR3JhcGhTZXJpYWxpemVyOjpyZXBvcnRFZGdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhlYXBHcmFwaFNlcmlhbGl6ZXI6OnJlcG9ydExlYWYpOgorICAgICAgICAoV2ViQ29yZTo6SGVh
cEdyYXBoU2VyaWFsaXplcjo6cmVwb3J0QmFzZUFkZHJlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SGVhcEdyYXBoU2VyaWFsaXplcjo6YWRqdXRFZGdlVGFyZ2V0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpIZWFwR3JhcGhTZXJpYWxpemVyOjphZGRTdHJpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9I
ZWFwR3JhcGhTZXJpYWxpemVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChI
ZWFwR3JhcGhTZXJpYWxpemVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0
aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAg
ICAgKEluc3BlY3Rvck1lbW9yeUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50
YXRpb25DbGllbnRJbXBsOjpyZXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0RWRnZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpyZXBv
cnRMZWFmKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudElt
cGw6OnJlcG9ydEJhc2VBZGRyZXNzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGll
bnRJbXBsKToKKyAgICAgICAgKE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGwpOgorCiAy
MDEyLTEyLTEyICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBp
biBQbHVnSW5PcmlnaW5IYXNoIHdpdGggZW1wdHkgTUlNRSB0eXBlICgxMDQ4ODIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGU4OWZmMmU3M2Q5NmRhZWEwYTM5NTQ5MDJiMDMxODQyYTAzMTUzODQu
LmRjNGY3YzA2NGVmZGU0NjMxYjg4ZjVjNjMyYjI1NmU3MGU5MmJhMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xNTc1LDYgKzE1NzUsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAKICAgICBpbnNwZWN0b3IvRE9NRWRpdG9yLmNw
cAogICAgIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisgICAgaW5zcGVjdG9yL0hlYXBH
cmFwaFNlcmlhbGl6ZXIuY3BwCiAgICAgaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAK
ICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0QmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDdiYmQ2Mzc0
N2UxYTAzNzk5Yzk5NmQzYjUwYjcyODNhNDgzN2FmNDIuLjNhYzgzYWI2ZDYzMTk0NTQwZjcxZGVl
MjBhMGU5YmZlNzNlMTNjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzY4
Nyw2ICszNjg3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NRWRpdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9IZWFwR3JhcGhTZXJpYWxpemVyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0hlYXBHcmFwaFNlcmlhbGl6ZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA1MWExNGYzOGI4NWFk
MTFjM2FhN2MwM2M3YWI3NDQwYjZjNGFiNjZhLi5mYTMzOWFjMWE0ZmQxMTI4ZTQxYWNkYTE3MTZm
MmU4NmRmZGVjNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTczOSw2ICs3MzksNyBAQCBTT1VSQ0VTICs9
IFwKICAgICBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcCBcCiAgICAgaW5zcGVjdG9y
L0RPTUVkaXRvci5jcHAgXAogICAgIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIFwKKyAg
ICBpbnNwZWN0b3IvSGVhcEdyYXBoU2VyaWFsaXplci5jcHAgXAogICAgIGluc3BlY3Rvci9JZGVu
dGlmaWVyc0ZhY3RvcnkuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIFwK
ICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcCBcCkBAIC0xODkzLDYgKzE4OTQs
NyBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmggXAog
ICAgIGluc3BlY3Rvci9ET01FZGl0b3IuaCBcCiAgICAgaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5oIFwKKyAgICBpbnNwZWN0b3IvSGVhcEdyYXBoU2VyaWFsaXplci5oIFwKICAgICBpbnNwZWN0
b3IvSWRlbnRpZmllcnNGYWN0b3J5LmggXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
IFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmggXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDY5MGQxODgxNjRiNDU5YzM5ZDRhMTNlMWIzZjM3NjJlOTU4NzEwZTAuLmFmY2YyZWFmMWU5
NDUzYTM5YTI0MWY3Zjc0Zjc0OGJmNmFmNzNmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE3NzQs
NiArMTc3NCw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0RPTUVkaXRvci5oJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSGVhcEdy
YXBoU2VyaWFsaXplci5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9IZWFwR3JhcGhTZXJp
YWxpemVyLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuY3Bw
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5LmgnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAyNWVlM2MwMjk4MWM5NTRkNjBkZmYx
NTQyYjVjMDNmZmM1ZjQyZDJiLi4yOTZiYzI0MDY2YThmOGM0NDFjMWMzNDIwNDYwYjkyMmQxMmNk
M2JkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtNzQ4MTQsNiArNzQ4MTQsMzAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEhlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwIgorCQkJ
CT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSGVh
cEdyYXBoU2VyaWFsaXplci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSWRlbnRpZmllcnNGYWN0b3J5LmNwcCIKIAkJCQk+CiAJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzFiNTIxOTM5NWJjYjcwNzA1OGNkZGVmMDA4MzU0
OGI5MzY3ODBiMi4uOTVhNDcyZDQyMjQ5YmU2ODQyZDNhODU0MTAzYzQxNTM5NWUzM2VkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMzY4Myw4ICszNjgzLDYgQEAKIAkJOTdCQzZBMjcxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFi
YXNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0JDNjlFNTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VDb250ZXh0LmNwcCAqLzsg
fTsKIAkJOTdCQzZBMjgxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzY5RTYxNTA1RjA4
MTAwMUI3NEFDIC8qIERhdGFiYXNlQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3QkM2QTI5MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3QkM2OUU3MTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZURldGFpbHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlGRTQ1NkYxODE2NzdE
NzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRh
YmFzZU1hbmFnZXIuY3BwICovOyB9OwotCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURERjkgLyogRGF0
YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTdCQzZBMkExNTA1
RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlFODE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJh
c2VTeW5jLmNwcCAqLzsgfTsKIAkJOTdCQzZBMkIxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNl
U3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdC
QzY5RTkxNTA1RjA4MTAwMUI3NEFDIC8qIERhdGFiYXNlU3luYy5oICovOyB9OwogCQk5N0JDNkEy
RDE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2VUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUVCMTUwNUYwODEwMDFCNzRBQyAvKiBE
YXRhYmFzZVRhc2suY3BwICovOyB9OwpAQCAtNjI4Niw2ICs2Mjg0LDggQEAKIAkJRjM2RTA3QTQx
MzU4QThCRTAwQUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2RTA3QTIxMzU4QThCRTAw
QUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovOyB9OwogCQlGMzZFMDdB
NTEzNThBOEJFMDBBQUNCQzkgLyogV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2RTA3QTMxMzU4QThCRTAw
QUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJRjM3NUNDMDcx
MTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzc1Q0MwNjExNTBEMzAwMDA4RERC
ODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLzsgfTsKKwkJRjM3QTU2MjIxNjc5Q0Y3
QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM3QTU2MjAxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhl
YXBHcmFwaFNlcmlhbGl6ZXIuY3BwICovOyB9OworCQlGMzdBNTYyMzE2NzlDRjdCMDBDNTcwNDYg
LyogSGVhcEdyYXBoU2VyaWFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjM3QTU2MjExNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlh
bGl6ZXIuaCAqLzsgfTsKIAkJRjM4MTBDMUIxMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3Rvcldv
cmtlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYzODEwQzE5MTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAg
Ki87IH07CiAJCUYzODEwQzFDMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM4MTBD
MUExMzY1QTQ5NjAwRUQ2RTMzIC8qIEluc3BlY3RvcldvcmtlckFnZW50LmggKi87IH07CiAJCUYz
ODIwODkyMTQ3RDM1RjkwMDEwQkMwNiAvKiBQYWdlQ29uc29sZUFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzODIwODhBMTQ3RDM1RjkwMDEw
QkMwNiAvKiBQYWdlQ29uc29sZUFnZW50LmNwcCAqLzsgfTsKQEAgLTY2NDEsNiArNjY0MSw4IEBA
CiAJCUZERjZCQUY5MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRG
NkJBRjcxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50Lmgg
Ki87IH07CiAJCUZERjdFOUMzMTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkRG
N0U5QzExM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgKi87IH07
CiAJCUZERjdFOUM0MTNBQzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZERjdFOUMyMTNB
QzIxREIwMEE1MUVBQyAvKiBKU0F1ZGlvQnVmZmVyQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkU0NTZG
MTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkg
LyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5
IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNkZE
NDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0ODUwRjY3NkU1NzAwMDkyODczIC8qIENv
b3JkaW5hdGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5
MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwogCQlGRTZGRDQ4RTBGNjc2RTkz
MDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEMwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0
ZXMuaCAqLzsgfTsKQEAgLTEzNzgxLDYgKzEzNzgzLDggQEAKIAkJRjM2RTA3QTIxMzU4QThCRTAw
QUFDQkM5IC8qIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNkUwN0EzMTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvcldvcmtlclJlc291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzN0E1NjIwMTY3OUNGN0IwMEM1NzA0
NiAvKiBIZWFwR3JhcGhTZXJpYWxpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGMzdBNTYyMTE2NzlDRjdCMDBDNTcwNDYgLyogSGVhcEdyYXBoU2VyaWFsaXplci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwR3JhcGhTZXJpYWxpemVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzODEwQzE5MTM2NUE0OTYwMEVENkUzMyAv
KiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUYzODEwQzFBMTM2NUE0OTYwMEVENkUzMyAvKiBJbnNwZWN0b3JXb3JrZXJBZ2VudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JXb3JrZXJBZ2VudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzgyMDg4QTE0N0QzNUY5MDAxMEJDMDYg
LyogUGFnZUNvbnNvbGVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQYWdlQ29uc29sZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE0ODQwLDYgKzE0ODQ0LDggQEAKIAkJCQk3QUFCQTI1ODE0QkM2MTMzMDBBQTlBMTEgLyogRE9N
RWRpdG9yLmggKi8sCiAJCQkJN0E1NDg4MTYxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3Vw
cG9ydC5jcHAgKi8sCiAJCQkJN0E1NDg4MTUxNEU0MzJBMTAwNkFFMDVBIC8qIERPTVBhdGNoU3Vw
cG9ydC5oICovLAorCQkJCUYzN0E1NjIwMTY3OUNGN0IwMEM1NzA0NiAvKiBIZWFwR3JhcGhTZXJp
YWxpemVyLmNwcCAqLywKKwkJCQlGMzdBNTYyMTE2NzlDRjdCMDBDNTcwNDYgLyogSGVhcEdyYXBo
U2VyaWFsaXplci5oICovLAogCQkJCTU5MTNBMjNGMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVudGlm
aWVyc0ZhY3RvcnkuY3BwICovLAogCQkJCTU5MTNBMjQwMTNENDlFQkEwMEY1QjA1QyAvKiBJZGVu
dGlmaWVyc0ZhY3RvcnkuaCAqLywKIAkJCQlGMzY0NEFGRDExMTk4MDU5MDBFMEQ1MzcgLyogSW5q
ZWN0ZWRTY3JpcHQuY3BwICovLApAQCAtMjU5MTMsNiArMjU5MTksNyBAQAogCQkJCUUxNTEzRDRG
MTY3N0VBODMwMDE0OUZDQiAvKiBJbml0aWFsaXplTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkRBOTMyNUUxNjcwM0IyQTAwODk4MkRDIC8qIE9mZmxpbmVBdWRpb0NvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZEQTkzMjY3MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVBdWRp
b0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCUYzN0E1NjIzMTY3OUNGN0IwMEM1NzA0NiAv
KiBIZWFwR3JhcGhTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI5MDIxLDYgKzI5MDI4
LDcgQEAKIAkJCQlGREE5MzI1RDE2NzAzQjJBMDA4OTgyREMgLyogT2ZmbGluZUF1ZGlvQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGREE5MzI2NjE2NzAzQkE5MDA4OTgyREMgLyogSlNP
ZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNDU2RjE4MTY3N0Q3
NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjM3
QTU2MjIxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSGVhcEdyYXBoU2Vy
aWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSGVhcEdyYXBoU2VyaWFsaXpl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTA4YTVhNzhmM2Y0MWZjOTQyODg0ODdiODFhNTUwNmI3NDczZWNl
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9IZWFwR3JhcGhT
ZXJpYWxpemVyLmNwcApAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisKKyNpbmNsdWRlICJIZWFwR3JhcGhTZXJpYWxpemVyLmgiCisK
KyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL01lbW9yeU9iamVjdEluZm8uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSGVhcEdyYXBoTm9kZSB7CitwdWJsaWM6CisgICAgSGVhcEdyYXBoTm9kZSgp
CisgICAgICAgIDogbV90eXBlKDApCisgICAgICAgICwgbV9zaXplKDApCisgICAgICAgICwgbV9j
bGFzc05hbWUoMCkKKyAgICAgICAgLCBtX25hbWUoMCkKKyAgICAgICAgLCBtX2VkZ2VDb3VudCgw
KQorICAgIHsKKyAgICB9CisKKyAgICBpbnQgbV90eXBlOworICAgIHVuc2lnbmVkIG1fc2l6ZTsK
KyAgICBpbnQgbV9jbGFzc05hbWU7CisgICAgaW50IG1fbmFtZTsKKyAgICBpbnQgbV9lZGdlQ291
bnQ7Cit9OworCitjbGFzcyBIZWFwR3JhcGhFZGdlIHsKK3B1YmxpYzoKKyAgICBIZWFwR3JhcGhF
ZGdlKCkKKyAgICAgICAgOiBtX3R5cGUoMCkKKyAgICAgICAgLCBtX3RhcmdldEluZGV4SXNLbm93
bihmYWxzZSkKKyAgICAgICAgLCBtX3RvSW5kZXgoMCkKKyAgICAgICAgLCBtX25hbWUoMCkKKyAg
ICB7CisgICAgfQorCisgICAgaW50IG1fdHlwZTsKKyAgICBib29sIG1fdGFyZ2V0SW5kZXhJc0tu
b3duOworICAgIHVuaW9uIHsKKyAgICAgICAgY29uc3Qgdm9pZCogbV90b09iamVjdDsKKyAgICAg
ICAgaW50IG1fdG9JbmRleDsKKyAgICB9OworICAgIGludCBtX25hbWU7Cit9OworCitIZWFwR3Jh
cGhTZXJpYWxpemVyOjpIZWFwR3JhcGhTZXJpYWxpemVyKCkKKyAgICA6IG1fbGFzdFJlcG9ydGVk
RWRnZUluZGV4KDApCit7CisgICAgbV9zdHJpbmdzLmFwcGVuZChTdHJpbmcoKSk7Cit9CisKK0hl
YXBHcmFwaFNlcmlhbGl6ZXI6On5IZWFwR3JhcGhTZXJpYWxpemVyKCkKK3sKK30KKwordm9pZCBI
ZWFwR3JhcGhTZXJpYWxpemVyOjpyZXBvcnROb2RlKGNvbnN0IFdURjo6TWVtb3J5T2JqZWN0SW5m
byYgaW5mbykKK3sKKyAgICBIZWFwR3JhcGhOb2RlIG5vZGU7CisgICAgbm9kZS5tX3R5cGUgPSBh
ZGRTdHJpbmcoaW5mby5vYmplY3RUeXBlKCkpOworICAgIG5vZGUubV9zaXplID0gaW5mby5vYmpl
Y3RTaXplKCk7CisgICAgbm9kZS5tX2NsYXNzTmFtZSA9IGFkZFN0cmluZyhpbmZvLmNsYXNzTmFt
ZSgpKTsKKyAgICBub2RlLm1fbmFtZSA9IGFkZFN0cmluZyhpbmZvLm5hbWUoKSk7CisgICAgLy8g
Tm9kZSBpcyBhbHdheXMgcmVwb3J0ZWQgYWZ0ZXIgaXRzIG91dGdvaW5nIGVkZ2VzIGFuZCBsZWF2
ZXMuCisgICAgbm9kZS5tX2VkZ2VDb3VudCA9IG1fZWRnZXMuc2l6ZSgpIC0gbV9sYXN0UmVwb3J0
ZWRFZGdlSW5kZXg7CisgICAgbV9sYXN0UmVwb3J0ZWRFZGdlSW5kZXggPSBtX2VkZ2VzLnNpemUo
KTsKKworICAgIG1fb2JqZWN0VG9Ob2RlSW5kZXguc2V0KGluZm8ucmVwb3J0ZWRQb2ludGVyKCks
IG1fbm9kZXMuc2l6ZSgpKTsKKyAgICBtX25vZGVzLmFwcGVuZChub2RlKTsKK30KKwordm9pZCBI
ZWFwR3JhcGhTZXJpYWxpemVyOjpyZXBvcnRFZGdlKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiB0
bywgY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBIZWFwR3JhcGhFZGdlIGVkZ2U7CisgICAgZWRn
ZS5tX3RvT2JqZWN0ID0gdG87CisgICAgZWRnZS5tX25hbWUgPSBhZGRTdHJpbmcobmFtZSk7Cisg
ICAgbV9lZGdlcy5hcHBlbmQoZWRnZSk7Cit9CisKK3ZvaWQgSGVhcEdyYXBoU2VyaWFsaXplcjo6
cmVwb3J0TGVhZihjb25zdCB2b2lkKiwgY29uc3QgV1RGOjpNZW1vcnlPYmplY3RJbmZvJiBpbmZv
LCBjb25zdCBjaGFyKiBlZGdlTmFtZSkKK3sKKyAgICBIZWFwR3JhcGhOb2RlIG5vZGU7CisgICAg
bm9kZS5tX3R5cGUgPSBhZGRTdHJpbmcoaW5mby5vYmplY3RUeXBlKCkpOworICAgIG5vZGUubV9z
aXplID0gaW5mby5vYmplY3RTaXplKCk7CisgICAgbm9kZS5tX2NsYXNzTmFtZSA9IGFkZFN0cmlu
ZyhpbmZvLmNsYXNzTmFtZSgpKTsKKyAgICBub2RlLm1fbmFtZSA9IGFkZFN0cmluZyhpbmZvLm5h
bWUoKSk7CisKKyAgICBpbnQgbm9kZUluZGV4ID0gbV9ub2Rlcy5zaXplKCk7CisgICAgbV9ub2Rl
cy5hcHBlbmQobm9kZSk7CisKKyAgICBIZWFwR3JhcGhFZGdlIGVkZ2U7CisgICAgZWRnZS5tX3Rv
SW5kZXggPSBub2RlSW5kZXg7CisgICAgZWRnZS5tX3RhcmdldEluZGV4SXNLbm93biA9IHRydWU7
CisgICAgZWRnZS5tX25hbWUgPSBhZGRTdHJpbmcoZWRnZU5hbWUpOworICAgIG1fZWRnZXMuYXBw
ZW5kKGVkZ2UpOworfQorCit2b2lkIEhlYXBHcmFwaFNlcmlhbGl6ZXI6OnJlcG9ydEJhc2VBZGRy
ZXNzKGNvbnN0IHZvaWQqIGJhc2UsIGNvbnN0IHZvaWQqIHJlYWwpCit7CisgICAgbV9iYXNlVG9S
ZWFsQWRkcmVzcy5zZXQoYmFzZSwgcmVhbCk7Cit9CisKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBIZWFwR3JhcGhTZXJpYWxpemVyOjpzZXJpYWxpemUoKQoreworICAgIGFkanV0RWRnZVRh
cmdldHMoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IG5vZGVzID0gSW5zcGVjdG9yQXJy
YXk6OmNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ub2Rlcy5zaXplKCk7
IGkrKykgeworICAgICAgICBIZWFwR3JhcGhOb2RlJiBub2RlID0gbV9ub2Rlc1tpXTsKKyAgICAg
ICAgbm9kZXMtPnB1c2hJbnQobm9kZS5tX3R5cGUpOworICAgICAgICBub2Rlcy0+cHVzaEludChu
b2RlLm1fc2l6ZSk7CisgICAgICAgIG5vZGVzLT5wdXNoSW50KG5vZGUubV9jbGFzc05hbWUpOwor
ICAgICAgICBub2Rlcy0+cHVzaEludChub2RlLm1fbmFtZSk7CisgICAgICAgIG5vZGVzLT5wdXNo
SW50KG5vZGUubV9lZGdlQ291bnQpOworICAgIH0KKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
IGVkZ2VzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9lZGdlcy5zaXplKCk7IGkrKykgeworICAgICAgICBIZWFwR3JhcGhFZGdlJiBlZGdl
ID0gbV9lZGdlc1tpXTsKKyAgICAgICAgZWRnZXMtPnB1c2hJbnQoZWRnZS5tX3R5cGUpOworICAg
ICAgICBlZGdlcy0+cHVzaEludChlZGdlLm1fdG9JbmRleCk7CisgICAgICAgIGVkZ2VzLT5wdXNo
SW50KGVkZ2UubV9uYW1lKTsKKyAgICB9CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBzdHJp
bmdzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9zdHJpbmdzLnNpemUoKTsgaSsrKQorICAgICAgICBzdHJpbmdzLT5wdXNoU3RyaW5nKG1f
c3RyaW5nc1tpXSk7CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBncmFwaCA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgZ3JhcGgtPnNldEFycmF5KCJub2RlcyIsIG5vZGVz
KTsKKyAgICBncmFwaC0+c2V0QXJyYXkoImVkZ2VzIiwgZWRnZXMpOworICAgIGdyYXBoLT5zZXRB
cnJheSgic3RyaW5ncyIsIHN0cmluZ3MpOworICAgIHJldHVybiBncmFwaC5yZWxlYXNlKCk7Cit9
CisKK3ZvaWQgSGVhcEdyYXBoU2VyaWFsaXplcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6Okluc3BlY3Rv
cik7CisgICAgaW5mby5hZGRNZW1iZXIobV9zdHJpbmdUb0luZGV4KTsKKyAgICBpbmZvLmFkZE1l
bWJlcihtX3N0cmluZ3MpOworICAgIGluZm8uYWRkTWVtYmVyKG1fb2JqZWN0VG9Ob2RlSW5kZXgp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fYmFzZVRvUmVhbEFkZHJlc3MpOworICAgIGluZm8uYWRk
TWVtYmVyKG1fbm9kZXMpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZWRnZXMpOworfQorCitpbnQg
SGVhcEdyYXBoU2VyaWFsaXplcjo6YWRkU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorewor
ICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBTdHJpbmdN
YXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX3N0cmluZ1RvSW5kZXguYWRkKHN0cmluZywgbV9zdHJp
bmdzLnNpemUoKSk7CisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBtX3N0cmlu
Z3MuYXBwZW5kKHN0cmluZyk7CisgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7Cit9
CisKK3ZvaWQgSGVhcEdyYXBoU2VyaWFsaXplcjo6YWRqdXRFZGdlVGFyZ2V0cygpCit7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2VkZ2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIEhl
YXBHcmFwaEVkZ2UmIGVkZ2UgPSBtX2VkZ2VzW2ldOworICAgICAgICBpZiAoZWRnZS5tX3Rhcmdl
dEluZGV4SXNLbm93bikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb25zdCB2b2lk
KiByZWFsVGFyZ2V0ID0gbV9iYXNlVG9SZWFsQWRkcmVzcy5nZXQoZWRnZS5tX3RvT2JqZWN0KTsK
KyAgICAgICAgaWYgKCFyZWFsVGFyZ2V0KQorICAgICAgICAgICAgcmVhbFRhcmdldCA9IGVkZ2Uu
bV90b09iamVjdDsKKyAgICAgICAgZWRnZS5tX3RvSW5kZXggPSBtX29iamVjdFRvTm9kZUluZGV4
LmdldChyZWFsVGFyZ2V0KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSGVhcEdyYXBoU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0hlYXBHcmFwaFNlcmlhbGl6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTEwYTdmMzQ0YTliMTAwNWI2Mzli
YTZmYTkyY2RkNTE2NTY5OTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0hlYXBHcmFwaFNlcmlhbGl6ZXIuaApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIZWFw
R3JhcGhTZXJpYWxpemVyX2gKKyNkZWZpbmUgSGVhcEdyYXBoU2VyaWFsaXplcl9oCisKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaD4KKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEhlYXBHcmFwaEVkZ2U7CitjbGFzcyBIZWFwR3JhcGhOb2RlOworY2xhc3MgSW5zcGVjdG9y
T2JqZWN0OworCitjbGFzcyBIZWFwR3JhcGhTZXJpYWxpemVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShIZWFwR3JhcGhTZXJpYWxpemVyKTsKK3B1YmxpYzoKKyAgICBIZWFwR3JhcGhTZXJp
YWxpemVyKCk7CisgICAgfkhlYXBHcmFwaFNlcmlhbGl6ZXIoKTsKKyAgICB2b2lkIHJlcG9ydE5v
ZGUoY29uc3QgV1RGOjpNZW1vcnlPYmplY3RJbmZvJik7CisgICAgdm9pZCByZXBvcnRFZGdlKGNv
bnN0IHZvaWQqLCBjb25zdCB2b2lkKiwgY29uc3QgY2hhciopOworICAgIHZvaWQgcmVwb3J0TGVh
Zihjb25zdCB2b2lkKiwgY29uc3QgV1RGOjpNZW1vcnlPYmplY3RJbmZvJiwgY29uc3QgY2hhciop
OworICAgIHZvaWQgcmVwb3J0QmFzZUFkZHJlc3MoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqKTsK
KworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzZXJpYWxpemUoKTsKKworICAgIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCitwcml2YXRl
OgorICAgIGludCBhZGRTdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBhZGp1dEVkZ2VU
YXJnZXRzKCk7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IFN0cmluZ01hcDsK
KyAgICBTdHJpbmdNYXAgbV9zdHJpbmdUb0luZGV4OworICAgIFZlY3RvcjxTdHJpbmc+IG1fc3Ry
aW5nczsKKyAgICBpbnQgbV9sYXN0UmVwb3J0ZWRFZGdlSW5kZXg7CisKKyAgICB0eXBlZGVmIEhh
c2hNYXA8Y29uc3Qgdm9pZCosIGludD4gT2JqZWN0VG9Ob2RlSW5kZXg7CisgICAgT2JqZWN0VG9O
b2RlSW5kZXggbV9vYmplY3RUb05vZGVJbmRleDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25z
dCB2b2lkKiwgY29uc3Qgdm9pZCo+IEJhc2VUb1JlYWxBZGRyZXNzOworICAgIEJhc2VUb1JlYWxB
ZGRyZXNzIG1fYmFzZVRvUmVhbEFkZHJlc3M7CisKKyAgICBWZWN0b3I8SGVhcEdyYXBoTm9kZT4g
bV9ub2RlczsKKyAgICBWZWN0b3I8SGVhcEdyYXBoRWRnZT4gbV9lZGdlczsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFFTkFCTEUoSU5TUEVDVE9SKQorI2VuZGlm
IC8vICFkZWZpbmVkKEhlYXBHcmFwaFNlcmlhbGl6ZXJfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCBjZTdhMWI0MGU1OTExNTUzZmE1YjlhZmU1ODcyOWJkMmEy
N2QzOTM1Li5jYjUzNzc2NmFkZWU1ZjQyYjY5OWUxMjkzZjg5MTQyNTQwMTU0ZTRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xMDEsOCArMTAxLDEyIEBACiAg
ICAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImdl
dFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcG9ydEdyYXBoIiwgInR5cGUi
OiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXaGV0aGVyIG5h
dGl2ZSBtZW1vcnkgZ3JhcGggc2hvdWxkIGJlIHJlcG9ydGVkIGluIGFkZGl0aW9uIHRvIGFnZ3Jl
Z2F0ZWQgc3RhdGlzdGljcy4iIH0KKyAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAg
ICJyZXR1cm5zIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRpc3RyaWJ1dGlv
biIsICIkcmVmIjogIk1lbW9yeUJsb2NrIiwgImRlc2NyaXB0aW9uIjogIkFuIG9iamVjdCBkZXNj
cmliaW5nIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBwcm9jZXNzIn0KKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJkaXN0cmlidXRpb24iLCAiJHJlZiI6ICJNZW1vcnlCbG9jayIs
ICJkZXNjcmlwdGlvbiI6ICJBbiBvYmplY3QgZGVzY3JpYmluZyBhbGwgbWVtb3J5IGFsbG9jYXRl
ZCBieSB0aGUgcHJvY2VzcyJ9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImdyYXBo
IiwgInR5cGUiOiAib2JqZWN0IiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk5h
dGl2ZSBtZW1vcnkgZ3JhcGguIn0KICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9CiAg
ICAgICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCmluZGV4IDE0NDE5ZWI2OWYyNDZjN2ZhZWJlNmM4NWE4ZjkwOTVjNzdhM2E4NmQu
LjQyOTUxMWNmMTg3ZDU4YTRmMDA5ZjI3ZTNhMzM3ODU5MTU5ZDg3MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lck1h
cC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSGVhcEdyYXBoU2VyaWFsaXplci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kLmgiCkBAIC01MzUsOSAr
NTM2LDEyIEBAIHN0YXRpYyB2b2lkIGFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8oUGFzc1JlZlB0
cjxJbnNwZWN0b3JNZW1vcnlCbG9ja3M+IGNoaWxkcmVuCiAgICAgfQogfQogCi12b2lkIEluc3Bl
Y3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5n
KiwgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiYgcHJvY2Vzc01lbW9yeSkKK3ZvaWQgSW5z
cGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJp
bmcqLCBjb25zdCBib29sKiByZXBvcnRHcmFwaCwgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nr
PiYgcHJvY2Vzc01lbW9yeSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGdyYXBoKQogewotICAg
IE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGwgbWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xp
ZW50OworICAgIE93blB0cjxIZWFwR3JhcGhTZXJpYWxpemVyPiBncmFwaFNlcmlhbGl6ZXI7Cisg
ICAgaWYgKHJlcG9ydEdyYXBoKQorICAgICAgICBncmFwaFNlcmlhbGl6ZXIgPSBhZG9wdFB0cihu
ZXcgSGVhcEdyYXBoU2VyaWFsaXplcigpKTsKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGll
bnRJbXBsIG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudChncmFwaFNlcmlhbGl6ZXIuZ2V0KCkp
OwogICAgIG1faW5zcGVjdG9yQ2xpZW50LT5nZXRBbGxvY2F0ZWRPYmplY3RzKG1lbW9yeUluc3Ry
dW1lbnRhdGlvbkNsaWVudC5hbGxvY2F0ZWRPYmplY3RzKCkpOwogICAgIE1lbW9yeUluc3RydW1l
bnRhdGlvbkltcGwgbWVtb3J5SW5zdHJ1bWVudGF0aW9uKCZtZW1vcnlJbnN0cnVtZW50YXRpb25D
bGllbnQpOwogCkBAIC01NTQsNiArNTU4LDEwIEBAIHZvaWQgSW5zcGVjdG9yTWVtb3J5QWdlbnQ6
OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zCiAg
ICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLmFkZFJvb3RPYmplY3QodGhpcyk7CiAgICAgbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmFkZFJvb3RPYmplY3QobWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsKICAg
ICBtZW1vcnlJbnN0cnVtZW50YXRpb24uYWRkUm9vdE9iamVjdChtZW1vcnlJbnN0cnVtZW50YXRp
b25DbGllbnQpOworICAgIGlmIChncmFwaFNlcmlhbGl6ZXIpIHsKKyAgICAgICAgbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmFkZFJvb3RPYmplY3QoZ3JhcGhTZXJpYWxpemVyLmdldCgpKTsKKyAgICAg
ICAgZ3JhcGggPSBncmFwaFNlcmlhbGl6ZXItPnNlcmlhbGl6ZSgpOworICAgIH0KIAogICAgIG1f
aW5zcGVjdG9yQ2xpZW50LT5kdW1wVW5jb3VudGVkQWxsb2NhdGVkT2JqZWN0cyhtZW1vcnlJbnN0
cnVtZW50YXRpb25DbGllbnQuY291bnRlZE9iamVjdHMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggNjFmMTE1ODBjMDcxZWJi
NTM1ZTg3MDcxZDQ3ZWZjNzFlMmVhYjcwNC4uYmQzMzY1YmM3MmEzYWQ1YWM2OGM2MzFhMzMyZDU5
NjdhMmFjMTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1l
bW9yeUFnZW50LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluc3Bl
Y3Rvck1lbW9yeUFnZW50KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RE9NTm9kZUNvdW50KEVy
cm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TWVtb3J5
OjpET01Hcm91cD4gPiYgZG9tR3JvdXBzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok1lbW9yeTo6U3Ry
aW5nU3RhdGlzdGljcz4mIHN0cmluZ3MpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9jZXNzTWVt
b3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpNZW1vcnk6
Ok1lbW9yeUJsb2NrPiYgcHJvY2Vzc01lbW9yeSk7CisgICAgdmlydHVhbCB2b2lkIGdldFByb2Nl
c3NNZW1vcnlEaXN0cmlidXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiByZXBvcnRHcmFw
aCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrPiYgcHJvY2Vzc01lbW9y
eSwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGdyYXBoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcApp
bmRleCA1MzM4Mjg4NjE1ZGFlYTdjZGZlZWI1NDUyNGQwY2Y1ZDZkNWNlZDc2Li4yZTU5ZWI2MzAx
OTFlY2UyOWQxZjhiNWIyNTVmZjgyODk2MDMzYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAKICNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgiCiAKKyNpbmNs
dWRlICJIZWFwR3JhcGhTZXJpYWxpemVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KQEAgLTk0LDYgKzk1LDMwIEBAIGJvb2wg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6Y2hlY2tDb3VudGVkT2JqZWN0KGNvbnN0
IHZvaWQqIG9iamVjdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb25DbGllbnRJbXBsOjpyZXBvcnROb2RlKGNvbnN0IE1lbW9yeU9iamVjdEluZm8mIG5v
ZGUpCit7CisgICAgaWYgKG1fZ3JhcGhTZXJpYWxpemVyKQorICAgICAgICBtX2dyYXBoU2VyaWFs
aXplci0+cmVwb3J0Tm9kZShub2RlKTsKK30KKwordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25D
bGllbnRJbXBsOjpyZXBvcnRFZGdlKGNvbnN0IHZvaWQqIHNvdXJjZSwgY29uc3Qgdm9pZCogdGFy
Z2V0LCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGlmIChtX2dyYXBoU2VyaWFsaXplcikKKyAg
ICAgICAgbV9ncmFwaFNlcmlhbGl6ZXItPnJlcG9ydEVkZ2Uoc291cmNlLCB0YXJnZXQsIG5hbWUp
OworfQorCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnJlcG9ydExlYWYo
Y29uc3Qgdm9pZCogb3duZXIsIGNvbnN0IE1lbW9yeU9iamVjdEluZm8mIHRhcmdldCwgY29uc3Qg
Y2hhciogZWRnZU5hbWUpCit7CisgICAgaWYgKG1fZ3JhcGhTZXJpYWxpemVyKQorICAgICAgICBt
X2dyYXBoU2VyaWFsaXplci0+cmVwb3J0TGVhZihvd25lciwgdGFyZ2V0LCBlZGdlTmFtZSk7Cit9
CisKK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbDo6cmVwb3J0QmFzZUFkZHJl
c3MoY29uc3Qgdm9pZCogYmFzZSwgY29uc3Qgdm9pZCogcmVhbCkKK3sKKyAgICBpZiAobV9ncmFw
aFNlcmlhbGl6ZXIpCisgICAgICAgIG1fZ3JhcGhTZXJpYWxpemVyLT5yZXBvcnRCYXNlQWRkcmVz
cyhiYXNlLCByZWFsKTsKK30KKwogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBs
OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IFdlYkNvcmVNZW1vcnlUeXBlczo6SW5zcGVjdG9yTWVtb3J5QWdlbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmgKaW5kZXgg
NTVkOWNkOTlmMWM1MTY0YmIwNmIwN2EzNjEyMTEyMjMwOGZmYjNkMC4uYmE0Zjk4ZWI4YTRmYmRk
ZWI1MDg1NWQzYThlMjQyNjVjYmY0NDE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oCkBAIC00Myw2ICs0Myw4IEBAIHVz
aW5nIFdURjo6TWVtb3J5T2JqZWN0VHlwZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBIZWFwR3JhcGhTZXJpYWxpemVyOworCiB0eXBlZGVmIEhhc2hTZXQ8Y29uc3Qgdm9pZCo+IFZp
c2l0ZWRPYmplY3RzOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgc2l6ZV90PiBUeXBlTmFtZVRv
U2l6ZU1hcDsKIApAQCAtNTAsOSArNTIsMTAgQEAgY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
Q2xpZW50SW1wbCA6IHB1YmxpYyBXVEY6Ok1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudAogcHVi
bGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCB2b2lkKiwgc2l6ZV90PiBPYmplY3RUb1Np
emVNYXA7CiAKLSAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsKCkKKyAgICBleHBs
aWNpdCBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsKEhlYXBHcmFwaFNlcmlhbGl6ZXIq
IHNlcmlhbGl6ZXIpCiAgICAgICAgIDogbV90b3RhbENvdW50ZWRPYmplY3RzKDApCiAgICAgICAg
ICwgbV90b3RhbE9iamVjdHNOb3RJbkFsbG9jYXRlZFNldCgwKQorICAgICAgICAsIG1fZ3JhcGhT
ZXJpYWxpemVyKHNlcmlhbGl6ZXIpCiAgICAgeyB9CiAKICAgICBzaXplX3QgdG90YWxTaXplKE1l
bW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSkgY29uc3QKQEAgLTgxLDEwICs4NCwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShjb25zdCB2b2lkKiwgTWVtb3J5
T2JqZWN0VHlwZSwgc2l6ZV90KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRlZChj
b25zdCB2b2lkKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGNoZWNrQ291bnRlZE9iamVj
dChjb25zdCB2b2lkKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcG9ydE5vZGUoY29u
c3QgTWVtb3J5T2JqZWN0SW5mbyYpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXBv
cnRFZGdlKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiwgY29uc3QgY2hhciopIE9WRVJSSURFIHsg
fQotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRMZWFmKGNvbnN0IHZvaWQqLCBjb25zdCBNZW1vcnlP
YmplY3RJbmZvJiwgY29uc3QgY2hhciopIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRCYXNlQWRkcmVzcyhjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopIE9WRVJSSURFIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZXBvcnROb2RlKGNvbnN0IE1lbW9yeU9iamVjdEluZm8mKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RWRnZShjb25zdCB2b2lkKiwgY29uc3Qgdm9p
ZCosIGNvbnN0IGNoYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TGVhZihj
b25zdCB2b2lkKiwgY29uc3QgTWVtb3J5T2JqZWN0SW5mbyYsIGNvbnN0IGNoYXIqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0QmFzZUFkZHJlc3MoY29uc3Qgdm9pZCosIGNvbnN0
IHZvaWQqKSBPVkVSUklERTsKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OwogCkBAIC05Niw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgT2JqZWN0
VG9TaXplTWFwIG1fY291bnRlZE9iamVjdHM7CiAgICAgc2l6ZV90IG1fdG90YWxDb3VudGVkT2Jq
ZWN0czsKICAgICBzaXplX3QgbV90b3RhbE9iamVjdHNOb3RJbkFsbG9jYXRlZFNldDsKKyAgICBI
ZWFwR3JhcGhTZXJpYWxpemVyKiBtX2dyYXBoU2VyaWFsaXplcjsKIH07CiAKIGNsYXNzIE1lbW9y
eUluc3RydW1lbnRhdGlvbkltcGwgOiBwdWJsaWMgV1RGOjpNZW1vcnlJbnN0cnVtZW50YXRpb24g
ewo=
</data>
<flag name="review"
          id="196032"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>