From sachinmamoru@gmail.com  Wed Feb 21 00:24:47 2024
Return-Path: <sachinmamoru@gmail.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id 6041CC15109E
 for <oauth@ietfa.amsl.com>; Wed, 21 Feb 2024 00:24:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.085
X-Spam-Level: 
X-Spam-Status: No, score=-2.085 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1,
 DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001,
 RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01, T_REMOTE_IMAGE=0.01,
 T_SCC_BODY_TEXT_LINE=-0.01, URIBL_DBL_BLOCKED_OPENDNS=0.001,
 URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key)
 header.d=gmail.com
Received: from mail.ietf.org ([50.223.129.194])
 by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Gtxru6LDn_5q for <oauth@ietfa.amsl.com>;
 Wed, 21 Feb 2024 00:24:42 -0800 (PST)
Received: from mail-yb1-xb30.google.com (mail-yb1-xb30.google.com
 [IPv6:2607:f8b0:4864:20::b30])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id A7F2DC15152C
 for <oauth@ietf.org>; Wed, 21 Feb 2024 00:24:42 -0800 (PST)
Received: by mail-yb1-xb30.google.com with SMTP id
 3f1490d57ef6-dcc71031680so5122735276.2
 for <oauth@ietf.org>; Wed, 21 Feb 2024 00:24:42 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1708503882; x=1709108682; darn=ietf.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=gPSzhLpdsNTQTofQ8LGqrzORHIYHBWyWE+IxRClccPQ=;
 b=UwKH8V4I00r5XMjG+Gyy+7EV6He2AVAUUTt7rqeV44MGj6GlW29qrTY+OsQqd5/T9a
 NXqu+wnDm6D/cp9kuT1ewahKci/n8fZ+iS79d/U1CGiOv6tpBdTO7Y3xQXydNFRYJocD
 Zcl+0yodLZ7k4nCafy6Cd7/qPftRtgmnuYvBNSXLtUZTmI7ROWF9jSbNxR30xLRhzGUd
 higBDUy9G+gyfVTLFnE9cBouB+wDoPbh40AWMTs/yP2/YoJJJCRNzy3GOHeWxSkMZii/
 oH9kWuPF8QW0UnifWkzyI9ywAod85hXYq/fW7IuNMXsvb75jfGFGWV7mXa2P25OwtR12
 jghg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1708503882; x=1709108682;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=gPSzhLpdsNTQTofQ8LGqrzORHIYHBWyWE+IxRClccPQ=;
 b=WzEiQDeQttogPeH4yb6n7ugPri1w8fiY3rlJ75qkuo76u5DSruBHt2fd2iVUbCL9GF
 eifAbhq8wrgSj9arIobnGf2OHdkcXgQokenpk95XBPZ57AX1WMyPwqsM7xdBjTozKcA6
 mn/1rY4F4nBLRraKA22g4dwBV6Xxj7e48fe5/tZsT0dSBe2HfSRAtN5TWwLfL18nFdou
 pyEzTWMZ9ohCf8bRM5njLVRoL2L0Y0s+82PEQd3bHf06emIYFuxMlt0yxCuipEmwYh6H
 cJiZrCO7p1JR14DWJkO+DLb2Oq5qHU1cmYJvhKVd6rrV6JKHKsbqFN0FcSOWX80Vixld
 wO+Q==
X-Gm-Message-State: AOJu0YxX5ifJ8/vmDWmPzu6dsg3PQeq6Wvh3rosfbL0LpGoH4HrO4JXD
 PKBJi0PpRIxbXkOSbdoGRzP7DyhyOBax2iMTVqdFe+nOnTXW9heywXtTpH5ogS6fuyoF2q24UPh
 yTKN4gjmn4fXD7fYaLEQmTj1xaTjyoTdfwi04D3Gu
X-Google-Smtp-Source: AGHT+IHG1LFiSaznomRMM/+3jAJo/iZr6K234V3Luz+/pnZuMYVntSUSuNow73bCopkVHbq+9mw35DYq1iE9huu50nI=
X-Received: by 2002:a25:b20f:0:b0:dc6:9b89:3f75 with SMTP id
 i15-20020a25b20f000000b00dc69b893f75mr16009434ybj.40.1708503880309; Wed, 21
 Feb 2024 00:24:40 -0800 (PST)
MIME-Version: 1.0
References: <CAD=XBCog_o8GzpDMTYKvvi=2mneM0nW0vfCc=FubtOFNF5WM=A@mail.gmail.com>
 <374ADB2C-2F74-4B95-8CDA-3266089CD00C@gmail.com>
 <CAD=XBCqs-Qf7P--KvqQcJq37Agh3gn-bfwfj7tZvwdngx+4k+A@mail.gmail.com>
 <13C59DD4-94E0-47AC-9A7E-D7B463BD1552@gmail.com>
 <CAD=XBCpgLZObed8Kj2ST6engpFR47psFrrbNKw5rwaN=_E25qA@mail.gmail.com>
In-Reply-To: <CAD=XBCpgLZObed8Kj2ST6engpFR47psFrrbNKw5rwaN=_E25qA@mail.gmail.com>
From: Sachin Mamoru <sachinmamoru@gmail.com>
Date: Wed, 21 Feb 2024 13:54:28 +0530
Message-ID: <CAD=XBCrkFr3L2AyXtKRPSAmHg9khQctENZ-2+oR1af7JBbcJ-g@mail.gmail.com>
To: Neil Madden <neil.e.madden@gmail.com>, wparad@rhosys.ch
Cc: oauth <oauth@ietf.org>, janak@wso2.com, thilinasenarath97@gmail.com, 
 "piraveena@wso2.com" <piraveena@wso2.com>
Content-Type: multipart/alternative; boundary="000000000000e221bb0611e00e8d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/qr5BtWza2h4TvPzFEpJm3XlGYTU>
Subject: Re: [OAUTH-WG] Evaluation of Scope Management in Refresh Token
 Behavior
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>,
 <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>,
 <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 21 Feb 2024 08:24:47 -0000

--000000000000e221bb0611e00e8d
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Warren and Neil,

My basis for asking this is due to the following definition [1],

Refresh tokens are credentials used to obtain access tokens.  Refresh
   tokens are issued to the client by the authorization server and are
   used to obtain a new access token when the current access token
   becomes invalid or expires, or to obtain additional access tokens
   with identical or narrower scope (access tokens may have a shorter
   lifetime and fewer permissions than authorized by the resource
   owner).  Issuing a refresh token is optional at the discretion of the
   authorization server.  If the authorization server issues a refresh
   token, it is included when issuing an access token (i.e., step (D) in
   Figure 1).

[1] https://datatracker.ietf.org/doc/html/rfc6749#section-1.5

Thanks & Regards,
Sachin

On Wed, 21 Feb 2024 at 13:36, Sachin Mamoru <sachinmamoru@gmail.com> wrote:

> Hi Warren and Neil,
>
> Thanks for the valuable input and sorry for mentioning other products, I
> just wanted to provide an example.
> So Warren according to you following is the behaviour that spec suggested=
.
>
> When we request an access token using 3 scopes (scope1, scope2, scope3).
>
> Then will receive a refresh token (refresh_token1) with the access token.
>
> After that will request another access token with refresh_token1 and
> provide the scope list as scope1 and scope2 (Narrow down scopes).
>
> Similarly, get another refresh token (refresh_token2) with the access
> token.
>
> Now if we request another access token with refresh_token2, we should be
> able to request scope3 also.
>
> That means the refresh token will not be narrowed down instead only the
> access token will get narrowed down.
>
> So Warren and Neil, if possible can you pinpoint to me the exact place in
> the spec where it does explicitly say that the refresh token should not b=
e
> narrowed down based on the given scopes?
>
> Thanks & Regards,
> Sachin
>
> On Wed, 21 Feb 2024 at 01:12, Neil Madden <neil.e.madden@gmail.com> wrote=
:
>
>> It sounds like they are violating the spec then. On the other hand, the
>> fact that the scope can be "increased back to the original scope" maybe
>> suggests the effective scope of the refresh token is still the same? Eit=
her
>> way, the spec is pretty clear, regardless of what some vendor does.
>>
>> -- Neil
>>
>> On 20 Feb 2024, at 19:26, Sachin Mamoru <sachinmamoru@gmail.com> wrote:
>>
>> Hi Neil,
>>
>> Thanks for the clarification.
>> But Curity has a different approach and they implemented it according to
>> the concept of narrowing down the refresh token scopes.
>>
>> "The scope was originally read openid profile and after refresh the
>> access was reduced to read profile (i.e., the access_token now only has =
read
>> profile scope and any new tokens obtained using the refresh token
>> daa38700-ba96-4ef1-8b30-5cb3527aae19 will have the same, reduced scope).
>> Note that *increasing* the scope of access cannot be done in this way
>> unless first reduced and increased back to the original scope."
>>
>> [1]
>> https://curity.io/resources/learn/refresh-tokens/#changing-scope-of-acce=
ss-token-on-refresh
>>
>> Thanks & Regards,
>> Sachin
>>
>> On Tue, 20 Feb 2024 at 21:59, Neil Madden <neil.e.madden@gmail.com>
>> wrote:
>>
>>>
>>>
>>> On 20 Feb 2024, at 11:02, Sachin Mamoru <sachinmamoru@gmail.com> wrote:
>>>
>>> =EF=BB=BF
>>> Hi Neil,
>>>
>>> Does that mean it should be identical to the narrowed scope request or
>>> the original request scope?
>>>
>>>
>>> It says it has to be identical to the scope of the existing refresh
>>> token in the request, not the scope specified in the request. So
>>> effectively you can never downscope a refresh token in this way. Whatev=
er
>>> scope you specify, any RT returned must always retain the original scop=
e.
>>>
>>> (There are other ways to downscope a RT, eg ForgeRock=E2=80=99s macaroo=
ns allow
>>> you to attenuate the scope if you wish).
>>>
>>> =E2=80=94 Neil
>>>
>>>
>>> On Tue, 20 Feb 2024 at 16:31, Sachin Mamoru <sachinmamoru@gmail.com>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Tue, 20 Feb 2024 at 12:23, Neil Madden <neil.e.madden@gmail.com>
>>>> wrote:
>>>>
>>>>>
>>>>> On 20 Feb 2024, at 06:44, Sachin Mamoru <sachinmamoru@gmail.com>
>>>>> wrote:
>>>>>
>>>>> =EF=BB=BF
>>>>> Hi All,
>>>>>
>>>>> When we request an access token using 3 scopes (scope1, scope2,
>>>>> scope3).
>>>>> Then will receive a refresh token (refresh_token1) with the access
>>>>> token.
>>>>>
>>>>> After that will request another access token with refresh_token1 and
>>>>> provide the scope list as scope1 and scope2 (Narrow down scopes).
>>>>> Similarly, get another refresh token (refresh_token2) with the access
>>>>> token.
>>>>>
>>>>> Now if we request another access token with refresh_token2, we cannot
>>>>> request scope3, instead, we can either request both scope1 and scope2=
 or
>>>>> one of them.
>>>>>
>>>>> But in the specification, didn't able to find anything related to
>>>>> narrow-down scopes with refresh token.
>>>>>
>>>>> From Spec
>>>>>
>>>>> 1.5.  Refresh Token - Refresh tokens are issued to the client by the
>>>>> authorization server and are used to obtain a new access token when
>>>>> the current access token becomes invalid or expires or to obtain
>>>>> additional access tokens with identical or narrower scope (access
>>>>> tokens may have a shorter lifetime and fewer permissions than
>>>>> authorized by the resource owner).
>>>>>
>>>>> 6.  Refreshing an Access Token
>>>>> The scope of the access request as described by Section 3.3.  The
>>>>> requested scope MUST NOT include any scope not originally granted by
>>>>> the resource owner, and if omitted is treated as equal to the scope
>>>>> originally granted by the resource owner.
>>>>>
>>>>> https://datatracker.ietf.org/doc/html/rfc6749
>>>>>
>>>>> IMO, from a security aspect, the current behaviour is much more secur=
e
>>>>> because it is designed to maintain the principle of least privilege, =
where
>>>>> it updates the refresh token authorised scopes based on the requested=
 ones.
>>>>>
>>>>> What should be the correct behaviour?
>>>>> narrow-down scope refresh token should also be able to request access
>>>>> token with original scope list?
>>>>>
>>>>>
>>>>> Also from section 6:
>>>>>
>>>>> If a
>>>>>    new refresh token is issued, the refresh token scope MUST be
>>>>>    identical to that of the refresh token included by the client in t=
he
>>>>>    request.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> =E2=80=94 Neil
>>>>>
>>>>>
>>>>
>>>> --
>>>>
>>>> Sachin Mamoru
>>>> Software Engineer, WSO2
>>>> +94771292681
>>>> | sachinmamoru.me  <https://sachinmamoru.me/>
>>>> sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
>>>> <https://www.linkedin.com/in/sachin-mamoru/>
>>>> <https://twitter.com/MamoruSachin>
>>>>
>>>>
>>>
>>> --
>>>
>>> Sachin Mamoru
>>> Software Engineer, WSO2
>>> +94771292681
>>> | sachinmamoru.me  <https://sachinmamoru.me/>
>>> sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
>>> <https://www.linkedin.com/in/sachin-mamoru/>
>>> <https://twitter.com/MamoruSachin>
>>>
>>>
>>
>> --
>>
>> Sachin Mamoru
>> Software Engineer, WSO2
>> +94771292681
>> | sachinmamoru.me  <https://sachinmamoru.me/>
>> sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
>> <https://www.linkedin.com/in/sachin-mamoru/>
>> <https://twitter.com/MamoruSachin>
>>
>>
>>
>
> --
>
> Sachin Mamoru
> Software Engineer, WSO2
> +94771292681
> | sachinmamoru.me  <https://sachinmamoru.me>
> sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
> <https://www.linkedin.com/in/sachin-mamoru/>
> <https://twitter.com/MamoruSachin>
>
>

--=20

Sachin Mamoru
Software Engineer, WSO2
+94771292681
| sachinmamoru.me  <https://sachinmamoru.me>
sachinmamoru@gmail.com  <sachinmamoru@gmail.com>
<https://www.linkedin.com/in/sachin-mamoru/>
<https://twitter.com/MamoruSachin>

--000000000000e221bb0611e00e8d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi Warren and Neil,<br></div><div><br></div><div>My b=
asis for asking this is due to the following definition [1],</div><div><br>=
</div>Refresh tokens are credentials used to obtain access tokens.=C2=A0 Re=
fresh<br>=C2=A0 =C2=A0tokens are issued to the client by the authorization =
server and are<br>=C2=A0 =C2=A0used to obtain a new access token when the c=
urrent access token<br>=C2=A0 =C2=A0becomes invalid or expires, or to obtai=
n additional access tokens<br>=C2=A0 =C2=A0with identical or <font color=3D=
"#ff0000">narrower scope </font>(access tokens may have a shorter<br>=C2=A0=
 =C2=A0lifetime and fewer permissions than authorized by the resource<br>=
=C2=A0 =C2=A0owner).=C2=A0 Issuing a refresh token is optional at the discr=
etion of the<br>=C2=A0 =C2=A0authorization server.=C2=A0 If the authorizati=
on server issues a refresh<br>=C2=A0 =C2=A0token, it is included when issui=
ng an access token (i.e., step (D) in<br>=C2=A0 =C2=A0Figure 1).<br><div><b=
r></div><div>[1]=C2=A0<a href=3D"https://datatracker.ietf.org/doc/html/rfc6=
749#section-1.5">https://datatracker.ietf.org/doc/html/rfc6749#section-1.5<=
/a></div><div><br></div><div>Thanks &amp; Regards,</div><div>Sachin</div></=
div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On=
 Wed, 21 Feb 2024 at 13:36, Sachin Mamoru &lt;<a href=3D"mailto:sachinmamor=
u@gmail.com">sachinmamoru@gmail.com</a>&gt; wrote:<br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">Hi=C2=A0Warren and Neil=
,<div><br></div><div>Thanks for the valuable input and sorry for mentioning=
=C2=A0other products, I just wanted to provide an example.=C2=A0</div><div>=
So Warren according to you following is the behaviour that spec suggested.<=
/div><div><font face=3D"arial, sans-serif"><br></font></div><div><span id=
=3D"m_-8799194716268198968gmail-docs-internal-guid-4f39e0eb-7fff-d42a-f780-=
95f6f69ccd92"><div dir=3D"ltr" style=3D"margin-left:0pt" align=3D"left"><ta=
ble style=3D"border:none;border-collapse:collapse;table-layout:fixed;width:=
468pt"><colgroup><col></colgroup><tbody><tr style=3D"height:0pt"><td style=
=3D"border-width:1pt;border-style:solid;border-color:rgb(0,0,0);vertical-al=
ign:top;padding:5pt;overflow:hidden"><p dir=3D"ltr" style=3D"line-height:1.=
2;margin-top:0pt;margin-bottom:0pt"><span style=3D"color:rgb(0,0,0);backgro=
und-color:transparent;font-variant-numeric:normal;font-variant-east-asian:n=
ormal;font-variant-alternates:normal;vertical-align:baseline"><font face=3D=
"arial, sans-serif">When we request an access token using 3 scopes (scope1,=
 scope2, scope3).</font></span></p><font face=3D"arial, sans-serif"><br></f=
ont><p dir=3D"ltr" style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0p=
t"><span style=3D"color:rgb(0,0,0);background-color:transparent;font-varian=
t-numeric:normal;font-variant-east-asian:normal;font-variant-alternates:nor=
mal;vertical-align:baseline"><font face=3D"arial, sans-serif">Then will rec=
eive a refresh token (refresh_token1) with the access token.</font></span><=
/p><font face=3D"arial, sans-serif"><br></font><p dir=3D"ltr" style=3D"line=
-height:1.2;margin-top:0pt;margin-bottom:0pt"><span style=3D"color:rgb(0,0,=
0);background-color:transparent;font-variant-numeric:normal;font-variant-ea=
st-asian:normal;font-variant-alternates:normal;vertical-align:baseline"><fo=
nt face=3D"arial, sans-serif">After that will request another access token =
with refresh_token1 and provide the scope list as scope1 and scope2 (Narrow=
 down scopes).</font></span></p><font face=3D"arial, sans-serif"><br></font=
><p dir=3D"ltr" style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt">=
<span style=3D"color:rgb(0,0,0);background-color:transparent;font-variant-n=
umeric:normal;font-variant-east-asian:normal;font-variant-alternates:normal=
;vertical-align:baseline"><font face=3D"arial, sans-serif">Similarly, get a=
nother refresh token (refresh_token2) with the access token.</font></span><=
/p><font face=3D"arial, sans-serif"><br></font><p dir=3D"ltr" style=3D"line=
-height:1.2;margin-top:0pt;margin-bottom:0pt"><span style=3D"color:rgb(0,0,=
0);background-color:transparent;font-variant-numeric:normal;font-variant-ea=
st-asian:normal;font-variant-alternates:normal;vertical-align:baseline"><fo=
nt face=3D"arial, sans-serif">Now if we request another access token with r=
efresh_token2, we should be able to request scope3 also.</font></span></p><=
p dir=3D"ltr" style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><s=
pan style=3D"color:rgb(0,0,0);background-color:transparent;font-variant-num=
eric:normal;font-variant-east-asian:normal;font-variant-alternates:normal;v=
ertical-align:baseline"><font face=3D"arial, sans-serif">That means the ref=
resh token will not be narrowed down instead only the access token will get=
 narrowed down.</font></span></p></td></tr></tbody></table></div><br></span=
></div><div>So Warren and Neil, if possible can you pinpoint to me the exac=
t place in the spec where it does explicitly say that the refresh token sho=
uld not be narrowed down based on the given scopes?</div><div><br></div><di=
v>Thanks &amp; Regards,</div><div>Sachin</div></div><br><div class=3D"gmail=
_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, 21 Feb 2024 at 01:12,=
 Neil Madden &lt;<a href=3D"mailto:neil.e.madden@gmail.com" target=3D"_blan=
k">neil.e.madden@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gma=
il_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,2=
04,204);padding-left:1ex"><div><div>It sounds like they are violating the s=
pec then. On the other hand, the fact that the scope can be &quot;increased=
 back to the original scope&quot; maybe suggests the effective scope of the=
 refresh token is still the same? Either way, the spec is pretty clear, reg=
ardless of what some vendor does.</div><div><br></div><div>-- Neil<br><div>=
<br><blockquote type=3D"cite"><div>On 20 Feb 2024, at 19:26, Sachin Mamoru =
&lt;<a href=3D"mailto:sachinmamoru@gmail.com" target=3D"_blank">sachinmamor=
u@gmail.com</a>&gt; wrote:</div><br><div><div dir=3D"ltr">Hi Neil,<div><br>=
</div><div>Thanks for the clarification.</div><div>But Curity has a differe=
nt approach and they implemented it according to the concept of narrowing d=
own=C2=A0the refresh token scopes.</div><div><br></div><div>&quot;<span sty=
le=3D"color:rgb(77,77,77);font-family:Roboto-Regular,-apple-system,&quot;sy=
stem-ui&quot;,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif;font-s=
ize:17.6px">The scope was originally=C2=A0</span><code style=3D"box-sizing:=
border-box;font-family:Roboto-Mono,Consolas,Monaco,&quot;Andale Mono&quot;,=
&quot;Ubuntu Mono&quot;,monospace;background-color:rgb(247,250,252);border:=
1px solid rgba(0,0,0,0.05);border-radius:4px;font-size:14px;padding:0.15em =
0.2em 0.05em;word-break:break-word;color:rgb(77,77,77)">read openid profile=
</code><span style=3D"color:rgb(77,77,77);font-family:Roboto-Regular,-apple=
-system,&quot;system-ui&quot;,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,s=
ans-serif;font-size:17.6px">=C2=A0and after refresh the access was reduced =
to=C2=A0</span><code style=3D"box-sizing:border-box;font-family:Roboto-Mono=
,Consolas,Monaco,&quot;Andale Mono&quot;,&quot;Ubuntu Mono&quot;,monospace;=
background-color:rgb(247,250,252);border:1px solid rgba(0,0,0,0.05);border-=
radius:4px;font-size:14px;padding:0.15em 0.2em 0.05em;word-break:break-word=
;color:rgb(77,77,77)">read profile</code><span style=3D"color:rgb(77,77,77)=
;font-family:Roboto-Regular,-apple-system,&quot;system-ui&quot;,&quot;Segoe=
 UI&quot;,Roboto,Helvetica,Arial,sans-serif;font-size:17.6px">=C2=A0(i.e., =
