CN113656066B - 一种基于特征对齐的克隆代码检测方法 - Google Patents
一种基于特征对齐的克隆代码检测方法 Download PDFInfo
- Publication number
- CN113656066B CN113656066B CN202110936377.8A CN202110936377A CN113656066B CN 113656066 B CN113656066 B CN 113656066B CN 202110936377 A CN202110936377 A CN 202110936377A CN 113656066 B CN113656066 B CN 113656066B
- Authority
- CN
- China
- Prior art keywords
- code
- feature
- bidirectional
- convolution
- tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 28
- 230000001364 causal effect Effects 0.000 claims abstract description 61
- 230000002457 bidirectional effect Effects 0.000 claims abstract description 44
- 238000000034 method Methods 0.000 claims abstract description 26
- 239000011159 matrix material Substances 0.000 claims abstract description 23
- 238000000605 extraction Methods 0.000 claims abstract description 9
- 239000013598 vector Substances 0.000 claims description 43
- 238000011176 pooling Methods 0.000 claims description 6
- 238000012549 training Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 17
- 239000000284 extract Substances 0.000 abstract description 3
- 238000013527 convolutional neural network Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000010367 cloning Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于特征对齐的克隆代码检测方法,将源代码解析成抽象语法树,并分割为语句树序列,然后进行词嵌入和语义树编码;接着,利用双向因果卷积神经网络,提取具有丰富结构和语义信息的代码片段的特征表示;在特征提取之后,通过稀疏重建,以数据驱动的方式,学习表示两个代码片段之间对应关系的对齐矩阵,从而对齐两个代码片段,得到两个代码的相似度。与现有技术相比,本发明能够提取更丰富的特征,并解决功能相似的代码因语句位置不同而导致的结构差异问题,获得更高的检测精度。
Description
技术领域
本发明属于软件代码分析技术领域。
背景技术
代码克隆检测的目的,是通过度量两个代码片段的相似性来做出决策。在整个软件开发生命周期中,代码克隆检测已经被证明是有价值的。识别文本、语法或功能上相似的代码片段是许多软件工程任务的基础,如代码分类、代码重构、bug检测和恶意代码检测等。近年来,深度学习技术在代码克隆检测中取得了很好的结果,尤其是解决功能相似的代码克隆检测。
然而,现有的技术仅仅关注如何从源代码中提取更多的区别性特征,而一些问题,如功能相似的代码的结构差异,并没有明确解决。软件开发过程中,当程序员复制一个代码段时,经常添加或删除几个语句,或者使用更灵活的语法结构来实现同样功能,这导致复制前后的代码语句错位,产生结构差异。
代码片段通常被转换为抽象语法树或程序依赖图,后续采用CNN或RNN学习特征表示,计算特征之间的相似度,来决策是否为相似代码。学习到的特征通常是二维张量,为了生成计算相似度的向量,通常采用全局池化操作。然而,全局池化在解决代码错位方面本质上很薄弱,特征的错位依然存在。计算结构不同、而功能相似代码对的相似度时,特征错位会导致其相似度变低,从而可能导致决策错误。对代码特征进行对齐操作,可以帮助弥合功能相似代码存在的结构不同的鸿沟。
发明内容
发明目的:为了解决上述现有技术存在的问题,本发明提供了一种基于特征对齐的克隆代码检测方法。
技术方案:本发明提供了一种基于特征对齐的克隆代码检测方法,具体为:将目标代码x和代码y输入至训练好的克隆代码检测模型中;所述训练好的克隆代码检测模型输出代码x和代码y的相似度,根据代码x和代码y的相似度判断代码x和代码y是否为相似的代码;所述克隆代码检测模型对输入的代码x和代码y做如下处理:
步骤1:利用代码解析工具生成代码x的抽象语法树Tx和代码y的抽象语法树Ty
步骤2:根据抽象语法树Tx的状态节点,将Tx划分为多个语句树,并按照原抽象语法树Tx先序遍历的顺序,将该多个语句树组成语句树序列STx;根据抽象语法树Ty的状态节点,将Ty划分为多个语句树,并按照原抽象语法树Tx先序遍历的顺序,将该多个语句树组成语句树序列STy;
步骤3:构建语句向量矩阵:对每个语句树序列中每个语句树的节点实体进行词嵌入,采用编码器将词嵌入后的语句树编码成语句向量,根据该语句树序列将与该语句树序列对应的语句向量构成语句向量矩阵;
步骤4:采用双向因果卷积网络对代码x的语句向量矩阵Xx和代码y的语句向量矩阵Xy分别进行特征提取,从而得到代码x的代码特征Fx,代码y的代码特征Fy;
步骤7:将Vxy和Vyx在特征维度上进行连接,再将连接后的向量输入至全连接层,将全连接层的输出输入至sigmoid函数层,sigmoid函数层输出代码x和代码y的相似度S。
进一步的,所述步骤4中双向因果卷积网络包括相互连接的第一双向因果卷积模块和第二双向因果卷积模块,所述第一、二双向因果卷积模块结构相同,均包括1×1卷积层,第一双向因果卷积层和第二双向因果卷积层;将1×1卷积层、第一双向因果卷积层和第二双向因果卷积层输出的结果相加作为双向因果卷积模块的输出;所述第一双向因果卷积层为卷积核为3×1的双向因果卷积层,第二双向因果卷积层为卷积核为3×1且步长为2的双向因果卷积层。
进一步的,所述双向因果卷积层对输入的特征进行如下操作:
其中,为双向因果卷积层的输入特征中第t个特征向量,t=0,1,2,…,T’;当对代码x进行特征提取时,T’为语句树序列STx的长度;当对代码y进行特征提取时,T’为语句树序列STy的长度;k为双向因果卷积层的卷积核大小,为卷积核,f和b分别代表前向和后向,*=f或b;为双向因果卷积层中前向卷积操作输出的第t个特征向量,为双向因果卷积层中后向卷积操作输出的第t个特征向量,concat表示连接,将双向特征向量连接起来,得到双向因果卷积层的第t个输出特征向量Ft。
进一步的,所述步骤5具体为:
通过稀疏重建,构建代码特征Fy对齐到代码特征Fx的目标函数:
其中Wyx为稀疏重建系数;β为平衡系数;
通过稀疏重建,构建代码特征Fx对齐到代码特征Fy的目标函数:
其中,Wxy为稀疏重建系数;
进一步的,所述克隆代码检测模型的损失函数为:
其中,N为训练集中样本的总个数,所述一个样本中包括两个代码,yj为第j个样本的标签,Sj为第j个样本中两个代码之间的相似度。
有益效果:本发明通过双向因果卷积网络对代码进行特征提取,可以双向捕获上下文信息,提高代码的表示能力,比其他方法采用的双向RNN网络参数更少,克隆代码检测的速度更快,准确率更高。通过稀疏重建对代码特征进行对齐操作,可以有效消除代码特征错位带来的影响。对于更加困难的克隆代码类型,即存在增加、删除、修改语句的相似代码,以及语义相同、语法结构差异很大的相似代码,本发明能够显著提高检测准确率和召回率。
附图说明
图1是本发明的方法流程图;
图2是代码对齐的方法示意图;
图3是双向因果卷积网络示意图,其中图(a)为双向因果卷积网络的结构示意图,图(b)为双向因果卷积模块的结构示意图。
具体实施方式
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
本实施例提供了一种基于特征对齐的克隆代码检测方法,具体为:将代码x和代码y输入至训练好的克隆代码检测模型中;所述训练好的克隆代码检测模型输出代码x和代码y的相似度,根据代码x和代码y的相似度判断代码x和代码y是否为相似的代码;所述克隆代码检测模型将原代码片段对转换为抽象语法树后,将所述抽象语法树分割,生成由若干个语句树组成的语句树序列,并构建语句向量矩阵,利用双向因果卷积网络提取特征,利用所提出的稀疏重建特征对齐方法将特征对齐,计算对齐后的代码特征相似度。
如图1和2所示,具体的克隆代码检测模型对代码x和代码y做如下处理:
(1)将代码x和代码y作为代码对,对于代码本,利用现有代码解析工具生成代码x和代码y的抽象语法树Tx和Ty;
(2)根据抽象语法树的状态节点,将Tx划分为多个语句树,并将该多个语句树按照原抽象语法树先序遍历的顺序组成语句树序列STx;将Ty划分为多个语句树,并将这些多个语句树按照原抽象语法树先序遍历的顺序组成语句树序列STy;该步骤的目的是为了保持固定的顺序尽量不丢失原代码的结构信息,二是构成序列之后才能进行后续的特征提取;
(3)将所述语句树中的节点实体,利用Word2Vec进行词嵌入;通过语句编码器,将词嵌入后的语句树编码成语句向量,按照所述语句树序列的顺序,构建语句向量矩阵;则得到语句树序列STx的语句向量矩阵和语句树序列STy的语句向量矩阵;
(4)将所述语句向量矩阵输入双向因果卷积网络中进行特征提取,从而得到代码x的代码特征Fx,代码y的代码特征Fy;
(6)将对齐特征和原始特征相减并求绝对值,并沿语句树数量维进行最大池化,得到单个代码与另一个代码的相似度特征向量;
(7)将两个相似度特征向量在特征维度上进行连接,再将连接后的向量输入至连接层,将全连接层的输出输入至sigmoid函数层,sigmoid函数层输出代码x和代码y的相似度S。
本发明的一个实施例,在步骤4中,如图3所示,双向因果卷积网络中由两个双向因果卷积模块串联堆叠而成。双向因果卷积模块,由一个1×1卷积层与两个双向因果卷积层组成,捕获不同尺度的信息。其中两个双向因果卷积层的卷积核大小均为3*1,步长分别为1,2。
双向因果卷积层可表示为:
其中,为双向因果卷积层的输入特征中第t个特征向量,t=0,1,2,…,T’;当对代码x进行特征提取时,T’为语句树序列STx的长度;当对代码y进行特征提取时,T’为语句树序列STy的长度;k为双向因果卷积层的卷积核大小,为卷积核,f和b分别代表前向和后向,*=f或b;为双向因果卷积层中前向卷积操作输出的第t个特征向量,为双向因果卷积层中后向卷积操作输出的第t个特征向量,concat表示连接,将双向特征向量连接起来,得到双向因果卷积层的第t个输出特征向量Ft。
本发明的一个实施例,在步骤5具体为:
通过稀疏重建,构建代码特征Fy对齐到代码特征Fx的目标函数:
通过稀疏重建,构建代码特征Fx对齐到代码特征Fy的目标函数:
本发明的一个实施例,在步骤6中,代码x的特征为Fx,代码y对于代码x的对齐特征为对两个特征求差,并求绝对值对其做最大值池化得到向量Vxy。代码y的特征为Fy,代码x对于代码y的对齐特征为对两个特征求差,并求绝对值对其做最大值池化得到向量Vyx。
本发明的一个实施例,在步骤7中,将向量Vxy与Vyx在特征维度上进行连接,得到向量V,然后输入到全连接层FC中,经过sigmoid函数,得到相似度S。
克隆代码检测模型采用二值交叉熵损失函数,如下:
其中,N为训练集中样本的总个数,所述一个样本中包括两个代码,yj为第j个样本的标签(人工设置,若一个样本中两个代码为相似代码也即克隆代码则标签1,否则标签0),Sj为第j个样本中两个代码之间的相似度(相似度的值为0~1);训练过程,通过计算并反向传播梯度,利用梯度下降来更新模型的参数,从而使减小,迭代一定的次数或者小于给定的值时结束,得到最终的克隆代码检测模型。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
Claims (4)
1.一种基于特征对齐的克隆代码检测方法,其特征在于,将目标代码x和代码y输入至训练好的克隆代码检测模型中;所述训练好的克隆代码检测模型输出代码x和代码y的相似度,根据代码x和代码y的相似度判断代码x和代码y是否为相似的代码;所述克隆代码检测模型对输入的代码x和代码y做如下处理:
步骤1:利用代码解析工具生成代码x的抽象语法树Tx和代码y的抽象语法树Ty;
步骤2:根据抽象语法树Tx的状态节点,将Tx划分为多个语句树,并将该多个语句树按照先序遍历的顺序组成语句树序列STx;根据抽象语法树Ty的状态节点,将Ty划分为多个语句树,并将该多个语句树按照先序遍历的顺序组成语句树序列STy;
步骤3:构建语句向量矩阵:对每个语句树序列中每个语句树的节点实体进行词嵌入,采用编码器将词嵌入后的语句树编码成语句向量,根据该语句树序列将与该语句树序列对应的语句向量构成语句向量矩阵;
步骤4:采用双向因果卷积网络对代码x的语句向量矩阵Xx和代码y的语句向量矩阵Xy分别进行特征提取,从而得到代码x的代码特征Fx,代码y的代码特征Fy;
步骤7:将Vxy和Vyx在特征维度上进行连接,再将连接后的向量输入至全连接层,将全连接层的输出输入至sigmoid函数层,sigmoid函数层输出代码x和代码y的相似度S;
所述步骤5具体为:
通过稀疏重建,构建代码特征Fy对齐到代码特征Fx的目标函数:
其中Wyx为稀疏重建系数;β为平衡系数;
通过稀疏重建,构建代码特征Fx对齐到代码特征Fy的目标函数:
其中,Wxy为稀疏重建系数;
2.根据权利要求1所述的一种基于特征对齐的克隆代码检测方法,其特征在于,所述步骤4中双向因果卷积网络包括相互连接的第一双向因果卷积模块和第二双向因果卷积模块,第一、二双向因果卷积模块结构相同,均包括1×1卷积层,第一双向因果卷积层和第二双向因果卷积层;将1×1卷积层、第一双向因果卷积层和第二双向因果卷积层输出的结果相加作为双向因果卷积模块的输出;所述第一双向因果卷积层为卷积核为3×1的双向因果卷积层,第二双向因果卷积层为卷积核为3×1且步长为2的双向因果卷积层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110936377.8A CN113656066B (zh) | 2021-08-16 | 2021-08-16 | 一种基于特征对齐的克隆代码检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110936377.8A CN113656066B (zh) | 2021-08-16 | 2021-08-16 | 一种基于特征对齐的克隆代码检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113656066A CN113656066A (zh) | 2021-11-16 |
CN113656066B true CN113656066B (zh) | 2022-08-05 |
Family
ID=78479194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110936377.8A Active CN113656066B (zh) | 2021-08-16 | 2021-08-16 | 一种基于特征对齐的克隆代码检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113656066B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201406B (zh) * | 2021-12-16 | 2024-02-02 | 中国电信股份有限公司 | 基于开源组件的代码检测方法、系统、设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407872A (zh) * | 2014-12-04 | 2015-03-11 | 北京邮电大学 | 代码克隆的检测方法 |
CN109062910A (zh) * | 2018-07-26 | 2018-12-21 | 苏州大学 | 基于深度神经网络的句子对齐方法 |
CN109101235A (zh) * | 2018-06-05 | 2018-12-28 | 北京航空航天大学 | 一种软件程序的智能解析方法 |
CN110059188A (zh) * | 2019-04-11 | 2019-07-26 | 四川黑马数码科技有限公司 | 一种基于双向时间卷积网络的中文情感分析方法 |
CN111562943A (zh) * | 2020-04-29 | 2020-08-21 | 海南大学 | 一种基于事件嵌入树及gat网络的代码克隆检测方法和装置 |
CN112035165A (zh) * | 2020-08-26 | 2020-12-04 | 山谷网安科技股份有限公司 | 基于同构网络的代码克隆检测方法及系统 |
CN112215013A (zh) * | 2020-11-02 | 2021-01-12 | 天津大学 | 一种基于深度学习的克隆代码语义检测方法 |
CN112306494A (zh) * | 2020-12-03 | 2021-02-02 | 南京航空航天大学 | 一种基于卷积和循环神经网络的代码分类及聚类方法 |
CN112394973A (zh) * | 2020-11-23 | 2021-02-23 | 山东理工大学 | 一种基于伪孪生网络的多语言代码剽窃检测方法 |
CN112560502A (zh) * | 2020-12-28 | 2021-03-26 | 桂林电子科技大学 | 一种语义相似度匹配方法、装置及存储介质 |
CN112596736A (zh) * | 2020-12-24 | 2021-04-02 | 哈尔滨工业大学 | 一种基于语义的跨指令架构二进制代码相似性检测方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9110769B2 (en) * | 2010-04-01 | 2015-08-18 | Microsoft Technology Licensing, Llc | Code-clone detection and analysis |
US20190265955A1 (en) * | 2016-07-21 | 2019-08-29 | Ramot At Tel-Aviv University Ltd. | Method and system for comparing sequences |
CN112507337A (zh) * | 2020-12-18 | 2021-03-16 | 四川长虹电器股份有限公司 | 基于语义分析的恶意JavaScript代码检测模型的实现方法 |
-
2021
- 2021-08-16 CN CN202110936377.8A patent/CN113656066B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407872A (zh) * | 2014-12-04 | 2015-03-11 | 北京邮电大学 | 代码克隆的检测方法 |
CN109101235A (zh) * | 2018-06-05 | 2018-12-28 | 北京航空航天大学 | 一种软件程序的智能解析方法 |
CN109062910A (zh) * | 2018-07-26 | 2018-12-21 | 苏州大学 | 基于深度神经网络的句子对齐方法 |
CN110059188A (zh) * | 2019-04-11 | 2019-07-26 | 四川黑马数码科技有限公司 | 一种基于双向时间卷积网络的中文情感分析方法 |
CN111562943A (zh) * | 2020-04-29 | 2020-08-21 | 海南大学 | 一种基于事件嵌入树及gat网络的代码克隆检测方法和装置 |
CN112035165A (zh) * | 2020-08-26 | 2020-12-04 | 山谷网安科技股份有限公司 | 基于同构网络的代码克隆检测方法及系统 |
CN112215013A (zh) * | 2020-11-02 | 2021-01-12 | 天津大学 | 一种基于深度学习的克隆代码语义检测方法 |
CN112394973A (zh) * | 2020-11-23 | 2021-02-23 | 山东理工大学 | 一种基于伪孪生网络的多语言代码剽窃检测方法 |
CN112306494A (zh) * | 2020-12-03 | 2021-02-02 | 南京航空航天大学 | 一种基于卷积和循环神经网络的代码分类及聚类方法 |
CN112596736A (zh) * | 2020-12-24 | 2021-04-02 | 哈尔滨工业大学 | 一种基于语义的跨指令架构二进制代码相似性检测方法 |
CN112560502A (zh) * | 2020-12-28 | 2021-03-26 | 桂林电子科技大学 | 一种语义相似度匹配方法、装置及存储介质 |
Non-Patent Citations (3)
Title |
---|
Cross-Language Clone Detection by Learning Over Abstract Syntax Trees;Daniel Perez et al.;《2019 IEEE/ACM 16th International Conference on Mining Software Repositories (MSR)》;20190829;第1-14页 * |
Deep learning code fragments for code clone detection;Martin White et al.;《2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE)》;20161006;第1-15页 * |
SCDetector: Software Functional Clone Detection Based on Semantic Tokens Analysis;Yueming Wu et al.;《2020 35th IEEE/ACM International Conference on Automated Software Engineering (ASE)》;20201224;第1-16页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113656066A (zh) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113641820B (zh) | 基于图卷积神经网络的视角级文本情感分类方法及系统 | |
CN110765966B (zh) | 一种面向手写文字的一阶段自动识别与翻译方法 | |
US11256487B2 (en) | Vectorized representation method of software source code | |
CN110059188B (zh) | 一种基于双向时间卷积网络的中文情感分析方法 | |
CN108763191B (zh) | 一种文本摘要生成方法及系统 | |
CN113312500A (zh) | 一种面向大坝安全运行的事件图谱构建方法 | |
CN111680494A (zh) | 相似文本的生成方法及装置 | |
CN113641819A (zh) | 基于多任务稀疏共享学习的论辩挖掘系统及方法 | |
CN116245513A (zh) | 基于规则库的自动化运维系统及其方法 | |
CN116523583A (zh) | 电子商务数据分析系统及其方法 | |
CN113656066B (zh) | 一种基于特征对齐的克隆代码检测方法 | |
CN114925195A (zh) | 一种融合词汇编码与结构编码的标准内容文本摘要生成方法 | |
CN117036778A (zh) | 一种基于图文转换模型的安全隐患识别标注方法 | |
CN116992304A (zh) | 基于人工智能的政策匹配分析系统及其方法 | |
CN116304748A (zh) | 一种文本相似度计算方法、系统、设备及介质 | |
CN114169447B (zh) | 基于自注意力卷积双向门控循环单元网络的事件检测方法 | |
CN114153942B (zh) | 一种基于动态注意力机制的事件时序关系抽取方法 | |
CN116340506A (zh) | 一种基于bert和无池化卷积神经网络的文本分类方法 | |
CN114692624A (zh) | 一种基于多任务迁移的信息抽取方法、装置及电子设备 | |
CN112215301B (zh) | 基于卷积神经网络的影像直线探测方法 | |
CN117787287A (zh) | 基于大模型的事故处理方法、系统及存储介质 | |
CN117348877A (zh) | 基于人工智能技术的技术开发系统及方法 | |
CN116129251A (zh) | 办公桌椅的智能化制造方法及其系统 | |
CN113568969B (zh) | 信息抽取方法、装置、设备以及计算机可读存储介质 | |
CN113947085A (zh) | 一种面向智能问答系统的命名实体识别方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |