<?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>58112</bug_id>
          
          <creation_ts>2011-04-07 19:18:44 -0700</creation_ts>
          <short_desc>DocumentMaker::AllMarkers should not be a part of DocumentMarker::MarkerType</short_desc>
          <delta_ts>2011-04-15 10:57:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</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>58111</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hajime Morrita">morrita</assigned_to>
          <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>381933</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-07 19:18:44 -0700</bug_when>
    <thetext>DocumentMarker::MarkerType is a enumeration type. But AllMarkers are sum of all types and used as a mask.
and MarkerType is used as a enum at some part and as a mask on the other part. 
This mixture should be removed and AllMarkers should have a different type other than MarkerType.

My plan is to convert MarkerTypes (typedef of unsigned) to a class and make AllMarkers an instance of that class.
At a glance, this makes a bit over-engineering. But this must help upcoming refactoring series.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381944</commentid>
    <comment_count>1</comment_count>
      <attachid>88758</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-07 19:53:25 -0700</bug_when>
    <thetext>Created attachment 88758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384588</commentid>
    <comment_count>2</comment_count>
      <attachid>88758</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 18:08:42 -0700</bug_when>
    <thetext>Comment on attachment 88758
Patch

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

&gt; Source/WebCore/dom/DocumentMarker.h:63
&gt; +        bool matches(MarkerType type) const { return m_mask &amp; type; }

This should be &quot;has&quot; or &quot;contains&quot;?  &quot;matches&quot; sounds like equality.

&gt; Source/WebCore/dom/DocumentMarkerController.cpp:160
&gt; -    if (!possiblyHasMarkers(markerType))
&gt; +    if (!possiblyHasMarkers(DocumentMarker::AllMarkers()))

I don&apos;t quite understand why this change doesn&apos;t change the behavior.

&gt; Source/WebCore/dom/DocumentMarkerController.cpp:181
&gt; -        if (marker.endOffset &lt; startOffset || (marker.type != markerType &amp;&amp; markerType != DocumentMarker::AllMarkers))
&gt; +        if (marker.endOffset &lt; startOffset)

Ditto.

&gt; Source/WebCore/dom/DocumentMarkerController.cpp:537
&gt; -    if (!possiblyHasMarkers(markerType))
&gt; +    if (!possiblyHasMarkers(DocumentMarker::AllMarkers()))

Ditto.

&gt; Source/WebCore/dom/DocumentMarkerController.cpp:552
&gt; -        if (marker.startOffset &gt;= startOffset &amp;&amp; (markerType == DocumentMarker::AllMarkers || marker.type == markerType)) {
&gt; +        if (marker.startOffset &gt;= startOffset) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384973</commentid>
    <comment_count>3</comment_count>
      <attachid>89395</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-13 10:09:35 -0700</bug_when>
    <thetext>Created attachment 89395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384975</commentid>
    <comment_count>4</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-13 10:13:10 -0700</bug_when>
    <thetext>Hi Ryosuke, thank you for reviewing!
I updated the patch for addressing your point.

(In reply to comment #2)
&gt; (From update of attachment 88758 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88758&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/DocumentMarker.h:63
&gt; &gt; +        bool matches(MarkerType type) const { return m_mask &amp; type; }
&gt; 
&gt; This should be &quot;has&quot; or &quot;contains&quot;?  &quot;matches&quot; sounds like equality.
Renamed.

&gt; 
&gt; &gt; Source/WebCore/dom/DocumentMarkerController.cpp:160
&gt; &gt; -    if (!possiblyHasMarkers(markerType))
&gt; &gt; +    if (!possiblyHasMarkers(DocumentMarker::AllMarkers()))
&gt; 
&gt; I don&apos;t quite understand why this change doesn&apos;t change the behavior.
For shiftMarkers() and copyMarkers(), all caller sites call with default parameter for markers,
whose value is AllMarkers. So I removed the marker argument.
Actually copyMakers() and shiftaMarkers() are used for syncing markers with DOM modifications,
So limiting marker types doesn&apos;t make sense.

&gt; 
&gt; &gt; Source/WebCore/dom/DocumentMarkerController.cpp:181
&gt; &gt; -        if (marker.endOffset &lt; startOffset || (marker.type != markerType &amp;&amp; markerType != DocumentMarker::AllMarkers))
&gt; &gt; +        if (marker.endOffset &lt; startOffset)
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/dom/DocumentMarkerController.cpp:537
&gt; &gt; -    if (!possiblyHasMarkers(markerType))
&gt; &gt; +    if (!possiblyHasMarkers(DocumentMarker::AllMarkers()))
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/dom/DocumentMarkerController.cpp:552
&gt; &gt; -        if (marker.startOffset &gt;= startOffset &amp;&amp; (markerType == DocumentMarker::AllMarkers || marker.type == markerType)) {
&gt; &gt; +        if (marker.startOffset &gt;= startOffset) {
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385866</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-14 10:48:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &gt; Source/WebCore/dom/DocumentMarkerController.cpp:160
&gt; &gt; &gt; -    if (!possiblyHasMarkers(markerType))
&gt; &gt; &gt; +    if (!possiblyHasMarkers(DocumentMarker::AllMarkers()))
&gt; &gt; 
&gt; &gt; I don&apos;t quite understand why this change doesn&apos;t change the behavior.
&gt; For shiftMarkers() and copyMarkers(), all caller sites call with default parameter for markers,
&gt; whose value is AllMarkers. So I removed the marker argument.
&gt; Actually copyMakers() and shiftaMarkers() are used for syncing markers with DOM modifications,
&gt; So limiting marker types doesn&apos;t make sense.

I see. Thanks for the clarification.  It made my review process much easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386747</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-04-15 10:57:17 -0700</bug_when>
    <thetext>Committed r83991: &lt;http://trac.webkit.org/changeset/83991&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88758</attachid>
            <date>2011-04-07 19:53:25 -0700</date>
            <delta_ts>2011-04-13 10:09:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58112-20110407195323.patch</filename>
            <type>text/plain</type>
            <size>17311</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMyNDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YWM1ZjgzOTNlNDk2ZDNm
OTEyODE5NDI4N2I4YjAwZTQwNDc1NmVlLi45YTRiZjkwMjM4YWE5NGQzYThmMDQ3Mzk1OGY3N2Rk
ZTg3YWEzNzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDQtMDcgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRG9jdW1lbnRNYWtlcjo6QWxsTWFya2VycyBzaG91bGQg
bm90IGJlIGEgcGFydCBvZiBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgxMTIKKyAgICAgICAgCisgICAg
ICAgIC0gQ29udmVydGVkIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyBmcm9tIHVuc2lnbmVk
IGludCB0byBhIGNsYXNzLgorICAgICAgICAtIENvbnZlcnRlZCBEb2N1bWVudE1hcmtlcjo6QWxs
TWFya2VycyBmcm9tIGFuIGVudW0gZW50cnkgdG8gYSBzdWJjbGFzcyBvZiBNYXJrZXJUeXBlcy4K
KyAgICAgICAgLSBDaGFuZ2VkIHR5cGUgb2Ygc29tZSBNYXJrZXJUeXBlIGFyZ3VtZW50IG9uIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlciBBUEkgdG8gTWFya2VyVHlwZXMKKyAgICAgICAgICB3aGlj
aCBzaG91bGQgYWxsb3cgYSBjb21iaW5hdGlvbiBvZiBNYXJrZXJUeXBlIGNvbnN0YW5zdHMuCisg
ICAgICAgIC0gUmVtb3ZlZCBzb21lIE1hcmtlclR5cGUgYXJndW1lbnRzIG9uIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlciBBUEkKKyAgICAgICAgICB3aGljaCBvbmx5IHJlY2VpdmVkIEFsbE1hcmtl
cnMuCisgICAgICAgIAorICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzOjpNYXJr
ZXJUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXM6
Om1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVz
OjppbnRlcnNlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlczo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZXM6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6TWFya2Vy
VHlwZXM6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6QWxsTWFy
a2Vyczo6QWxsTWFya2Vycyk6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnBvc3Np
Ymx5SGFzTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXI6OmFkZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXI6OmNvcHlNYXJrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6cmVtb3ZlTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6Om1hcmtlckNvbnRhaW5pbmdQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6Om1hcmtlcnNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJrZXJzRnJv
bU1hcmtlck1hcFZlY3RvclBhaXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpyZXBhaW50TWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXI6OnNoaWZ0TWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OnNldE1hcmtlcnNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpoYXNNYXJrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y2xlYXJEZXNjcmlwdGlvbk9uTWFya2Vyc0ludGVy
c2VjdGluZ1JhbmdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg6
CisKIDIwMTEtMDQtMDcgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IDhkMzE0NmFiZDRkNTE0ZDE2MTFiNjA4YWU0NTk5NTRmZjBiZGI5ZTguLmZlYmQ5
Y2I0N2JmODgxYjE4NjA3MzA5MjdlMTI4NTI0NmEyNzEzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC01NzMsNyArNTczLDcgQEAgX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2ll
c0VSTjNXVEY3SGFzaFNldElOUzBfNlN0cmluZ0VOUzBfMTBTdHJpbmdIYXMKIF9fWk43V2ViQ29y
ZTIzb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2VFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUy
NEJpbmFyeVByb3BlcnR5TGlzdFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJD
b3JlMjRDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJl
c291cmNlRQotX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxM3JlbW92ZU1h
cmtlcnNFagorX19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxM3JlbW92ZU1h
cmtlcnNFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFCiBfX1pON1dlYkNvcmUyNERv
Y3VtZW50TWFya2VyQ29udHJvbGxlcjE0bWFya2Vyc0Zvck5vZGVFUE5TXzROb2RlRQogX19aTjdX
ZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxNG1hcmtlcnNGb3JOb2RlRVBOU180Tm9k
ZUUKIF9fWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMjNyZW5kZXJlZFJlY3Rz
Rm9yTWFya2Vyc0VOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJUeXBlRQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRNYXJrZXIuaAppbmRleCAyOTI5MGMzMDVhZjE4YjZiNTBjY2YyN2E5ODg0N2VlZTk3
MzhkNWE1Li40ZTE1ZDZhZTkxMWNlOTFjYTIzNmVhODJiZjQyYzA3YWU1YzA1YThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaApAQCAtNTMsMTAgKzUzLDMzIEBAIHN0cnVjdCBEb2N1
bWVudE1hcmtlciB7CiAgICAgICAgIEF1dG9jb3JyZWN0ZWQgPSAxIDw8IDYsCiAgICAgICAgIC8v
IE9uIHNvbWUgcGxhdGZvcm1zLCB0aGlzIHByZXZlbnRzIHRoZSB0ZXh0IGZyb20gYmVpbmcgc3Bl
bGxjaGVja2VkIGFnYWluLgogICAgICAgICBTcGVsbENoZWNraW5nRXhlbXB0aW9uID0gMSA8PCA3
LAotICAgICAgICBBbGxNYXJrZXJzID0gU3BlbGxpbmcgfCBHcmFtbWFyIHwgVGV4dE1hdGNoIHwg
UmVwbGFjZW1lbnQgfCBDb3JyZWN0aW9uSW5kaWNhdG9yIHwgUmVqZWN0ZWRDb3JyZWN0aW9uIHwg
QXV0b2NvcnJlY3RlZCB8IFNwZWxsQ2hlY2tpbmdFeGVtcHRpb24KICAgICB9OworCisgICAgY2xh
c3MgTWFya2VyVHlwZXMgeworICAgIHB1YmxpYzoKKyAgICAgICAgLy8gVGhlIGNvbnN0cnVjdG9y
IGlzIGludGVudGlvbmFsbHkgaW1wbGljaXQgdG8gYWxsb3cgY29udmVyc2lvbiBmcm9tIHRoZSBi
aXQtd2lzZSBzdW0gb2YgYWJvdmUgdHlwZXMKKyAgICAgICAgTWFya2VyVHlwZXModW5zaWduZWQg
bWFzaykgOiBtX21hc2sobWFzaykgeyB9CisKKyAgICAgICAgYm9vbCBtYXRjaGVzKE1hcmtlclR5
cGUgdHlwZSkgY29uc3QgeyByZXR1cm4gbV9tYXNrICYgdHlwZTsgfQorICAgICAgICBib29sIGlu
dGVyc2VjdHMoY29uc3QgTWFya2VyVHlwZXMmIHR5cGVzKSBjb25zdCB7IHJldHVybiAobV9tYXNr
ICYgdHlwZXMubV9tYXNrKTsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWFya2Vy
VHlwZXMmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX21hc2sgPT0gb3RoZXIubV9tYXNrOyB9CisK
KyAgICAgICAgdm9pZCBhZGQoY29uc3QgTWFya2VyVHlwZXMmIHR5cGVzKSB7IG1fbWFzayB8PSB0
eXBlcy5tX21hc2s7IH0KKyAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgTWFya2VyVHlwZXMmIHR5
cGVzKSB7IG1fbWFzayAmPSB+dHlwZXMubV9tYXNrOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICB1bnNpZ25lZCBtX21hc2s7CisgICAgfTsKKworICAgIGNsYXNzIEFsbE1hcmtlcnMgOiBwdWJs
aWMgTWFya2VyVHlwZXMgeworICAgIHB1YmxpYzoKKyAgICAgICAgQWxsTWFya2VycygpCisgICAg
ICAgICAgICA6IE1hcmtlclR5cGVzKFNwZWxsaW5nIHwgR3JhbW1hciB8IFRleHRNYXRjaCB8IFJl
cGxhY2VtZW50IHwgQ29ycmVjdGlvbkluZGljYXRvciB8IFJlamVjdGVkQ29ycmVjdGlvbiB8IEF1
dG9jb3JyZWN0ZWQgfCBTcGVsbENoZWNraW5nRXhlbXB0aW9uKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICB9OworICAgIAogICAgIE1hcmtlclR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHVuc2ln
bmVkIE1hcmtlclR5cGVzOwogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVk
IGVuZE9mZnNldDsKICAgICBTdHJpbmcgZGVzY3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDZjOTMyNGE2YjdmYjUxOTA2
YTY2NzllNjc3ZDIyOTMwMjAwOWRkYWUuLjUzNTA4YjY0ZjIxNjc2NTI4MGYxMjk5NWIyNjMxNWE2
MGU4YjI5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBJbnRSZWN0IHBsYWNlaG9sZGVyUmVj
dEZvck1hcmtlcigpCiAKIGlubGluZSBib29sIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cG9z
c2libHlIYXNNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyB0eXBlcykKIHsKLSAg
ICByZXR1cm4gbV9wb3NzaWJseUV4aXN0aW5nTWFya2VyVHlwZXMgJiB0eXBlczsKKyAgICByZXR1
cm4gbV9wb3NzaWJseUV4aXN0aW5nTWFya2VyVHlwZXMuaW50ZXJzZWN0cyh0eXBlcyk7CiB9CiAK
IERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKCkKQEAg
LTkxLDcgKzkxLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtlcihO
b2RlKiBub2RlLCBEb2N1bWVudE1hcmtlciBuZXdNYXJrZXIpCiAgICAgaWYgKG5ld01hcmtlci5l
bmRPZmZzZXQgPT0gbmV3TWFya2VyLnN0YXJ0T2Zmc2V0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBlcyB8PSBuZXdNYXJrZXIudHlwZTsKKyAgICBt
X3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBlcy5hZGQobmV3TWFya2VyLnR5cGUpOwogCiAgICAg
TWFya2VyTWFwVmVjdG9yUGFpciogdmVjdG9yUGFpciA9IG1fbWFya2Vycy5nZXQobm9kZSk7CiAK
QEAgLTE1MiwxMiArMTUyLDEyIEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjphZGRN
YXJrZXIoTm9kZSogbm9kZSwgRG9jdW1lbnRNYXJrZXIgbmV3TWFya2VyKQogCiAvLyBjb3BpZXMg
bWFya2VycyBmcm9tIHNyY05vZGUgdG8gZHN0Tm9kZSwgYXBwbHlpbmcgdGhlIHNwZWNpZmllZCBz
aGlmdCBkZWx0YSB0byB0aGUgY29waWVzLiAgVGhlIHNoaWZ0IGlzCiAvLyB1c2VmdWwgaWYsIGUu
Zy4sIHRoZSBjYWxsZXIgaGFzIGNyZWF0ZWQgdGhlIGRzdE5vZGUgZnJvbSBhIG5vbi1wcmVmaXgg
c3Vic3RyaW5nIG9mIHRoZSBzcmNOb2RlLgotdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OmNvcHlNYXJrZXJzKE5vZGUqIHNyY05vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQgbGVu
Z3RoLCBOb2RlKiBkc3ROb2RlLCBpbnQgZGVsdGEsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBl
IG1hcmtlclR5cGUpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29weU1hcmtlcnMo
Tm9kZSogc3JjTm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCBsZW5ndGgsIE5vZGUqIGRz
dE5vZGUsIGludCBkZWx0YSkKIHsKICAgICBpZiAobGVuZ3RoIDw9IDApCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmICghcG9zc2libHlIYXNNYXJrZXJzKG1hcmtlclR5cGUpKQorICAgIGlmICgh
cG9zc2libHlIYXNNYXJrZXJzKERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkpKQogICAgICAg
ICByZXR1cm47CiAgICAgQVNTRVJUKCFtX21hcmtlcnMuaXNFbXB0eSgpKTsKIApAQCAtMTc4LDcg
KzE3OCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb3B5TWFya2VycyhOb2Rl
KiBzcmNOb2RlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIC8vIHNraXAgbWFya2VyIHRoYXQgaXMgYmVmb3JlIHRoZSBzcGVjaWZpZWQgcmFuZ2Ug
b3IgaXMgdGhlIHdyb25nIHR5cGUKLSAgICAgICAgaWYgKG1hcmtlci5lbmRPZmZzZXQgPCBzdGFy
dE9mZnNldCB8fCAobWFya2VyLnR5cGUgIT0gbWFya2VyVHlwZSAmJiBtYXJrZXJUeXBlICE9IERv
Y3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKSkKKyAgICAgICAgaWYgKG1hcmtlci5lbmRPZmZzZXQg
PCBzdGFydE9mZnNldCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIHBpbiB0
aGUgbWFya2VyIHRvIHRoZSBzcGVjaWZpZWQgcmFuZ2UgYW5kIGFwcGx5IHRoZSBzaGlmdCBkZWx0
YQpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1v
dmVNYXJrZXJzKE5vZGUqIG5vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpCiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICAvLyBza2lwIG1hcmtlciB0aGF0IGlzIHdyb25nIHR5cGUgb3Ig
YmVmb3JlIHRhcmdldAotICAgICAgICBpZiAobWFya2VyLmVuZE9mZnNldCA8PSBzdGFydE9mZnNl
dCB8fCAhKG1hcmtlci50eXBlICYgbWFya2VyVHlwZXMpKSB7CisgICAgICAgIGlmIChtYXJrZXIu
ZW5kT2Zmc2V0IDw9IHN0YXJ0T2Zmc2V0IHx8ICFtYXJrZXJUeXBlcy5tYXRjaGVzKG1hcmtlci50
eXBlKSkgewogICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KQEAgLTI5Miw3ICsyOTIsNyBAQCBEb2N1bWVudE1hcmtlciogRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjptYXJrZXJDb250YWluaW5nUG9pbnQoY29uc3QgSW50UG9pbnQmCiAgICAgICAgICAg
ICBEb2N1bWVudE1hcmtlciYgbWFya2VyID0gbWFya2Vyc1ttYXJrZXJJbmRleF07CiAKICAgICAg
ICAgICAgIC8vIHNraXAgbWFya2VyIHRoYXQgaXMgd3JvbmcgdHlwZQotICAgICAgICAgICAgaWYg
KG1hcmtlci50eXBlICE9IG1hcmtlclR5cGUgJiYgbWFya2VyVHlwZSAhPSBEb2N1bWVudE1hcmtl
cjo6QWxsTWFya2VycykKKyAgICAgICAgICAgIGlmIChtYXJrZXIudHlwZSAhPSBtYXJrZXJUeXBl
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBJbnRSZWN0JiByID0g
cmVjdHNbbWFya2VySW5kZXhdOwpAQCAtMzM0LDcgKzMzNCw3IEBAIFZlY3RvcjxEb2N1bWVudE1h
cmtlcj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjptYXJrZXJzSW5SYW5nZShSYW5nZSogcmFu
Z2UsIERvCiAgICAgICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gbWFya2VycyA9IG1hcmtlcnNG
b3JOb2RlKG5vZGUpOwogICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBtYXJrZXJzLmVuZCgpOwogICAgICAgICBmb3IgKFZlY3RvcjxEb2N1bWVudE1h
cmtlcj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFya2Vycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKLSAgICAgICAgICAgIGlmICghKG1hcmtlclR5cGUgJiBpdC0+dHlwZSkpCisgICAgICAg
ICAgICBpZiAobWFya2VyVHlwZSAhPSBpdC0+dHlwZSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlmIChub2RlID09IHN0YXJ0Q29udGFpbmVyICYmIGl0LT5lbmRPZmZz
ZXQgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5zdGFydE9mZnNldCgpKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTM2Nyw3ICszNjcsNyBAQCBWZWN0b3I8SW50UmVjdD4g
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW5kZXJlZFJlY3RzRm9yTWFya2VycyhEb2N1bWVu
dE1hcmtlcgogICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXIgbWFya2VyID0gbWFya2Vyc1ttYXJr
ZXJJbmRleF07CiAKICAgICAgICAgICAgIC8vIHNraXAgbWFya2VyIHRoYXQgaXMgd3JvbmcgdHlw
ZQotICAgICAgICAgICAgaWYgKG1hcmtlci50eXBlICE9IG1hcmtlclR5cGUgJiYgbWFya2VyVHlw
ZSAhPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycykKKyAgICAgICAgICAgIGlmIChtYXJrZXIu
dHlwZSAhPSBtYXJrZXJUeXBlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
ICAgICBJbnRSZWN0IHIgPSByZWN0c1ttYXJrZXJJbmRleF07CkBAIC00MDgsMTMgKzQwOCwxMyBA
QCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2VycyhEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZXMgbWFya2VyVAogICAgICAgICByZW1vdmVNYXJrZXJzRnJvbU1hcmtl
ck1hcFZlY3RvclBhaXIobm9kZSwgdmVjdG9yUGFpciwgbWFya2VyVHlwZXMpOwogICAgIH0KIAot
ICAgIG1fcG9zc2libHlFeGlzdGluZ01hcmtlclR5cGVzICY9IH5tYXJrZXJUeXBlczsKKyAgICBt
X3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBlcy5yZW1vdmUobWFya2VyVHlwZXMpOwogfQogCiAv
LyBUaGlzIGZ1bmN0aW9uIG1heSByZWxlYXNlIG5vZGUgYW5kIHZlY3RvclBhaXIuCiB2b2lkIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVtb3ZlTWFya2Vyc0Zyb21NYXJrZXJNYXBWZWN0b3JQ
YWlyKE5vZGUqIG5vZGUsIE1hcmtlck1hcFZlY3RvclBhaXIqIHZlY3RvclBhaXIsIERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlcyBtYXJrZXJUeXBlcykKIHsKLSAgICBpZiAoIX4obWFya2VyVHlw
ZXMgJiBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycykpIHsKKyAgICBpZiAobWFya2VyVHlwZXMg
PT0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSkgewogICAgICAgICBkZWxldGUgdmVjdG9y
UGFpcjsKICAgICAgICAgbV9tYXJrZXJzLnJlbW92ZShub2RlKTsKICAgICAgICAgaWYgKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKQpAQCAtNDI4LDcgKzQyOCw3IEBA
IHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJrZXJzRnJvbU1hcmtlck1h
cFZlY3RvclBhaXIoTm9kZSogbm9kZSwKICAgICAgICAgICAgIERvY3VtZW50TWFya2VyIG1hcmtl
ciA9IG1hcmtlcnNbaV07CiAKICAgICAgICAgICAgIC8vIHNraXAgbm9kZXMgdGhhdCBhcmUgbm90
IG9mIHRoZSBzcGVjaWZpZWQgdHlwZQotICAgICAgICAgICAgaWYgKCEobWFya2VyLnR5cGUgJiBt
YXJrZXJUeXBlcykpIHsKKyAgICAgICAgICAgIGlmICghbWFya2VyVHlwZXMubWF0Y2hlcyhtYXJr
ZXIudHlwZSkpIHsKICAgICAgICAgICAgICAgICArK2k7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9CkBAIC00NTksOSArNDU5LDkgQEAgdm9pZCBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtlcnNGcm9tTWFya2VyTWFwVmVjdG9yUGFpcihOb2RlKiBu
b2RlLAogICAgICAgICBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBlcyA9IDA7CiB9CiAKLXZv
aWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZXBhaW50TWFya2VycyhEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZSBtYXJrZXJUeXBlKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6
OnJlcGFpbnRNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyBtYXJrZXJUeXBlcykK
IHsKLSAgICBpZiAoIXBvc3NpYmx5SGFzTWFya2VycyhtYXJrZXJUeXBlKSkKKyAgICBpZiAoIXBv
c3NpYmx5SGFzTWFya2VycyhtYXJrZXJUeXBlcykpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NF
UlQoIW1fbWFya2Vycy5pc0VtcHR5KCkpOwogCkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlcGFpbnRNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJr
ZXJUeXBlIG1hcmtlclQKICAgICAgICAgICAgIERvY3VtZW50TWFya2VyIG1hcmtlciA9IG1hcmtl
cnNbaV07CiAKICAgICAgICAgICAgIC8vIHNraXAgbm9kZXMgdGhhdCBhcmUgbm90IG9mIHRoZSBz
cGVjaWZpZWQgdHlwZQotICAgICAgICAgICAgaWYgKG1hcmtlci50eXBlID09IG1hcmtlclR5cGUg
fHwgbWFya2VyVHlwZSA9PSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycykgeworICAgICAgICAg
ICAgaWYgKG1hcmtlclR5cGVzLm1hdGNoZXMobWFya2VyLnR5cGUpKSB7CiAgICAgICAgICAgICAg
ICAgbm9kZU5lZWRzUmVwYWludCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC01MzIsOSArNTMyLDkgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXI6OmludmFsaWRhdGVSZW5kZXJlZFJlY3RzRm9yTWFya2Vyc0luUmVjdChjb25zdCBJbnQKICAg
ICB9CiB9CiAKLXZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlmdE1hcmtlcnMoTm9k
ZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCBkZWx0YSwgRG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGUgbWFya2VyVHlwZSkKK3ZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpz
aGlmdE1hcmtlcnMoTm9kZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCBkZWx0YSkK
IHsKLSAgICBpZiAoIXBvc3NpYmx5SGFzTWFya2VycyhtYXJrZXJUeXBlKSkKKyAgICBpZiAoIXBv
c3NpYmx5SGFzTWFya2VycyhEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpKSkKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVCghbV9tYXJrZXJzLmlzRW1wdHkoKSk7CiAKQEAgLTU0OSw3ICs1
NDksNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6c2hpZnRNYXJrZXJzKE5vZGUq
IG5vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbgogICAgIGJvb2wgZG9jRGlydHkgPSBmYWxz
ZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBtYXJrZXJzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIERvY3VtZW50TWFya2VyJiBtYXJrZXIgPSBtYXJrZXJzW2ldOwotICAgICAgICBpZiAo
bWFya2VyLnN0YXJ0T2Zmc2V0ID49IHN0YXJ0T2Zmc2V0ICYmIChtYXJrZXJUeXBlID09IERvY3Vt
ZW50TWFya2VyOjpBbGxNYXJrZXJzIHx8IG1hcmtlci50eXBlID09IG1hcmtlclR5cGUpKSB7Cisg
ICAgICAgIGlmIChtYXJrZXIuc3RhcnRPZmZzZXQgPj0gc3RhcnRPZmZzZXQpIHsKICAgICAgICAg
ICAgIEFTU0VSVCgoaW50KW1hcmtlci5zdGFydE9mZnNldCArIGRlbHRhID49IDApOwogICAgICAg
ICAgICAgbWFya2VyLnN0YXJ0T2Zmc2V0ICs9IGRlbHRhOwogICAgICAgICAgICAgbWFya2VyLmVu
ZE9mZnNldCArPSBkZWx0YTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCB2b2lkIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlcjo6c2hpZnRNYXJrZXJzKE5vZGUqIG5vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCBpbgogCiB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6c2V0TWFya2Vyc0FjdGl2ZShS
YW5nZSogcmFuZ2UsIGJvb2wgYWN0aXZlKQogewotICAgIGlmICghcG9zc2libHlIYXNNYXJrZXJz
KERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKSkKKyAgICBpZiAoIXBvc3NpYmx5SGFzTWFya2Vy
cyhEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFT
U0VSVCghbV9tYXJrZXJzLmlzRW1wdHkoKSk7CiAKQEAgLTYyOSw3ICs2MjksNyBAQCBib29sIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlcjo6aGFzTWFya2VycyhSYW5nZSogcmFuZ2UsIERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeQogICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnMg
PSBtYXJrZXJzRm9yTm9kZShub2RlKTsKICAgICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyPjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbWFya2Vycy5lbmQoKTsKICAgICAgICAgZm9yIChWZWN0b3I8
RG9jdW1lbnRNYXJrZXI+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1hcmtlcnMuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoIShtYXJrZXJUeXBlcyAmIGl0LT50eXBl
KSkKKyAgICAgICAgICAgIGlmICghbWFya2VyVHlwZXMubWF0Y2hlcyhpdC0+dHlwZSkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAobm9kZSA9PSBzdGFydENvbnRh
aW5lciAmJiBpdC0+ZW5kT2Zmc2V0IDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyYW5nZS0+c3Rh
cnRPZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC02NjcsNyArNjY3LDcg
QEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNsZWFyRGVzY3JpcHRpb25Pbk1hcmtl
cnNJbnRlcnNlY3RpbmdSYW5nZShSYW5nZSoKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICAgICAgLy8gc2tpcCBtYXJrZXIgdGhhdCBpcyB3cm9uZyB0eXBlIG9yIGJlZm9yZSB0YXJn
ZXQKLSAgICAgICAgICAgIGlmIChtYXJrZXIuZW5kT2Zmc2V0IDw9IHN0YXJ0T2Zmc2V0IHx8ICEo
bWFya2VyLnR5cGUgJiBtYXJrZXJUeXBlcykpIHsKKyAgICAgICAgICAgIGlmIChtYXJrZXIuZW5k
T2Zmc2V0IDw9IHN0YXJ0T2Zmc2V0IHx8ICFtYXJrZXJUeXBlcy5tYXRjaGVzKG1hcmtlci50eXBl
KSkgewogICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuaAppbmRleCAzZDU1YTViYWQ3YzJiMjhmZTBjODQ4NzA1NjJiYmE2NTgyNzVlYTBiLi4wZjM0
YzlmYTUyZWRiYjM5ZTZlOTEyNmNiZTRlODhhZjY4MTUzZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oCkBAIC00NywyOSArNDcsMjkgQEAgcHVi
bGljOgogICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgdm9pZCBhZGRNYXJrZXIoUmFuZ2UqLCBEb2N1
bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgU3RyaW5nIGRlc2NyaXB0aW9uID0gU3RyaW5nKCkpOwog
ICAgIHZvaWQgYWRkTWFya2VyKE5vZGUqLCBEb2N1bWVudE1hcmtlcik7Ci0gICAgdm9pZCBjb3B5
TWFya2VycyhOb2RlKiBzcmNOb2RlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50IGxlbmd0aCwg
Tm9kZSogZHN0Tm9kZSwgaW50IGRlbHRhLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSA9IERv
Y3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKTsKLSAgICBib29sIGhhc01hcmtlcnMoUmFuZ2UqLCBE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2Vycyk7
CisgICAgdm9pZCBjb3B5TWFya2VycyhOb2RlKiBzcmNOb2RlLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgaW50IGxlbmd0aCwgTm9kZSogZHN0Tm9kZSwgaW50IGRlbHRhKTsKKyAgICBib29sIGhhc01h
cmtlcnMoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1bWVudE1hcmtl
cjo6QWxsTWFya2VycygpKTsKIAogICAgIC8vIFdoZW4gYSBtYXJrZXIgcGFydGlhbGx5IG92ZXJs
YXBzIHdpdGggcmFuZ2UsIGlmIHJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VycyBpcyB0
cnVlLCB3ZSBjb21wbGV0ZWx5CiAgICAgLy8gcmVtb3ZlIHRoZSBtYXJrZXIuIElmIHRoZSBhcmd1
bWVudCBpcyBmYWxzZSwgd2Ugd2lsbCBhZGp1c3QgdGhlIHNwYW4gb2YgdGhlIG1hcmtlciBzbyB0
aGF0IGl0IHJldGFpbnMKICAgICAvLyB0aGUgcG9ydGlvbiB0aGF0IGlzIG91dHNpZGUgb2YgdGhl
IHJhbmdlLgogICAgIGVudW0gUmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXJPck5vdCB7
IERvTm90UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIsIFJlbW92ZVBhcnRpYWxseU92
ZXJsYXBwaW5nTWFya2VyIH07Ci0gICAgdm9pZCByZW1vdmVNYXJrZXJzKFJhbmdlKiwgRG9jdW1l
bnRNYXJrZXI6Ok1hcmtlclR5cGVzID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMsIFJlbW92
ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyT3JOb3QgPSBEb05vdFJlbW92ZVBhcnRpYWxseU92
ZXJsYXBwaW5nTWFya2VyKTsKLSAgICB2b2lkIHJlbW92ZU1hcmtlcnMoTm9kZSosIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBE
b2N1bWVudE1hcmtlcjo6QWxsTWFya2VycywgIFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFy
a2VyT3JOb3QgPSBEb05vdFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKKyAgICB2
b2lkIHJlbW92ZU1hcmtlcnMoUmFuZ2UqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBE
b2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpLCBSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01h
cmtlck9yTm90ID0gRG9Ob3RSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlcik7CisgICAg
dm9pZCByZW1vdmVNYXJrZXJzKE5vZGUqLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50IGxlbmd0
aCwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtl
cnMoKSwgIFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyT3JOb3QgPSBEb05vdFJlbW92
ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKIAotICAgIHZvaWQgcmVtb3ZlTWFya2VycyhE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2Vycyk7
Ci0gICAgdm9pZCByZW1vdmVNYXJrZXJzKE5vZGUqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2Vycyk7Ci0gICAgdm9pZCByZXBhaW50TWFya2Vy
cyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJz
KTsKKyAgICB2b2lkIHJlbW92ZU1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzID0g
RG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSk7CisgICAgdm9pZCByZW1vdmVNYXJrZXJzKE5v
ZGUqLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFy
a2VycygpKTsKKyAgICB2b2lkIHJlcGFpbnRNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkpOwogICAgIHZvaWQgc2V0UmVuZGVy
ZWRSZWN0Rm9yTWFya2VyKE5vZGUqLCBjb25zdCBEb2N1bWVudE1hcmtlciYsIGNvbnN0IEludFJl
Y3QmKTsKICAgICB2b2lkIGludmFsaWRhdGVSZW5kZXJlZFJlY3RzRm9yTWFya2Vyc0luUmVjdChj
b25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBzaGlmdE1hcmtlcnMoTm9kZSosIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCBpbnQgZGVsdGEsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlID0gRG9jdW1l
bnRNYXJrZXI6OkFsbE1hcmtlcnMpOworICAgIHZvaWQgc2hpZnRNYXJrZXJzKE5vZGUqLCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgaW50IGRlbHRhKTsKICAgICB2b2lkIHNldE1hcmtlcnNBY3RpdmUo
UmFuZ2UqLCBib29sKTsKICAgICB2b2lkIHNldE1hcmtlcnNBY3RpdmUoTm9kZSosIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQsIGJvb2wpOwogCi0gICAgRG9jdW1lbnRN
YXJrZXIqIG1hcmtlckNvbnRhaW5pbmdQb2ludChjb25zdCBJbnRQb2ludCYsIERvY3VtZW50TWFy
a2VyOjpNYXJrZXJUeXBlID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMpOworICAgIERvY3Vt
ZW50TWFya2VyKiBtYXJrZXJDb250YWluaW5nUG9pbnQoY29uc3QgSW50UG9pbnQmLCBEb2N1bWVu
dE1hcmtlcjo6TWFya2VyVHlwZSk7CiAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJz
Rm9yTm9kZShOb2RlKik7CiAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzSW5SYW5n
ZShSYW5nZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKLSAgICBWZWN0b3I8SW50UmVj
dD4gcmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgPSBE
b2N1bWVudE1hcmtlcjo6QWxsTWFya2Vycyk7CisgICAgVmVjdG9yPEludFJlY3Q+IHJlbmRlcmVk
UmVjdHNGb3JNYXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlKTsKICAgICB2b2lkIGNs
ZWFyRGVzY3JpcHRpb25Pbk1hcmtlcnNJbnRlcnNlY3RpbmdSYW5nZShSYW5nZSosIERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlcyk7CiAKICNpZm5kZWYgTkRFQlVHCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89395</attachid>
            <date>2011-04-13 10:09:35 -0700</date>
            <delta_ts>2011-04-14 10:47:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58112-20110413100934.patch</filename>
            <type>text/plain</type>
            <size>17307</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZjAwMmIwNWViMGM0ZDY3
ODM4YWQ1NzdkNmU3YzIzZWIwZTdmMzNiLi4yZTQ4YTA4Mjc4NmM3YTM2MTFiZmE4NDlhN2RlMWQx
MzZiNDk2MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMDQtMDcgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRG9jdW1lbnRNYWtlcjo6QWxsTWFya2VycyBzaG91bGQg
bm90IGJlIGEgcGFydCBvZiBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgxMTIKKyAgICAgICAgCisgICAg
ICAgIC0gQ29udmVydGVkIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyBmcm9tIHVuc2lnbmVk
IGludCB0byBhIGNsYXNzLgorICAgICAgICAtIENvbnZlcnRlZCBEb2N1bWVudE1hcmtlcjo6QWxs
TWFya2VycyBmcm9tIGFuIGVudW0gZW50cnkgdG8gYSBzdWJjbGFzcyBvZiBNYXJrZXJUeXBlcy4K
KyAgICAgICAgLSBDaGFuZ2VkIHR5cGUgb2Ygc29tZSBNYXJrZXJUeXBlIGFyZ3VtZW50IG9uIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlciBBUEkgdG8gTWFya2VyVHlwZXMKKyAgICAgICAgICB3aGlj
aCBzaG91bGQgYWxsb3cgYSBjb21iaW5hdGlvbiBvZiBNYXJrZXJUeXBlIGNvbnN0YW5zdHMuCisg
ICAgICAgIC0gUmVtb3ZlZCBzb21lIE1hcmtlclR5cGUgYXJndW1lbnRzIG9uIERvY3VtZW50TWFy
a2VyQ29udHJvbGxlciBBUEkKKyAgICAgICAgICB3aGljaCBvbmx5IHJlY2VpdmVkIEFsbE1hcmtl
cnMuCisgICAgICAgIAorICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4K
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzOjpNYXJr
ZXJUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXM6
Om1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVz
OjppbnRlcnNlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpNYXJrZXJU
eXBlczo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZXM6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6TWFya2Vy
VHlwZXM6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6QWxsTWFy
a2Vyczo6QWxsTWFya2Vycyk6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnBvc3Np
Ymx5SGFzTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXI6OmFkZE1hcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXI6OmNvcHlNYXJrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6cmVtb3ZlTWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNv
bnRyb2xsZXI6Om1hcmtlckNvbnRhaW5pbmdQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6Om1hcmtlcnNJblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJrZXJzRnJv
bU1hcmtlck1hcFZlY3RvclBhaXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyOjpyZXBhaW50TWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1h
cmtlckNvbnRyb2xsZXI6OnNoaWZ0TWFya2Vycyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OnNldE1hcmtlcnNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpoYXNNYXJrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y2xlYXJEZXNjcmlwdGlvbk9uTWFya2Vyc0ludGVy
c2VjdGluZ1JhbmdlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg6
CisKIDIwMTEtMDQtMTIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggMGUxYjhiMmQxNzEwYjM1NWFkZWVkMGJjNTUxNDQxZWQ3YWQ5NjEzYi4uNGE5MGYzNjBl
ZWRjNDY4MTAyMjgxNmNkNGJlZmE0YjlmOTMyNDllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAg
LTU3Miw3ICs1NzIsNyBAQCBfX1pON1dlYkNvcmUyM2dldEhvc3RuYW1lc1dpdGhDb29raWVzRVJO
M1dURjdIYXNoU2V0SU5TMF82U3RyaW5nRU5TMF8xMFN0cmluZ0hhcwogX19aTjdXZWJDb3JlMjNv
dmVycmlkZURlZmF1bHRMYW5ndWFnZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI0Qmlu
YXJ5UHJvcGVydHlMaXN0V3JpdGVyMTd3cml0ZVByb3BlcnR5TGlzdEV2CiBfX1pON1dlYkNvcmUy
NENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTExc2V0UmVzb3VyY2VFUE5TXzE0Q2FjaGVkUmVzb3Vy
Y2VFCi1fX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEzcmVtb3ZlTWFya2Vy
c0VqCitfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEzcmVtb3ZlTWFya2Vy
c0VOU18xNERvY3VtZW50TWFya2VyMTFNYXJrZXJUeXBlc0UKIF9fWk43V2ViQ29yZTI0RG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyMTRtYXJrZXJzRm9yTm9kZUVQTlNfNE5vZGVFCiBfX1pON1dlYkNv
cmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjE0bWFya2Vyc0Zvck5vZGVFUE5TXzROb2RlRQog
X19aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIyM3JlbmRlcmVkUmVjdHNGb3JN
YXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5cGVFCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE1hcmtlci5oCmluZGV4IDI5MjkwYzMwNWFmMThiNmI1MGNjZjI3YTk4ODQ3ZWVlOTczOGQ1
YTUuLjRlMTVkNmFlOTExY2U5MWNhMjM2ZWE4MmJmNDJjMDdhZTVjMDVhOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlci5oCkBAIC01MywxMCArNTMsMzMgQEAgc3RydWN0IERvY3VtZW50
TWFya2VyIHsKICAgICAgICAgQXV0b2NvcnJlY3RlZCA9IDEgPDwgNiwKICAgICAgICAgLy8gT24g
c29tZSBwbGF0Zm9ybXMsIHRoaXMgcHJldmVudHMgdGhlIHRleHQgZnJvbSBiZWluZyBzcGVsbGNo
ZWNrZWQgYWdhaW4uCiAgICAgICAgIFNwZWxsQ2hlY2tpbmdFeGVtcHRpb24gPSAxIDw8IDcsCi0g
ICAgICAgIEFsbE1hcmtlcnMgPSBTcGVsbGluZyB8IEdyYW1tYXIgfCBUZXh0TWF0Y2ggfCBSZXBs
YWNlbWVudCB8IENvcnJlY3Rpb25JbmRpY2F0b3IgfCBSZWplY3RlZENvcnJlY3Rpb24gfCBBdXRv
Y29ycmVjdGVkIHwgU3BlbGxDaGVja2luZ0V4ZW1wdGlvbgogICAgIH07CisKKyAgICBjbGFzcyBN
YXJrZXJUeXBlcyB7CisgICAgcHVibGljOgorICAgICAgICAvLyBUaGUgY29uc3RydWN0b3IgaXMg
aW50ZW50aW9uYWxseSBpbXBsaWNpdCB0byBhbGxvdyBjb252ZXJzaW9uIGZyb20gdGhlIGJpdC13
aXNlIHN1bSBvZiBhYm92ZSB0eXBlcworICAgICAgICBNYXJrZXJUeXBlcyh1bnNpZ25lZCBtYXNr
KSA6IG1fbWFzayhtYXNrKSB7IH0KKworICAgICAgICBib29sIG1hdGNoZXMoTWFya2VyVHlwZSB0
eXBlKSBjb25zdCB7IHJldHVybiBtX21hc2sgJiB0eXBlOyB9CisgICAgICAgIGJvb2wgaW50ZXJz
ZWN0cyhjb25zdCBNYXJrZXJUeXBlcyYgdHlwZXMpIGNvbnN0IHsgcmV0dXJuIChtX21hc2sgJiB0
eXBlcy5tX21hc2spOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXJrZXJUeXBl
cyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFzayA9PSBvdGhlci5tX21hc2s7IH0KKworICAg
ICAgICB2b2lkIGFkZChjb25zdCBNYXJrZXJUeXBlcyYgdHlwZXMpIHsgbV9tYXNrIHw9IHR5cGVz
Lm1fbWFzazsgfQorICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBNYXJrZXJUeXBlcyYgdHlwZXMp
IHsgbV9tYXNrICY9IH50eXBlcy5tX21hc2s7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVu
c2lnbmVkIG1fbWFzazsKKyAgICB9OworCisgICAgY2xhc3MgQWxsTWFya2VycyA6IHB1YmxpYyBN
YXJrZXJUeXBlcyB7CisgICAgcHVibGljOgorICAgICAgICBBbGxNYXJrZXJzKCkKKyAgICAgICAg
ICAgIDogTWFya2VyVHlwZXMoU3BlbGxpbmcgfCBHcmFtbWFyIHwgVGV4dE1hdGNoIHwgUmVwbGFj
ZW1lbnQgfCBDb3JyZWN0aW9uSW5kaWNhdG9yIHwgUmVqZWN0ZWRDb3JyZWN0aW9uIHwgQXV0b2Nv
cnJlY3RlZCB8IFNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pCisgICAgICAgIHsKKyAgICAgICAgfQor
ICAgIH07CisgICAgCiAgICAgTWFya2VyVHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdW5zaWduZWQg
TWFya2VyVHlwZXM7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgZW5k
T2Zmc2V0OwogICAgIFN0cmluZyBkZXNjcmlwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAKaW5kZXggNmM5MzI0YTZiN2ZiNTE5MDZhNjY3
OWU2NzdkMjI5MzAyMDA5ZGRhZS4uNTM1MDhiNjRmMjE2NzY1MjgwZjEyOTk1YjI2MzE1YTYwZThi
MjllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIEludFJlY3QgcGxhY2Vob2xkZXJSZWN0Rm9y
TWFya2VyKCkKIAogaW5saW5lIGJvb2wgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpwb3NzaWJs
eUhhc01hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzIHR5cGVzKQogewotICAgIHJl
dHVybiBtX3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBlcyAmIHR5cGVzOworICAgIHJldHVybiBt
X3Bvc3NpYmx5RXhpc3RpbmdNYXJrZXJUeXBlcy5pbnRlcnNlY3RzKHR5cGVzKTsKIH0KIAogRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIoKQpAQCAtOTEs
NyArOTEsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6YWRkTWFya2VyKE5vZGUq
IG5vZGUsIERvY3VtZW50TWFya2VyIG5ld01hcmtlcikKICAgICBpZiAobmV3TWFya2VyLmVuZE9m
ZnNldCA9PSBuZXdNYXJrZXIuc3RhcnRPZmZzZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cG9zc2libHlFeGlzdGluZ01hcmtlclR5cGVzIHw9IG5ld01hcmtlci50eXBlOworICAgIG1fcG9z
c2libHlFeGlzdGluZ01hcmtlclR5cGVzLmFkZChuZXdNYXJrZXIudHlwZSk7CiAKICAgICBNYXJr
ZXJNYXBWZWN0b3JQYWlyKiB2ZWN0b3JQYWlyID0gbV9tYXJrZXJzLmdldChub2RlKTsKIApAQCAt
MTUyLDEyICsxNTIsMTIgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmFkZE1hcmtl
cihOb2RlKiBub2RlLCBEb2N1bWVudE1hcmtlciBuZXdNYXJrZXIpCiAKIC8vIGNvcGllcyBtYXJr
ZXJzIGZyb20gc3JjTm9kZSB0byBkc3ROb2RlLCBhcHBseWluZyB0aGUgc3BlY2lmaWVkIHNoaWZ0
IGRlbHRhIHRvIHRoZSBjb3BpZXMuICBUaGUgc2hpZnQgaXMKIC8vIHVzZWZ1bCBpZiwgZS5nLiwg
dGhlIGNhbGxlciBoYXMgY3JlYXRlZCB0aGUgZHN0Tm9kZSBmcm9tIGEgbm9uLXByZWZpeCBzdWJz
dHJpbmcgb2YgdGhlIHNyY05vZGUuCi12b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y29w
eU1hcmtlcnMoTm9kZSogc3JjTm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGludCBsZW5ndGgs
IE5vZGUqIGRzdE5vZGUsIGludCBkZWx0YSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgbWFy
a2VyVHlwZSkKK3ZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb3B5TWFya2VycyhOb2Rl
KiBzcmNOb2RlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50IGxlbmd0aCwgTm9kZSogZHN0Tm9k
ZSwgaW50IGRlbHRhKQogewogICAgIGlmIChsZW5ndGggPD0gMCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKCFwb3NzaWJseUhhc01hcmtlcnMobWFya2VyVHlwZSkpCisgICAgaWYgKCFwb3Nz
aWJseUhhc01hcmtlcnMoRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBBU1NFUlQoIW1fbWFya2Vycy5pc0VtcHR5KCkpOwogCkBAIC0xNzgsNyArMTc4
LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvcHlNYXJrZXJzKE5vZGUqIHNy
Y05vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgLy8gc2tpcCBtYXJrZXIgdGhhdCBpcyBiZWZvcmUgdGhlIHNwZWNpZmllZCByYW5nZSBvciBp
cyB0aGUgd3JvbmcgdHlwZQotICAgICAgICBpZiAobWFya2VyLmVuZE9mZnNldCA8IHN0YXJ0T2Zm
c2V0IHx8IChtYXJrZXIudHlwZSAhPSBtYXJrZXJUeXBlICYmIG1hcmtlclR5cGUgIT0gRG9jdW1l
bnRNYXJrZXI6OkFsbE1hcmtlcnMpKQorICAgICAgICBpZiAobWFya2VyLmVuZE9mZnNldCA8IHN0
YXJ0T2Zmc2V0KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gcGluIHRoZSBt
YXJrZXIgdG8gdGhlIHNwZWNpZmllZCByYW5nZSBhbmQgYXBwbHkgdGhlIHNoaWZ0IGRlbHRhCkBA
IC0yMjQsNyArMjI0LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1h
cmtlcnMoTm9kZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGkKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIC8vIHNraXAgbWFya2VyIHRoYXQgaXMgd3JvbmcgdHlwZSBvciBiZWZv
cmUgdGFyZ2V0Ci0gICAgICAgIGlmIChtYXJrZXIuZW5kT2Zmc2V0IDw9IHN0YXJ0T2Zmc2V0IHx8
ICEobWFya2VyLnR5cGUgJiBtYXJrZXJUeXBlcykpIHsKKyAgICAgICAgaWYgKG1hcmtlci5lbmRP
ZmZzZXQgPD0gc3RhcnRPZmZzZXQgfHwgIW1hcmtlclR5cGVzLm1hdGNoZXMobWFya2VyLnR5cGUp
KSB7CiAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpA
QCAtMjkyLDcgKzI5Miw3IEBAIERvY3VtZW50TWFya2VyKiBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXI6Om1hcmtlckNvbnRhaW5pbmdQb2ludChjb25zdCBJbnRQb2ludCYKICAgICAgICAgICAgIERv
Y3VtZW50TWFya2VyJiBtYXJrZXIgPSBtYXJrZXJzW21hcmtlckluZGV4XTsKIAogICAgICAgICAg
ICAgLy8gc2tpcCBtYXJrZXIgdGhhdCBpcyB3cm9uZyB0eXBlCi0gICAgICAgICAgICBpZiAobWFy
a2VyLnR5cGUgIT0gbWFya2VyVHlwZSAmJiBtYXJrZXJUeXBlICE9IERvY3VtZW50TWFya2VyOjpB
bGxNYXJrZXJzKQorICAgICAgICAgICAgaWYgKG1hcmtlci50eXBlICE9IG1hcmtlclR5cGUpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEludFJlY3QmIHIgPSByZWN0
c1ttYXJrZXJJbmRleF07CkBAIC0zMzQsNyArMzM0LDcgQEAgVmVjdG9yPERvY3VtZW50TWFya2Vy
PiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6Om1hcmtlcnNJblJhbmdlKFJhbmdlKiByYW5nZSwg
RG8KICAgICAgICAgVmVjdG9yPERvY3VtZW50TWFya2VyPiBtYXJrZXJzID0gbWFya2Vyc0Zvck5v
ZGUobm9kZSk7CiAgICAgICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1hcmtlcnMuZW5kKCk7CiAgICAgICAgIGZvciAoVmVjdG9yPERvY3VtZW50TWFya2Vy
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXJrZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICAgICAgaWYgKCEobWFya2VyVHlwZSAmIGl0LT50eXBlKSkKKyAgICAgICAgICAg
IGlmIChtYXJrZXJUeXBlICE9IGl0LT50eXBlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRDb250YWluZXIgJiYgaXQtPmVuZE9mZnNldCA8
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZ2UtPnN0YXJ0T2Zmc2V0KCkpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMzY3LDcgKzM2Nyw3IEBAIFZlY3RvcjxJbnRSZWN0PiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzKERvY3VtZW50TWFy
a2VyCiAgICAgICAgICAgICBEb2N1bWVudE1hcmtlciBtYXJrZXIgPSBtYXJrZXJzW21hcmtlcklu
ZGV4XTsKIAogICAgICAgICAgICAgLy8gc2tpcCBtYXJrZXIgdGhhdCBpcyB3cm9uZyB0eXBlCi0g
ICAgICAgICAgICBpZiAobWFya2VyLnR5cGUgIT0gbWFya2VyVHlwZSAmJiBtYXJrZXJUeXBlICE9
IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKQorICAgICAgICAgICAgaWYgKG1hcmtlci50eXBl
ICE9IG1hcmtlclR5cGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAg
IEludFJlY3QgciA9IHJlY3RzW21hcmtlckluZGV4XTsKQEAgLTQwOCwxMyArNDA4LDEzIEBAIHZv
aWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJrZXJzKERvY3VtZW50TWFya2Vy
OjpNYXJrZXJUeXBlcyBtYXJrZXJUCiAgICAgICAgIHJlbW92ZU1hcmtlcnNGcm9tTWFya2VyTWFw
VmVjdG9yUGFpcihub2RlLCB2ZWN0b3JQYWlyLCBtYXJrZXJUeXBlcyk7CiAgICAgfQogCi0gICAg
bV9wb3NzaWJseUV4aXN0aW5nTWFya2VyVHlwZXMgJj0gfm1hcmtlclR5cGVzOworICAgIG1fcG9z
c2libHlFeGlzdGluZ01hcmtlclR5cGVzLnJlbW92ZShtYXJrZXJUeXBlcyk7CiB9CiAKIC8vIFRo
aXMgZnVuY3Rpb24gbWF5IHJlbGVhc2Ugbm9kZSBhbmQgdmVjdG9yUGFpci4KIHZvaWQgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJrZXJzRnJvbU1hcmtlck1hcFZlY3RvclBhaXIo
Tm9kZSogbm9kZSwgTWFya2VyTWFwVmVjdG9yUGFpciogdmVjdG9yUGFpciwgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGVzIG1hcmtlclR5cGVzKQogewotICAgIGlmICghfihtYXJrZXJUeXBlcyAm
IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKSkgeworICAgIGlmIChtYXJrZXJUeXBlcyA9PSBE
b2N1bWVudE1hcmtlcjo6QWxsTWFya2VycygpKSB7CiAgICAgICAgIGRlbGV0ZSB2ZWN0b3JQYWly
OwogICAgICAgICBtX21hcmtlcnMucmVtb3ZlKG5vZGUpOwogICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpCkBAIC00MjgsNyArNDI4LDcgQEAgdm9p
ZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtlcnNGcm9tTWFya2VyTWFwVmVj
dG9yUGFpcihOb2RlKiBub2RlLAogICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXIgbWFya2VyID0g
bWFya2Vyc1tpXTsKIAogICAgICAgICAgICAgLy8gc2tpcCBub2RlcyB0aGF0IGFyZSBub3Qgb2Yg
dGhlIHNwZWNpZmllZCB0eXBlCi0gICAgICAgICAgICBpZiAoIShtYXJrZXIudHlwZSAmIG1hcmtl
clR5cGVzKSkgeworICAgICAgICAgICAgaWYgKCFtYXJrZXJUeXBlcy5tYXRjaGVzKG1hcmtlci50
eXBlKSkgewogICAgICAgICAgICAgICAgICsraTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KQEAgLTQ1OSw5ICs0NTksOSBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjo6cmVtb3ZlTWFya2Vyc0Zyb21NYXJrZXJNYXBWZWN0b3JQYWlyKE5vZGUqIG5vZGUs
CiAgICAgICAgIG1fcG9zc2libHlFeGlzdGluZ01hcmtlclR5cGVzID0gMDsKIH0KIAotdm9pZCBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlcGFpbnRNYXJrZXJzKERvY3VtZW50TWFya2VyOjpN
YXJrZXJUeXBlIG1hcmtlclR5cGUpCit2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6cmVw
YWludE1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzIG1hcmtlclR5cGVzKQogewot
ICAgIGlmICghcG9zc2libHlIYXNNYXJrZXJzKG1hcmtlclR5cGUpKQorICAgIGlmICghcG9zc2li
bHlIYXNNYXJrZXJzKG1hcmtlclR5cGVzKSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVCgh
bV9tYXJrZXJzLmlzRW1wdHkoKSk7CiAKQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIERvY3VtZW50
TWFya2VyQ29udHJvbGxlcjo6cmVwYWludE1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5
cGUgbWFya2VyVAogICAgICAgICAgICAgRG9jdW1lbnRNYXJrZXIgbWFya2VyID0gbWFya2Vyc1tp
XTsKIAogICAgICAgICAgICAgLy8gc2tpcCBub2RlcyB0aGF0IGFyZSBub3Qgb2YgdGhlIHNwZWNp
ZmllZCB0eXBlCi0gICAgICAgICAgICBpZiAobWFya2VyLnR5cGUgPT0gbWFya2VyVHlwZSB8fCBt
YXJrZXJUeXBlID09IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKSB7CisgICAgICAgICAgICBp
ZiAobWFya2VyVHlwZXMubWF0Y2hlcyhtYXJrZXIudHlwZSkpIHsKICAgICAgICAgICAgICAgICBu
b2RlTmVlZHNSZXBhaW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KQEAgLTUzMiw5ICs1MzIsOSBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6
aW52YWxpZGF0ZVJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzSW5SZWN0KGNvbnN0IEludAogICAgIH0K
IH0KIAotdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnNoaWZ0TWFya2VycyhOb2RlKiBu
b2RlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50IGRlbHRhLCBEb2N1bWVudE1hcmtlcjo6TWFy
a2VyVHlwZSBtYXJrZXJUeXBlKQordm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnNoaWZ0
TWFya2VycyhOb2RlKiBub2RlLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgaW50IGRlbHRhKQogewot
ICAgIGlmICghcG9zc2libHlIYXNNYXJrZXJzKG1hcmtlclR5cGUpKQorICAgIGlmICghcG9zc2li
bHlIYXNNYXJrZXJzKERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkpKQogICAgICAgICByZXR1
cm47CiAgICAgQVNTRVJUKCFtX21hcmtlcnMuaXNFbXB0eSgpKTsKIApAQCAtNTQ5LDcgKzU0OSw3
IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzaGlmdE1hcmtlcnMoTm9kZSogbm9k
ZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGluCiAgICAgYm9vbCBkb2NEaXJ0eSA9IGZhbHNlOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG1hcmtlcnMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgRG9jdW1lbnRNYXJrZXImIG1hcmtlciA9IG1hcmtlcnNbaV07Ci0gICAgICAgIGlmIChtYXJr
ZXIuc3RhcnRPZmZzZXQgPj0gc3RhcnRPZmZzZXQgJiYgKG1hcmtlclR5cGUgPT0gRG9jdW1lbnRN
YXJrZXI6OkFsbE1hcmtlcnMgfHwgbWFya2VyLnR5cGUgPT0gbWFya2VyVHlwZSkpIHsKKyAgICAg
ICAgaWYgKG1hcmtlci5zdGFydE9mZnNldCA+PSBzdGFydE9mZnNldCkgewogICAgICAgICAgICAg
QVNTRVJUKChpbnQpbWFya2VyLnN0YXJ0T2Zmc2V0ICsgZGVsdGEgPj0gMCk7CiAgICAgICAgICAg
ICBtYXJrZXIuc3RhcnRPZmZzZXQgKz0gZGVsdGE7CiAgICAgICAgICAgICBtYXJrZXIuZW5kT2Zm
c2V0ICs9IGRlbHRhOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyOjpzaGlmdE1hcmtlcnMoTm9kZSogbm9kZSwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGlu
CiAKIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpzZXRNYXJrZXJzQWN0aXZlKFJhbmdl
KiByYW5nZSwgYm9vbCBhY3RpdmUpCiB7Ci0gICAgaWYgKCFwb3NzaWJseUhhc01hcmtlcnMoRG9j
dW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMpKQorICAgIGlmICghcG9zc2libHlIYXNNYXJrZXJzKERv
Y3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKCkpKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJU
KCFtX21hcmtlcnMuaXNFbXB0eSgpKTsKIApAQCAtNjI5LDcgKzYyOSw3IEBAIGJvb2wgRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyOjpoYXNNYXJrZXJzKFJhbmdlKiByYW5nZSwgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5CiAgICAgICAgIFZlY3RvcjxEb2N1bWVudE1hcmtlcj4gbWFya2VycyA9IG1h
cmtlcnNGb3JOb2RlKG5vZGUpOwogICAgICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBtYXJrZXJzLmVuZCgpOwogICAgICAgICBmb3IgKFZlY3RvcjxEb2N1
bWVudE1hcmtlcj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFya2Vycy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICghKG1hcmtlclR5cGVzICYgaXQtPnR5cGUpKQor
ICAgICAgICAgICAgaWYgKCFtYXJrZXJUeXBlcy5tYXRjaGVzKGl0LT50eXBlKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChub2RlID09IHN0YXJ0Q29udGFpbmVy
ICYmIGl0LT5lbmRPZmZzZXQgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJhbmdlLT5zdGFydE9m
ZnNldCgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTY2Nyw3ICs2NjcsNyBAQCB2
b2lkIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6Y2xlYXJEZXNjcmlwdGlvbk9uTWFya2Vyc0lu
dGVyc2VjdGluZ1JhbmdlKFJhbmdlKgogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
ICAgICAvLyBza2lwIG1hcmtlciB0aGF0IGlzIHdyb25nIHR5cGUgb3IgYmVmb3JlIHRhcmdldAot
ICAgICAgICAgICAgaWYgKG1hcmtlci5lbmRPZmZzZXQgPD0gc3RhcnRPZmZzZXQgfHwgIShtYXJr
ZXIudHlwZSAmIG1hcmtlclR5cGVzKSkgeworICAgICAgICAgICAgaWYgKG1hcmtlci5lbmRPZmZz
ZXQgPD0gc3RhcnRPZmZzZXQgfHwgIW1hcmtlclR5cGVzLm1hdGNoZXMobWFya2VyLnR5cGUpKSB7
CiAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5o
CmluZGV4IDNkNTVhNWJhZDdjMmIyOGZlMGM4NDg3MDU2MmJiYTY1ODI3NWVhMGIuLjBmMzRjOWZh
NTJlZGJiMzllNmU5MTI2Y2JlNGU4OGFmNjgxNTNkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgKQEAgLTQ3LDI5ICs0NywyOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkZXRhY2goKTsKICAgICB2b2lkIGFkZE1hcmtlcihSYW5nZSosIERvY3VtZW50
TWFya2VyOjpNYXJrZXJUeXBlLCBTdHJpbmcgZGVzY3JpcHRpb24gPSBTdHJpbmcoKSk7CiAgICAg
dm9pZCBhZGRNYXJrZXIoTm9kZSosIERvY3VtZW50TWFya2VyKTsKLSAgICB2b2lkIGNvcHlNYXJr
ZXJzKE5vZGUqIHNyY05vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBOb2Rl
KiBkc3ROb2RlLCBpbnQgZGVsdGEsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlID0gRG9jdW1l
bnRNYXJrZXI6OkFsbE1hcmtlcnMpOwotICAgIGJvb2wgaGFzTWFya2VycyhSYW5nZSosIERvY3Vt
ZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKTsKKyAg
ICB2b2lkIGNvcHlNYXJrZXJzKE5vZGUqIHNyY05vZGUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBp
bnQgbGVuZ3RoLCBOb2RlKiBkc3ROb2RlLCBpbnQgZGVsdGEpOworICAgIGJvb2wgaGFzTWFya2Vy
cyhSYW5nZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpB
bGxNYXJrZXJzKCkpOwogCiAgICAgLy8gV2hlbiBhIG1hcmtlciBwYXJ0aWFsbHkgb3ZlcmxhcHMg
d2l0aCByYW5nZSwgaWYgcmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXJzIGlzIHRydWUs
IHdlIGNvbXBsZXRlbHkKICAgICAvLyByZW1vdmUgdGhlIG1hcmtlci4gSWYgdGhlIGFyZ3VtZW50
IGlzIGZhbHNlLCB3ZSB3aWxsIGFkanVzdCB0aGUgc3BhbiBvZiB0aGUgbWFya2VyIHNvIHRoYXQg
aXQgcmV0YWlucwogICAgIC8vIHRoZSBwb3J0aW9uIHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUgcmFu
Z2UuCiAgICAgZW51bSBSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlck9yTm90IHsgRG9O
b3RSZW1vdmVQYXJ0aWFsbHlPdmVybGFwcGluZ01hcmtlciwgUmVtb3ZlUGFydGlhbGx5T3Zlcmxh
cHBpbmdNYXJrZXIgfTsKLSAgICB2b2lkIHJlbW92ZU1hcmtlcnMoUmFuZ2UqLCBEb2N1bWVudE1h
cmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2VycywgUmVtb3ZlUGFy
dGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXJPck5vdCA9IERvTm90UmVtb3ZlUGFydGlhbGx5T3Zlcmxh
cHBpbmdNYXJrZXIpOwotICAgIHZvaWQgcmVtb3ZlTWFya2VycyhOb2RlKiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIGludCBsZW5ndGgsIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3Vt
ZW50TWFya2VyOjpBbGxNYXJrZXJzLCAgUmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXJP
ck5vdCA9IERvTm90UmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOworICAgIHZvaWQg
cmVtb3ZlTWFya2VycyhSYW5nZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3Vt
ZW50TWFya2VyOjpBbGxNYXJrZXJzKCksIFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2Vy
T3JOb3QgPSBEb05vdFJlbW92ZVBhcnRpYWxseU92ZXJsYXBwaW5nTWFya2VyKTsKKyAgICB2b2lk
IHJlbW92ZU1hcmtlcnMoTm9kZSosIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBpbnQgbGVuZ3RoLCBE
b2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2Vycygp
LCAgUmVtb3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXJPck5vdCA9IERvTm90UmVtb3ZlUGFy
dGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwogCi0gICAgdm9pZCByZW1vdmVNYXJrZXJzKERvY3Vt
ZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKTsKLSAg
ICB2b2lkIHJlbW92ZU1hcmtlcnMoTm9kZSosIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9
IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJzKTsKLSAgICB2b2lkIHJlcGFpbnRNYXJrZXJzKERv
Y3VtZW50TWFya2VyOjpNYXJrZXJUeXBlID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMpOwor
ICAgIHZvaWQgcmVtb3ZlTWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMgPSBEb2N1
bWVudE1hcmtlcjo6QWxsTWFya2VycygpKTsKKyAgICB2b2lkIHJlbW92ZU1hcmtlcnMoTm9kZSos
IERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyA9IERvY3VtZW50TWFya2VyOjpBbGxNYXJrZXJz
KCkpOworICAgIHZvaWQgcmVwYWludE1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVz
ID0gRG9jdW1lbnRNYXJrZXI6OkFsbE1hcmtlcnMoKSk7CiAgICAgdm9pZCBzZXRSZW5kZXJlZFJl
Y3RGb3JNYXJrZXIoTm9kZSosIGNvbnN0IERvY3VtZW50TWFya2VyJiwgY29uc3QgSW50UmVjdCYp
OwogICAgIHZvaWQgaW52YWxpZGF0ZVJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzSW5SZWN0KGNvbnN0
IEludFJlY3QmKTsKLSAgICB2b2lkIHNoaWZ0TWFya2VycyhOb2RlKiwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIGludCBkZWx0YSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUgPSBEb2N1bWVudE1h
cmtlcjo6QWxsTWFya2Vycyk7CisgICAgdm9pZCBzaGlmdE1hcmtlcnMoTm9kZSosIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCBpbnQgZGVsdGEpOwogICAgIHZvaWQgc2V0TWFya2Vyc0FjdGl2ZShSYW5n
ZSosIGJvb2wpOwogICAgIHZvaWQgc2V0TWFya2Vyc0FjdGl2ZShOb2RlKiwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCwgYm9vbCk7CiAKLSAgICBEb2N1bWVudE1hcmtl
ciogbWFya2VyQ29udGFpbmluZ1BvaW50KGNvbnN0IEludFBvaW50JiwgRG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGUgPSBEb2N1bWVudE1hcmtlcjo6QWxsTWFya2Vycyk7CisgICAgRG9jdW1lbnRN
YXJrZXIqIG1hcmtlckNvbnRhaW5pbmdQb2ludChjb25zdCBJbnRQb2ludCYsIERvY3VtZW50TWFy
a2VyOjpNYXJrZXJUeXBlKTsKICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnNGb3JO
b2RlKE5vZGUqKTsKICAgICBWZWN0b3I8RG9jdW1lbnRNYXJrZXI+IG1hcmtlcnNJblJhbmdlKFJh
bmdlKiwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOwotICAgIFZlY3RvcjxJbnRSZWN0PiBy
ZW5kZXJlZFJlY3RzRm9yTWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSA9IERvY3Vt
ZW50TWFya2VyOjpBbGxNYXJrZXJzKTsKKyAgICBWZWN0b3I8SW50UmVjdD4gcmVuZGVyZWRSZWN0
c0Zvck1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUpOwogICAgIHZvaWQgY2xlYXJE
ZXNjcmlwdGlvbk9uTWFya2Vyc0ludGVyc2VjdGluZ1JhbmdlKFJhbmdlKiwgRG9jdW1lbnRNYXJr
ZXI6Ok1hcmtlclR5cGVzKTsKIAogI2lmbmRlZiBOREVCVUcK
</data>
<flag name="review"
          id="82060"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>