the=C2=A0</span><code style=3D"box-sizing:border-box;font-family:Roboto-Mon=
o,Consolas,Monaco,&quot;Andale Mono&quot;,&quot;Ubuntu Mono&quot;,monospace=
;background-color:rgb(247,250,252);border:1px solid rgba(0,0,0,0.05);border=
-radius:4px;font-size:14px;padding:0.15em 0.2em 0.05em;word-break:break-wor=
d;color:rgb(77,77,77)">access_token</code><span style=3D"color:rgb(77,77,77=
);font-family:Roboto-Regular,-apple-system,&quot;system-ui&quot;,&quot;Sego=
e UI&quot;,Roboto,Helvetica,Arial,sans-serif;font-size:17.6px">=C2=A0now on=
ly has=C2=A0</span><code style=3D"box-sizing:border-box;font-family:Roboto-=
Mono,Consolas,Monaco,&quot;Andale Mono&quot;,&quot;Ubuntu Mono&quot;,monosp=
ace;background-color:rgb(247,250,252);border:1px solid rgba(0,0,0,0.05);bor=
der-radius:4px;font-size:14px;padding:0.15em 0.2em 0.05em;word-break:break-=
word;color:rgb(77,77,77)">read profile</code><span style=3D"color:rgb(77,77=
,77);font-family:Roboto-Regular,-apple-system,&quot;system-ui&quot;,&quot;S=
egoe UI&quot;,Roboto,Helvetica,Arial,sans-serif;font-size:17.6px">=C2=A0sco=
pe and any new tokens obtained using the refresh token=C2=A0</span><code st=
yle=3D"box-sizing:border-box;font-family:Roboto-Mono,Consolas,Monaco,&quot;=
Andale Mono&quot;,&quot;Ubuntu Mono&quot;,monospace;background-color:rgb(24=
7,250,252);border:1px solid rgba(0,0,0,0.05);border-radius:4px;font-size:14=
px;padding:0.15em 0.2em 0.05em;word-break:break-word;color:rgb(77,77,77)">d=
aa38700-ba96-4ef1-8b30-5cb3527aae19</code><span style=3D"color:rgb(77,77,77=
);font-family:Roboto-Regular,-apple-system,&quot;system-ui&quot;,&quot;Sego=
e UI&quot;,Roboto,Helvetica,Arial,sans-serif;font-size:17.6px">=C2=A0will h=
ave the same, reduced scope). Note that=C2=A0</span><em style=3D"box-sizing=
:border-box;font-family:Roboto-Regular,-apple-system,&quot;system-ui&quot;,=
&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif;color:rgb(77,77,77);=
font-size:17.6px">increasing</em><span style=3D"color:rgb(77,77,77);font-fa=
mily:Roboto-Regular,-apple-system,&quot;system-ui&quot;,&quot;Segoe UI&quot=
;,Roboto,Helvetica,Arial,sans-serif;font-size:17.6px">=C2=A0the scope of ac=
cess cannot be done in this way unless first reduced and increased back to =
the original scope.</span>&quot;</div><div><br></div><div>[1]=C2=A0<a href=
=3D"https://curity.io/resources/learn/refresh-tokens/#changing-scope-of-acc=
ess-token-on-refresh" target=3D"_blank">https://curity.io/resources/learn/r=
efresh-tokens/#changing-scope-of-access-token-on-refresh</a></div><div><br>=
</div><div>Thanks &amp; Regards,</div><div>Sachin</div></div><br><div class=
=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, 20 Feb 2024 =
at 21:59, Neil Madden &lt;<a href=3D"mailto:neil.e.madden@gmail.com" target=
=3D"_blank">neil.e.madden@gmail.com</a>&gt; wrote:<br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex"><div dir=3D"auto"><div dir=3D"ltr"></div=
><div dir=3D"ltr"><br></div><div dir=3D"ltr"><br><blockquote type=3D"cite">=
On 20 Feb 2024, at 11:02, Sachin Mamoru &lt;<a href=3D"mailto:sachinmamoru@=
gmail.com" target=3D"_blank">sachinmamoru@gmail.com</a>&gt; wrote:<br><br><=
/blockquote></div><blockquote type=3D"cite"><div dir=3D"ltr">=EF=BB=BF<div =
dir=3D"ltr">Hi Neil,<div><br></div><div>Does that mean it should be identic=
al to the narrowed scope request or the original request scope?</div></div>=
</div></blockquote><div><br></div><div>It says it has to be identical to th=
e scope of the existing refresh token in the request, not the scope specifi=
ed in the request. So effectively you can never downscope a refresh token i=
n this way. Whatever scope you specify, any RT returned must always retain =
the original scope.=C2=A0</div><div><br></div><div>(There are other ways to=
 downscope a RT, eg ForgeRock=E2=80=99s macaroons allow you to attenuate th=
e scope if you wish).=C2=A0</div><div><br></div><div>=E2=80=94 Neil</div><b=
r><blockquote type=3D"cite"><div dir=3D"ltr"><br><div class=3D"gmail_quote"=
><div dir=3D"ltr" class=3D"gmail_attr">On Tue, 20 Feb 2024 at 16:31, Sachin=
 Mamoru &lt;<a href=3D"mailto:sachinmamoru@gmail.com" target=3D"_blank">sac=
hinmamoru@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quot=
e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)=
;padding-left:1ex"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote=
"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, 20 Feb 2024 at 12:23, Neil =
Madden &lt;<a href=3D"mailto:neil.e.madden@gmail.com" target=3D"_blank">nei=
l.e.madden@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex"><div dir=3D"auto"><div dir=3D"ltr"></div><div dir=3D"lt=
r"><br></div><div dir=3D"ltr"><blockquote type=3D"cite">On 20 Feb 2024, at =
06:44, Sachin Mamoru &lt;<a href=3D"mailto:sachinmamoru@gmail.com" target=
=3D"_blank">sachinmamoru@gmail.com</a>&gt; wrote:<br><br></blockquote></div=
><blockquote type=3D"cite"><div dir=3D"ltr">=EF=BB=BF<div dir=3D"ltr">Hi Al=
l,<div><br></div><div><div style=3D"line-height:1.2;margin-top:0pt;margin-b=
ottom:0pt"><span style=3D"background-color:transparent;font-variant-numeric=
:normal;font-variant-east-asian:normal;font-variant-alternates:normal;verti=
cal-align:baseline"><font face=3D"arial, sans-serif">When we request an acc=
ess token using 3 scopes (scope1, scope2, scope3).</font></span></div><div =
style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><span style=3D"b=
ackground-color:transparent;font-variant-numeric:normal;font-variant-east-a=
sian:normal;font-variant-alternates:normal;vertical-align:baseline"><font f=
ace=3D"arial, sans-serif">Then will receive a refresh token (refresh_token1=
) with the access token.</font></span></div><font face=3D"arial, sans-serif=
"><br></font><div style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt=
"><span style=3D"background-color:transparent;font-variant-numeric:normal;f=
ont-variant-east-asian:normal;font-variant-alternates:normal;vertical-align=
:baseline"><font face=3D"arial, sans-serif">After that will request another=
 access token with refresh_token1 and provide the scope list as scope1 and =
scope2 (Narrow down scopes).</font></span></div><div style=3D"line-height:1=
.2;margin-top:0pt;margin-bottom:0pt"><span style=3D"background-color:transp=
arent;font-variant-numeric:normal;font-variant-east-asian:normal;font-varia=
nt-alternates:normal;vertical-align:baseline"><font face=3D"arial, sans-ser=
if">Similarly, get another refresh token (refresh_token2) with the access t=
oken.</font></span></div><font face=3D"arial, sans-serif"><br></font><div s=
tyle=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><span style=3D"ba=
ckground-color:transparent;font-variant-numeric:normal;font-variant-east-as=
ian:normal;font-variant-alternates:normal;vertical-align:baseline"><font fa=
ce=3D"arial, sans-serif">Now if we request another access token with refres=
h_token2, we cannot request scope3, instead, we can either request both sco=
pe1 and scope2 or one of them.<br></font></span></div><font face=3D"arial, =
sans-serif"><br></font><div style=3D"line-height:1.2;margin-top:0pt;margin-=
bottom:0pt"><span style=3D"background-color:transparent;font-variant-numeri=
c:normal;font-variant-east-asian:normal;font-variant-alternates:normal;vert=
ical-align:baseline"><font face=3D"arial, sans-serif">But in the specificat=
ion, didn&#39;t able to find anything related to narrow-down scopes with re=
fresh token.</font></span></div><font face=3D"arial, sans-serif"><br></font=
><div style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><span styl=
e=3D"background-color:transparent;font-variant-numeric:normal;font-variant-=
east-asian:normal;font-variant-alternates:normal;text-decoration-line:under=
line;vertical-align:baseline"><font face=3D"arial, sans-serif">From Spec</f=
ont></span></div><font face=3D"arial, sans-serif"><br></font><div style=3D"=
line-height:1.2;margin-top:0pt;margin-bottom:0pt"><font face=3D"arial, sans=
-serif"><span style=3D"background-color:transparent;font-variant-numeric:no=
rmal;font-variant-east-asian:normal;font-variant-alternates:normal;vertical=
-align:baseline">1.5.=C2=A0 Refresh Token -=C2=A0</span><span style=3D"back=
ground-color:transparent">Refresh tokens are issued to the client by the au=
thorization server and are=C2=A0</span><span style=3D"background-color:tran=
sparent">used to obtain a new access token when the current access token=C2=
=A0</span><span style=3D"background-color:transparent">becomes invalid or e=
xpires or to obtain additional access tokens=C2=A0</span><span style=3D"bac=
kground-color:transparent">with identical or narrower scope (access tokens =
may have a shorter=C2=A0</span><span style=3D"background-color:transparent"=
>lifetime and fewer permissions than authorized by the resource=C2=A0</span=
><span style=3D"background-color:transparent">owner).</span></font></div><f=
ont face=3D"arial, sans-serif"><br></font><div style=3D"line-height:1.2;mar=
gin-top:0pt;margin-bottom:0pt"><span style=3D"background-color:transparent;=
font-variant-numeric:normal;font-variant-east-asian:normal;font-variant-alt=
ernates:normal;vertical-align:baseline"><font face=3D"arial, sans-serif">6.=
=C2=A0 Refreshing an Access Token</font></span></div><div style=3D"line-hei=
ght:1.2;margin-top:0pt;margin-bottom:0pt"><font face=3D"arial, sans-serif">=
<span style=3D"background-color:transparent;font-variant-numeric:normal;fon=
t-variant-east-asian:normal;font-variant-alternates:normal;vertical-align:b=
aseline">The scope of the access request as described by=C2=A0</span><span =
style=3D"background-color:transparent">Section 3.3.=C2=A0 The requested sco=
pe MUST NOT include any scope=C2=A0</span><span style=3D"background-color:t=
ransparent">not originally granted by the resource owner, and if omitted is=
=C2=A0</span><span style=3D"background-color:transparent">treated as equal =
to the scope originally granted by the=C2=A0</span><span style=3D"backgroun=
d-color:transparent">resource owner.</span></font></div><font face=3D"arial=
, sans-serif"><br></font><div style=3D"line-height:1.2;margin-top:0pt;margi=
n-bottom:0pt"><a href=3D"https://datatracker.ietf.org/doc/html/rfc6749" sty=
le=3D"text-decoration-line:none" target=3D"_blank"><span style=3D"backgroun=
d-color:transparent;font-variant-numeric:normal;font-variant-east-asian:nor=
mal;font-variant-alternates:normal;text-decoration-line:underline;vertical-=
align:baseline"><font face=3D"arial, sans-serif">https://datatracker.ietf.o=
rg/doc/html/rfc6749</font></span></a></div><div style=3D"line-height:1.2;ma=
rgin-top:0pt;margin-bottom:0pt"><font face=3D"arial, sans-serif"><br></font=
></div><div style=3D"line-height:1.2;margin-top:0pt;margin-bottom:0pt"><fon=
t face=3D"arial, sans-serif">IMO, from a security aspect, the current behav=
iour is much more secure because it is designed to maintain the principle o=
f least privilege, where it updates the refresh token authorised scopes bas=
ed on the requested ones.</font></div><div style=3D"line-height:1.2;margin-=
top:0pt;margin-bottom:0pt"><br></div><div style=3D"line-height:1.2;margin-t=
op:0pt;margin-bottom:0pt">What should be the correct behaviour?<br>narrow-d=
own scope refresh token should also be able to request access token with or=
iginal scope list?<font face=3D"arial, sans-serif"><br></font></div></div><=
/div></div></blockquote><div><br></div><div>Also from section 6:</div><div>=
<br></div><div><pre style=3D"box-sizing:border-box;font-size:11.04px;margin=
-bottom:0px;overflow:visible;padding:0px;width:80ch;color:rgb(32,37,42)">If=
 a
   new refresh token is issued, the refresh token scope MUST be
   identical to that of the refresh token included by the client in the
   request.</pre><pre style=3D"box-sizing:border-box;font-size:11.04px;marg=
