<?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>48068</bug_id>
          
          <creation_ts>2010-10-21 07:52:00 -0700</creation_ts>
          <short_desc>Pass on all the speech recognition results to the input element.</short_desc>
          <delta_ts>2010-10-25 14:10:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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>
          
          <blocked>39485</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Satish Sampath">satish</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jorlow</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>297417</commentid>
    <comment_count>0</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-21 07:52:00 -0700</bug_when>
    <thetext>The speech input implementation currently gives the input element only a single string when speech recognition completes. Instead we want to give all the matching results with a confidence value for each result. This list will be exposed as an attribute in a future CL and scripts can make use of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297431</commentid>
    <comment_count>1</comment_count>
      <attachid>71440</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-21 08:26:28 -0700</bug_when>
    <thetext>Created attachment 71440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298829</commentid>
    <comment_count>2</comment_count>
      <attachid>71440</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-25 07:07:40 -0700</bug_when>
    <thetext>Comment on attachment 71440
Patch

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

&gt; WebCore/page/SpeechInputListener.h:37
&gt; +

no newline

&gt; WebCore/page/SpeechInputListener.h:60
&gt; +    virtual void setRecognitionResult(int requestId, const SpeechInputResultArray&amp; results) = 0;

results not needed

&gt; WebCore/page/SpeechInputResult.cpp:37
&gt; +

extra new line

&gt; WebCore/page/SpeechInputResult.cpp:40
&gt; +    : m_confidence(0)

What uses this?

&gt; WebCore/page/SpeechInputResult.h:32
&gt; +

no newline

&gt; WebCore/page/SpeechInputResult.h:48
&gt; +    SpeechInputResult();

What&apos;s this needed for?

&gt; WebCore/platform/mock/SpeechInputClientMock.cpp:96
&gt; +        results.append(SpeechInputResult::create(m_recognitionResult, 1.0));

Would we ever see a 1.0 in the real world?  I guess it doesn&apos;t matter that much, though..

&gt; WebKit/chromium/public/WebSpeechInputListener.h:58
&gt; +    virtual void setRecognitionResult(int, const WebSpeechInputResultArray&amp;) = 0;

None of these should be purely virtual.  Use WEBKIT_ASSERT_NOT_REACHED.

And, to avoid breaking the build, you should have the legacy version call the new version.

