diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..84b94c3c0bb41b918c734921b36f5f54ef4dde05
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+/.env.local
+/.env.local.php
+/.env.*.local
+/config/secrets/prod/prod.decrypt.private.php
+/public/bundles/
+/var/
+/vendor/
+###< symfony/framework-bundle ###
+/.idea/
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..13566b81b018ad684f3a35fee301741b2734c8f4
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3b4c6f6537097a372da8aeaa1429b7556a41bfef
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/openapi.iml" filepath="$PROJECT_DIR$/.idea/openapi.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/openapi.iml b/.idea/openapi.iml
new file mode 100644
index 0000000000000000000000000000000000000000..04298db4831f36ff2a8c2ef3a45c619a6dae1d7a
--- /dev/null
+++ b/.idea/openapi.iml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="IQDev\OpenAPI\" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/php.xml b/.idea/php.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3a4f333ed8c563180a8fb415aeb1daddddc6dd94
--- /dev/null
+++ b/.idea/php.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="MessDetectorOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PHPCSFixerOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PHPCodeSnifferOptionsConfiguration">
+    <option name="highlightLevel" value="WARNING" />
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PhpIncludePathManager">
+    <include_path>
+      <path value="$PROJECT_DIR$/vendor/composer" />
+    </include_path>
+  </component>
+  <component name="PhpProjectSharedConfiguration" php_language_level="8.3" />
+  <component name="PhpStanOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+  <component name="PsalmOptionsConfiguration">
+    <option name="transferred" value="true" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/0/4/0470dc01ccd416011ee43837adb9d2ca783195bc b/.idea/sonarlint/issuestore/0/4/0470dc01ccd416011ee43837adb9d2ca783195bc
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/0/d/0d48150bb57fe07d07b1a503a0a04bb01f274a1e b/.idea/sonarlint/issuestore/0/d/0d48150bb57fe07d07b1a503a0a04bb01f274a1e
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/1/4/146e318f3270504ee464659ffd27f8cbb87425b3 b/.idea/sonarlint/issuestore/1/4/146e318f3270504ee464659ffd27f8cbb87425b3
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/2/0/200ec90fd5a4e047aac3ec24d335d68e0c79f3fc b/.idea/sonarlint/issuestore/2/0/200ec90fd5a4e047aac3ec24d335d68e0c79f3fc
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/2/6/2617d57832b5215f2bc4a67f2435c1bc250d8fe3 b/.idea/sonarlint/issuestore/2/6/2617d57832b5215f2bc4a67f2435c1bc250d8fe3
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/2/6/26cf6c55a08d6fe2f67f7b7619957864056153f7 b/.idea/sonarlint/issuestore/2/6/26cf6c55a08d6fe2f67f7b7619957864056153f7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/3/8/388e4c0f5528381a8f744533f36651ad83a4c36a b/.idea/sonarlint/issuestore/3/8/388e4c0f5528381a8f744533f36651ad83a4c36a
new file mode 100644
index 0000000000000000000000000000000000000000..b9bdf9eb85649dfac7307921e45cc116dc5f91b6
--- /dev/null
+++ b/.idea/sonarlint/issuestore/3/8/388e4c0f5528381a8f744533f36651ad83a4c36a
@@ -0,0 +1,3 @@
+
+n	php:S1068",Remove this unused "$summary" private field.(¸èŽ8Óµ®‘2J$09df8fcf-5257-4f36-a43b-f06125d847f0
+w	php:S1068	"0Remove this unused "$description" private field.(Öà“Íýÿÿÿÿ8Ôµ®‘2J$8f12c6e0-683e-46c4-9697-9d47c8cad1ae
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897 b/.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/3/d/3dfd585085cca48a8b4f8013200f87d44990f6b6 b/.idea/sonarlint/issuestore/3/d/3dfd585085cca48a8b4f8013200f87d44990f6b6
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/4/9/49a2bce71231f1ed1b7eda28c0bf336ba61703c6 b/.idea/sonarlint/issuestore/4/9/49a2bce71231f1ed1b7eda28c0bf336ba61703c6
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/5/7/57ab70b61c01944bae8dab603ebd90906b91033c b/.idea/sonarlint/issuestore/5/7/57ab70b61c01944bae8dab603ebd90906b91033c
new file mode 100644
index 0000000000000000000000000000000000000000..af4ddb5cacb53002f35c5922e500a82a357de170
--- /dev/null
+++ b/.idea/sonarlint/issuestore/5/7/57ab70b61c01944bae8dab603ebd90906b91033c
@@ -0,0 +1,3 @@
+
+J	php:S1068")Remove this unused "$name" private field.(ݦü’ùÿÿÿÿ8Ÿ©ôŒ‘2
+L	php:S1068	"0Remove this unused "$description" private field.(ø»ÃÑ8Ÿ©ôŒ‘2
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/6/c/6caa12ff758eeddaad4d0a2fb773a97be58af24a b/.idea/sonarlint/issuestore/6/c/6caa12ff758eeddaad4d0a2fb773a97be58af24a
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/7/1/711243a12334ac917e52a0280249bb7a421a59fb b/.idea/sonarlint/issuestore/7/1/711243a12334ac917e52a0280249bb7a421a59fb
new file mode 100644
index 0000000000000000000000000000000000000000..6a3c55cb2b1848498c34ad9e037e56b8fa2ecc46
--- /dev/null
+++ b/.idea/sonarlint/issuestore/7/1/711243a12334ac917e52a0280249bb7a421a59fb
@@ -0,0 +1,3 @@
+
+p	php:S1068")Remove this unused "$name" private field.(ݦü’ùÿÿÿÿ8º猑2J$c1623129-268a-4732-b825-5c9040db8c1d
+p	php:S1068	")Remove this unused "$type" private field.(Ššóÿÿÿÿÿ8º猑2J$3a75610a-2814-40b8-9adf-350be4ee3a42
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/7/2/7219c28da332fec231e61357bae3ac689d34c1da b/.idea/sonarlint/issuestore/7/2/7219c28da332fec231e61357bae3ac689d34c1da
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/7/3/73d1d89836b79cca995b59476d9005803be42679 b/.idea/sonarlint/issuestore/7/3/73d1d89836b79cca995b59476d9005803be42679
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/7/b/7b1dc1072784068b356f9bb36c6ffbd694a13b08 b/.idea/sonarlint/issuestore/7/b/7b1dc1072784068b356f9bb36c6ffbd694a13b08
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/8/d/8d7820b8178e9465932052a30cf9d1a5f0ac7407 b/.idea/sonarlint/issuestore/8/d/8d7820b8178e9465932052a30cf9d1a5f0ac7407
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/9/1/91afc5b9ac198a55a22c7c7d1d6a9ee0fe77fa0c b/.idea/sonarlint/issuestore/9/1/91afc5b9ac198a55a22c7c7d1d6a9ee0fe77fa0c
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/a/3/a309d864b4eb0fede3293de5234eb685cf16acb1 b/.idea/sonarlint/issuestore/a/3/a309d864b4eb0fede3293de5234eb685cf16acb1
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/b/8/b88b88c434c8d10d7fdc61b7ba86e983299c4df0 b/.idea/sonarlint/issuestore/b/8/b88b88c434c8d10d7fdc61b7ba86e983299c4df0
new file mode 100644
index 0000000000000000000000000000000000000000..8ca909d6fec964fb8f19b55509b6ffa0f926390b
--- /dev/null
+++ b/.idea/sonarlint/issuestore/b/8/b88b88c434c8d10d7fdc61b7ba86e983299c4df0
@@ -0,0 +1,7 @@
+
+p	php:S1068")Remove this unused "$tags" private field.(ÖƒÝùÿÿÿÿ8Èû¡‘‘2J$51bd1479-cfc4-4af6-9ed1-189f64e25c39
+n	php:S1068
",Remove this unused "$summary" private field.(¸èŽ8Éû¡‘‘2J$2d23f443-f38f-4a7e-a558-66c09526d61f
+w	php:S1068"0Remove this unused "$description" private field.(Öà“Íýÿÿÿÿ8Éû¡‘‘2J$f6325120-111b-4125-a2f7-463de5ff3c70
+s	php:S1068"1Remove this unused "$externalDocs" private field.(æïõ8Éû¡‘‘2J$c45eb654-a23c-4dfd-8de2-2754654e31b6
+r	php:S1068"0Remove this unused "$operationId" private field.(”£æå8ˆ ¢‘‘2J$edaf6d23-40ac-4de3-9b63-937b21eeb0bb
+q	php:S1068"/Remove this unused "$parameters" private field.(™‡ò8ŽðÝ‘‘2J$c94a7b2a-fc68-41f4-bdf5-8871d5d3f6d4
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/b/c/bcd9a2968642b4f87073fbc2a229105976b7200b b/.idea/sonarlint/issuestore/b/c/bcd9a2968642b4f87073fbc2a229105976b7200b
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/c/7/c7995fb3db77b5dae0ff6571c4e84b8570b5e7f9 b/.idea/sonarlint/issuestore/c/7/c7995fb3db77b5dae0ff6571c4e84b8570b5e7f9
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/d/b/db471fbdeb5155c430f284d362180b781d4953a7 b/.idea/sonarlint/issuestore/d/b/db471fbdeb5155c430f284d362180b781d4953a7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/e/d/ed046ef0f5c3f294e34fcbd5b550cfadf7df7c51 b/.idea/sonarlint/issuestore/e/d/ed046ef0f5c3f294e34fcbd5b550cfadf7df7c51
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/f/4/f4a3aa3e508ec4e422928c472548f11800b34925 b/.idea/sonarlint/issuestore/f/4/f4a3aa3e508ec4e422928c472548f11800b34925
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb
new file mode 100644
index 0000000000000000000000000000000000000000..38632c8235eecfd584574732b30037b7951c0d7d
--- /dev/null
+++ b/.idea/sonarlint/issuestore/index.pb
@@ -0,0 +1,156 @@
+
+9
+	README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
+=
+
composer.json,3\9\3957b91a0d8450cea0115cfd5af69eac90d75897
+E
+src/Model/OpenAPI.php,8\d\8d7820b8178e9465932052a30cf9d1a5f0ac7407
+B
+src/Model/Info.php,9\1\91afc5b9ac198a55a22c7c7d1d6a9ee0fe77fa0c
+D
+src/Model/Server.php,1\4\146e318f3270504ee464659ffd27f8cbb87425b3
+A
+src/Model/Tag.php,3\d\3dfd585085cca48a8b4f8013200f87d44990f6b6
+B
+src/Model/Path.php,2\6\26cf6c55a08d6fe2f67f7b7619957864056153f7
+G
+src/Model/Info/Info.php,7\3\73d1d89836b79cca995b59476d9005803be42679
+J
+src/Model/Info/Version.php,7\b\7b1dc1072784068b356f9bb36c6ffbd694a13b08
+L
+src/Model/Servers/Server.php,a\3\a309d864b4eb0fede3293de5234eb685cf16acb1
+I
+src/Model/Servers/URL.php,0\4\0470dc01ccd416011ee43837adb9d2ca783195bc
+F
+src/Model/Tags/Tag.php,c\7\c7995fb3db77b5dae0ff6571c4e84b8570b5e7f9
+H
+src/Model/Paths/Path.php,2\0\200ec90fd5a4e047aac3ec24d335d68e0c79f3fc
+J
+src/Model/Paths/Method.php,6\c\6caa12ff758eeddaad4d0a2fb773a97be58af24a
+O
+src/Model/Components/Schema.php,7\1\711243a12334ac917e52a0280249bb7a421a59fb
+Q
+!src/Model/Components/Property.php,5\7\57ab70b61c01944bae8dab603ebd90906b91033c
+J
+src/Model/Info/Contact.php,b\c\bcd9a2968642b4f87073fbc2a229105976b7200b
+J
+src/Model/Info/License.php,7\2\7219c28da332fec231e61357bae3ac689d34c1da
+T
+$src/Model/Servers/ServerVariable.php,4\9\49a2bce71231f1ed1b7eda28c0bf336ba61703c6
+L
+src/Model/Paths/PathItem.php,3\8\388e4c0f5528381a8f744533f36651ad83a4c36a
+M
+src/Model/Paths/Operation.php,b\8\b88b88c434c8d10d7fdc61b7ba86e983299c4df0
+X
+(src/Model/Paths/ExternalDocumetation.php,f\4\f4a3aa3e508ec4e422928c472548f11800b34925
+Y
+)src/Model/Paths/ExternalDocumentation.php,0\d\0d48150bb57fe07d07b1a503a0a04bb01f274a1e
+R
+"src/Model/Components/Parameter.php,d\b\db471fbdeb5155c430f284d362180b781d4953a7
+T
+$src/Model/Components/RequestBody.php,2\6\2617d57832b5215f2bc4a67f2435c1bc250d8fe3
+V
+&src/Model/Components/Discriminator.php,e\d\ed046ef0f5c3f294e34fcbd5b550cfadf7df7c51
+
+Q.idea/sonarlint/securityhotspotstore/c/7/c7995fb3db77b5dae0ff6571c4e84b8570b5e7f9,2\9\2966b49b3d516da728be4876b38ffd5fc640c08f
+
+Q.idea/sonarlint/securityhotspotstore/2/0/200ec90fd5a4e047aac3ec24d335d68e0c79f3fc,e\1\e10c2575d600c3dc294a215be1bb588dc028f3c2
+
+Q.idea/sonarlint/securityhotspotstore/6/c/6caa12ff758eeddaad4d0a2fb773a97be58af24a,c\b\cb10102d79bdb4bba370adacad3f467e312ed946
+w
+G.idea/sonarlint/issuestore/6/c/6caa12ff758eeddaad4d0a2fb773a97be58af24a,b\9\b996201b0a0d06d1c54f36c6c048987a25d5c9e6
+
+Q.idea/sonarlint/securityhotspotstore/7/1/711243a12334ac917e52a0280249bb7a421a59fb,0\1\014306031a13cd7071dcc479c314034eae0d5f23
+
+Q.idea/sonarlint/securityhotspotstore/5/7/57ab70b61c01944bae8dab603ebd90906b91033c,5\d\5da5b451807e0ef5529d59c348f00dcfc305be27
+
+Q.idea/sonarlint/securityhotspotstore/b/c/bcd9a2968642b4f87073fbc2a229105976b7200b,9\8\98fcfc6b87726277bac3f57054e544e152f5a86e
+w
+G.idea/sonarlint/issuestore/7/2/7219c28da332fec231e61357bae3ac689d34c1da,b\0\b0c0d4bad10172beb80bffbe9f81ee18d75552f7
+
+Q.idea/sonarlint/securityhotspotstore/7/2/7219c28da332fec231e61357bae3ac689d34c1da,9\1\918d42526810461386fb880d9683160dbd0fd916
+
+Q.idea/sonarlint/securityhotspotstore/4/9/49a2bce71231f1ed1b7eda28c0bf336ba61703c6,c\e\ceab984306202e391d646a72294a471f894aa2f6
+
+Q.idea/sonarlint/securityhotspotstore/3/8/388e4c0f5528381a8f744533f36651ad83a4c36a,9\7\97f78ed009d349c67cf56fbcc69dedbe3d9db1b1
+S
+#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
+]
+-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e
+
+Q.idea/sonarlint/securityhotspotstore/b/8/b88b88c434c8d10d7fdc61b7ba86e983299c4df0,1\1\119baafdce599ac49a6fa5e6604c6487a1ec4a23
+
+Q.idea/sonarlint/securityhotspotstore/f/4/f4a3aa3e508ec4e422928c472548f11800b34925,8\e\8e5b886b2613a50c68292ba6cac7e597c02399fb
+w
+G.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,e\8\e80b46a84e6d75e2791737281bf39be956d40584
+
+Q.idea/sonarlint/securityhotspotstore/0/d/0d48150bb57fe07d07b1a503a0a04bb01f274a1e,7\3\7339db4dd42208b60ffcd44391dc5eb706b82f30
+w
+G.idea/sonarlint/issuestore/8/d/8d7820b8178e9465932052a30cf9d1a5f0ac7407,e\2\e2eb18f934452301c20a29e5f8aa19a027eeca2d
+w
+G.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,b\4\b4a0b63ce8560bbc5de0f9995c20cc861dc2adb3
+
+Q.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,4\6\46f94a7aebd2eec52b4a72f3910f768c64c6be19
+
+Q.idea/sonarlint/securityhotspotstore/8/d/8d7820b8178e9465932052a30cf9d1a5f0ac7407,b\8\b830c7cfaff8015564e20ff52a68a2ce2e5572bb
+w
+G.idea/sonarlint/issuestore/f/4/f4a3aa3e508ec4e422928c472548f11800b34925,c\6\c6dde150eb74b901690204ca05c16f8f369fb8df
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,1\0\10a03f31c4dce92cb371e761ce9429428bb6c176
+C
+vendor/autoload.php,4\c\4ceef96aee837e6ae16da075ddeaba8aafebd371
+w
+G.idea/sonarlint/issuestore/9/1/91afc5b9ac198a55a22c7c7d1d6a9ee0fe77fa0c,3\b\3b4aa11b28e0d4b82e2e0b5de4633a29c61a359a
+w
+G.idea/sonarlint/issuestore/d/b/db471fbdeb5155c430f284d362180b781d4953a7,e\3\e3fdb6a3ea78c8bbe80b4f3e54103e70e6e6abd1
+
+Q.idea/sonarlint/securityhotspotstore/9/1/91afc5b9ac198a55a22c7c7d1d6a9ee0fe77fa0c,a\5\a5eeb11986adb4010bb6a27802a0bbd53d78020d
+
+Q.idea/sonarlint/securityhotspotstore/d/b/db471fbdeb5155c430f284d362180b781d4953a7,6\2\62bc545466c87ca098b29e24cef4edef0d6105b0
+w
+G.idea/sonarlint/issuestore/2/6/2617d57832b5215f2bc4a67f2435c1bc250d8fe3,1\3\139aedb8ab1e9c2b4675507397500698280cd372
+w
+G.idea/sonarlint/issuestore/1/4/146e318f3270504ee464659ffd27f8cbb87425b3,3\f\3f44834d67f19e458706dcf5ee65ac54911e9c7a
+
+Q.idea/sonarlint/securityhotspotstore/2/6/2617d57832b5215f2bc4a67f2435c1bc250d8fe3,7\1\71c7c0a4502c0f62400cc6096a2f634da3021f66
+
+Q.idea/sonarlint/securityhotspotstore/1/4/146e318f3270504ee464659ffd27f8cbb87425b3,c\0\c0becd58129e62c3575f9e007b867fddeb1f79bd
+w
+G.idea/sonarlint/issuestore/3/d/3dfd585085cca48a8b4f8013200f87d44990f6b6,c\d\cd5fa46bf339a8a1eec8209e3d056924837ac272
+
+Q.idea/sonarlint/securityhotspotstore/e/d/ed046ef0f5c3f294e34fcbd5b550cfadf7df7c51,f\1\f12753af31928def088cd2f9d2286e337dcbee13
+
+Q.idea/sonarlint/securityhotspotstore/3/d/3dfd585085cca48a8b4f8013200f87d44990f6b6,6\a\6ad76235702a154255dffdc4793012b0977cc8b4
+w
+G.idea/sonarlint/issuestore/2/6/26cf6c55a08d6fe2f67f7b7619957864056153f7,4\1\41aed9102e8a496a15338b0d6b7e8ea1a88c7a28
+
+Q.idea/sonarlint/securityhotspotstore/2/6/26cf6c55a08d6fe2f67f7b7619957864056153f7,0\5\05136dffe1c315b55d8447cfb6e04d6cc188b931
+
+Q.idea/sonarlint/securityhotspotstore/7/3/73d1d89836b79cca995b59476d9005803be42679,2\8\2879b6776d6ce6bc8624ae22c5b79aab2a639744
+
+Q.idea/sonarlint/securityhotspotstore/7/b/7b1dc1072784068b356f9bb36c6ffbd694a13b08,9\8\98c3ae9ec415d0e89537990fd291fbdb7b39b824
+w
+G.idea/sonarlint/issuestore/7/b/7b1dc1072784068b356f9bb36c6ffbd694a13b08,5\3\53737f8f047b07da3433dbe9a73fa1547178f5e8
+Q
+!vendor/composer/autoload_real.php,e\9\e9e354d58f72eccf478a1c3ac084d47aff777a1b
+S
+#vendor/composer/autoload_static.php,b\e\be2b2e999491d2e0d80d9198dd809e411299111c
+Q
+!vendor/composer/autoload_psr4.php,f\d\fd8f787406ff2c83d5187d510cdd53aaf98f2449
+w
+G.idea/sonarlint/issuestore/0/4/0470dc01ccd416011ee43837adb9d2ca783195bc,7\8\785de9273ae79254688467f7c244b57edf866f26
+W
+'vendor/composer/autoload_namespaces.php,a\a\aa35e07fa12a54259ad5db66486b60981ff17a71
+U
+%vendor/composer/autoload_classmap.php,d\2\d2e6f4534ea409ce11e01bb597f34c8e1273b721
+O
+vendor/composer/ClassLoader.php,5\9\5957887ba179d298d3ad0aa2501e9e60a163ee77
+G
+vendor/composer/LICENSE,4\3\434124b6180e8815257e6ac64bd3ac95a625ffc2
+
+Q.idea/sonarlint/securityhotspotstore/0/4/0470dc01ccd416011ee43837adb9d2ca783195bc,7\b\7b3badac7e1b7cd39a678e5623a6647dbfb31f2d
+
+Q.idea/sonarlint/securityhotspotstore/a/3/a309d864b4eb0fede3293de5234eb685cf16acb1,9\b\9bfb1a7632a4212d1bee4186f9a4c9671cfeb00f
+:
+
+.gitignore,a\5\a5cc2925ca8258af241be7e5b0381edf30266302
\ No newline at end of file
diff --git a/.idea/sonarlint/securityhotspotstore/0/4/0470dc01ccd416011ee43837adb9d2ca783195bc b/.idea/sonarlint/securityhotspotstore/0/4/0470dc01ccd416011ee43837adb9d2ca783195bc
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/0/d/0d48150bb57fe07d07b1a503a0a04bb01f274a1e b/.idea/sonarlint/securityhotspotstore/0/d/0d48150bb57fe07d07b1a503a0a04bb01f274a1e
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/1/4/146e318f3270504ee464659ffd27f8cbb87425b3 b/.idea/sonarlint/securityhotspotstore/1/4/146e318f3270504ee464659ffd27f8cbb87425b3
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/2/0/200ec90fd5a4e047aac3ec24d335d68e0c79f3fc b/.idea/sonarlint/securityhotspotstore/2/0/200ec90fd5a4e047aac3ec24d335d68e0c79f3fc
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/2/6/2617d57832b5215f2bc4a67f2435c1bc250d8fe3 b/.idea/sonarlint/securityhotspotstore/2/6/2617d57832b5215f2bc4a67f2435c1bc250d8fe3
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/2/6/26cf6c55a08d6fe2f67f7b7619957864056153f7 b/.idea/sonarlint/securityhotspotstore/2/6/26cf6c55a08d6fe2f67f7b7619957864056153f7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/3/8/388e4c0f5528381a8f744533f36651ad83a4c36a b/.idea/sonarlint/securityhotspotstore/3/8/388e4c0f5528381a8f744533f36651ad83a4c36a
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897 b/.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/3/d/3dfd585085cca48a8b4f8013200f87d44990f6b6 b/.idea/sonarlint/securityhotspotstore/3/d/3dfd585085cca48a8b4f8013200f87d44990f6b6
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/4/9/49a2bce71231f1ed1b7eda28c0bf336ba61703c6 b/.idea/sonarlint/securityhotspotstore/4/9/49a2bce71231f1ed1b7eda28c0bf336ba61703c6
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/5/7/57ab70b61c01944bae8dab603ebd90906b91033c b/.idea/sonarlint/securityhotspotstore/5/7/57ab70b61c01944bae8dab603ebd90906b91033c
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/6/c/6caa12ff758eeddaad4d0a2fb773a97be58af24a b/.idea/sonarlint/securityhotspotstore/6/c/6caa12ff758eeddaad4d0a2fb773a97be58af24a
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/7/1/711243a12334ac917e52a0280249bb7a421a59fb b/.idea/sonarlint/securityhotspotstore/7/1/711243a12334ac917e52a0280249bb7a421a59fb
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/7/2/7219c28da332fec231e61357bae3ac689d34c1da b/.idea/sonarlint/securityhotspotstore/7/2/7219c28da332fec231e61357bae3ac689d34c1da
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/7/3/73d1d89836b79cca995b59476d9005803be42679 b/.idea/sonarlint/securityhotspotstore/7/3/73d1d89836b79cca995b59476d9005803be42679
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/7/b/7b1dc1072784068b356f9bb36c6ffbd694a13b08 b/.idea/sonarlint/securityhotspotstore/7/b/7b1dc1072784068b356f9bb36c6ffbd694a13b08
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/8/d/8d7820b8178e9465932052a30cf9d1a5f0ac7407 b/.idea/sonarlint/securityhotspotstore/8/d/8d7820b8178e9465932052a30cf9d1a5f0ac7407
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/9/1/91afc5b9ac198a55a22c7c7d1d6a9ee0fe77fa0c b/.idea/sonarlint/securityhotspotstore/9/1/91afc5b9ac198a55a22c7c7d1d6a9ee0fe77fa0c
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/a/3/a309d864b4eb0fede3293de5234eb685cf16acb1 b/.idea/sonarlint/securityhotspotstore/a/3/a309d864b4eb0fede3293de5234eb685cf16acb1
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/b/8/b88b88c434c8d10d7fdc61b7ba86e983299c4df0 b/.idea/sonarlint/securityhotspotstore/b/8/b88b88c434c8d10d7fdc61b7ba86e983299c4df0
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/b/c/bcd9a2968642b4f87073fbc2a229105976b7200b b/.idea/sonarlint/securityhotspotstore/b/c/bcd9a2968642b4f87073fbc2a229105976b7200b
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/c/7/c7995fb3db77b5dae0ff6571c4e84b8570b5e7f9 b/.idea/sonarlint/securityhotspotstore/c/7/c7995fb3db77b5dae0ff6571c4e84b8570b5e7f9
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/d/b/db471fbdeb5155c430f284d362180b781d4953a7 b/.idea/sonarlint/securityhotspotstore/d/b/db471fbdeb5155c430f284d362180b781d4953a7
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/e/d/ed046ef0f5c3f294e34fcbd5b550cfadf7df7c51 b/.idea/sonarlint/securityhotspotstore/e/d/ed046ef0f5c3f294e34fcbd5b550cfadf7df7c51
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/f/4/f4a3aa3e508ec4e422928c472548f11800b34925 b/.idea/sonarlint/securityhotspotstore/f/4/f4a3aa3e508ec4e422928c472548f11800b34925
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.idea/sonarlint/securityhotspotstore/index.pb b/.idea/sonarlint/securityhotspotstore/index.pb
new file mode 100644
index 0000000000000000000000000000000000000000..38632c8235eecfd584574732b30037b7951c0d7d
--- /dev/null
+++ b/.idea/sonarlint/securityhotspotstore/index.pb
@@ -0,0 +1,156 @@
+
+9
+	README.md,8\e\8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
+=
+
composer.json,3\9\3957b91a0d8450cea0115cfd5af69eac90d75897
+E
+src/Model/OpenAPI.php,8\d\8d7820b8178e9465932052a30cf9d1a5f0ac7407
+B
+src/Model/Info.php,9\1\91afc5b9ac198a55a22c7c7d1d6a9ee0fe77fa0c
+D
+src/Model/Server.php,1\4\146e318f3270504ee464659ffd27f8cbb87425b3
+A
+src/Model/Tag.php,3\d\3dfd585085cca48a8b4f8013200f87d44990f6b6
+B
+src/Model/Path.php,2\6\26cf6c55a08d6fe2f67f7b7619957864056153f7
+G
+src/Model/Info/Info.php,7\3\73d1d89836b79cca995b59476d9005803be42679
+J
+src/Model/Info/Version.php,7\b\7b1dc1072784068b356f9bb36c6ffbd694a13b08
+L
+src/Model/Servers/Server.php,a\3\a309d864b4eb0fede3293de5234eb685cf16acb1
+I
+src/Model/Servers/URL.php,0\4\0470dc01ccd416011ee43837adb9d2ca783195bc
+F
+src/Model/Tags/Tag.php,c\7\c7995fb3db77b5dae0ff6571c4e84b8570b5e7f9
+H
+src/Model/Paths/Path.php,2\0\200ec90fd5a4e047aac3ec24d335d68e0c79f3fc
+J
+src/Model/Paths/Method.php,6\c\6caa12ff758eeddaad4d0a2fb773a97be58af24a
+O
+src/Model/Components/Schema.php,7\1\711243a12334ac917e52a0280249bb7a421a59fb
+Q
+!src/Model/Components/Property.php,5\7\57ab70b61c01944bae8dab603ebd90906b91033c
+J
+src/Model/Info/Contact.php,b\c\bcd9a2968642b4f87073fbc2a229105976b7200b
+J
+src/Model/Info/License.php,7\2\7219c28da332fec231e61357bae3ac689d34c1da
+T
+$src/Model/Servers/ServerVariable.php,4\9\49a2bce71231f1ed1b7eda28c0bf336ba61703c6
+L
+src/Model/Paths/PathItem.php,3\8\388e4c0f5528381a8f744533f36651ad83a4c36a
+M
+src/Model/Paths/Operation.php,b\8\b88b88c434c8d10d7fdc61b7ba86e983299c4df0
+X
+(src/Model/Paths/ExternalDocumetation.php,f\4\f4a3aa3e508ec4e422928c472548f11800b34925
+Y
+)src/Model/Paths/ExternalDocumentation.php,0\d\0d48150bb57fe07d07b1a503a0a04bb01f274a1e
+R
+"src/Model/Components/Parameter.php,d\b\db471fbdeb5155c430f284d362180b781d4953a7
+T
+$src/Model/Components/RequestBody.php,2\6\2617d57832b5215f2bc4a67f2435c1bc250d8fe3
+V
+&src/Model/Components/Discriminator.php,e\d\ed046ef0f5c3f294e34fcbd5b550cfadf7df7c51
+
+Q.idea/sonarlint/securityhotspotstore/c/7/c7995fb3db77b5dae0ff6571c4e84b8570b5e7f9,2\9\2966b49b3d516da728be4876b38ffd5fc640c08f
+
+Q.idea/sonarlint/securityhotspotstore/2/0/200ec90fd5a4e047aac3ec24d335d68e0c79f3fc,e\1\e10c2575d600c3dc294a215be1bb588dc028f3c2
+
+Q.idea/sonarlint/securityhotspotstore/6/c/6caa12ff758eeddaad4d0a2fb773a97be58af24a,c\b\cb10102d79bdb4bba370adacad3f467e312ed946
+w
+G.idea/sonarlint/issuestore/6/c/6caa12ff758eeddaad4d0a2fb773a97be58af24a,b\9\b996201b0a0d06d1c54f36c6c048987a25d5c9e6
+
+Q.idea/sonarlint/securityhotspotstore/7/1/711243a12334ac917e52a0280249bb7a421a59fb,0\1\014306031a13cd7071dcc479c314034eae0d5f23
+
+Q.idea/sonarlint/securityhotspotstore/5/7/57ab70b61c01944bae8dab603ebd90906b91033c,5\d\5da5b451807e0ef5529d59c348f00dcfc305be27
+
+Q.idea/sonarlint/securityhotspotstore/b/c/bcd9a2968642b4f87073fbc2a229105976b7200b,9\8\98fcfc6b87726277bac3f57054e544e152f5a86e
+w
+G.idea/sonarlint/issuestore/7/2/7219c28da332fec231e61357bae3ac689d34c1da,b\0\b0c0d4bad10172beb80bffbe9f81ee18d75552f7
+
+Q.idea/sonarlint/securityhotspotstore/7/2/7219c28da332fec231e61357bae3ac689d34c1da,9\1\918d42526810461386fb880d9683160dbd0fd916
+
+Q.idea/sonarlint/securityhotspotstore/4/9/49a2bce71231f1ed1b7eda28c0bf336ba61703c6,c\e\ceab984306202e391d646a72294a471f894aa2f6
+
+Q.idea/sonarlint/securityhotspotstore/3/8/388e4c0f5528381a8f744533f36651ad83a4c36a,9\7\97f78ed009d349c67cf56fbcc69dedbe3d9db1b1
+S
+#.idea/sonarlint/issuestore/index.pb,9\f\9fe84ebb15faf917b7def6236dba604453cc61e0
+]
+-.idea/sonarlint/securityhotspotstore/index.pb,8\8\88a9255124c95bdc913197c120a8d560edc59c8e
+
+Q.idea/sonarlint/securityhotspotstore/b/8/b88b88c434c8d10d7fdc61b7ba86e983299c4df0,1\1\119baafdce599ac49a6fa5e6604c6487a1ec4a23
+
+Q.idea/sonarlint/securityhotspotstore/f/4/f4a3aa3e508ec4e422928c472548f11800b34925,8\e\8e5b886b2613a50c68292ba6cac7e597c02399fb
+w
+G.idea/sonarlint/issuestore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,e\8\e80b46a84e6d75e2791737281bf39be956d40584
+
+Q.idea/sonarlint/securityhotspotstore/0/d/0d48150bb57fe07d07b1a503a0a04bb01f274a1e,7\3\7339db4dd42208b60ffcd44391dc5eb706b82f30
+w
+G.idea/sonarlint/issuestore/8/d/8d7820b8178e9465932052a30cf9d1a5f0ac7407,e\2\e2eb18f934452301c20a29e5f8aa19a027eeca2d
+w
+G.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,b\4\b4a0b63ce8560bbc5de0f9995c20cc861dc2adb3
+
+Q.idea/sonarlint/securityhotspotstore/3/9/3957b91a0d8450cea0115cfd5af69eac90d75897,4\6\46f94a7aebd2eec52b4a72f3910f768c64c6be19
+
+Q.idea/sonarlint/securityhotspotstore/8/d/8d7820b8178e9465932052a30cf9d1a5f0ac7407,b\8\b830c7cfaff8015564e20ff52a68a2ce2e5572bb
+w
+G.idea/sonarlint/issuestore/f/4/f4a3aa3e508ec4e422928c472548f11800b34925,c\6\c6dde150eb74b901690204ca05c16f8f369fb8df
+
+Q.idea/sonarlint/securityhotspotstore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d,1\0\10a03f31c4dce92cb371e761ce9429428bb6c176
+C
+vendor/autoload.php,4\c\4ceef96aee837e6ae16da075ddeaba8aafebd371
+w
+G.idea/sonarlint/issuestore/9/1/91afc5b9ac198a55a22c7c7d1d6a9ee0fe77fa0c,3\b\3b4aa11b28e0d4b82e2e0b5de4633a29c61a359a
+w
+G.idea/sonarlint/issuestore/d/b/db471fbdeb5155c430f284d362180b781d4953a7,e\3\e3fdb6a3ea78c8bbe80b4f3e54103e70e6e6abd1
+
+Q.idea/sonarlint/securityhotspotstore/9/1/91afc5b9ac198a55a22c7c7d1d6a9ee0fe77fa0c,a\5\a5eeb11986adb4010bb6a27802a0bbd53d78020d
+
+Q.idea/sonarlint/securityhotspotstore/d/b/db471fbdeb5155c430f284d362180b781d4953a7,6\2\62bc545466c87ca098b29e24cef4edef0d6105b0
+w
+G.idea/sonarlint/issuestore/2/6/2617d57832b5215f2bc4a67f2435c1bc250d8fe3,1\3\139aedb8ab1e9c2b4675507397500698280cd372
+w
+G.idea/sonarlint/issuestore/1/4/146e318f3270504ee464659ffd27f8cbb87425b3,3\f\3f44834d67f19e458706dcf5ee65ac54911e9c7a
+
+Q.idea/sonarlint/securityhotspotstore/2/6/2617d57832b5215f2bc4a67f2435c1bc250d8fe3,7\1\71c7c0a4502c0f62400cc6096a2f634da3021f66
+
+Q.idea/sonarlint/securityhotspotstore/1/4/146e318f3270504ee464659ffd27f8cbb87425b3,c\0\c0becd58129e62c3575f9e007b867fddeb1f79bd
+w
+G.idea/sonarlint/issuestore/3/d/3dfd585085cca48a8b4f8013200f87d44990f6b6,c\d\cd5fa46bf339a8a1eec8209e3d056924837ac272
+
+Q.idea/sonarlint/securityhotspotstore/e/d/ed046ef0f5c3f294e34fcbd5b550cfadf7df7c51,f\1\f12753af31928def088cd2f9d2286e337dcbee13
+
+Q.idea/sonarlint/securityhotspotstore/3/d/3dfd585085cca48a8b4f8013200f87d44990f6b6,6\a\6ad76235702a154255dffdc4793012b0977cc8b4
+w
+G.idea/sonarlint/issuestore/2/6/26cf6c55a08d6fe2f67f7b7619957864056153f7,4\1\41aed9102e8a496a15338b0d6b7e8ea1a88c7a28
+
+Q.idea/sonarlint/securityhotspotstore/2/6/26cf6c55a08d6fe2f67f7b7619957864056153f7,0\5\05136dffe1c315b55d8447cfb6e04d6cc188b931
+
+Q.idea/sonarlint/securityhotspotstore/7/3/73d1d89836b79cca995b59476d9005803be42679,2\8\2879b6776d6ce6bc8624ae22c5b79aab2a639744
+
+Q.idea/sonarlint/securityhotspotstore/7/b/7b1dc1072784068b356f9bb36c6ffbd694a13b08,9\8\98c3ae9ec415d0e89537990fd291fbdb7b39b824
+w
+G.idea/sonarlint/issuestore/7/b/7b1dc1072784068b356f9bb36c6ffbd694a13b08,5\3\53737f8f047b07da3433dbe9a73fa1547178f5e8
+Q
+!vendor/composer/autoload_real.php,e\9\e9e354d58f72eccf478a1c3ac084d47aff777a1b
+S
+#vendor/composer/autoload_static.php,b\e\be2b2e999491d2e0d80d9198dd809e411299111c
+Q
+!vendor/composer/autoload_psr4.php,f\d\fd8f787406ff2c83d5187d510cdd53aaf98f2449
+w
+G.idea/sonarlint/issuestore/0/4/0470dc01ccd416011ee43837adb9d2ca783195bc,7\8\785de9273ae79254688467f7c244b57edf866f26
+W
+'vendor/composer/autoload_namespaces.php,a\a\aa35e07fa12a54259ad5db66486b60981ff17a71
+U
+%vendor/composer/autoload_classmap.php,d\2\d2e6f4534ea409ce11e01bb597f34c8e1273b721
+O
+vendor/composer/ClassLoader.php,5\9\5957887ba179d298d3ad0aa2501e9e60a163ee77
+G
+vendor/composer/LICENSE,4\3\434124b6180e8815257e6ac64bd3ac95a625ffc2
+
+Q.idea/sonarlint/securityhotspotstore/0/4/0470dc01ccd416011ee43837adb9d2ca783195bc,7\b\7b3badac7e1b7cd39a678e5623a6647dbfb31f2d
+
+Q.idea/sonarlint/securityhotspotstore/a/3/a309d864b4eb0fede3293de5234eb685cf16acb1,9\b\9bfb1a7632a4212d1bee4186f9a4c9671cfeb00f
+:
+
+.gitignore,a\5\a5cc2925ca8258af241be7e5b0381edf30266302
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000000000000000000000000000000000000..ec1ee477860368a48ee8fbf2e785668340f2aa52
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,16 @@
+{
+    "name": "iqdev/openapi",
+    "type": "library",
+    "autoload": {
+        "psr-4": {
+            "IQDev\\OpenAPI\\": "src/"
+        }
+    },
+    "authors": [
+        {
+            "name": "Адлан Шамавов",
+            "email": "a.shamavov@iqdev.digital"
+        }
+    ],
+    "require": {}
+}
diff --git a/src/Model/Components/Discriminator.php b/src/Model/Components/Discriminator.php
new file mode 100644
index 0000000000000000000000000000000000000000..e622c46ae46586addade957e8400390c5640527c
--- /dev/null
+++ b/src/Model/Components/Discriminator.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace IQDev\OpenAPI\Model\Components;
+
+class Discriminator
+{
+    public function __construct(
+        private string $propertyName,
+        private ?array $mapping = null,
+    ) {
+    }
+
+    public function getPropertyName(): string
+    {
+        return $this->propertyName;
+    }
+
+    public function getMapping(): ?array
+    {
+        return $this->mapping;
+    }
+}
diff --git a/src/Model/Components/Parameter.php b/src/Model/Components/Parameter.php
new file mode 100644
index 0000000000000000000000000000000000000000..06129a2f5383bafeed0962147394f8450c5c2d35
--- /dev/null
+++ b/src/Model/Components/Parameter.php
@@ -0,0 +1,48 @@
+<?php
+
+declare(strict_types=1);
+
+namespace IQDev\OpenAPI\Model\Components;
+
+class Parameter
+{
+    public function __construct(
+        private string $name,
+        private string $in,
+        private bool $required,
+        private ?string $description = null,
+        private bool $deprecated = false,
+        private bool $allowEmptyValue = false,
+    ) {
+    }
+
+    public function getName(): string
+    {
+        return $this->name;
+    }
+
+    public function getIn(): string
+    {
+        return $this->in;
+    }
+
+    public function isRequired(): bool
+    {
+        return $this->required;
+    }
+
+    public function getDescription(): ?string
+    {
+        return $this->description;
+    }
+
+    public function isDeprecated(): bool
+    {
+        return $this->deprecated;
+    }
+
+    public function isAllowEmptyValue(): bool
+    {
+        return $this->allowEmptyValue;
+    }
+}
diff --git a/src/Model/Components/RequestBody.php b/src/Model/Components/RequestBody.php
new file mode 100644
index 0000000000000000000000000000000000000000..766668426780873c5b8159b1c0294253215097f1
--- /dev/null
+++ b/src/Model/Components/RequestBody.php
@@ -0,0 +1,10 @@
+<?php
+
+declare(strict_types=1);
+
+namespace IQDev\OpenAPI\Model\Components;
+
+class RequestBody
+{
+
+}
diff --git a/src/Model/Info/Contact.php b/src/Model/Info/Contact.php
new file mode 100644
index 0000000000000000000000000000000000000000..d0ab30b4f91cc2734cb70b8fb4615d1c7a98379d
--- /dev/null
+++ b/src/Model/Info/Contact.php
@@ -0,0 +1,48 @@
+<?php
+
+declare(strict_types=1);
+
+namespace IQDev\OpenAPI\Model\Info;
+
+class Contact
+{
+    public function __construct(private string $name, private string $url, private string $email)
+    {
+    }
+
+    public function getName(): string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): self
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getUrl(): string
+    {
+        return $this->url;
+    }
+
+    public function setUrl(string $url): self
+    {
+        $this->url = $url;
+
+        return $this;
+    }
+
+    public function getEmail(): string
+    {
+        return $this->email;
+    }
+
+    public function setEmail(string $email): self
+    {
+        $this->email = $email;
+
+        return $this;
+    }
+}
diff --git a/src/Model/Info/Info.php b/src/Model/Info/Info.php
new file mode 100644
index 0000000000000000000000000000000000000000..408387137fab8ed4f714204390db6acd901279a6
--- /dev/null
+++ b/src/Model/Info/Info.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace IQDev\OpenAPI\Model\Info;
+
+class Info
+{
+    public function __construct(
+        private string $title,
+        private Version $version,
+        private ?string $summary = null,
+        private ?string $description = null,
+        private ?string $termsOfService = null,
+        private ?Contact $contact = null,
+    ) {
+    }
+
+    public function getTitle(): string
+    {
+        return $this->title;
+    }
+
+    public function getVersion(): Version
+    {
+        return $this->version;
+    }
+
+    public function getSummary(): ?string
+    {
+        return $this->summary;
+    }
+
+    public function getDescription(): ?string
+    {
+        return $this->description;
+    }
+
+    public function getTermsOfService(): ?string
+    {
+        return $this->termsOfService;
+    }
+
+    public function getContact(): ?Contact
+    {
+        return $this->contact;
+    }
+}
diff --git a/src/Model/Info/License.php b/src/Model/Info/License.php
new file mode 100644
index 0000000000000000000000000000000000000000..32cd01df07479069d9482f5998161e88839a77e0
--- /dev/null
+++ b/src/Model/Info/License.php
@@ -0,0 +1,48 @@
+<?php
+
+declare(strict_types=1);
+
+namespace IQDev\OpenAPI\Model\Info;
+
+class License
+{
+    public function __construct(private string $name, private string $identifier, private string $url)
+    {
+    }
+
+    public function getName(): string
+    {
+        return $this->name;
+    }
+
+    public function setName(string $name): self
+    {
+        $this->name = $name;
+
+        return $this;
+    }
+
+    public function getIdentifier(): string
+    {
+        return $this->identifier;
+    }
+
+    public function setIdentifier(string $identifier): self
+    {
+        $this->identifier = $identifier;
+
+        return $this;
+    }
+
+    public function getUrl(): string
+    {
+        return $this->url;
+    }
+
+    public function setUrl(string $url): self
+    {
+        $this->url = $url;
+
+        return $this;
+    }
+}
diff --git a/src/Model/Info/Version.php b/src/Model/Info/Version.php
new file mode 100644
index 0000000000000000000000000000000000000000..6d9b4e8843c360378a352f9f87002f9842adbb94
--- /dev/null
+++ b/src/Model/Info/Version.php
@@ -0,0 +1,25 @@
+<?php
+
+namespace IQDev\OpenAPI\Model\Info;
+
+class Version
+{
+    public function __construct(private int $major, private int $minor, private int $patch)
+    {
+    }
+
+    public function getMajor(): int
+    {
+        return $this->major;
+    }
+
+    public function getMinor(): int
+    {
+        return $this->minor;
+    }
+
+    public function getPatch(): int
+    {
+        return $this->patch;
+    }
+}
diff --git a/src/Model/OpenAPI.php b/src/Model/OpenAPI.php
new file mode 100644
index 0000000000000000000000000000000000000000..edea601b9957d5c7e174a77e024330b4877b313f
--- /dev/null
+++ b/src/Model/OpenAPI.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace IQDev\OpenAPI\Model;
+
+class OpenAPI
+{
+
+}
\ No newline at end of file
diff --git a/src/Model/Paths/ExternalDocumentation.php b/src/Model/Paths/ExternalDocumentation.php
new file mode 100644
index 0000000000000000000000000000000000000000..010640e07d788ca6df2d0faeb120131cd01176df
--- /dev/null
+++ b/src/Model/Paths/ExternalDocumentation.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace IQDev\OpenAPI\Model\Paths;
+
+class ExternalDocumentation
+{
+    public function __construct(
+        private string $url,
+        private ?string $description = null,
+    ) {
+    }
+
+    public function getUrl(): string
+    {
+        return $this->url;
+    }
+
+    public function getDescription(): ?string
+    {
+        return $this->description;
+    }
+}
diff --git a/src/Model/Paths/Operation.php b/src/Model/Paths/Operation.php
new file mode 100644
index 0000000000000000000000000000000000000000..0f800ea8cddb661ebb021a025ec9c2c9e957cbc4
--- /dev/null
+++ b/src/Model/Paths/Operation.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace IQDev\OpenAPI\Model\Paths;
+
+use IQDev\OpenAPI\Model\Components\Parameter;
+
+class Operation
+{
+    private ?array $tags = null;
+
+    private ?string $summary = null;
+
+    private ?string $description = null;
+
+    /** @var ExternalDocumentation[] */
+    private ?array $externalDocs = null;
+
+    private ?string $operationId = null;
+
+    /** @var Parameter[] */
+    private ?array $parameters = null;
+}
diff --git a/src/Model/Paths/Path.php b/src/Model/Paths/Path.php
new file mode 100644
index 0000000000000000000000000000000000000000..bfe9d653691a3cfeb378e937e5d81196c532d4d1
--- /dev/null
+++ b/src/Model/Paths/Path.php
@@ -0,0 +1,8 @@
+<?php
+
+namespace IQDev\OpenAPI\Model\Paths;
+
+class Path
+{
+
+}
\ No newline at end of file
diff --git a/src/Model/Paths/PathItem.php b/src/Model/Paths/PathItem.php
new file mode 100644
index 0000000000000000000000000000000000000000..0d2a7ecb25d483d957d01de34644742ae68f7e9c
--- /dev/null
+++ b/src/Model/Paths/PathItem.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace IQDev\OpenAPI\Model\Paths;
+
+class PathItem
+{
+    private ?string $summary = null;
+
+    private ?string $description = null;
+
+
+}
diff --git a/src/Model/Servers/Server.php b/src/Model/Servers/Server.php
new file mode 100644
index 0000000000000000000000000000000000000000..65f54d24e2f0e9b481b5574a25f3d53d191d5336
--- /dev/null
+++ b/src/Model/Servers/Server.php
@@ -0,0 +1,31 @@
+<?php
+
+declare(strict_types=1);
+
+namespace IQDev\OpenAPI\Model\Servers;
+
+class Server
+{
+    public function __construct(
+        private string $url,
+        private ?string $description = null,
+        /** @var ServerVariable[] */
+        private ?array $variables = null
+    ) {
+    }
+
+    public function getUrl(): string
+    {
+        return $this->url;
+    }
+
+    public function getDescription(): ?string
+    {
+        return $this->description;
+    }
+
+    public function getVariables(): ?array
+    {
+        return $this->variables;
+    }
+}
diff --git a/src/Model/Servers/ServerVariable.php b/src/Model/Servers/ServerVariable.php
new file mode 100644
index 0000000000000000000000000000000000000000..1bffd894873d02ea7c03bc65cf3c9decb7be5a6c
--- /dev/null
+++ b/src/Model/Servers/ServerVariable.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+
+namespace IQDev\OpenAPI\Model\Servers;
+
+class ServerVariable
+{
+    public function __construct(
+        private string $default,
+        private ?array $enum = null,
+        private ?string $description = null,
+    ) {
+    }
+
+    public function getDefault(): string
+    {
+        return $this->default;
+    }
+
+    public function getEnum(): ?array
+    {
+        return $this->enum;
+    }
+
+    public function getDescription(): ?string
+    {
+        return $this->description;
+    }
+}
diff --git a/src/Model/Tags/Tag.php b/src/Model/Tags/Tag.php
new file mode 100644
index 0000000000000000000000000000000000000000..648941d9b145a08d8120e440c2f70f24b0f7dfe0
--- /dev/null
+++ b/src/Model/Tags/Tag.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace IQDev\OpenAPI\Model\Tags;
+
+class Tag
+{
+    public function __construct(private string $name, private string $description)
+    {
+    }
+
+    public function getName(): string
+    {
+        return $this->name;
+    }
+
+    public function getDescription(): string
+    {
+        return $this->description;
+    }
+}
diff --git a/vendor/autoload.php b/vendor/autoload.php
new file mode 100644
index 0000000000000000000000000000000000000000..e3a050267bdaa1c66fe18c292278ccd2ed8f6952
--- /dev/null
+++ b/vendor/autoload.php
@@ -0,0 +1,25 @@
+<?php
+
+// autoload.php @generated by Composer
+
+if (PHP_VERSION_ID < 50600) {
+    if (!headers_sent()) {
+        header('HTTP/1.1 500 Internal Server Error');
+    }
+    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+    if (!ini_get('display_errors')) {
+        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+            fwrite(STDERR, $err);
+        } elseif (!headers_sent()) {
+            echo $err;
+        }
+    }
+    trigger_error(
+        $err,
+        E_USER_ERROR
+    );
+}
+
+require_once __DIR__ . '/composer/autoload_real.php';
+
+return ComposerAutoloaderInit9826ec582ee6e293f35eb9acd3ec5688::getLoader();
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
new file mode 100644
index 0000000000000000000000000000000000000000..7824d8f7eafe8db890975f0fa2dfab31435900da
--- /dev/null
+++ b/vendor/composer/ClassLoader.php
@@ -0,0 +1,579 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ *     $loader = new \Composer\Autoload\ClassLoader();
+ *
+ *     // register classes with namespaces
+ *     $loader->add('Symfony\Component', __DIR__.'/component');
+ *     $loader->add('Symfony',           __DIR__.'/framework');
+ *
+ *     // activate the autoloader
+ *     $loader->register();
+ *
+ *     // to enable searching the include path (eg. for PEAR packages)
+ *     $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ * @see    https://www.php-fig.org/psr/psr-0/
+ * @see    https://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+    /** @var \Closure(string):void */
+    private static $includeFile;
+
+    /** @var string|null */
+    private $vendorDir;
+
+    // PSR-4
+    /**
+     * @var array<string, array<string, int>>
+     */
+    private $prefixLengthsPsr4 = array();
+    /**
+     * @var array<string, list<string>>
+     */
+    private $prefixDirsPsr4 = array();
+    /**
+     * @var list<string>
+     */
+    private $fallbackDirsPsr4 = array();
+
+    // PSR-0
+    /**
+     * List of PSR-0 prefixes
+     *
+     * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
+     *
+     * @var array<string, array<string, list<string>>>
+     */
+    private $prefixesPsr0 = array();
+    /**
+     * @var list<string>
+     */
+    private $fallbackDirsPsr0 = array();
+
+    /** @var bool */
+    private $useIncludePath = false;
+
+    /**
+     * @var array<string, string>
+     */
+    private $classMap = array();
+
+    /** @var bool */
+    private $classMapAuthoritative = false;
+
+    /**
+     * @var array<string, bool>
+     */
+    private $missingClasses = array();
+
+    /** @var string|null */
+    private $apcuPrefix;
+
+    /**
+     * @var array<string, self>
+     */
+    private static $registeredLoaders = array();
+
+    /**
+     * @param string|null $vendorDir
+     */
+    public function __construct($vendorDir = null)
+    {
+        $this->vendorDir = $vendorDir;
+        self::initializeIncludeClosure();
+    }
+
+    /**
+     * @return array<string, list<string>>
+     */
+    public function getPrefixes()
+    {
+        if (!empty($this->prefixesPsr0)) {
+            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
+        }
+
+        return array();
+    }
+
+    /**
+     * @return array<string, list<string>>
+     */
+    public function getPrefixesPsr4()
+    {
+        return $this->prefixDirsPsr4;
+    }
+
+    /**
+     * @return list<string>
+     */
+    public function getFallbackDirs()
+    {
+        return $this->fallbackDirsPsr0;
+    }
+
+    /**
+     * @return list<string>
+     */
+    public function getFallbackDirsPsr4()
+    {
+        return $this->fallbackDirsPsr4;
+    }
+
+    /**
+     * @return array<string, string> Array of classname => path
+     */
+    public function getClassMap()
+    {
+        return $this->classMap;
+    }
+
+    /**
+     * @param array<string, string> $classMap Class to filename map
+     *
+     * @return void
+     */
+    public function addClassMap(array $classMap)
+    {
+        if ($this->classMap) {
+            $this->classMap = array_merge($this->classMap, $classMap);
+        } else {
+            $this->classMap = $classMap;
+        }
+    }
+
+    /**
+     * Registers a set of PSR-0 directories for a given prefix, either
+     * appending or prepending to the ones previously set for this prefix.
+     *
+     * @param string              $prefix  The prefix
+     * @param list<string>|string $paths   The PSR-0 root directories
+     * @param bool                $prepend Whether to prepend the directories
+     *
+     * @return void
+     */
+    public function add($prefix, $paths, $prepend = false)
+    {
+        $paths = (array) $paths;
+        if (!$prefix) {
+            if ($prepend) {
+                $this->fallbackDirsPsr0 = array_merge(
+                    $paths,
+                    $this->fallbackDirsPsr0
+                );
+            } else {
+                $this->fallbackDirsPsr0 = array_merge(
+                    $this->fallbackDirsPsr0,
+                    $paths
+                );
+            }
+
+            return;
+        }
+
+        $first = $prefix[0];
+        if (!isset($this->prefixesPsr0[$first][$prefix])) {
+            $this->prefixesPsr0[$first][$prefix] = $paths;
+
+            return;
+        }
+        if ($prepend) {
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
+                $paths,
+                $this->prefixesPsr0[$first][$prefix]
+            );
+        } else {
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
+                $this->prefixesPsr0[$first][$prefix],
+                $paths
+            );
+        }
+    }
+
+    /**
+     * Registers a set of PSR-4 directories for a given namespace, either
+     * appending or prepending to the ones previously set for this namespace.
+     *
+     * @param string              $prefix  The prefix/namespace, with trailing '\\'
+     * @param list<string>|string $paths   The PSR-4 base directories
+     * @param bool                $prepend Whether to prepend the directories
+     *
+     * @throws \InvalidArgumentException
+     *
+     * @return void
+     */
+    public function addPsr4($prefix, $paths, $prepend = false)
+    {
+        $paths = (array) $paths;
+        if (!$prefix) {
+            // Register directories for the root namespace.
+            if ($prepend) {
+                $this->fallbackDirsPsr4 = array_merge(
+                    $paths,
+                    $this->fallbackDirsPsr4
+                );
+            } else {
+                $this->fallbackDirsPsr4 = array_merge(
+                    $this->fallbackDirsPsr4,
+                    $paths
+                );
+            }
+        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+            // Register directories for a new namespace.
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+            }
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+            $this->prefixDirsPsr4[$prefix] = $paths;
+        } elseif ($prepend) {
+            // Prepend directories for an already registered namespace.
+            $this->prefixDirsPsr4[$prefix] = array_merge(
+                $paths,
+                $this->prefixDirsPsr4[$prefix]
+            );
+        } else {
+            // Append directories for an already registered namespace.
+            $this->prefixDirsPsr4[$prefix] = array_merge(
+                $this->prefixDirsPsr4[$prefix],
+                $paths
+            );
+        }
+    }
+
+    /**
+     * Registers a set of PSR-0 directories for a given prefix,
+     * replacing any others previously set for this prefix.
+     *
+     * @param string              $prefix The prefix
+     * @param list<string>|string $paths  The PSR-0 base directories
+     *
+     * @return void
+     */
+    public function set($prefix, $paths)
+    {
+        if (!$prefix) {
+            $this->fallbackDirsPsr0 = (array) $paths;
+        } else {
+            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+        }
+    }
+
+    /**
+     * Registers a set of PSR-4 directories for a given namespace,
+     * replacing any others previously set for this namespace.
+     *
+     * @param string              $prefix The prefix/namespace, with trailing '\\'
+     * @param list<string>|string $paths  The PSR-4 base directories
+     *
+     * @throws \InvalidArgumentException
+     *
+     * @return void
+     */
+    public function setPsr4($prefix, $paths)
+    {
+        if (!$prefix) {
+            $this->fallbackDirsPsr4 = (array) $paths;
+        } else {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+            }
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
+        }
+    }
+
+    /**
+     * Turns on searching the include path for class files.
+     *
+     * @param bool $useIncludePath
+     *
+     * @return void
+     */
+    public function setUseIncludePath($useIncludePath)
+    {
+        $this->useIncludePath = $useIncludePath;
+    }
+
+    /**
+     * Can be used to check if the autoloader uses the include path to check
+     * for classes.
+     *
+     * @return bool
+     */
+    public function getUseIncludePath()
+    {
+        return $this->useIncludePath;
+    }
+
+    /**
+     * Turns off searching the prefix and fallback directories for classes
+     * that have not been registered with the class map.
+     *
+     * @param bool $classMapAuthoritative
+     *
+     * @return void
+     */
+    public function setClassMapAuthoritative($classMapAuthoritative)
+    {
+        $this->classMapAuthoritative = $classMapAuthoritative;
+    }
+
+    /**
+     * Should class lookup fail if not found in the current class map?
+     *
+     * @return bool
+     */
+    public function isClassMapAuthoritative()
+    {
+        return $this->classMapAuthoritative;
+    }
+
+    /**
+     * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+     *
+     * @param string|null $apcuPrefix
+     *
+     * @return void
+     */
+    public function setApcuPrefix($apcuPrefix)
+    {
+        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+    }
+
+    /**
+     * The APCu prefix in use, or null if APCu caching is not enabled.
+     *
+     * @return string|null
+     */
+    public function getApcuPrefix()
+    {
+        return $this->apcuPrefix;
+    }
+
+    /**
+     * Registers this instance as an autoloader.
+     *
+     * @param bool $prepend Whether to prepend the autoloader or not
+     *
+     * @return void
+     */
+    public function register($prepend = false)
+    {
+        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+        if (null === $this->vendorDir) {
+            return;
+        }
+
+        if ($prepend) {
+            self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+        } else {
+            unset(self::$registeredLoaders[$this->vendorDir]);
+            self::$registeredLoaders[$this->vendorDir] = $this;
+        }
+    }
+
+    /**
+     * Unregisters this instance as an autoloader.
+     *
+     * @return void
+     */
+    public function unregister()
+    {
+        spl_autoload_unregister(array($this, 'loadClass'));
+
+        if (null !== $this->vendorDir) {
+            unset(self::$registeredLoaders[$this->vendorDir]);
+        }
+    }
+
+    /**
+     * Loads the given class or interface.
+     *
+     * @param  string    $class The name of the class
+     * @return true|null True if loaded, null otherwise
+     */
+    public function loadClass($class)
+    {
+        if ($file = $this->findFile($class)) {
+            $includeFile = self::$includeFile;
+            $includeFile($file);
+
+            return true;
+        }
+
+        return null;
+    }
+
+    /**
+     * Finds the path to the file where the class is defined.
+     *
+     * @param string $class The name of the class
+     *
+     * @return string|false The path if found, false otherwise
+     */
+    public function findFile($class)
+    {
+        // class map lookup
+        if (isset($this->classMap[$class])) {
+            return $this->classMap[$class];
+        }
+        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+            return false;
+        }
+        if (null !== $this->apcuPrefix) {
+            $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+            if ($hit) {
+                return $file;
+            }
+        }
+
+        $file = $this->findFileWithExtension($class, '.php');
+
+        // Search for Hack files if we are running on HHVM
+        if (false === $file && defined('HHVM_VERSION')) {
+            $file = $this->findFileWithExtension($class, '.hh');
+        }
+
+        if (null !== $this->apcuPrefix) {
+            apcu_add($this->apcuPrefix.$class, $file);
+        }
+
+        if (false === $file) {
+            // Remember that this class does not exist.
+            $this->missingClasses[$class] = true;
+        }
+
+        return $file;
+    }
+
+    /**
+     * Returns the currently registered loaders keyed by their corresponding vendor directories.
+     *
+     * @return array<string, self>
+     */
+    public static function getRegisteredLoaders()
+    {
+        return self::$registeredLoaders;
+    }
+
+    /**
+     * @param  string       $class
+     * @param  string       $ext
+     * @return string|false
+     */
+    private function findFileWithExtension($class, $ext)
+    {
+        // PSR-4 lookup
+        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+        $first = $class[0];
+        if (isset($this->prefixLengthsPsr4[$first])) {
+            $subPath = $class;
+            while (false !== $lastPos = strrpos($subPath, '\\')) {
+                $subPath = substr($subPath, 0, $lastPos);
+                $search = $subPath . '\\';
+                if (isset($this->prefixDirsPsr4[$search])) {
+                    $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
+                    foreach ($this->prefixDirsPsr4[$search] as $dir) {
+                        if (file_exists($file = $dir . $pathEnd)) {
+                            return $file;
+                        }
+                    }
+                }
+            }
+        }
+
+        // PSR-4 fallback dirs
+        foreach ($this->fallbackDirsPsr4 as $dir) {
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+                return $file;
+            }
+        }
+
+        // PSR-0 lookup
+        if (false !== $pos = strrpos($class, '\\')) {
+            // namespaced class name
+            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+        } else {
+            // PEAR-like class name
+            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+        }
+
+        if (isset($this->prefixesPsr0[$first])) {
+            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+                if (0 === strpos($class, $prefix)) {
+                    foreach ($dirs as $dir) {
+                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                            return $file;
+                        }
+                    }
+                }
+            }
+        }
+
+        // PSR-0 fallback dirs
+        foreach ($this->fallbackDirsPsr0 as $dir) {
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                return $file;
+            }
+        }
+
+        // PSR-0 include paths.
+        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+            return $file;
+        }
+
+        return false;
+    }
+
+    /**
+     * @return void
+     */
+    private static function initializeIncludeClosure()
+    {
+        if (self::$includeFile !== null) {
+            return;
+        }
+
+        /**
+         * Scope isolated include.
+         *
+         * Prevents access to $this/self from included files.
+         *
+         * @param  string $file
+         * @return void
+         */
+        self::$includeFile = \Closure::bind(static function($file) {
+            include $file;
+        }, null, null);
+    }
+}
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..f27399a042d95c4708af3a8c74d35d338763cf8f
--- /dev/null
+++ b/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
new file mode 100644
index 0000000000000000000000000000000000000000..0fb0a2c194b8590999a5ed79e357d4a9c1e9d8b8
--- /dev/null
+++ b/vendor/composer/autoload_classmap.php
@@ -0,0 +1,10 @@
+<?php
+
+// autoload_classmap.php @generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = dirname($vendorDir);
+
+return array(
+    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
+);
diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php
new file mode 100644
index 0000000000000000000000000000000000000000..15a2ff3ad6d8d6ea2b6b1f9552c62d745ffc9bf4
--- /dev/null
+++ b/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+<?php
+
+// autoload_namespaces.php @generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = dirname($vendorDir);
+
+return array(
+);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
new file mode 100644
index 0000000000000000000000000000000000000000..25610aa4c5da63683e141ed6f2fe22835ee4f713
--- /dev/null
+++ b/vendor/composer/autoload_psr4.php
@@ -0,0 +1,10 @@
+<?php
+
+// autoload_psr4.php @generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = dirname($vendorDir);
+
+return array(
+    'Iqdev\\Openapi\\' => array($baseDir . '/src'),
+);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
new file mode 100644
index 0000000000000000000000000000000000000000..42a2cf29314611736cce444f3db2454bc1ec6cf8
--- /dev/null
+++ b/vendor/composer/autoload_real.php
@@ -0,0 +1,36 @@
+<?php
+
+// autoload_real.php @generated by Composer
+
+class ComposerAutoloaderInit9826ec582ee6e293f35eb9acd3ec5688
+{
+    private static $loader;
+
+    public static function loadClassLoader($class)
+    {
+        if ('Composer\Autoload\ClassLoader' === $class) {
+            require __DIR__ . '/ClassLoader.php';
+        }
+    }
+
+    /**
+     * @return \Composer\Autoload\ClassLoader
+     */
+    public static function getLoader()
+    {
+        if (null !== self::$loader) {
+            return self::$loader;
+        }
+
+        spl_autoload_register(array('ComposerAutoloaderInit9826ec582ee6e293f35eb9acd3ec5688', 'loadClassLoader'), true, true);
+        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
+        spl_autoload_unregister(array('ComposerAutoloaderInit9826ec582ee6e293f35eb9acd3ec5688', 'loadClassLoader'));
+
+        require __DIR__ . '/autoload_static.php';
+        call_user_func(\Composer\Autoload\ComposerStaticInit9826ec582ee6e293f35eb9acd3ec5688::getInitializer($loader));
+
+        $loader->register(true);
+
+        return $loader;
+    }
+}
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
new file mode 100644
index 0000000000000000000000000000000000000000..f09939062bee3a7474060a8fd7db25917ff2fa06
--- /dev/null
+++ b/vendor/composer/autoload_static.php
@@ -0,0 +1,36 @@
+<?php
+
+// autoload_static.php @generated by Composer
+
+namespace Composer\Autoload;
+
+class ComposerStaticInit9826ec582ee6e293f35eb9acd3ec5688
+{
+    public static $prefixLengthsPsr4 = array (
+        'I' => 
+        array (
+            'Iqdev\\Openapi\\' => 14,
+        ),
+    );
+
+    public static $prefixDirsPsr4 = array (
+        'Iqdev\\Openapi\\' => 
+        array (
+            0 => __DIR__ . '/../..' . '/src',
+        ),
+    );
+
+    public static $classMap = array (
+        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
+    );
+
+    public static function getInitializer(ClassLoader $loader)
+    {
+        return \Closure::bind(function () use ($loader) {
+            $loader->prefixLengthsPsr4 = ComposerStaticInit9826ec582ee6e293f35eb9acd3ec5688::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = ComposerStaticInit9826ec582ee6e293f35eb9acd3ec5688::$prefixDirsPsr4;
+            $loader->classMap = ComposerStaticInit9826ec582ee6e293f35eb9acd3ec5688::$classMap;
+
+        }, null, ClassLoader::class);
+    }
+}