in-bottom:0px;overflow:visible;padding:0px;width:80ch;color:rgb(32,37,42)">=
<br></pre><pre style=3D"box-sizing:border-box;font-size:11.04px;margin-bott=
om:0px;overflow:visible;padding:0px;width:80ch;color:rgb(32,37,42)"><br></p=
re><pre style=3D"box-sizing:border-box;font-size:11.04px;margin-bottom:0px;=
overflow:visible;padding:0px;width:80ch;color:rgb(32,37,42)"><br></pre><pre=
 style=3D"box-sizing:border-box;font-size:11.04px;margin-bottom:0px;overflo=
w:visible;padding:0px;width:80ch;color:rgb(32,37,42)"><br></pre><pre style=
=3D"box-sizing:border-box;font-size:11.04px;margin-bottom:0px;overflow:visi=
ble;padding:0px;width:80ch;color:rgb(32,37,42)">=E2=80=94 Neil</pre></div><=
/div></blockquote></div><br clear=3D"all"><div><br></div><span class=3D"gma=
il_signature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signatur=
e"><div dir=3D"ltr"><div dir=3D"ltr"><table style=3D"direction:ltr;border-c=
ollapse:collapse"><tbody><tr><td style=3D"font-size:0px;height:12px;line-he=
ight:0"></td></tr><tr><td><table cellpadding=3D"0" cellspacing=3D"0" style=
=3D"border-collapse:collapse;font-family:Arial;line-height:1.15"><tbody><tr=
><td style=3D"vertical-align:top;padding:0.01px 14px 0.01px 0.01px"><table =
cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;width=
:65px"><tbody><tr><td style=3D"padding:0.01px 10px 0px 0px"><img src=3D"htt=
ps://d36urhup7zbd7q.cloudfront.net/29e6c216-f94e-4bc3-8205-f3ea762db0d5/pro=
file.format_png.resize_200x.jpeg" height=3D"auto" width=3D"65" style=3D"wid=
th: 65px; vertical-align: initial; border-radius: 0px; display: block;"></t=
d></tr></tbody></table></td><td height=3D"1" width=3D"0" style=3D"width:0px=
;padding:0.01px;border-right:1px solid rgb(189,189,189);height:1px;font-siz=
e:1pt">=C2=A0</td><td style=3D"padding:0.01px 0.01px 0.01px 14px;vertical-a=
lign:top" valign=3D"top"><table cellpadding=3D"0" cellspacing=3D"0" style=
=3D"border-collapse:collapse"><tbody><tr><td style=3D"line-height:1.2;paddi=
ng:0.01px 0.01px 12px"><span style=3D"font-family:Arial;text-transform:init=
ial;font-weight:bold"><span style=3D"color:rgb(100,100,100);font-size:16px"=
> Sachin Mamoru </span></span><br><span style=3D"font-size:13px;letter-spac=
ing:0px;font-family:Arial;text-transform:initial;font-weight:bold;color:rgb=
(100,100,100)"> Software Engineer, </span> <span style=3D"font-size:13px;le=
tter-spacing:0px;font-family:Arial;text-transform:initial;font-weight:bold;=
color:rgb(100,100,100)"> WSO2</span></td></tr><tr><td style=3D"padding:0.01=
px;line-height:0"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"borde=
r-collapse:collapse"><tbody><tr><td style=3D"padding:0.01px"><table cellpad=
ding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse"><tbody><tr>=
<td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table cellpadding=3D=
"0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-height:14px;fo=
nt-size:12px;font-family:Arial"><tbody><tr><td style=3D"padding:0.01px;font=
-family:Arial;font-size:12px"><a href=3D"tel:+94771292681" style=3D"text-de=
coration:unset;font-size:12px;font-family:Arial" target=3D"_blank"><span st=
yle=3D"line-height:1.2;color:rgb(33,33,33);font-family:Arial;white-space:no=
wrap;font-size:12px"> +94771292681</span></a></td></tr></tbody></table></td=
><td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table cellpadding=
=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-height:14px=
;font-size:12px;font-family:Arial"><tbody><tr><td style=3D"padding:0px 4px"=
><span style=3D"font-family:Arial;font-weight:bold;font-size:12px;color:rgb=
(33,33,33);vertical-align:2px"> | </span></td><td style=3D"padding:0.01px;f=
ont-family:Arial;font-size:12px"><a href=3D"https://sachinmamoru.me/" style=
=3D"text-decoration:unset;font-size:12px;font-family:Arial" target=3D"_blan=
k"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-family:Arial;whi=
te-space:nowrap;font-size:12px"> sachinmamoru.me=C2=A0</span></a></td></tr>=
</tbody></table></td></tr></tbody></table></td></tr><tr><td style=3D"paddin=
g:0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collap=
se:collapse"><tbody><tr><td style=3D"line-height:0;padding:0.01px 0.01px 6p=
x"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:coll=
apse;line-height:14px;font-size:12px;font-family:Arial"><tbody><tr><td styl=
e=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"mailto:sac=
hinmamoru@gmail.com" style=3D"text-decoration:unset;font-size:12px;font-fam=
ily:Arial" target=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33=
,33);font-family:Arial;white-space:nowrap;font-size:12px"> sachinmamoru@gma=
il.com=C2=A0</span></a></td></tr></tbody></table></td></tr></tbody></table>=
</td></tr></tbody></table></td></tr><tr><td style=3D"padding:12px 0.01px 0.=
01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:c=
ollapse;width:100%"><tbody><tr><td style=3D"padding:0.01px"><table border=
=3D"0" cellpadding=3D"0" cellspacing=3D"0"><tbody><tr><td align=3D"left" st=
yle=3D"padding-right:6px;text-align:center;padding-top:0px"><a href=3D"http=
s://www.linkedin.com/in/sachin-mamoru/" target=3D"_blank"><img width=3D"25"=
 height=3D"25" src=3D"https://cdn.gifo.wisestamp.com/s/ld/0077b5/50/0/backg=