&gt; WebKit/chromium/public/WebSpeechInputResult.h:46
&gt; +class WebSpeechInputResult {

This should just wrap the WebCore version and not actually store stuff itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298928</commentid>
    <comment_count>3</comment_count>
      <attachid>71765</attachid>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-25 09:59:55 -0700</bug_when>
    <thetext>Created attachment 71765
Patch

Addressed all review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298931</commentid>
    <comment_count>4</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-25 10:02:09 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 71440 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71440&amp;action=review
&gt; 
&gt; &gt; WebCore/page/SpeechInputResult.cpp:40
&gt; &gt; +    : m_confidence(0)
&gt; 
&gt; What uses this?

Apparently no one, removed.

&gt; &gt; WebCore/page/SpeechInputResult.h:48
&gt; &gt; +    SpeechInputResult();
&gt; 
&gt; What&apos;s this needed for?

Not needed, removed.

&gt; &gt; WebCore/platform/mock/SpeechInputClientMock.cpp:96
&gt; &gt; +        results.append(SpeechInputResult::create(m_recognitionResult, 1.0));
&gt; 
&gt; Would we ever see a 1.0 in the real world?  I guess it doesn&apos;t matter that much, though..

It would depend on the recognizer itself but 1.0 is a legal value per the proposed spec.

&gt; &gt; WebKit/chromium/public/WebSpeechInputListener.h:58
&gt; &gt; +    virtual void setRecognitionResult(int, const WebSpeechInputResultArray&amp;) = 0;
&gt; 
&gt; None of these should be purely virtual.  Use WEBKIT_ASSERT_NOT_REACHED.

Done

&gt; And, to avoid breaking the build, you should have the legacy version call the new version.

Done

&gt; &gt; WebKit/chromium/public/WebSpeechInputResult.h:46
&gt; &gt; +class WebSpeechInputResult {
&gt; 
&gt; This should just wrap the WebCore version and not actually store stuff itself.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298935</commentid>
    <comment_count>5</comment_count>
      <attachid>71765</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-25 10:08:09 -0700</bug_when>
    <thetext>Comment on attachment 71765
Patch

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

r=me

&gt; WebKit/chromium/public/WebSpeechInputResult.h:34
&gt; +#if WEBKIT_IMPLEMENTATION

Do we need to hide this behind WEBKIT_IMPLEMENTATION?  What do other files do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299051</commentid>
    <comment_count>6</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-25 12:58:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 71765 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71765&amp;action=review
&gt; 
&gt; &gt; WebKit/chromium/public/WebSpeechInputResult.h:34
&gt; &gt; +#if WEBKIT_IMPLEMENTATION
&gt; 
&gt; Do we need to hide this behind WEBKIT_IMPLEMENTATION?  What do other files do?

This is now not needed since I have included WebPrivatePtr.h which has this declaration. Hence removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299074</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-25 13:17:11 -0700</bug_when>
    <thetext>Attachment 71765 did not build on chromium:
Build output: http://queues.webkit.org/results/4779001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299100</commentid>
    <comment_count>8</comment_count>
    <who name="Satish Sampath">satish</who>
    <bug_when>2010-10-25 14:10:54 -0700</bug_when>
    <thetext>Committed r70490: &lt;http://trac.webkit.org/changeset/70490&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71440</attachid>
            <date>2010-10-21 08:26:28 -0700</date>
            <delta_ts>2010-10-25 09:59:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48068-20101021162626.patch</filename>
            <type>text/plain</type>
            <size>30657</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA4Y2NjYzk2NjQzZmQ3YTlkOGY1ZmEzY2E3YmMxNTZlYThiZGUyZjE3Li5lMjBiMmU1YzdiZWVj
YmExNTNkZTU1Zjc2MjZlMzM3Zjg3NjI0ZTg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC00MjUsNiArNDI1LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGFnZS9TZXR0aW5ncy5jcHAgXAogCXBh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIFwKIAlwYWdlL1NwZWVjaElucHV0LmNwcCBcCisJcGFn
ZS9TcGVlY2hJbnB1dFJlc3VsdC5jcHAgXAogCXBhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAgXAog
CXBhZ2UvVGltaW5nLmNwcCBcCiAJcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIFwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNm
ODIxMGY0NTk4NDhjZTExOTk4NDhlZmM5ODNjYzNlODk0ZjhkMy4uODk2ZDZhMDU0NmRkYTI1NWYw
MzgzZTc1MmMxZDBjYzY2MjdkMDUwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0xMC0yMSAgU2F0aXNo
IFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGVtYmVkZGVyIHRvIHBhc3Mgb24gYWxsIHRo
ZSBzcGVlY2ggcmVjb2duaXRpb24gcmVzdWx0cyB0byB0aGUgaW5wdXQgZWxlbWVudC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MDY4CisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGFkZGVkIGFzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdCBjaGFuZ2VkLCB0
ZXN0cyB3aWxsIGJlIGFkZGVkIGluIHRoZSBuZXh0CisgICAgICAgIHBhdGNoIHdoZXJlIHRoZXNl
IHJlc3VsdHMgYXJlIGV4cG9zZWQgYXMgYW4gYXR0cmlidXRlIHRvIHNjcmlwdHMuCisKKyAgICAg
ICAgKiBBbmRyb2lkLm1rOiBBZGRlZCBuZXcgc291cmNlIGZpbGVzLgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBy
bzoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGFnZS9TcGVlY2hJbnB1dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6
c2V0UmVjb2duaXRpb25SZXN1bHQpOiBBY2NlcHQgYW4gYXJyYXkgaW5zdGVhZCBvZiBhIHNpbmds
ZSBzdHJpbmcuCisgICAgICAgICogcGFnZS9TcGVlY2hJbnB1dC5oOgorICAgICAgICAqIHBhZ2Uv
U3BlZWNoSW5wdXRMaXN0ZW5lci5oOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRSZXN1bHQu
Y3BwOiBBZGRlZCwgZGVmaW5lcyBhIGNsYXNzIGZvciBtYW5hZ2luZyBhIHNwZWVjaCBpbnB1dCBy
ZXN1bHQuCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0OjpTcGVlY2hJbnB1dFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdDo6Y29uZmlkZW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdDo6dXR0ZXJhbmNlKToKKyAgICAgICAgKiBwYWdl
L1NwZWVjaElucHV0UmVzdWx0Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xp
ZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9u
RWxlbWVudDo6c2V0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuaDoKKwogMjAxMC0xMC0yMSAgWXVyeSBTZW1pa2hhdHNreSAg
PHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBSZXZlcnQgcjcwMjMy
LiBDaHJvbWl1bSBjb21waWxhdGlvbiBmYWlsdXJlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMWYyNTUwMGU5ZGI0MWQy
YWZjNWIyMTEwYTc4ZjU2NDE2YzdhNmI3NS4uYmNiMzAxMDA4N2ZiNTE1NTFkNzNiNzFkOWU4ZWFm
MWRiNTU1YjdmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMTI1LDYgKzIxMjUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAgXAogCVdlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dC5oIFwKIAlXZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oIFwKKwlXZWJD
b3JlL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuY3BwIFwKKwlXZWJDb3JlL3BhZ2UvU3BlZWNoSW5w
dXRSZXN1bHQuaCBcCiAJV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwIFwKIAlXZWJD
b3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oIFwKIAlXZWJDb3JlL3BhZ2UvVGltaW5nLmNwcCBc
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDcwNWE0MzA2N2M0NzhlMzM2MzkwM2NhY2QzY2QzNDc5YWQ3MjU5YWYuLmRkY2UzZGJi
MzJkZWEzZjJmZTRjY2RmYzRjMTEzNGRiMjgxODAzNDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMjYyLDYgKzIyNjIsOCBA
QAogICAgICAgICAgICAgJ3BhZ2UvU3BlZWNoSW5wdXQuaCcsCiAgICAgICAgICAgICAncGFnZS9T
cGVlY2hJbnB1dENsaWVudC5oJywKICAgICAgICAgICAgICdwYWdlL1NwZWVjaElucHV0TGlzdGVu
ZXIuaCcsCisgICAgICAgICAgICAncGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5jcHAnLAorICAgICAg
ICAgICAgJ3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuaCcsCiAgICAgICAgICAgICAncGFnZS9TdXNw
ZW5kYWJsZVRpbWVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgn
LAogICAgICAgICAgICAgJ3BhZ2UvVGltaW5nLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBiNmFjNGFlZThmYTZiMjhiMWUw
ODNiOTZhMTk0N2U1Y2M1ZmNjYmUzLi5jMzM2ZjM1OGE3NjcwMTY5NDg4ZDQ1YmMwMmViN2MyNTY2
MmU2ZjBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KQEAgLTE5OTksNiArMTk5OSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBhZ2UvU3Bl
ZWNoSW5wdXQuaCBcCiAgICAgcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIFwKICAgICBwYWdlL1Nw
ZWVjaElucHV0TGlzdGVuZXIuaCBcCisgICAgcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oIFwKICAg
ICBwYWdlL1dpbmRvd0ZlYXR1cmVzLmggXAogICAgIHBhZ2UvV29ya2VyTmF2aWdhdG9yLmggXAog
ICAgIHBhZ2UvWFNTQXVkaXRvci5oIFwKQEAgLTMxMDMsNiArMzEwNCw3IEBAIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9TSEFSRURfV09SS0VSUz0xKSB7CiBjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfSU5QVVRfU1BFRUNIPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgcGFnZS9TcGVl
Y2hJbnB1dC5jcHAgXAorICAgICAgICBwYWdlL1NwZWVjaElucHV0UmVzdWx0LmNwcCBcCiAgICAg
ICAgIHJlbmRlcmluZy9SZW5kZXJJbnB1dFNwZWVjaC5jcHAKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1YmM0NDBiYmQxYTYyNDMwMmIwOTFiMTUy
ZTVhNjAwNjRiNGU2ZjFkLi4wMGUxNjg5ZTQ2OTM5NWJhNjQxMjdiZGU0OTM2MWYzMDJkOTg5M2M3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ3Nyw2
ICsxNDc3LDggQEAKIAkJNzU3OTNFRDMwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNF
RDAwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk3NTc5M0VE
NDBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDEwRDBDRTg1QjAwN0ZDMEFDIC8q
IERPTU1lc3NhZ2VFdmVudC5tbSAqLzsgfTsKIAkJNzU3OTNFRDUwRDBDRTg1QjAwN0ZDMEFDIC8q
IERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2
ZW50SW50ZXJuYWwuaCAqLzsgfTsKKwkJNzU4OTc4RUMxMjcwOTBENjAwNzZENUE5IC8qIFNwZWVj
aElucHV0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc1ODk3OEVBMTI3MDkwRDYwMDc2RDVBOSAvKiBTcGVlY2hJbnB1dFJlc3VsdC5jcHAg
Ki87IH07CisJCTc1ODk3OEVEMTI3MDkwRDYwMDc2RDVBOSAvKiBTcGVlY2hJbnB1dFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU4OTc4RUIx
MjcwOTBENjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmggKi87IH07CiAJCTc2MzdDNTQx
MTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQwMTEyRTdCNzQw
MDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNzYzN0M1
NDMxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQyMTEyRTdCN0Uw
MDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi87IH07CiAJCTc2N0Y5OUJF
MTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRDExQTExOTRB
MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovOyB9OwpAQCAtNzU4
Myw2ICs3NTg1LDggQEAKIAkJNzU3OTNFRDAwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NzkzRUQxMEQwQ0U4NUIwMDdGQzBB
QyAvKiBET01NZXNzYWdlRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1lc3NhZ2VFdmVudEludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1ODk3OEVBMTI3MDkwRDYwMDc2RDVB
OSAvKiBTcGVlY2hJbnB1dFJlc3VsdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTcGVlY2hJbnB1dFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTc1ODk3OEVCMTI3MDkwRDYwMDc2RDVBOSAvKiBTcGVlY2hJbnB1dFJlc3VsdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hJbnB1dFJlc3VsdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzYzN0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjdGOTlCRDExQTEx
OTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMyMDQsNiArMTMyMDgsOCBAQAogCQkJ
CTc1NzhGOTA5MTFEREYyNjkwMEQ5MzNDNSAvKiBTcGVlY2hJbnB1dC5oICovLAogCQkJCTc1NzhG
OTBBMTFEREYyNjkwMEQ5MzNDNSAvKiBTcGVlY2hJbnB1dENsaWVudC5oICovLAogCQkJCTc1NzhG
OTFFMTFFNEUzMjgwMEQ5MzNDNSAvKiBTcGVlY2hJbnB1dExpc3RlbmVyLmggKi8sCisJCQkJNzU4
OTc4RUExMjcwOTBENjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmNwcCAqLywKKwkJCQk3
NTg5NzhFQjEyNzA5MEQ2MDA3NkQ1QTkgLyogU3BlZWNoSW5wdXRSZXN1bHQuaCAqLywKIAkJCQk2
MkMxMjE3QTExQUI5RTc2MDAzQzQ2MkMgLyogU3VzcGVuZGFibGVUaW1lci5jcHAgKi8sCiAJCQkJ
NjJDMTIxN0IxMUFCOUU3NzAwM0M0NjJDIC8qIFN1c3BlbmRhYmxlVGltZXIuaCAqLywKIAkJCQk4
QUY0RTU1ODExREM1QTYzMDAwRUQzREUgLyogVGltaW5nLmNwcCAqLywKQEAgLTIxMTM3LDYgKzIx
MTQzLDcgQEAKIAkJCQkwODhBMEUwQzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFp
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4OTAyMUE5MTI2RUY1REUwMDkyRDVFQSAvKiBTVkdB
bmltYXRlZExlbmd0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg5MDIxQUQxMjZFRjVFOTAwOTJE
NUVBIC8qIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzU4OTc4
RUQxMjcwOTBENjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTIzNjg3LDYgKzIzNjk0LDcgQEAKIAkJCQk5NzI4QzMxMzEyNjhFNDM5MDA0MUU4OUIgLyog
TWFya3VwQWNjdW11bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4NzcyRjExMjZFMjYy
OTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMUYyQjUyMTI2
QzYxQjIwMDA2QTdFNiAvKiBJbnNwZWN0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NzU4OTc4RUMxMjcwOTBENjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcCBiL1dlYkNv
cmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKaW5kZXggMjM0NzkxYmM0YjEzZjQzZGY5ZDE3MzlkNWQy
MDVmOWFhMjdlMjA3Mi4uYjNmNTQ5ZTU4OTUyODM2ZGYxMTlkZDgxOGY1NDNmN2Y0MDJkMGIyOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvU3BlZWNoSW5wdXQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgU3BlZWNoSW5wdXQ6OmRp
ZENvbXBsZXRlUmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQpCiAgICAgICAgIG1fbGlzdGVuZXJz
LmdldChsaXN0ZW5lcklkKS0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihsaXN0ZW5lcklkKTsKIH0K
IAotdm9pZCBTcGVlY2hJbnB1dDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IGxpc3RlbmVySWQs
IGNvbnN0IFN0cmluZyYgcmVzdWx0KQordm9pZCBTcGVlY2hJbnB1dDo6c2V0UmVjb2duaXRpb25S
ZXN1bHQoaW50IGxpc3RlbmVySWQsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3Vs
dCkKIHsKICAgICAvLyBEb24ndCBhc3NlcnQgaWYgbm90IHByZXNlbnQgYXMgdGhlIGVsZW1lbnQg
bWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHBhZ2Ugd2hpbGUKICAgICAvLyB0aGlzIGV2
ZW50IHdhcyBvbiB0aGUgd2F5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0
LmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAppbmRleCBkMTBiNzg5YWFkMjczOWVkZDNi
ZjQ1MzBlN2M2ZTAwYzRlMmRhZThhLi5iNTIxZjNhMTUyOWJjOTdhZjI3YTI4MjY5OTRjMzUyMjRk
OGYzZDc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAorKysgYi9XZWJD
b3JlL3BhZ2UvU3BlZWNoSW5wdXQuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgLy8g
U3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0
ZVJlY29yZGluZyhpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9u
KGludCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCwgY29uc3Qg
U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCwgY29u
c3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYpOwogCiBwcml2YXRlOgogICAgIFNwZWVjaElucHV0
Q2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dExp
c3RlbmVyLmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oCmluZGV4IDM2MDYw
ZmNkZWZiZGUyOWFjOTczYTE4ZTUwMTllZmI5ZDY0YTJmYzEuLjE2ODc1OTU1MTE3ZjM5ZjNlYThj
ZTg3ZjliOWQ2NTAwYjBiNDRiOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1
dExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaApAQCAt
MzMsMTAgKzMzLDE0IEBACiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCisjaW5jbHVkZSAi
U3BlZWNoSW5wdXRSZXN1bHQuaCIKKwogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFNwZWVjaElucHV0UmVzdWx0
PiA+IFNwZWVjaElucHV0UmVzdWx0QXJyYXk7CisKIC8vIEludGVyZmFjZSB0byBiZSBpbXBsZW1l
bnRlZCBieSB0aGUgZWxlbWVudCB3aGljaCBpbnZva2VzIFNwZWVjaElucHV0LgogY2xhc3MgU3Bl
ZWNoSW5wdXRMaXN0ZW5lciB7CiBwdWJsaWM6CkBAIC01Myw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGlzIG1ldGhvZCBjYW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1l
cyBpZiB0aGVyZSBhcmUgcGFydGlhbCByZXN1bHRzCiAgICAgLy8gYXZhaWxhYmxlIGFzIHRoZSB1
c2VyIGtlZXBzIHNwZWFraW5nLiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNvZ25pemVk
IHByb3Blcmx5CiAgICAgLy8gb3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMgaW4gdGhl
IHByb2Nlc3MsIHRoaXMgbWV0aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCi0gICAgdmlydHVhbCB2
b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgcmVz
dWx0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1
ZXN0SWQsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdHMpID0gMDsKIAogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgflNwZWVjaElucHV0TGlzdGVuZXIoKSB7IH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5jcHAgYi9XZWJDb3JlL3BhZ2UvU3Bl
ZWNoSW5wdXRSZXN1bHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZTU5OGYyZWQ1NDIzZjhjZTFmYzBkNTYx
MDJiMWJjOGE1MTVhYjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5w
dXRSZXN1bHQuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU3BlZWNoSW5wdXRSZXN1bHQuaCIKKworI2lmIEVOQUJMRShJTlBVVF9T
UEVFQ0gpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxTcGVlY2hJbnB1dFJl
c3VsdD4gU3BlZWNoSW5wdXRSZXN1bHQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHV0dGVyYW5jZSwg
ZG91YmxlIGNvbmZpZGVuY2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hJbnB1
dFJlc3VsdCh1dHRlcmFuY2UsIGNvbmZpZGVuY2UpKTsKK30KKworCitTcGVlY2hJbnB1dFJlc3Vs
dDo6U3BlZWNoSW5wdXRSZXN1bHQoKQorICAgIDogbV9jb25maWRlbmNlKDApCit7Cit9CisKK1Nw
ZWVjaElucHV0UmVzdWx0OjpTcGVlY2hJbnB1dFJlc3VsdChjb25zdCBTdHJpbmcmIHV0dGVyYW5j
ZSwgZG91YmxlIGNvbmZpZGVuY2UpCisgICAgOiBtX3V0dGVyYW5jZSh1dHRlcmFuY2UpCisgICAg
LCBtX2NvbmZpZGVuY2UoY29uZmlkZW5jZSkKK3sKK30KKworZG91YmxlIFNwZWVjaElucHV0UmVz
dWx0Ojpjb25maWRlbmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25maWRlbmNlOworfQor
Citjb25zdCBTdHJpbmcmIFNwZWVjaElucHV0UmVzdWx0Ojp1dHRlcmFuY2UoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3V0dGVyYW5jZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9T
cGVlY2hJbnB1dFJlc3VsdC5oIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0UmVzdWx0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTQ2YmE4YjJhM2U0NzA3NjVjMjY2ZGIzZGJiYTk4Y2M4ODc0Zjk4OQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNwZWVjaElucHV0UmVzdWx0X2gKKyNkZWZpbmUgU3Bl
ZWNoSW5wdXRSZXN1bHRfaAorCisjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKKworI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gVGhpcyBj
bGFzcyBob2xkcyBvbmUgc3BlZWNoIHJlY29nbml0aW9uIHJlc3VsdCBpbmNsdWRpbmcgdGhlIHRl
eHQgYW5kIG90aGVyIHJlbGF0ZWQKKy8vIGZpZWxkcywgYXMgcmVjZWl2ZWQgZnJvbSB0aGUgZW1i
ZWRkZXIuCitjbGFzcyBTcGVlY2hJbnB1dFJlc3VsdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWVj
aElucHV0UmVzdWx0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoSW5w
dXRSZXN1bHQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHV0dGVyYW5jZSwgZG91YmxlIGNvbmZpZGVu
Y2UpOworCisgICAgZG91YmxlIGNvbmZpZGVuY2UoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcm
IHV0dGVyYW5jZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFNwZWVjaElucHV0UmVzdWx0KCk7
CisgICAgU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgU3RyaW5nJiB1dHRlcmFuY2UsIGRvdWJsZSBj
b25maWRlbmNlKTsKKworICAgIFN0cmluZyBtX3V0dGVyYW5jZTsKKyAgICBkb3VibGUgbV9jb25m
aWRlbmNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KElOUFVUX1NQRUVDSCkKKworI2VuZGlmIC8vIFNwZWVjaElucHV0UmVzdWx0X2gKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2suY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKaW5kZXggNmI2NDk0
MmYxN2I5MjViNDllZjA5MjE0N2MwYTE2YTA3ZjBkN2NjYy4uYTFiNGRhOThmZjIyZTc1MmQyOWY5
Y2E1YmY3ZjQxZTczZTVjYjY5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Nw
ZWVjaElucHV0Q2xpZW50TW9jay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVj
aElucHV0Q2xpZW50TW9jay5jcHAKQEAgLTkyLDcgKzkyLDkgQEAgdm9pZCBTcGVlY2hJbnB1dENs
aWVudE1vY2s6OnRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRDbGllbnRNb2Nr
PiopCiAgICAgICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKG1fcmVxdWVzdElk
KTsKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQsIG1fcmVjb2du
aXRpb25SZXN1bHQpOworICAgICAgICBTcGVlY2hJbnB1dFJlc3VsdEFycmF5IHJlc3VsdHM7Cisg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKFNwZWVjaElucHV0UmVzdWx0OjpjcmVhdGUobV9yZWNvZ25p
dGlvblJlc3VsdCwgMS4wKSk7CisgICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVz
dWx0KG1fcmVxdWVzdElkLCByZXN1bHRzKTsKICAgICAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxl
dGVSZWNvZ25pdGlvbihtX3JlcXVlc3RJZCk7CiAgICAgICAgIG1fcmVxdWVzdElkID0gMDsKICAg
ICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcApp
bmRleCA1ZDViOGIzMGI0MTEwNTIwZDFhNGRlN2I4YTc5YzQ4NWQ3OTM2NjA4Li5lMTkzZWJiMTQ3
MjEzNWQ2NWU4NTc1MTI1ZTA5ODZlN2U4ZGEyMzA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTQ3MSwxNCArNDcxLDE2IEBAIHZvaWQg
SW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50
KQogICAgIHNldFN0YXRlKElkbGUpOwogfQogCi12b2lkIElucHV0RmllbGRTcGVlY2hCdXR0b25F
bGVtZW50OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KQor
dm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c2V0UmVjb2duaXRpb25SZXN1bHQo
aW50LCBjb25zdCBTcGVlY2hJbnB1dFJlc3VsdEFycmF5JiByZXN1bHRzKQogeworICAgIG1fcmVz
dWx0cyA9IHJlc3VsdHM7CisKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAgICAgLy8gVGhl
IGNhbGwgdG8gc2V0VmFsdWUoKSBiZWxvdyBkaXNwYXRjaGVzIGFuIGV2ZW50LCBhbmQgYW4gZXZl
bnQgaGFuZGxlciBpbiB0aGUgcGFnZSBtaWdodAogICAgIC8vIHJlbW92ZSB0aGUgaW5wdXQgZWxl
bWVudCBmcm9tIERPTS4gVG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgdmFsaWQgdW50aWwgd2UgZmlu
aXNoIG91ciB3b3JrCiAgICAgLy8gaGVyZSwgd2UgdGFrZSBhIHRlbXBvcmFyeSByZWZlcmVuY2Uu
CiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGhvbGRSZWYoaW5wdXQpOwotICAgIGlucHV0
LT5zZXRWYWx1ZShyZXN1bHQpOworICAgIGlucHV0LT5zZXRWYWx1ZShyZXN1bHRzLmlzRW1wdHko
KSA/ICIiIDogcmVzdWx0c1swXS0+dXR0ZXJhbmNlKCkpOwogICAgIGlucHV0LT5kaXNwYXRjaFdl
YmtpdFNwZWVjaENoYW5nZUV2ZW50KCk7CiAgICAgcmVuZGVyZXIoKS0+cmVwYWludCgpOwogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgg
Yi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAppbmRleCBjMTQ2
YTQyZGM0MzQ5ZTc3ZGRhYmVlMzE3ZGE2ZTcxZWY1NmE3ZTU4Li40NmMxYzhlNGFkMjA4ODgyZGZm
Yzc2MmM0YWVkMzQyYmVkNTU2ZjY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJv
bElubmVyRWxlbWVudHMuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICAvLyBTcGVl
Y2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCiAgICAgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZyhp
bnQpOwogICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpOwotICAgIHZvaWQgc2V0
UmVjb2duaXRpb25SZXN1bHQoaW50LCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBz
ZXRSZWNvZ25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkmKTsK
IAogcHJpdmF0ZToKICAgICBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudChIVE1MRWxlbWVu
dCopOwpAQCAtMTUxLDYgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhcHR1cmluZzsK
ICAgICBTcGVlY2hJbnB1dFN0YXRlIG1fc3RhdGU7CiAgICAgaW50IG1fbGlzdGVuZXJJZDsKKyAg
ICBTcGVlY2hJbnB1dFJlc3VsdEFycmF5IG1fcmVzdWx0czsKIH07CiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDBmYTM2ZDQ5NjkyYTQ0YzQzOGU2ZGVh
NTA2N2QyNzY0MDI1YTU3Ni4uNDRlYjBmMzlkYmQwNzVkMzAxN2NiMjE3NDdhNjNlZjdhNjY5ZDc0
YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMTAtMjEgIFNhdGlzaCBTYW1w
YXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBbGxvdyBlbWJlZGRlciB0byBwYXNzIG9uIGFsbCB0aGUgc3Bl
ZWNoIHJlY29nbml0aW9uIHJlc3VsdHMgdG8gdGhlIGlucHV0IGVsZW1lbnQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODA2OAorCisgICAgICAgICog
V2ViS2l0Lmd5cDogQWRkZWQgbmV3IGZpbGVzCisgICAgICAgICogcHVibGljL1dlYlNwZWVjaElu
cHV0TGlzdGVuZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuaDog
QWRkZWQsIHdyYXBwZXIgYXJvdW5kIFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0CisgICAgICAg
IChXZWJLaXQ6OldlYlNwZWVjaElucHV0UmVzdWx0OjpXZWJTcGVlY2hJbnB1dFJlc3VsdCk6Cisg
ICAgICAgICogc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQpOiBBY2NlcHRzIGFu
IGFycmF5IGluc3RlYWQgb2YgYSBzaW5nbGUgc3RyaW5nLgorICAgICAgICAqIHNyYy9TcGVlY2hJ
bnB1dENsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9ja0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJN
b2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTcGVlY2hJbnB1dFJl
c3VsdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dFJlc3VsdDo6
V2ViU3BlZWNoSW5wdXRSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dFJl
c3VsdDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdD4pOgor
CiAyMDEwLTEwLTIxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGFm
MzIyNTBhZTFiZmQ5ODhkYWI1ZjgwZGM0ODViYjY2MmFmNzUzMzUuLjNhN2JmOWU2NWFkZGM1ZGE5
NmJkOWQ1MGQ2ZWQxZDA0OGNhYTczMTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNTcsNiArMjU3LDcg
QEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYlN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJTdG9yYWdlTmFtZXNwYWNlLmgnLApAQCAtNTE4LDYgKzUxOSw3IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgnLAorICAgICAgICAgICAgICAgICdz
cmMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN0
b3JhZ2VBcmVhSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZUFyZWFJ
bXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcklt
cGwuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5w
dXRMaXN0ZW5lci5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3Rl
bmVyLmgKaW5kZXggNmRjM2Q0OTYzNTQ5NjQ0ZjZiZWEzNjYxNGVhZWNlMjViN2VlNjRhMy4uOGZj
NTU1NGNmNGYxMzU0NTJlZGQ4OTcxMWZlYjIzZGU1NGM1ZGJhYiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgKKysrIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgKQEAgLTMxLDYgKzMxLDggQEAK
ICNpZm5kZWYgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcl9oCiAjZGVmaW5lIFdlYlNwZWVjaElucHV0
TGlzdGVuZXJfaAogCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRSZXN1bHQuaCIKKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0cmluZzsKQEAgLTUzLDYgKzU1LDEwIEBAIHB1Ymxp
YzoKICAgICAvLyBUaGlzIG1ldGhvZCBjYW4gcG90ZW50aWFsbHkgZ2V0IGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcyBpZiB0aGVyZSBhcmUgcGFydGlhbCByZXN1bHRzCiAgICAgLy8gYXZhaWxhYmxlIGFz
IHRoZSB1c2VyIGtlZXBzIHNwZWFraW5nLiBJZiB0aGUgc3BlZWNoIGNvdWxkIG5vdCBiZSByZWNv
Z25pemVkIHByb3Blcmx5CiAgICAgLy8gb3IgaWYgdGhlcmUgd2FzIGFueSBvdGhlciBlcnJvcnMg
aW4gdGhlIHByb2Nlc3MsIHRoaXMgbWV0aG9kIG1heSBuZXZlciBiZSBjYWxsZWQuCisgICAgdmly
dHVhbCB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCwgY29uc3QgV2ViU3BlZWNoSW5wdXRS
ZXN1bHRBcnJheSYpID0gMDsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHRoZSBj
aHJvbWl1bSBzaWRlIGlzIGFibGUgdG8gc2VuZCBtdWx0aXBsZSByZWNvZ25pdGlvbiByZXN1bHRz
CisgICAgLy8gdXNpbmcgdGhlIGFib3ZlIGNhbGwuCiAgICAgdmlydHVhbCB2b2lkIHNldFJlY29n
bml0aW9uUmVzdWx0KGludCwgY29uc3QgV2ViU3RyaW5nJikgPSAwOwogCiAgICAgLy8gSW5mb3Jt
cyB0aGF0IHNwZWVjaCByZWNvZ25pdGlvbiBoYXMgY29tcGxldGVkLiBUaGlzIGdldHMgaW52b2tl
ZCBpcnJlc3BlY3RpdmUgb2Ygd2hldGhlcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVlY2hJbnB1dFJlc3VsdC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
cGVlY2hJbnB1dFJlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4MmEzZmM3NDM1YTFkNjgzMDRkODhiOGZm
MGJhNWYzMmZjNDJjMTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaElucHV0UmVzdWx0LmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViU3BlZWNoSW5wdXRSZXN1bHRfaAorI2RlZmluZSBXZWJTcGVlY2hJbnB1dFJlc3VsdF9oCisK
KyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gY2xhc3MgUGFzc1JlZlB0cjsKK2NsYXNzIFN0cmluZzsKK30KK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFNwZWVjaElucHV0UmVzdWx0OworfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisvLyBUaGlzIGNsYXNzIGhvbGRzIG9uZSBzcGVlY2ggcmVjb2duaXRpb24gcmVzdWx0
IGluY2x1ZGluZyB0aGUgdGV4dCBhbmQgb3RoZXIgcmVsYXRlZAorLy8gZmllbGRzLCBhcyByZWNl
aXZlZCBmcm9tIHRoZSBlbWJlZGRlci4KK2NsYXNzIFdlYlNwZWVjaElucHV0UmVzdWx0IHsKK3B1
YmxpYzoKKyAgICBXZWJTcGVlY2hJbnB1dFJlc3VsdCgpCisgICAgICAgIDogbV9pc051bGwodHJ1
ZSksCisgICAgICAgICAgbV9jb25maWRlbmNlKDApCisgICAgeworICAgIH0KKworICAgIFdlYlNw
ZWVjaElucHV0UmVzdWx0KGNvbnN0IFdlYlN0cmluZyYgdXR0ZXJhbmNlLCBkb3VibGUgY29uZmlk
ZW5jZSkKKyAgICAgICAgOiBtX2lzTnVsbChmYWxzZSksCisgICAgICAgICAgbV91dHRlcmFuY2Uo
dXR0ZXJhbmNlKSwKKyAgICAgICAgICBtX2NvbmZpZGVuY2UoY29uZmlkZW5jZSkKKyAgICB7Cisg
ICAgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViU3BlZWNoSW5wdXRSZXN1
bHQoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0PiYpOwor
ICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdD4o
KSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIGJvb2wgbV9pc051bGw7CisgICAgV2Vi
U3RyaW5nIG1fdXR0ZXJhbmNlOworICAgIGRvdWJsZSBtX2NvbmZpZGVuY2U7Cit9OworCit0eXBl
ZGVmIFdlYlZlY3RvcjxXZWJTcGVlY2hJbnB1dFJlc3VsdD4gV2ViU3BlZWNoSW5wdXRSZXN1bHRB
cnJheTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTcGVlY2hJbnB1
dFJlc3VsdF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xp
ZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5j
cHAKaW5kZXggOTYzZDQ0MDVhNjJkMzJlMWE4Y2VjZDU0YzA4YzViYmViM2E2MmRjYS4uY2UyMTA2
YTQ1YjY4ODEwM2Q2NGE1ZTAwZTg3OGRjYjVhYmQ2NzM2MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmNwcApAQCAtODksNyArODksMTggQEAgdm9pZCBT
cGVlY2hJbnB1dENsaWVudEltcGw6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50IHJlcXVlc3RJ
ZCkKIHZvaWQgU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQg
cmVxdWVzdElkLCBjb25zdCBXZWJTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9saXN0
ZW5lcik7Ci0gICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCBy
ZXN1bHQpOworICAgIFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0QXJyYXkgd2ViY29yZVJlc3Vs
dHM7CisgICAgd2ViY29yZVJlc3VsdHMuYXBwZW5kKFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0
OjpjcmVhdGUocmVzdWx0LCAxLjApKTsKKyAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25pdGlvblJl
c3VsdChyZXF1ZXN0SWQsIHdlYmNvcmVSZXN1bHRzKTsKK30KKwordm9pZCBTcGVlY2hJbnB1dENs
aWVudEltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYlNw
ZWVjaElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdHMpCit7CisgICAgQVNTRVJUKG1fbGlzdGVuZXIp
OworICAgIFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0QXJyYXkgd2ViY29yZVJlc3VsdHMocmVz
dWx0cy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7
ICsraSkKKyAgICAgICAgd2ViY29yZVJlc3VsdHNbaV0gPSByZXN1bHRzW2ldOworICAgIG1fbGlz
dGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0KHJlcXVlc3RJZCwgd2ViY29yZVJlc3VsdHMpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElu
cHV0Q2xpZW50SW1wbC5oCmluZGV4IDgxN2IzMmIxMjQxNGIzYTA3ZGZhM2FlMzUxOTA4N2RlYTVh
MGY3MzMuLjVkYjNkM2ZkNmMzOTQ2ZTQ3OTdhYjU0ZDk2ZGJhYzg5MGMyNDEwYzMgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaApAQCAtNjAsNiArNjAsOSBA
QCBwdWJsaWM6CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCiAgICAg
dm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQpOworICAgIHZvaWQgc2V0UmVjb2duaXRpb25S
ZXN1bHQoaW50LCBjb25zdCBXZWJTcGVlY2hJbnB1dFJlc3VsdEFycmF5Jik7CisgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIG9uY2UgdGhlIGNocm9taXVtIHNpZGUgaXMgYWJsZSB0byBzZW5kIG11
bHRpcGxlIHJlY29nbml0aW9uCisgICAgLy8gcmVzdWx0cyB1c2luZyB0aGUgYWJvdmUgY2FsbC4K
ICAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCwgY29uc3QgV2ViU3RyaW5nJik7CiAg
ICAgdm9pZCBkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCk7CiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKaW5k
ZXggNjBjNGZlZDg1MmIyODRlMDI3MWFkMDBlZDk3MTAwMmEyZjU3YTRiNi4uYmQxNWZhNGUxMmU0
NTgzYmVjZTI3ZTQ4OGViMDgxZWMzOWIxOGJlMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAKQEAgLTcwLDcg
KzcwLDcgQEAgdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6ZGlkQ29tcGxl
dGVSZWNvZ25pdGlvbihpbnQgcmVxdWVzdElkKQogICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRl
UmVjb2duaXRpb24ocmVxdWVzdElkKTsKIH0KIAotdm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrSW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QgV1RG
OjpTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGw6
OnNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYkNvcmU6OlNwZWVj
aElucHV0UmVzdWx0QXJyYXkmIHJlc3VsdCkKIHsKICAgICBtX2xpc3RlbmVyLT5zZXRSZWNvZ25p
dGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmgKaW5kZXggZWRiZmNh
M2VlNjBlOTM5NDI4OTNlMjcyMTg5M2U0M2EwZWI4N2M1Zi4uNWQxMGY4OWIxYzMzZDViNGJmYmNh
NGI0OWY2NDA1NzIxYWRjNzIzNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
cGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgLy8gV2ViQ29yZTo6U3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRob2RzLgogICAgIHZv
aWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50IHJlcXVlc3RJZCk7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpOwotICAgIHZvaWQgc2V0UmVjb2duaXRpb25S
ZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QgV1RGOjpTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9p
ZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBXZWJDb3JlOjpTcGVl
Y2hJbnB1dFJlc3VsdEFycmF5JiByZXN1bHQpOwogCiAgICAgLy8gV2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyIG1ldGhvZHMuCiAgICAgYm9vbCBzdGFydFJlY29nbml0aW9uKGludCByZXF1ZXN0SWQs
IGNvbnN0IFdlYlJlY3QmIGVsZW1lbnRSZWN0KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
cGVlY2hJbnB1dFJlc3VsdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzMyY2EwZTdhMDcxMTVhZjlmOTczYTJh
NDEzNjQ4OWI2M2RjODZhZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU3BlZWNoSW5wdXRSZXN1bHQuY3BwCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRSZXN1bHQuaCIKKworI2luY2x1
ZGUgIlNwZWVjaElucHV0UmVzdWx0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNwZWVjaElucHV0UmVzdWx0OjpXZWJTcGVlY2hJbnB1
dFJlc3VsdChjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0PiYgcmVz
dWx0KQoreworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIG1faXNOdWxsID0gdHJ1ZTsKKyAg
ICAgICAgbV9jb25maWRlbmNlID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2lzTnVsbCA9
IGZhbHNlOworICAgICAgICBtX2NvbmZpZGVuY2UgPSByZXN1bHQtPmNvbmZpZGVuY2UoKTsKKyAg
ICAgICAgbV91dHRlcmFuY2UgPSByZXN1bHQtPnV0dGVyYW5jZSgpOworICAgIH0KK30KKworV2Vi
U3BlZWNoSW5wdXRSZXN1bHQ6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3BlZWNoSW5w
dXRSZXN1bHQ+KCkgY29uc3QKK3sKKyAgICBpZiAobV9pc051bGwpCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKG1fdXR0ZXJh
bmNlLCBtX2NvbmZpZGVuY2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71765</attachid>
            <date>2010-10-25 09:59:55 -0700</date>
            <delta_ts>2010-10-25 10:08:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48068-20101025175953.patch</filename>
            <type>text/plain</type>
            <size>31347</size>
            <attacher name="Satish Sampath">satish</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCA4Y2NjYzk2NjQzZmQ3YTlkOGY1ZmEzY2E3YmMxNTZlYThiZGUyZjE3Li5lMjBiMmU1YzdiZWVj
YmExNTNkZTU1Zjc2MjZlMzM3Zjg3NjI0ZTg2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQu
bWsKKysrIGIvV2ViQ29yZS9BbmRyb2lkLm1rCkBAIC00MjUsNiArNDI1LDcgQEAgTE9DQUxfU1JD
X0ZJTEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGFnZS9TZXR0aW5ncy5jcHAgXAogCXBh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIFwKIAlwYWdlL1NwZWVjaElucHV0LmNwcCBcCisJcGFn
ZS9TcGVlY2hJbnB1dFJlc3VsdC5jcHAgXAogCXBhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAgXAog
CXBhZ2UvVGltaW5nLmNwcCBcCiAJcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIFwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc1
YWYwMTRlOGRhZDlhNDQ5ZGNjOGI3M2ExMzQ0MjljODI5ZDgyOS4uNmY3OTg3ZjAyZjhkMDIyMDI5
MDIxZTFmMTEyMzBiMDdjOTJiMGM1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0xMC0yMSAgU2F0aXNo
IFNhbXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IGVtYmVkZGVyIHRvIHBhc3Mgb24gYWxsIHRo
ZSBzcGVlY2ggcmVjb2duaXRpb24gcmVzdWx0cyB0byB0aGUgaW5wdXQgZWxlbWVudC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4MDY4CisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGFkZGVkIGFzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdCBjaGFuZ2VkLCB0
ZXN0cyB3aWxsIGJlIGFkZGVkIGluIHRoZSBuZXh0CisgICAgICAgIHBhdGNoIHdoZXJlIHRoZXNl
IHJlc3VsdHMgYXJlIGV4cG9zZWQgYXMgYW4gYXR0cmlidXRlIHRvIHNjcmlwdHMuCisKKyAgICAg
ICAgKiBBbmRyb2lkLm1rOiBBZGRlZCBuZXcgc291cmNlIGZpbGVzLgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBy
bzoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGFnZS9TcGVlY2hJbnB1dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dDo6
c2V0UmVjb2duaXRpb25SZXN1bHQpOiBBY2NlcHQgYW4gYXJyYXkgaW5zdGVhZCBvZiBhIHNpbmds
ZSBzdHJpbmcuCisgICAgICAgICogcGFnZS9TcGVlY2hJbnB1dC5oOgorICAgICAgICAqIHBhZ2Uv
U3BlZWNoSW5wdXRMaXN0ZW5lci5oOgorICAgICAgICAqIHBhZ2UvU3BlZWNoSW5wdXRSZXN1bHQu
Y3BwOiBBZGRlZCwgZGVmaW5lcyBhIGNsYXNzIGZvciBtYW5hZ2luZyBhIHNwZWVjaCBpbnB1dCBy
ZXN1bHQuCisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0OjpTcGVlY2hJbnB1dFJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdDo6Y29uZmlkZW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdDo6dXR0ZXJhbmNlKToKKyAgICAgICAgKiBwYWdl
L1NwZWVjaElucHV0UmVzdWx0Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU3Bl
ZWNoSW5wdXRDbGllbnRNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaElucHV0Q2xp
ZW50TW9jazo6dGltZXJGaXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEZpZWxkU3BlZWNoQnV0dG9u
RWxlbWVudDo6c2V0UmVjb2duaXRpb25SZXN1bHQpOgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0
Q29udHJvbElubmVyRWxlbWVudHMuaDoKKwogMjAxMC0xMC0yNSAgTm8nYW0gUm9zZW50aGFsICA8
bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggM2M4NzgzZjkyNTU4MTNjNDY2MzY5ODE4ZDY4
NGY1NjMwNWEwODQyYy4uYzZlMzk3ODY4M2RhOWI4YzA3NGIyNDMwYWRmODU1NWI4YjI5N2ZkNyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCkBAIC0yMTI2LDYgKzIxMjYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNv
cmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAgXAogCVdlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5oIFwK
IAlXZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oIFwKKwlXZWJDb3JlL3BhZ2UvU3Bl
ZWNoSW5wdXRSZXN1bHQuY3BwIFwKKwlXZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuaCBc
CiAJV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvU3Vz
cGVuZGFibGVUaW1lci5oIFwKIAlXZWJDb3JlL3BhZ2UvVGltaW5nLmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGNkNjU2
NjhjNzVhNGVkODY5MDkwYzE5Njg4MTAzYWQ0MmI0MmNmMjYuLmZiYTFjMzM5N2Y1ZTFmYjA5MWVk
N2UyMjc4YzcxODE1ZGUwNGYxZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMjYzLDYgKzIyNjMsOCBAQAogICAgICAgICAg
ICAgJ3BhZ2UvU3BlZWNoSW5wdXQuaCcsCiAgICAgICAgICAgICAncGFnZS9TcGVlY2hJbnB1dENs
aWVudC5oJywKICAgICAgICAgICAgICdwYWdlL1NwZWVjaElucHV0TGlzdGVuZXIuaCcsCisgICAg
ICAgICAgICAncGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5jcHAnLAorICAgICAgICAgICAgJ3BhZ2Uv
U3BlZWNoSW5wdXRSZXN1bHQuaCcsCiAgICAgICAgICAgICAncGFnZS9TdXNwZW5kYWJsZVRpbWVy
LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TdXNwZW5kYWJsZVRpbWVyLmgnLAogICAgICAgICAg
ICAgJ3BhZ2UvVGltaW5nLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
V2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA1NTFiZDliODViMmU4YmVmOTRjZTExYzgyNzFhNzNl
N2I1ZTZhNmVhLi4zODNiMjA0NWJmZTU2ODgyNGZiOTFhNjIyMjZlYmVmOWYwMDE5MjE5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTE5OTksNiArMTk5OSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBhZ2UvU3BlZWNoSW5wdXQuaCBc
CiAgICAgcGFnZS9TcGVlY2hJbnB1dENsaWVudC5oIFwKICAgICBwYWdlL1NwZWVjaElucHV0TGlz
dGVuZXIuaCBcCisgICAgcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oIFwKICAgICBwYWdlL1dpbmRv
d0ZlYXR1cmVzLmggXAogICAgIHBhZ2UvV29ya2VyTmF2aWdhdG9yLmggXAogICAgIHBhZ2UvWFNT
QXVkaXRvci5oIFwKQEAgLTMxMDUsNiArMzEwNiw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9TSEFSRURfV09SS0VSUz0xKSB7CiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfSU5QVVRfU1BF
RUNIPTEpIHsKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgcGFnZS9TcGVlY2hJbnB1dC5jcHAg
XAorICAgICAgICBwYWdlL1NwZWVjaElucHV0UmVzdWx0LmNwcCBcCiAgICAgICAgIHJlbmRlcmlu
Zy9SZW5kZXJJbnB1dFNwZWVjaC5jcHAKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA0YzFlMDFkN2RlNWU5NDFmMzE1YmFhMjRmZTBiYzIwZWUyMDJh
OWNhLi4wY2JkN2YwMDE1ZjNmN2Q0Y2EzMWUxMjlkODUxMzRkYWE2OWUwN2NmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ3OCw2ICsxNDc4LDggQEAK
IAkJNzU3OTNFRDMwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDAwRDBDRTg1QjAw
N0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk3NTc5M0VENDBEMENFODVCMDA3
RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDEwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VF
dmVudC5tbSAqLzsgfTsKIAkJNzU3OTNFRDUwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VF
dmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwu
aCAqLzsgfTsKKwkJNzU4OTc4RUMxMjcwOTBENjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1ODk3
OEVBMTI3MDkwRDYwMDc2RDVBOSAvKiBTcGVlY2hJbnB1dFJlc3VsdC5jcHAgKi87IH07CisJCTc1
ODk3OEVEMTI3MDkwRDYwMDc2RDVBOSAvKiBTcGVlY2hJbnB1dFJlc3VsdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU4OTc4RUIxMjcwOTBENjAwNzZE
NUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmggKi87IH07CiAJCTc2MzdDNTQxMTEyRTdCNzQwMDNE
NkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQwMTEyRTdCNzQwMDNENkNEQyAvKiBX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNzYzN0M1NDMxMTJFN0I3RTAw
M0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQyMTEyRTdCN0UwMDNENkNEQyAvKiBX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi87IH07CiAJCTc2N0Y5OUJFMTFBMTE5NEEwMDgw
QzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRDExQTExOTRBMDA4MEM1MUQgLyog
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovOyB9OwpAQCAtNzU4OSw2ICs3NTkxLDgg
QEAKIAkJNzU3OTNFRDAwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NzkzRUQxMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNz
YWdlRXZlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
TWVzc2FnZUV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTc5M0VEMjBE
MENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1lc3NhZ2VFdmVudEludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1ODk3OEVBMTI3MDkwRDYwMDc2RDVBOSAvKiBTcGVlY2hJ
bnB1dFJlc3VsdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVl
Y2hJbnB1dFJlc3VsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1ODk3OEVC
MTI3MDkwRDYwMDc2RDVBOSAvKiBTcGVlY2hJbnB1dFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTcGVlY2hJbnB1dFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzYz
N0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjdGOTlCRDExQTExOTRBMDA4MEM1MUQg
LyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTMyMTYsNiArMTMyMjAsOCBAQAogCQkJCTc1NzhGOTA5MTFE
REYyNjkwMEQ5MzNDNSAvKiBTcGVlY2hJbnB1dC5oICovLAogCQkJCTc1NzhGOTBBMTFEREYyNjkw
MEQ5MzNDNSAvKiBTcGVlY2hJbnB1dENsaWVudC5oICovLAogCQkJCTc1NzhGOTFFMTFFNEUzMjgw
MEQ5MzNDNSAvKiBTcGVlY2hJbnB1dExpc3RlbmVyLmggKi8sCisJCQkJNzU4OTc4RUExMjcwOTBE
NjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmNwcCAqLywKKwkJCQk3NTg5NzhFQjEyNzA5
MEQ2MDA3NkQ1QTkgLyogU3BlZWNoSW5wdXRSZXN1bHQuaCAqLywKIAkJCQk2MkMxMjE3QTExQUI5
RTc2MDAzQzQ2MkMgLyogU3VzcGVuZGFibGVUaW1lci5jcHAgKi8sCiAJCQkJNjJDMTIxN0IxMUFC
OUU3NzAwM0M0NjJDIC8qIFN1c3BlbmRhYmxlVGltZXIuaCAqLywKIAkJCQk4QUY0RTU1ODExREM1
QTYzMDAwRUQzREUgLyogVGltaW5nLmNwcCAqLywKQEAgLTIxMTU1LDYgKzIxMTYxLDcgQEAKIAkJ
CQkwODkwMjFBRDEyNkVGNUU5MDA5MkQ1RUEgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk4QUI0QkM3NzEyNkZEQjcxMDBERUI3MjcgLyogSWdub3JlRGVzdHJ1
Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4N0I4NDk2
MTI3MkNFQzgwMEExNDQxNyAvKiBTVkdBbmltYXRlZEFuZ2xlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3NTg5NzhFRDEyNzA5MEQ2MDA3NkQ1QTkgLyogU3BlZWNoSW5wdXRSZXN1bHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMjM3MDgsNiArMjM3MTUsNyBAQAogCQkJCUUxODc3MkYxMTI2RTI2MjkwMDNE
RDU4NiAvKiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTFGMkI1MjEyNkM2MUIy
MDAwNkE3RTYgLyogSW5zcGVjdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxM0Yw
MUYxMTI3MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNzU4OTc4RUMxMjcwOTBENjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcCBi
L1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dC5jcHAKaW5kZXggMjM0NzkxYmM0YjEzZjQzZGY5ZDE3
MzlkNWQyMDVmOWFhMjdlMjA3Mi4uYjNmNTQ5ZTU4OTUyODM2ZGYxMTlkZDgxOGY1NDNmN2Y0MDJk
MGIyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0LmNwcAorKysgYi9XZWJD
b3JlL3BhZ2UvU3BlZWNoSW5wdXQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgU3BlZWNoSW5w
dXQ6OmRpZENvbXBsZXRlUmVjb2duaXRpb24oaW50IGxpc3RlbmVySWQpCiAgICAgICAgIG1fbGlz
dGVuZXJzLmdldChsaXN0ZW5lcklkKS0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihsaXN0ZW5lcklk
KTsKIH0KIAotdm9pZCBTcGVlY2hJbnB1dDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IGxpc3Rl
bmVySWQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KQordm9pZCBTcGVlY2hJbnB1dDo6c2V0UmVjb2du
aXRpb25SZXN1bHQoaW50IGxpc3RlbmVySWQsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0QXJyYXkm
IHJlc3VsdCkKIHsKICAgICAvLyBEb24ndCBhc3NlcnQgaWYgbm90IHByZXNlbnQgYXMgdGhlIGVs
ZW1lbnQgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQgYnkgdGhlIHBhZ2Ugd2hpbGUKICAgICAvLyB0
aGlzIGV2ZW50IHdhcyBvbiB0aGUgd2F5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwZWVj
aElucHV0LmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAppbmRleCBkMTBiNzg5YWFkMjcz
OWVkZDNiZjQ1MzBlN2M2ZTAwYzRlMmRhZThhLi5iNTIxZjNhMTUyOWJjOTdhZjI3YTI4MjY5OTRj
MzUyMjRkOGYzZDc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaAorKysg
Yi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXQuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gU3BlZWNoSW5wdXRMaXN0ZW5lciBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVJlY29yZGluZyhpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29n
bml0aW9uKGludCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCwg
Y29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGlu
dCwgY29uc3QgU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYpOwogCiBwcml2YXRlOgogICAgIFNwZWVj
aElucHV0Q2xpZW50KiBtX2NsaWVudDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dExpc3RlbmVyLmggYi9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRMaXN0ZW5lci5oCmluZGV4
IDM2MDYwZmNkZWZiZGUyOWFjOTczYTE4ZTUwMTllZmI5ZDY0YTJmYzEuLjU2OGIxYjdiNjJmMDI4
MTY3NmE3MTU2ODI3NjcyNTdhZjEwOTIyM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGVl
Y2hJbnB1dExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwZWVjaElucHV0TGlzdGVuZXIu
aApAQCAtMzMsMTAgKzMzLDEzIEBACiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogCisjaW5j
bHVkZSAiU3BlZWNoSW5wdXRSZXN1bHQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxTcGVlY2hJbnB1dFJl
c3VsdD4gPiBTcGVlY2hJbnB1dFJlc3VsdEFycmF5OworCiAvLyBJbnRlcmZhY2UgdG8gYmUgaW1w
bGVtZW50ZWQgYnkgdGhlIGVsZW1lbnQgd2hpY2ggaW52b2tlcyBTcGVlY2hJbnB1dC4KIGNsYXNz
IFNwZWVjaElucHV0TGlzdGVuZXIgewogcHVibGljOgpAQCAtNTMsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgLy8gVGhpcyBtZXRob2QgY2FuIHBvdGVudGlhbGx5IGdldCBjYWxsZWQgbXVsdGlwbGUg
dGltZXMgaWYgdGhlcmUgYXJlIHBhcnRpYWwgcmVzdWx0cwogICAgIC8vIGF2YWlsYWJsZSBhcyB0
aGUgdXNlciBrZWVwcyBzcGVha2luZy4gSWYgdGhlIHNwZWVjaCBjb3VsZCBub3QgYmUgcmVjb2du
aXplZCBwcm9wZXJseQogICAgIC8vIG9yIGlmIHRoZXJlIHdhcyBhbnkgb3RoZXIgZXJyb3JzIGlu
IHRoZSBwcm9jZXNzLCB0aGlzIG1ldGhvZCBtYXkgbmV2ZXIgYmUgY2FsbGVkLgotICAgIHZpcnR1
YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcm
IHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQg
cmVxdWVzdElkLCBjb25zdCBTcGVlY2hJbnB1dFJlc3VsdEFycmF5JikgPSAwOwogCiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB+U3BlZWNoSW5wdXRMaXN0ZW5lcigpIHsgfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL1NwZWVjaElucHV0UmVzdWx0LmNwcCBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJ
bnB1dFJlc3VsdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjViNjk3MmYwMjIzYTU1MzkxYTVjMTk3MTMxMTcy
NTdhMTU2MzAxNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJl
c3VsdC5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTcGVlY2hJbnB1dFJlc3VsdC5oIgorCisjaWYgRU5BQkxFKElOUFVUX1NQRUVD
SCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFNwZWVjaElucHV0UmVzdWx0
PiBTcGVlY2hJbnB1dFJlc3VsdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXR0ZXJhbmNlLCBkb3Vi
bGUgY29uZmlkZW5jZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNwZWVjaElucHV0UmVz
dWx0KHV0dGVyYW5jZSwgY29uZmlkZW5jZSkpOworfQorCitTcGVlY2hJbnB1dFJlc3VsdDo6U3Bl
ZWNoSW5wdXRSZXN1bHQoY29uc3QgU3RyaW5nJiB1dHRlcmFuY2UsIGRvdWJsZSBjb25maWRlbmNl
KQorICAgIDogbV91dHRlcmFuY2UodXR0ZXJhbmNlKQorICAgICwgbV9jb25maWRlbmNlKGNvbmZp
ZGVuY2UpCit7Cit9CisKK2RvdWJsZSBTcGVlY2hJbnB1dFJlc3VsdDo6Y29uZmlkZW5jZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY29uZmlkZW5jZTsKK30KKworY29uc3QgU3RyaW5nJiBTcGVl
Y2hJbnB1dFJlc3VsdDo6dXR0ZXJhbmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91dHRlcmFu
Y2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTlBV
VF9TUEVFQ0gpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuaCBi
L1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmOWZkMTAyYzk0
ODRlYzI4NGQ5ZjJmYjM4NDY4ZWNiYzAyMjQzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBTcGVlY2hJbnB1dFJlc3VsdF9oCisjZGVmaW5lIFNwZWVjaElucHV0UmVzdWx0X2gKKwor
I2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBUaGlzIGNsYXNzIGhvbGRzIG9uZSBzcGVlY2gg
cmVjb2duaXRpb24gcmVzdWx0IGluY2x1ZGluZyB0aGUgdGV4dCBhbmQgb3RoZXIgcmVsYXRlZAor
Ly8gZmllbGRzLCBhcyByZWNlaXZlZCBmcm9tIHRoZSBlbWJlZGRlci4KK2NsYXNzIFNwZWVjaElu
cHV0UmVzdWx0IDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoSW5wdXRSZXN1bHQ+IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hJbnB1dFJlc3VsdD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgdXR0ZXJhbmNlLCBkb3VibGUgY29uZmlkZW5jZSk7CisKKyAgICBkb3VibGUgY29u
ZmlkZW5jZSgpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgdXR0ZXJhbmNlKCkgY29uc3Q7CisK
K3ByaXZhdGU6CisgICAgU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgU3RyaW5nJiB1dHRlcmFuY2Us
IGRvdWJsZSBjb25maWRlbmNlKTsKKworICAgIFN0cmluZyBtX3V0dGVyYW5jZTsKKyAgICBkb3Vi
bGUgbV9jb25maWRlbmNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOUFVUX1NQRUVDSCkKKworI2VuZGlmIC8vIFNwZWVjaElucHV0UmVzdWx0X2gK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TcGVlY2hJbnB1dENsaWVudE1vY2su
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKaW5k
ZXggNmI2NDk0MmYxN2I5MjViNDllZjA5MjE0N2MwYTE2YTA3ZjBkN2NjYy4uYTFiNGRhOThmZjIy
ZTc1MmQyOWY5Y2E1YmY3ZjQxZTczZTVjYjY5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1NwZWVjaElucHV0Q2xpZW50TW9jay5jcHAKQEAgLTkyLDcgKzkyLDkgQEAgdm9pZCBTcGVl
Y2hJbnB1dENsaWVudE1vY2s6OnRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8U3BlZWNoSW5wdXRD
bGllbnRNb2NrPiopCiAgICAgICAgIG1fbGlzdGVuZXItPmRpZENvbXBsZXRlUmVjb3JkaW5nKG1f
cmVxdWVzdElkKTsKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgbV9saXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQobV9yZXF1ZXN0SWQs
IG1fcmVjb2duaXRpb25SZXN1bHQpOworICAgICAgICBTcGVlY2hJbnB1dFJlc3VsdEFycmF5IHJl
c3VsdHM7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKFNwZWVjaElucHV0UmVzdWx0OjpjcmVhdGUo
bV9yZWNvZ25pdGlvblJlc3VsdCwgMS4wKSk7CisgICAgICAgIG1fbGlzdGVuZXItPnNldFJlY29n
bml0aW9uUmVzdWx0KG1fcmVxdWVzdElkLCByZXN1bHRzKTsKICAgICAgICAgbV9saXN0ZW5lci0+
ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihtX3JlcXVlc3RJZCk7CiAgICAgICAgIG1fcmVxdWVzdElk
ID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1l
bnRzLmNwcAppbmRleCA1ZDViOGIzMGI0MTEwNTIwZDFhNGRlN2I4YTc5YzQ4NWQ3OTM2NjA4Li5l
MTkzZWJiMTQ3MjEzNWQ2NWU4NTc1MTI1ZTA5ODZlN2U4ZGEyMzA5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAKQEAgLTQ3MSwxNCArNDcxLDE2
IEBAIHZvaWQgSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmRpZENvbXBsZXRlUmVjb2du
aXRpb24oaW50KQogICAgIHNldFN0YXRlKElkbGUpOwogfQogCi12b2lkIElucHV0RmllbGRTcGVl
Y2hCdXR0b25FbGVtZW50OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFN0cmluZyYg
cmVzdWx0KQordm9pZCBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudDo6c2V0UmVjb2duaXRp
b25SZXN1bHQoaW50LCBjb25zdCBTcGVlY2hJbnB1dFJlc3VsdEFycmF5JiByZXN1bHRzKQogewor
ICAgIG1fcmVzdWx0cyA9IHJlc3VsdHM7CisKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9
IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihzaGFkb3dBbmNlc3Rvck5vZGUoKSk7CiAg
ICAgLy8gVGhlIGNhbGwgdG8gc2V0VmFsdWUoKSBiZWxvdyBkaXNwYXRjaGVzIGFuIGV2ZW50LCBh
bmQgYW4gZXZlbnQgaGFuZGxlciBpbiB0aGUgcGFnZSBtaWdodAogICAgIC8vIHJlbW92ZSB0aGUg
aW5wdXQgZWxlbWVudCBmcm9tIERPTS4gVG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgdmFsaWQgdW50
aWwgd2UgZmluaXNoIG91ciB3b3JrCiAgICAgLy8gaGVyZSwgd2UgdGFrZSBhIHRlbXBvcmFyeSBy
ZWZlcmVuY2UuCiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGhvbGRSZWYoaW5wdXQpOwot
ICAgIGlucHV0LT5zZXRWYWx1ZShyZXN1bHQpOworICAgIGlucHV0LT5zZXRWYWx1ZShyZXN1bHRz
LmlzRW1wdHkoKSA/ICIiIDogcmVzdWx0c1swXS0+dXR0ZXJhbmNlKCkpOwogICAgIGlucHV0LT5k
aXNwYXRjaFdlYmtpdFNwZWVjaENoYW5nZUV2ZW50KCk7CiAgICAgcmVuZGVyZXIoKS0+cmVwYWlu
dCgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVs
ZW1lbnRzLmggYi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApp
bmRleCBjMTQ2YTQyZGM0MzQ5ZTc3ZGRhYmVlMzE3ZGE2ZTcxZWY1NmE3ZTU4Li40NmMxYzhlNGFk
MjA4ODgyZGZmYzc2MmM0YWVkMzQyYmVkNTU2ZjY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0Q29udHJvbElubmVyRWxlbWVudHMuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBTcGVlY2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCiAgICAgdm9pZCBkaWRDb21wbGV0ZVJl
Y29yZGluZyhpbnQpOwogICAgIHZvaWQgZGlkQ29tcGxldGVSZWNvZ25pdGlvbihpbnQpOwotICAg
IHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoaW50LCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7Cisg
ICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFNwZWVjaElucHV0UmVzdWx0
QXJyYXkmKTsKIAogcHJpdmF0ZToKICAgICBJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudChI
VE1MRWxlbWVudCopOwpAQCAtMTUxLDYgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Nh
cHR1cmluZzsKICAgICBTcGVlY2hJbnB1dFN0YXRlIG1fc3RhdGU7CiAgICAgaW50IG1fbGlzdGVu
ZXJJZDsKKyAgICBTcGVlY2hJbnB1dFJlc3VsdEFycmF5IG1fcmVzdWx0czsKIH07CiAKICNlbmRp
ZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjhkOTJiMDM3NDY3YmY1
OWI2ZTczMzk2MTM1NTY0Y2YyZTdkZmEzYy4uZjhmNzE0MGUxMzQzMWRhN2M2YjY3OWQ2NWJhZjZi
MzZhNmY2MzNiNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMTAtMjEgIFNh
dGlzaCBTYW1wYXRoICA8c2F0aXNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGxvdyBlbWJlZGRlciB0byBwYXNzIG9uIGFs
bCB0aGUgc3BlZWNoIHJlY29nbml0aW9uIHJlc3VsdHMgdG8gdGhlIGlucHV0IGVsZW1lbnQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODA2OAorCisg
ICAgICAgICogV2ViS2l0Lmd5cDogQWRkZWQgbmV3IGZpbGVzCisgICAgICAgICogcHVibGljL1dl
YlNwZWVjaElucHV0TGlzdGVuZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoSW5wdXRS
ZXN1bHQuaDogQWRkZWQsIHdyYXBwZXIgYXJvdW5kIFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0UmVzdWx0OjpXZWJTcGVlY2hJbnB1dFJl
c3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0UmVzdWx0Ojp+V2ViU3BlZWNo
SW5wdXRSZXN1bHQpOgorICAgICAgICAqIHNyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTcGVlY2hJbnB1dENsaWVudEltcGw6OnNldFJlY29nbml0aW9uUmVz
dWx0KTogQWNjZXB0cyBhbiBhcnJheSBpbnN0ZWFkIG9mIGEgc2luZ2xlIHN0cmluZy4KKyAgICAg
ICAgKiBzcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNwZWVj
aElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9ja0ltcGw6OnNldFJlY29nbml0aW9uUmVzdWx0KToKKyAgICAgICAg
KiBzcmMvV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaDoKKyAgICAgICAgKiBzcmMv
V2ViU3BlZWNoSW5wdXRSZXN1bHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViU3Bl
ZWNoSW5wdXRSZXN1bHQ6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoSW5wdXRS
ZXN1bHQ6OldlYlNwZWVjaElucHV0UmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
SW5wdXRSZXN1bHQ6OnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaElucHV0UmVzdWx0
OjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0Pik6CisKIDIw
MTAtMTAtMjUgIFBldGVyIFJ5YmluICA8cGV0ZXIucnliaW5AZ21haWwuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGE3N2M2ZjMzMTk4ZmJl
ZTNkMmUwZWZiNGY5ZjEyMDFiMDVlMjAwOGQuLjQ4NGZiMGRiNTNhYWMwNDE3YTIzZDJkNmI3ODMw
MWQ3NzlmYzYzM2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNTcsNiArMjU3LDcgQEAKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2suaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgnLAorICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJTdG9yYWdlQXJlYS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VF
dmVudERpc3BhdGNoZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdG9yYWdlTmFt
ZXNwYWNlLmgnLApAQCAtNTE4LDYgKzUxOSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJT
aGFyZWRXb3JrZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9ja0ltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2tJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNo
SW5wdXRSZXN1bHQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN0b3JhZ2VBcmVhSW1w
bC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZUFyZWFJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlckltcGwuY3BwJywKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoSW5wdXRMaXN0ZW5lci5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgKaW5kZXgg
NmRjM2Q0OTYzNTQ5NjQ0ZjZiZWEzNjYxNGVhZWNlMjViN2VlNjRhMy4uMDRkNmY3MjVlNDZjZmQz
OWYzNTRmYzNlOGYzZDEyNzNlMTY1Mzk2MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTcGVlY2hJbnB1dExpc3RlbmVyLmgKQEAgLTMxLDYgKzMxLDggQEAKICNpZm5kZWYgV2Vi
U3BlZWNoSW5wdXRMaXN0ZW5lcl9oCiAjZGVmaW5lIFdlYlNwZWVjaElucHV0TGlzdGVuZXJfaAog
CisjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRSZXN1bHQuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYlN0cmluZzsKQEAgLTQ3LDE5ICs0OSwyOCBAQCBwdWJsaWM6CiAgICAgLy8g
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOjpzdG9wUmVjb3JkaW5nKCkgd2FzIGNhbGxlZC4KICAg
ICAvLyBUeXBpY2FsbHkgYWZ0ZXIgdGhpcyBjYWxsIHRoZSBsaXN0ZW5lciB3b3VsZCB1cGRhdGUg
dGhlIFVJIHRvIHJlZmxlY3QgdGhhdCByZWNvZ25pdGlvbiBpcwogICAgIC8vIGluIHByb2dyZXNz
LgotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJlY29yZGluZyhpbnQpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSZWNvcmRpbmcoaW50KSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQogCiAgICAgLy8gR2l2ZXMgcmVzdWx0cyBmcm9tIHNwZWVjaCByZWNvZ25p
dGlvbiwgZWl0aGVyIHBhcnRpYWwgb3IgdGhlIGZpbmFsIHJlc3VsdHMuCiAgICAgLy8gVGhpcyBt
ZXRob2QgY2FuIHBvdGVudGlhbGx5IGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUg
YXJlIHBhcnRpYWwgcmVzdWx0cwogICAgIC8vIGF2YWlsYWJsZSBhcyB0aGUgdXNlciBrZWVwcyBz
cGVha2luZy4gSWYgdGhlIHNwZWVjaCBjb3VsZCBub3QgYmUgcmVjb2duaXplZCBwcm9wZXJseQog
ICAgIC8vIG9yIGlmIHRoZXJlIHdhcyBhbnkgb3RoZXIgZXJyb3JzIGluIHRoZSBwcm9jZXNzLCB0
aGlzIG1ldGhvZCBtYXkgbmV2ZXIgYmUgY2FsbGVkLgotICAgIHZpcnR1YWwgdm9pZCBzZXRSZWNv
Z25pdGlvblJlc3VsdChpbnQsIGNvbnN0IFdlYlN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UmVjb2duaXRpb25SZXN1bHQoaW50LCBjb25zdCBXZWJTcGVlY2hJbnB1dFJlc3VsdEFy
cmF5JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBvbmNlIHRoZSBjaHJvbWl1bSBzaWRlIGlzIGFibGUgdG8gc2VuZCBtdWx0aXBs
ZSByZWNvZ25pdGlvbiByZXN1bHRzCisgICAgLy8gdXNpbmcgdGhlIGFib3ZlIGNhbGwuCisgICAg
dmlydHVhbCB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdl
YlN0cmluZyYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgV2ViU3BlZWNoSW5wdXRSZXN1bHRBcnJh
eSByZXN1bHRzKDFVKTsKKyAgICAgICAgcmVzdWx0c1swXS5zZXQocmVzdWx0LCAxLjApOworICAg
ICAgICBzZXRSZWNvZ25pdGlvblJlc3VsdChyZXF1ZXN0SWQsIHJlc3VsdHMpOworICAgIH0KIAog
ICAgIC8vIEluZm9ybXMgdGhhdCBzcGVlY2ggcmVjb2duaXRpb24gaGFzIGNvbXBsZXRlZC4gVGhp
cyBnZXRzIGludm9rZWQgaXJyZXNwZWN0aXZlIG9mIHdoZXRoZXIKICAgICAvLyByZWNvZ25pdGlv
biB3YXMgc3VjY2VzZnVsIG9yIG5vdCwgd2hldGhlciBzZXRSZWNvZ25pdGlvblJlc3VsdCgpIHdh
cyBpbnZva2VkIG9yIG5vdC4gVGhlCiAgICAgLy8gaGFuZGxlciB0eXBpY2FsbHkgZnJlZXMgdXAg
YW55IHRlbXBvcmFyeSByZXNvdXJjZXMgYWxsb2NhdGVkIGFuZCB3YWl0cyBmb3IgdGhlIG5leHQg
c3BlZWNoCiAgICAgLy8gcmVjb2duaXRpb24gcmVxdWVzdC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVSZWNvZ25pdGlvbihpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxl
dGVSZWNvZ25pdGlvbihpbnQpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKIHBy
b3RlY3RlZDoKICAgICB+V2ViU3BlZWNoSW5wdXRMaXN0ZW5lcigpIHsgfQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dFJlc3VsdC5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTcGVlY2hJbnB1dFJlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxZjE1ZDc0
NzJmMjNhMzEwNGZmODYzODE4YzMyMjViNzNmODk3NjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaElucHV0UmVzdWx0LmgKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoSW5wdXRSZXN1bHRfaAorI2RlZmluZSBXZWJTcGVl
Y2hJbnB1dFJlc3VsdF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQ
cml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9y
LmgiCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXVEYgewordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7Cit9CisjZW5kaWYKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFNwZWVjaElucHV0UmVzdWx0OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworLy8gVGhpcyBjbGFzcyBob2xkcyBvbmUgc3BlZWNoIHJlY29nbml0aW9uIHJlc3VsdCBp
bmNsdWRpbmcgdGhlIHRleHQgYW5kIG90aGVyIHJlbGF0ZWQKKy8vIGZpZWxkcywgYXMgcmVjZWl2
ZWQgZnJvbSB0aGUgZW1iZWRkZXIuCitjbGFzcyBXZWJTcGVlY2hJbnB1dFJlc3VsdCB7CitwdWJs
aWM6CisgICAgV2ViU3BlZWNoSW5wdXRSZXN1bHQoKSB7IH0KKyAgICB+V2ViU3BlZWNoSW5wdXRS
ZXN1bHQoKSB7IHJlc2V0KCk7IH0KKworICAgIFdFQktJVF9BUEkgdm9pZCBzZXQoY29uc3QgV2Vi
U3RyaW5nJiB1dHRlcmFuY2UsIGRvdWJsZSBjb25maWRlbmNlKTsKKyAgICBXRUJLSVRfQVBJIHZv
aWQgcmVzZXQoKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYlNwZWVjaElu
cHV0UmVzdWx0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3Vs
dD4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U3BlZWNoSW5wdXRS
ZXN1bHQ+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdl
YkNvcmU6OlNwZWVjaElucHV0UmVzdWx0PiBtX3ByaXZhdGU7Cit9OworCit0eXBlZGVmIFdlYlZl
Y3RvcjxXZWJTcGVlY2hJbnB1dFJlc3VsdD4gV2ViU3BlZWNoSW5wdXRSZXN1bHRBcnJheTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTcGVlY2hJbnB1dFJlc3VsdF9o
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50SW1wbC5jcHAKaW5kZXgg
OTYzZDQ0MDVhNjJkMzJlMWE4Y2VjZDU0YzA4YzViYmViM2E2MmRjYS4uODhlMTNhNzZmOThmOGFl
MGMwYjJhNDg1ZTcwZTVlZGJmNWNmODMyYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TcGVlY2hJbnB1dENsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvU3Bl
ZWNoSW5wdXRDbGllbnRJbXBsLmNwcApAQCAtODYsMTAgKzg2LDEzIEBAIHZvaWQgU3BlZWNoSW5w
dXRDbGllbnRJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0aW9uKGludCByZXF1ZXN0SWQpCiAgICAg
bV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlvbihyZXF1ZXN0SWQpOwogfQogCi12b2lk
IFNwZWVjaElucHV0Q2xpZW50SW1wbDo6c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJ
ZCwgY29uc3QgV2ViU3RyaW5nJiByZXN1bHQpCit2b2lkIFNwZWVjaElucHV0Q2xpZW50SW1wbDo6
c2V0UmVjb2duaXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViU3BlZWNoSW5wdXRS
ZXN1bHRBcnJheSYgcmVzdWx0cykKIHsKICAgICBBU1NFUlQobV9saXN0ZW5lcik7Ci0gICAgbV9s
aXN0ZW5lci0+c2V0UmVjb2duaXRpb25SZXN1bHQocmVxdWVzdElkLCByZXN1bHQpOworICAgIFdl
YkNvcmU6OlNwZWVjaElucHV0UmVzdWx0QXJyYXkgd2ViY29yZVJlc3VsdHMocmVzdWx0cy5zaXpl
KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkKKyAg
ICAgICAgd2ViY29yZVJlc3VsdHNbaV0gPSByZXN1bHRzW2ldOworICAgIG1fbGlzdGVuZXItPnNl
dFJlY29nbml0aW9uUmVzdWx0KHJlcXVlc3RJZCwgd2ViY29yZVJlc3VsdHMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvU3BlZWNo
SW5wdXRDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaElucHV0Q2xpZW50
SW1wbC5oCmluZGV4IDgxN2IzMmIxMjQxNGIzYTA3ZGZhM2FlMzUxOTA4N2RlYTVhMGY3MzMuLmM4
YzIzZjhiZjQzMTQ4ZDZkZjQwYzBjMmNmNTg2OWM0NzNhMmRlY2IgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9TcGVlY2hJbnB1dENsaWVudEltcGwuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6
CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCiAgICAgdm9pZCBkaWRD
b21wbGV0ZVJlY29yZGluZyhpbnQpOwotICAgIHZvaWQgc2V0UmVjb2duaXRpb25SZXN1bHQoaW50
LCBjb25zdCBXZWJTdHJpbmcmKTsKKyAgICB2b2lkIHNldFJlY29nbml0aW9uUmVzdWx0KGludCwg
Y29uc3QgV2ViU3BlZWNoSW5wdXRSZXN1bHRBcnJheSYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVS
ZWNvZ25pdGlvbihpbnQpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcAppbmRleCA2MGM0ZmVk
ODUyYjI4NGUwMjcxYWQwMGVkOTcxMDAyYTJmNTdhNGI2Li5iZDE1ZmE0ZTEyZTQ1ODNiZWNlMjdl
NDg4ZWIwODFlYzM5YjE4YmUwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNw
ZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2
b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBsOjpkaWRDb21wbGV0ZVJlY29nbml0
aW9uKGludCByZXF1ZXN0SWQpCiAgICAgbV9saXN0ZW5lci0+ZGlkQ29tcGxldGVSZWNvZ25pdGlv
bihyZXF1ZXN0SWQpOwogfQogCi12b2lkIFdlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2tJbXBs
OjpzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQgcmVxdWVzdElkLCBjb25zdCBXVEY6OlN0cmluZyYg
cmVzdWx0KQordm9pZCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrSW1wbDo6c2V0UmVjb2du
aXRpb25SZXN1bHQoaW50IHJlcXVlc3RJZCwgY29uc3QgV2ViQ29yZTo6U3BlZWNoSW5wdXRSZXN1
bHRBcnJheSYgcmVzdWx0KQogewogICAgIG1fbGlzdGVuZXItPnNldFJlY29nbml0aW9uUmVzdWx0
KHJlcXVlc3RJZCwgcmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9ja0ltcGwuaAppbmRleCBlZGJmY2EzZWU2MGU5Mzk0
Mjg5M2UyNzIxODkzZTQzYTBlYjg3YzVmLi41ZDEwZjg5YjFjMzNkNWI0YmZiY2E0YjQ5ZjY0MDU3
MjFhZGM3MjM1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
Q29udHJvbGxlck1vY2tJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJ
bnB1dENvbnRyb2xsZXJNb2NrSW1wbC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAv
LyBXZWJDb3JlOjpTcGVlY2hJbnB1dExpc3RlbmVyIG1ldGhvZHMuCiAgICAgdm9pZCBkaWRDb21w
bGV0ZVJlY29yZGluZyhpbnQgcmVxdWVzdElkKTsKICAgICB2b2lkIGRpZENvbXBsZXRlUmVjb2du
aXRpb24oaW50IHJlcXVlc3RJZCk7Ci0gICAgdm9pZCBzZXRSZWNvZ25pdGlvblJlc3VsdChpbnQg
cmVxdWVzdElkLCBjb25zdCBXVEY6OlN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldFJlY29n
bml0aW9uUmVzdWx0KGludCByZXF1ZXN0SWQsIGNvbnN0IFdlYkNvcmU6OlNwZWVjaElucHV0UmVz
dWx0QXJyYXkmIHJlc3VsdCk7CiAKICAgICAvLyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIgbWV0
aG9kcy4KICAgICBib29sIHN0YXJ0UmVjb2duaXRpb24oaW50IHJlcXVlc3RJZCwgY29uc3QgV2Vi
UmVjdCYgZWxlbWVudFJlY3QpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
cGVlY2hJbnB1dFJlc3VsdC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaElucHV0
UmVzdWx0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xY2FmYzg0ZDM5OGExMzI1ZGE0NTYxZTBiZDg1MWRiYTZh
OWZlYzJmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hJ
bnB1dFJlc3VsdC5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dFJlc3VsdC5oIgorCisjaW5jbHVkZSAiU3BlZWNo
SW5wdXRSZXN1bHQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKwordm9pZCBXZWJTcGVlY2hJbnB1dFJlc3VsdDo6cmVzZXQoKQoreworICAgIG1f
cHJpdmF0ZS5yZXNldCgpOworfQorCitXZWJTcGVlY2hJbnB1dFJlc3VsdDo6V2ViU3BlZWNoSW5w
dXRSZXN1bHQoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpTcGVlY2hJbnB1dFJlc3VsdD4mIHZh
bHVlKQorICAgIDogbV9wcml2YXRlKHZhbHVlKQoreworfQorCit2b2lkIFdlYlNwZWVjaElucHV0
UmVzdWx0OjpzZXQoY29uc3QgV2ViU3RyaW5nJiB1dHRlcmFuY2UsIGRvdWJsZSBjb25maWRlbmNl
KQoreworICAgIG1fcHJpdmF0ZSA9IFdlYkNvcmU6OlNwZWVjaElucHV0UmVzdWx0OjpjcmVhdGUo
dXR0ZXJhbmNlLCBjb25maWRlbmNlKTsKK30KKworV2ViU3BlZWNoSW5wdXRSZXN1bHQ6Om9wZXJh
dG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6U3BlZWNoSW5wdXRSZXN1bHQ+KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="61880"
          type_id="1"
          status="+"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>