round.png" style=3D"float: left; border: none;" border=3D"0"></a></td><td a=
lign=3D"left" style=3D"padding-right:6px;text-align:center;padding-top:0px"=
><a href=3D"https://twitter.com/MamoruSachin" target=3D"_blank"><img width=
=3D"25" height=3D"25" src=3D"https://cdn.gifo.wisestamp.com/s/tw/55acee/50/=
0/background.png" style=3D"float: left; border: none;" border=3D"0"></a></t=
d></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table>=
</td></tr></tbody></table><table cellpadding=3D"0" cellspacing=3D"0" border=
=3D"0" style=3D"max-width:600px;width:100%"><tbody><tr><td style=3D"line-he=
ight:0"></td></tr></tbody></table></td></tr></tbody></table><br></div><img =
src=3D"https://tracy.srv.wisestamp.com/px/5434123278745600.png" alt=3D""></=
div></div>
</blockquote></div><br clear=3D"all"><div><br></div><span class=3D"gmail_si=
gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><d=
iv dir=3D"ltr"><div dir=3D"ltr"><table style=3D"direction:ltr;border-collap=
se:collapse"><tbody><tr><td style=3D"font-size:0px;height:12px;line-height:=
0"></td></tr><tr><td><table cellpadding=3D"0" cellspacing=3D"0" style=3D"bo=
rder-collapse:collapse;font-family:Arial;line-height:1.15"><tbody><tr><td s=
tyle=3D"vertical-align:top;padding:0.01px 14px 0.01px 0.01px"><table cellpa=
dding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;width:65px"=
><tbody><tr><td style=3D"padding:0.01px 10px 0px 0px"><img src=3D"https://d=
36urhup7zbd7q.cloudfront.net/29e6c216-f94e-4bc3-8205-f3ea762db0d5/profile.f=
ormat_png.resize_200x.jpeg" height=3D"auto" width=3D"65" style=3D"width: 65=
px; vertical-align: initial; border-radius: 0px; display: block;"></td></tr=
></tbody></table></td><td height=3D"1" width=3D"0" style=3D"width:0px;paddi=
ng:0.01px;border-right:1px solid rgb(189,189,189);height:1px;font-size:1pt"=
>=C2=A0</td><td style=3D"padding:0.01px 0.01px 0.01px 14px;vertical-align:t=
op" valign=3D"top"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"bord=
er-collapse:collapse"><tbody><tr><td style=3D"line-height:1.2;padding:0.01p=
x 0.01px 12px"><span style=3D"font-family:Arial;text-transform:initial;font=
-weight:bold"><span style=3D"color:rgb(100,100,100);font-size:16px"> Sachin=
 Mamoru </span></span><br><span style=3D"font-size:13px;letter-spacing:0px;=
font-family:Arial;text-transform:initial;font-weight:bold;color:rgb(100,100=
,100)"> Software Engineer, </span> <span style=3D"font-size:13px;letter-spa=
cing:0px;font-family:Arial;text-transform:initial;font-weight:bold;color:rg=
b(100,100,100)"> WSO2</span></td></tr><tr><td style=3D"padding:0.01px;line-=
height:0"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collap=
se:collapse"><tbody><tr><td style=3D"padding:0.01px"><table cellpadding=3D"=
0" cellspacing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td styl=
e=3D"line-height:0;padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cell=
spacing=3D"0" style=3D"border-collapse:collapse;line-height:14px;font-size:=
12px;font-family:Arial"><tbody><tr><td style=3D"padding:0.01px;font-family:=
Arial;font-size:12px"><a href=3D"tel:+94771292681" style=3D"text-decoration=
:unset;font-size:12px;font-family:Arial" target=3D"_blank"><span style=3D"l=
ine-height:1.2;color:rgb(33,33,33);font-family:Arial;white-space:nowrap;fon=
t-size:12px"> +94771292681</span></a></td></tr></tbody></table></td><td sty=
le=3D"line-height:0;padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cel=
lspacing=3D"0" style=3D"border-collapse:collapse;line-height:14px;font-size=
:12px;font-family:Arial"><tbody><tr><td style=3D"padding:0px 4px"><span sty=
le=3D"font-family:Arial;font-weight:bold;font-size:12px;color:rgb(33,33,33)=
;vertical-align:2px"> | </span></td><td style=3D"padding:0.01px;font-family=
:Arial;font-size:12px"><a href=3D"https://sachinmamoru.me/" style=3D"text-d=
ecoration:unset;font-size:12px;font-family:Arial" target=3D"_blank"><span s=
tyle=3D"line-height:1.2;color:rgb(33,33,33);font-family:Arial;white-space:n=
owrap;font-size:12px"> sachinmamoru.me=C2=A0</span></a></td></tr></tbody></=
table></td></tr></tbody></table></td></tr><tr><td style=3D"padding:0.01px">=
<table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collaps=
e"><tbody><tr><td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table =
cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-=
height:14px;font-size:12px;font-family:Arial"><tbody><tr><td style=3D"paddi=
ng:0.01px;font-family:Arial;font-size:12px"><a href=3D"mailto:sachinmamoru@=
gmail.com" style=3D"text-decoration:unset;font-size:12px;font-family:Arial"=
 target=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-=
family:Arial;white-space:nowrap;font-size:12px"> sachinmamoru@gmail.com=C2=
=A0</span></a></td></tr></tbody></table></td></tr></tbody></table></td></tr=
></tbody></table></td></tr><tr><td style=3D"padding:12px 0.01px 0.01px"><ta=
ble cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;w=
idth:100%"><tbody><tr><td style=3D"padding:0.01px"><table border=3D"0" cell=
padding=3D"0" cellspacing=3D"0"><tbody><tr><td align=3D"left" style=3D"padd=
ing-right:6px;text-align:center;padding-top:0px"><a href=3D"https://www.lin=
kedin.com/in/sachin-mamoru/" target=3D"_blank"><img width=3D"25" height=3D"=
25" src=3D"https://cdn.gifo.wisestamp.com/s/ld/0077b5/50/0/background.png" =
style=3D"float: left; border: none;" border=3D"0"></a></td><td align=3D"lef=
t" style=3D"padding-right:6px;text-align:center;padding-top:0px"><a href=3D=
"https://twitter.com/MamoruSachin" target=3D"_blank"><img width=3D"25" heig=
ht=3D"25" src=3D"https://cdn.gifo.wisestamp.com/s/tw/55acee/50/0/background=
.png" style=3D"float: left; border: none;" border=3D"0"></a></td></tr></tbo=
dy></table></td></tr></tbody></table></td></tr></tbody></table></td></tr></=
tbody></table><table cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=
=3D"max-width:600px;width:100%"><tbody><tr><td style=3D"line-height:0"></td=
></tr></tbody></table></td></tr></tbody></table><br></div><img src=3D"https=
://tracy.srv.wisestamp.com/px/5434123278745600.png" alt=3D""></div></div>
</div></blockquote></div></blockquote></div><br clear=3D"all"><div><br></di=
v><span class=3D"gmail_signature_prefix">-- </span><br><div dir=3D"ltr" cla=
ss=3D"gmail_signature"><div dir=3D"ltr"><div dir=3D"ltr"><table style=3D"di=
rection:ltr;border-collapse:collapse"><tbody><tr><td style=3D"font-size:0px=
;height:12px;line-height:0"></td></tr><tr><td><table cellpadding=3D"0" cell=
spacing=3D"0" style=3D"border-collapse:collapse;font-family:Arial;line-heig=
ht:1.15"><tbody><tr><td style=3D"vertical-align:top;padding:0.01px 14px 0.0=
1px 0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-coll=
apse:collapse;width:65px"><tbody><tr><td style=3D"padding:0.01px 10px 0px 0=
px"><img src=3D"https://d36urhup7zbd7q.cloudfront.net/29e6c216-f94e-4bc3-82=
05-f3ea762db0d5/profile.format_png.resize_200x.jpeg" height=3D"auto" width=
=3D"65" style=3D"width: 65px; vertical-align: initial; border-radius: 0px; =
display: block;"></td></tr></tbody></table></td><td height=3D"1" width=3D"0=
" style=3D"width:0px;padding:0.01px;border-right:1px solid rgb(189,189,189)=
;height:1px;font-size:1pt">=C2=A0</td><td style=3D"padding:0.01px 0.01px 0.=
01px 14px;vertical-align:top" valign=3D"top"><table cellpadding=3D"0" cells=
pacing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"lin=
e-height:1.2;padding:0.01px 0.01px 12px"><span style=3D"font-family:Arial;t=
ext-transform:initial;font-weight:bold"><span style=3D"color:rgb(100,100,10=
0);font-size:16px"> Sachin Mamoru </span></span><br><span style=3D"font-siz=
e:13px;letter-spacing:0px;font-family:Arial;text-transform:initial;font-wei=
ght:bold;color:rgb(100,100,100)"> Software Engineer, </span> <span style=3D=
"font-size:13px;letter-spacing:0px;font-family:Arial;text-transform:initial=
;font-weight:bold;color:rgb(100,100,100)"> WSO2</span></td></tr><tr><td sty=
le=3D"padding:0.01px;line-height:0"><table cellpadding=3D"0" cellspacing=3D=
"0" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"padding:0.01=
px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:col=
lapse"><tbody><tr><td style=3D"line-height:0;padding:0.01px 0.01px 6px"><ta=
ble cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;l=
ine-height:14px;font-size:12px;font-family:Arial"><tbody><tr><td style=3D"p=
adding:0.01px;font-family:Arial;font-size:12px"><a href=3D"tel:+94771292681=
" style=3D"text-decoration:unset;font-size:12px;font-family:Arial" target=
=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-family:=
Arial;white-space:nowrap;font-size:12px"> +94771292681</span></a></td></tr>=
</tbody></table></td><td style=3D"line-height:0;padding:0.01px 0.01px 6px">=
<table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collaps=
e;line-height:14px;font-size:12px;font-family:Arial"><tbody><tr><td style=
=3D"padding:0px 4px"><span style=3D"font-family:Arial;font-weight:bold;font=
-size:12px;color:rgb(33,33,33);vertical-align:2px"> | </span></td><td style=
=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"https://sac=
hinmamoru.me/" style=3D"text-decoration:unset;font-size:12px;font-family:Ar=
ial" target=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33);f=
ont-family:Arial;white-space:nowrap;font-size:12px"> sachinmamoru.me=C2=A0<=
/span></a></td></tr></tbody></table></td></tr></tbody></table></td></tr><tr=
><td style=3D"padding:0.01px"><table cellpadding=3D"0" cellspacing=3D"0" st=
yle=3D"border-collapse:collapse"><tbody><tr><td style=3D"line-height:0;padd=
ing:0.01px 0.01px 6px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"=
border-collapse:collapse;line-height:14px;font-size:12px;font-family:Arial"=
><tbody><tr><td style=3D"padding:0.01px;font-family:Arial;font-size:12px"><=
a href=3D"mailto:sachinmamoru@gmail.com" style=3D"text-decoration:unset;fon=
t-size:12px;font-family:Arial" target=3D"_blank"><span style=3D"line-height=
:1.2;color:rgb(33,33,33);font-family:Arial;white-space:nowrap;font-size:12p=
x"> sachinmamoru@gmail.com=C2=A0</span></a></td></tr></tbody></table></td><=
/tr></tbody></table></td></tr></tbody></table></td></tr><tr><td style=3D"pa=
dding:12px 0.01px 0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=
=3D"border-collapse:collapse;width:100%"><tbody><tr><td style=3D"padding:0.=
01px"><table border=3D"0" cellpadding=3D"0" cellspacing=3D"0"><tbody><tr><t=
d align=3D"left" style=3D"padding-right:6px;text-align:center;padding-top:0=
px"><a href=3D"https://www.linkedin.com/in/sachin-mamoru/" target=3D"_blank=
"><img width=3D"25" height=3D"25" src=3D"https://cdn.gifo.wisestamp.com/s/l=
d/0077b5/50/0/background.png" style=3D"float: left; border: none;" border=
=3D"0"></a></td><td align=3D"left" style=3D"padding-right:6px;text-align:ce=
nter;padding-top:0px"><a href=3D"https://twitter.com/MamoruSachin" target=
=3D"_blank"><img width=3D"25" height=3D"25" src=3D"https://cdn.gifo.wisesta=
mp.com/s/tw/55acee/50/0/background.png" style=3D"float: left; border: none;=
" border=3D"0"></a></td></tr></tbody></table></td></tr></tbody></table></td=
></tr></tbody></table></td></tr></tbody></table><table cellpadding=3D"0" ce=
llspacing=3D"0" border=3D"0" style=3D"max-width:600px;width:100%"><tbody><t=
r><td style=3D"line-height:0"></td></tr></tbody></table></td></tr></tbody><=
/table><br></div><img src=3D"https://tracy.srv.wisestamp.com/px/54341232787=
45600.png" alt=3D""></div></div>
</div></blockquote></div><br></div></div></blockquote></div><br clear=3D"al=
l"><div><br></div><span class=3D"gmail_signature_prefix">-- </span><br><div=
 dir=3D"ltr" class=3D"gmail_signature"><div dir=3D"ltr"><div dir=3D"ltr"><t=
able style=3D"direction:ltr;border-collapse:collapse"><tbody><tr><td style=
=3D"font-size:0px;height:12px;line-height:0"></td></tr><tr><td><table cellp=
adding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;font-famil=
y:Arial;line-height:1.15;color:rgb(0,0,0)"><tbody><tr><td style=3D"vertical=
-align:top;padding:0.01px 14px 0.01px 0.01px"><table cellpadding=3D"0" cell=
spacing=3D"0" style=3D"border-collapse:collapse;width:65px"><tbody><tr><td =
style=3D"padding:0.01px 10px 0px 0px"><img src=3D"https://d36urhup7zbd7q.cl=
oudfront.net/29e6c216-f94e-4bc3-8205-f3ea762db0d5/profile.format_png.resize=
_200x.jpeg" height=3D"auto" width=3D"65" style=3D"width: 65px; vertical-ali=
gn: initial; border-radius: 0px; display: block;"></td></tr></tbody></table=
></td><td height=3D"1" width=3D"0" style=3D"width:0px;padding:0.01px;border=
-right:1px solid rgb(189,189,189);height:1px;font-size:1pt">=C2=A0</td><td =
style=3D"padding:0.01px 0.01px 0.01px 14px;vertical-align:top" valign=3D"to=
p"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:coll=
apse"><tbody><tr><td style=3D"line-height:1.2;padding:0.01px 0.01px 12px"><=
span style=3D"font-family:Arial;text-transform:initial;font-weight:bold"><s=
pan style=3D"color:rgb(100,100,100);font-size:16px"> Sachin Mamoru </span><=
/span><br><span style=3D"font-size:13px;letter-spacing:0px;font-family:Aria=
l;text-transform:initial;font-weight:bold;color:rgb(100,100,100)"> Software=
 Engineer, </span> <span style=3D"font-size:13px;letter-spacing:0px;font-fa=
mily:Arial;text-transform:initial;font-weight:bold;color:rgb(100,100,100)">=
 WSO2</span></td></tr><tr><td style=3D"padding:0.01px;line-height:0"><table=
 cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse"><tb=
ody><tr><td style=3D"padding:0.01px"><table cellpadding=3D"0" cellspacing=
=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"line-heig=
ht:0;padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cellspacing=3D"0" =
style=3D"border-collapse:collapse;line-height:14px;font-size:12px;font-fami=
ly:Arial"><tbody><tr><td style=3D"padding:0.01px;font-family:Arial;font-siz=
e:12px"><a href=3D"tel:+94771292681" style=3D"text-decoration:unset;font-si=
ze:12px;font-family:Arial" target=3D"_blank"><span style=3D"line-height:1.2=
;color:rgb(33,33,33);font-family:Arial;white-space:nowrap;font-size:12px"> =
+94771292681</span></a></td></tr></tbody></table></td><td style=3D"line-hei=
ght:0;padding:0.01px 0.01px 6px"><table cellpadding=3D"0" cellspacing=3D"0"=
 style=3D"border-collapse:collapse;line-height:14px;font-size:12px;font-fam=
ily:Arial"><tbody><tr><td style=3D"padding:0px 4px"><span style=3D"font-fam=
ily:Arial;font-weight:bold;font-size:12px;color:rgb(33,33,33);vertical-alig=
n:2px"> | </span></td><td style=3D"padding:0.01px;font-family:Arial;font-si=
ze:12px"><a href=3D"https://sachinmamoru.me" style=3D"text-decoration:unset=
;font-size:12px;font-family:Arial" target=3D"_blank"><span style=3D"line-he=
ight:1.2;color:rgb(33,33,33);font-family:Arial;white-space:nowrap;font-size=
:12px"> sachinmamoru.me=C2=A0</span></a></td></tr></tbody></table></td></tr=
></tbody></table></td></tr><tr><td style=3D"padding:0.01px"><table cellpadd=
ing=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse"><tbody><tr><=
td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table cellpadding=3D"=
0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-height:14px;fon=
t-size:12px;font-family:Arial"><tbody><tr><td style=3D"padding:0.01px;font-=
family:Arial;font-size:12px"><a href=3D"mailto:sachinmamoru@gmail.com" styl=
e=3D"text-decoration:unset;font-size:12px;font-family:Arial" target=3D"_bla=
nk"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-family:Arial;wh=
ite-space:nowrap;font-size:12px"> sachinmamoru@gmail.com=C2=A0</span></a></=
td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table=
></td></tr><tr><td style=3D"padding:12px 0.01px 0.01px"><table cellpadding=
=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;width:100%"><tbo=
dy><tr><td style=3D"padding:0.01px"><table border=3D"0" cellpadding=3D"0" c=
ellspacing=3D"0"><tbody><tr><td align=3D"left" style=3D"padding-right:6px;t=
ext-align:center;padding-top:0px"><a href=3D"https://www.linkedin.com/in/sa=
chin-mamoru/" target=3D"_blank"><img width=3D"25" height=3D"25" src=3D"http=
s://cdn.gifo.wisestamp.com/s/ld/0077b5/50/0/background.png" style=3D"float:=
 left; border: none;" border=3D"0"></a></td><td align=3D"left" style=3D"pad=
ding-right:6px;text-align:center;padding-top:0px"><a href=3D"https://twitte=
r.com/MamoruSachin" target=3D"_blank"><img width=3D"25" height=3D"25" src=
=3D"https://cdn.gifo.wisestamp.com/s/tw/55acee/50/0/background.png" style=
=3D"float: left; border: none;" border=3D"0"></a></td></tr></tbody></table>=
</td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></tab=
le><table cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"max-wid=
th:600px;width:100%"><tbody><tr><td style=3D"line-height:0"></td></tr></tbo=
dy></table></td></tr></tbody></table><br></div><img src=3D"https://tracy.sr=
v.wisestamp.com/px/5434123278745600.png" alt=3D""></div></div>
</blockquote></div><br clear=3D"all"><div><br></div><span class=3D"gmail_si=
gnature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><d=
iv dir=3D"ltr"><div dir=3D"ltr"><table style=3D"direction:ltr;border-collap=
se:collapse"><tbody><tr><td style=3D"font-size:0px;height:12px;line-height:=
0"></td></tr><tr><td><table cellpadding=3D"0" cellspacing=3D"0" style=3D"bo=
rder-collapse:collapse;font-family:Arial;line-height:1.15;color:rgb(0,0,0)"=
><tbody><tr><td style=3D"vertical-align:top;padding:0.01px 14px 0.01px 0.01=
px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:col=
lapse;width:65px"><tbody><tr><td style=3D"padding:0.01px 10px 0px 0px"><img=
 src=3D"https://d36urhup7zbd7q.cloudfront.net/29e6c216-f94e-4bc3-8205-f3ea7=
62db0d5/profile.format_png.resize_200x.jpeg" height=3D"auto" width=3D"65" s=
tyle=3D"width: 65px; vertical-align: initial; border-radius: 0px; display: =
block;"></td></tr></tbody></table></td><td height=3D"1" width=3D"0" style=
=3D"width:0px;padding:0.01px;border-right:1px solid rgb(189,189,189);height=
:1px;font-size:1pt">=C2=A0</td><td style=3D"padding:0.01px 0.01px 0.01px 14=
px;vertical-align:top" valign=3D"top"><table cellpadding=3D"0" cellspacing=
=3D"0" style=3D"border-collapse:collapse"><tbody><tr><td style=3D"line-heig=
ht:1.2;padding:0.01px 0.01px 12px"><span style=3D"font-family:Arial;text-tr=
ansform:initial;font-weight:bold"><span style=3D"color:rgb(100,100,100);fon=
t-size:16px"> Sachin Mamoru </span></span><br><span style=3D"font-size:13px=
;letter-spacing:0px;font-family:Arial;text-transform:initial;font-weight:bo=
ld;color:rgb(100,100,100)"> Software Engineer, </span> <span style=3D"font-=
size:13px;letter-spacing:0px;font-family:Arial;text-transform:initial;font-=
weight:bold;color:rgb(100,100,100)"> WSO2</span></td></tr><tr><td style=3D"=
padding:0.01px;line-height:0"><table cellpadding=3D"0" cellspacing=3D"0" st=
yle=3D"border-collapse:collapse"><tbody><tr><td style=3D"padding:0.01px"><t=
able cellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse"=
><tbody><tr><td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table ce=
llpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-he=
ight:14px;font-size:12px;font-family:Arial"><tbody><tr><td style=3D"padding=
:0.01px;font-family:Arial;font-size:12px"><a href=3D"tel:+94771292681" styl=
e=3D"text-decoration:unset;font-size:12px;font-family:Arial" target=3D"_bla=
nk"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-family:Arial;wh=
ite-space:nowrap;font-size:12px"> +94771292681</span></a></td></tr></tbody>=
</table></td><td style=3D"line-height:0;padding:0.01px 0.01px 6px"><table c=
ellpadding=3D"0" cellspacing=3D"0" style=3D"border-collapse:collapse;line-h=
eight:14px;font-size:12px;font-family:Arial"><tbody><tr><td style=3D"paddin=
g:0px 4px"><span style=3D"font-family:Arial;font-weight:bold;font-size:12px=
;color:rgb(33,33,33);vertical-align:2px"> | </span></td><td style=3D"paddin=
g:0.01px;font-family:Arial;font-size:12px"><a href=3D"https://sachinmamoru.=
me" style=3D"text-decoration:unset;font-size:12px;font-family:Arial" target=
=3D"_blank"><span style=3D"line-height:1.2;color:rgb(33,33,33);font-family:=
Arial;white-space:nowrap;font-size:12px"> sachinmamoru.me=C2=A0</span></a><=
/td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td style=
=3D"padding:0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"bor=
der-collapse:collapse"><tbody><tr><td style=3D"line-height:0;padding:0.01px=
 0.01px 6px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-col=
lapse:collapse;line-height:14px;font-size:12px;font-family:Arial"><tbody><t=
r><td style=3D"padding:0.01px;font-family:Arial;font-size:12px"><a href=3D"=
mailto:sachinmamoru@gmail.com" style=3D"text-decoration:unset;font-size:12p=
x;font-family:Arial" target=3D"_blank"><span style=3D"line-height:1.2;color=
:rgb(33,33,33);font-family:Arial;white-space:nowrap;font-size:12px"> sachin=
mamoru@gmail.com=C2=A0</span></a></td></tr></tbody></table></td></tr></tbod=
y></table></td></tr></tbody></table></td></tr><tr><td style=3D"padding:12px=
 0.01px 0.01px"><table cellpadding=3D"0" cellspacing=3D"0" style=3D"border-=
collapse:collapse;width:100%"><tbody><tr><td style=3D"padding:0.01px"><tabl=
e border=3D"0" cellpadding=3D"0" cellspacing=3D"0"><tbody><tr><td align=3D"=
left" style=3D"padding-right:6px;text-align:center;padding-top:0px"><a href=
=3D"https://www.linkedin.com/in/sachin-mamoru/" target=3D"_blank"><img widt=
h=3D"25" height=3D"25" src=3D"https://cdn.gifo.wisestamp.com/s/ld/0077b5/50=
/0/background.png" style=3D"float: left; border: none;" border=3D"0"></a></=
td><td align=3D"left" style=3D"padding-right:6px;text-align:center;padding-=
top:0px"><a href=3D"https://twitter.com/MamoruSachin" target=3D"_blank"><im=
g width=3D"25" height=3D"25" src=3D"https://cdn.gifo.wisestamp.com/s/tw/55a=
cee/50/0/background.png" style=3D"float: left; border: none;" border=3D"0">=
</a></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody><=
/table></td></tr></tbody></table><table cellpadding=3D"0" cellspacing=3D"0"=
 border=3D"0" style=3D"max-width:600px;width:100%"><tbody><tr><td style=3D"=
line-height:0"></td></tr></tbody></table></td></tr></tbody></table><br></di=
v><img src=3D"https://tracy.srv.wisestamp.com/px/5434123278745600.png" alt=
=3D""></div></div>

--000000000000e221bb0611e00e8d--

