diff --git a/client/public/images/cards/1.jpg b/client/public/images/cards/1.jpg
index 84752ec..5d61138 100644
Binary files a/client/public/images/cards/1.jpg and b/client/public/images/cards/1.jpg differ
diff --git a/client/public/images/cards/10.jpg b/client/public/images/cards/10.jpg
index 1bb7cfb..572250a 100644
Binary files a/client/public/images/cards/10.jpg and b/client/public/images/cards/10.jpg differ
diff --git a/client/public/images/cards/11.jpg b/client/public/images/cards/11.jpg
index efafd73..254fa37 100644
Binary files a/client/public/images/cards/11.jpg and b/client/public/images/cards/11.jpg differ
diff --git a/client/public/images/cards/12.jpg b/client/public/images/cards/12.jpg
index 9169b10..192c227 100644
Binary files a/client/public/images/cards/12.jpg and b/client/public/images/cards/12.jpg differ
diff --git a/client/public/images/cards/13.jpg b/client/public/images/cards/13.jpg
index f60c56b..9f61641 100644
Binary files a/client/public/images/cards/13.jpg and b/client/public/images/cards/13.jpg differ
diff --git a/client/public/images/cards/2.jpg b/client/public/images/cards/2.jpg
index 8bcfb67..d3d14fb 100644
Binary files a/client/public/images/cards/2.jpg and b/client/public/images/cards/2.jpg differ
diff --git a/client/public/images/cards/3.jpg b/client/public/images/cards/3.jpg
index 34306f8..b960353 100644
Binary files a/client/public/images/cards/3.jpg and b/client/public/images/cards/3.jpg differ
diff --git a/client/public/images/cards/4.jpg b/client/public/images/cards/4.jpg
index 937b035..a68fad2 100644
Binary files a/client/public/images/cards/4.jpg and b/client/public/images/cards/4.jpg differ
diff --git a/client/public/images/cards/5.jpg b/client/public/images/cards/5.jpg
index 98abbd9..829edec 100644
Binary files a/client/public/images/cards/5.jpg and b/client/public/images/cards/5.jpg differ
diff --git a/client/public/images/cards/6.jpg b/client/public/images/cards/6.jpg
index ec5c678..2eacb6e 100644
Binary files a/client/public/images/cards/6.jpg and b/client/public/images/cards/6.jpg differ
diff --git a/client/public/images/cards/7.jpg b/client/public/images/cards/7.jpg
index 6dd46e0..01ac2a5 100644
Binary files a/client/public/images/cards/7.jpg and b/client/public/images/cards/7.jpg differ
diff --git a/client/public/images/cards/8.jpg b/client/public/images/cards/8.jpg
index e9a7bef..8504513 100644
Binary files a/client/public/images/cards/8.jpg and b/client/public/images/cards/8.jpg differ
diff --git a/client/public/images/cards/9.jpg b/client/public/images/cards/9.jpg
index 6836649..6741ad2 100644
Binary files a/client/public/images/cards/9.jpg and b/client/public/images/cards/9.jpg differ
diff --git a/client/public/images/company_logos/AbuDhabi/Normal.svg b/client/public/images/company_logos/AbuDhabi/Normal.svg
new file mode 100644
index 0000000..2d16564
--- /dev/null
+++ b/client/public/images/company_logos/AbuDhabi/Normal.svg
@@ -0,0 +1,28 @@
+
diff --git a/client/public/images/company_logos/Atlas/Normal.svg b/client/public/images/company_logos/Atlas/Normal.svg
new file mode 100644
index 0000000..610e427
--- /dev/null
+++ b/client/public/images/company_logos/Atlas/Normal.svg
@@ -0,0 +1,8 @@
+
diff --git a/client/public/images/company_logos/Atmosphere/Normal.svg b/client/public/images/company_logos/Atmosphere/Normal.svg
new file mode 100644
index 0000000..843849a
--- /dev/null
+++ b/client/public/images/company_logos/Atmosphere/Normal.svg
@@ -0,0 +1,16 @@
+
diff --git a/client/public/images/company_logos/Efes/Normal.svg b/client/public/images/company_logos/Efes/Normal.svg
new file mode 100644
index 0000000..20c8f5b
--- /dev/null
+++ b/client/public/images/company_logos/Efes/Normal.svg
@@ -0,0 +1,43 @@
+
diff --git a/client/public/images/company_logos/Enko/Normal.svg b/client/public/images/company_logos/Enko/Normal.svg
new file mode 100644
index 0000000..7f148cf
--- /dev/null
+++ b/client/public/images/company_logos/Enko/Normal.svg
@@ -0,0 +1,11 @@
+
diff --git a/client/public/images/company_logos/Fortis/Normal.svg b/client/public/images/company_logos/Fortis/Normal.svg
new file mode 100644
index 0000000..e98c3fa
--- /dev/null
+++ b/client/public/images/company_logos/Fortis/Normal.svg
@@ -0,0 +1,10 @@
+
diff --git a/client/public/images/company_logos/Mavis/Normal.svg b/client/public/images/company_logos/Mavis/Normal.svg
new file mode 100644
index 0000000..764bb99
--- /dev/null
+++ b/client/public/images/company_logos/Mavis/Normal.svg
@@ -0,0 +1,47 @@
+
diff --git a/client/public/images/company_logos/Mayak/Normal.svg b/client/public/images/company_logos/Mayak/Normal.svg
new file mode 100644
index 0000000..9f76807
--- /dev/null
+++ b/client/public/images/company_logos/Mayak/Normal.svg
@@ -0,0 +1,13 @@
+
diff --git a/client/public/images/company_logos/NKS/Normal.svg b/client/public/images/company_logos/NKS/Normal.svg
new file mode 100644
index 0000000..2b5f6bf
--- /dev/null
+++ b/client/public/images/company_logos/NKS/Normal.svg
@@ -0,0 +1,14 @@
+
diff --git a/client/public/images/company_logos/Paritet/Normal.svg b/client/public/images/company_logos/Paritet/Normal.svg
new file mode 100644
index 0000000..26c89a9
--- /dev/null
+++ b/client/public/images/company_logos/Paritet/Normal.svg
@@ -0,0 +1,11 @@
+
diff --git a/client/public/images/company_logos/Sibintel/Normal.svg b/client/public/images/company_logos/Sibintel/Normal.svg
new file mode 100644
index 0000000..54de587
--- /dev/null
+++ b/client/public/images/company_logos/Sibintel/Normal.svg
@@ -0,0 +1,24 @@
+
diff --git a/client/public/images/compressor (1)/11.jpg b/client/public/images/compressor (1)/11.jpg
deleted file mode 100644
index efafd73..0000000
Binary files a/client/public/images/compressor (1)/11.jpg and /dev/null differ
diff --git a/client/public/images/compressor (1)/12.jpg b/client/public/images/compressor (1)/12.jpg
deleted file mode 100644
index 9169b10..0000000
Binary files a/client/public/images/compressor (1)/12.jpg and /dev/null differ
diff --git a/client/public/images/compressor (1)/13.jpg b/client/public/images/compressor (1)/13.jpg
deleted file mode 100644
index f60c56b..0000000
Binary files a/client/public/images/compressor (1)/13.jpg and /dev/null differ
diff --git a/client/public/images/logos.svg b/client/public/images/logos.svg
new file mode 100644
index 0000000..6529c1b
--- /dev/null
+++ b/client/public/images/logos.svg
@@ -0,0 +1,248 @@
+
diff --git a/client/public/images/map.png b/client/public/images/map.png
deleted file mode 100644
index da2d6b1..0000000
Binary files a/client/public/images/map.png and /dev/null differ
diff --git a/client/public/images/map/Macbook-Pro.png b/client/public/images/map/Macbook-Pro.png
new file mode 100644
index 0000000..f6da2a3
Binary files /dev/null and b/client/public/images/map/Macbook-Pro.png differ
diff --git a/client/public/images/map/iPad-Pro-2022.png b/client/public/images/map/iPad-Pro-2022.png
new file mode 100644
index 0000000..5aa3fe8
Binary files /dev/null and b/client/public/images/map/iPad-Pro-2022.png differ
diff --git a/client/public/images/map/iPhone-15.png b/client/public/images/map/iPhone-15.png
new file mode 100644
index 0000000..4861ade
Binary files /dev/null and b/client/public/images/map/iPhone-15.png differ
diff --git a/client/public/images/map2.png b/client/public/images/map2.png
deleted file mode 100644
index aa77a82..0000000
Binary files a/client/public/images/map2.png and /dev/null differ
diff --git a/client/public/images/slider/1.jpg b/client/public/images/slider/1.jpg
index 41054e7..676d6c4 100644
Binary files a/client/public/images/slider/1.jpg and b/client/public/images/slider/1.jpg differ
diff --git a/client/public/images/slider/2.jpg b/client/public/images/slider/2.jpg
index fccaedc..b3ae6cf 100644
Binary files a/client/public/images/slider/2.jpg and b/client/public/images/slider/2.jpg differ
diff --git a/client/public/images/slider/3.jpg b/client/public/images/slider/3.jpg
index ef6cd88..805c81f 100644
Binary files a/client/public/images/slider/3.jpg and b/client/public/images/slider/3.jpg differ
diff --git a/client/public/images/slider/4.jpg b/client/public/images/slider/4.jpg
index 2e5aba8..70985e4 100644
Binary files a/client/public/images/slider/4.jpg and b/client/public/images/slider/4.jpg differ
diff --git a/client/src/App.tsx b/client/src/App.tsx
index 5ed3d6f..e49425a 100644
--- a/client/src/App.tsx
+++ b/client/src/App.tsx
@@ -104,7 +104,7 @@ function App() {
- Эффективность инстумента
+ Эффективность инструмента
продаж в цифрах
@@ -119,7 +119,7 @@ function App() {
На
-
+
18%
@@ -133,7 +133,7 @@ function App() {
На
-
+
12%
{/* раз */}
@@ -148,7 +148,7 @@ function App() {
До
-
+
2
@@ -165,13 +165,15 @@ function App() {
До
-
- 26
+
+ 4
+
+
+ раз
- что-то на умном
-
в две строчки
+ сокращает время на подготовку рекламных материалов
@@ -550,62 +552,51 @@ function App() {
-
-

-
+
@@ -637,34 +628,37 @@ function App() {
Реализованные проекты
- {/* */}
{isShowComplexCards && (
@@ -673,49 +667,51 @@ function App() {
image="/images/cards/3.jpg"
name="Iskan Abu Dhabi"
location="ОАЭ, Абу-Даби."
- src="/videos/Iskan_Abu_Dhabi.mp4"
+ video="/videos/Iskan_Abu_Dhabi.mp4"
+ logo={"/images/company_logos/AbuDhabi/Normal.svg"}
+ platforms={["touchscreen"]}
/>
- {/* */}
- {/* */}
>
)}
@@ -746,6 +742,21 @@ function App() {
+
+
diff --git a/client/src/components/ComplexCard.tsx b/client/src/components/ComplexCard.tsx
index fc54d8b..5f56cfd 100644
--- a/client/src/components/ComplexCard.tsx
+++ b/client/src/components/ComplexCard.tsx
@@ -6,17 +6,26 @@ interface IRelevantExpCard {
image: string;
name: string;
location: string;
- src?: string;
+ video?: string;
+ logo: string;
+ platforms: string[]; // touchscreen, vr, mobile
}
-function RelevantExpCard({ image, name, location, src }: IRelevantExpCard) {
+function RelevantExpCard({
+ image,
+ name,
+ location,
+ video,
+ logo,
+ platforms,
+}: IRelevantExpCard) {
const [modalComponent, setModalComponent] = useModalStore((state) => [
state.component,
state.setComponent,
]);
function handleClick() {
- if (src) {
+ if (video) {
setModalComponent(
);
}
@@ -38,9 +47,97 @@ function RelevantExpCard({ image, name, location, src }: IRelevantExpCard) {
style={{ backgroundImage: `url('${image}')` }}
>
+
+
+

+
+
+
+ {platforms.map((platform, index) => (
+
+ {platform === "touchscreen" && (
+
+ )}
+
+ {platform === "vr" && (
+
+ )}
+
+ {platform === "mobile" && (
+
+ )}
+
+ ))}
+
+
+
+
{name}
diff --git a/client/src/components/FeatureSliderItem.tsx b/client/src/components/FeatureSliderItem.tsx
index 9d4c98f..43eb8ed 100644
--- a/client/src/components/FeatureSliderItem.tsx
+++ b/client/src/components/FeatureSliderItem.tsx
@@ -26,7 +26,7 @@ function FeatureSliderItem({ title, text, video }: IFeatureSliderItem) {
return (
diff --git a/client/src/components/FeatureSliderItemOld.tsx b/client/src/components/FeatureSliderItemOld.tsx
deleted file mode 100644
index 3b05de2..0000000
--- a/client/src/components/FeatureSliderItemOld.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import React from "react";
-
-interface IFeatureSliderItem {
- title: string;
- text: string;
- handleHover: () => void;
-}
-
-function FeatureSliderItem({ title, text, handleHover }: IFeatureSliderItem) {
- return (
-
- );
-}
-
-export default FeatureSliderItem;
diff --git a/client/src/components/FeatureSliderOld.tsx b/client/src/components/FeatureSliderOld.tsx
deleted file mode 100644
index 2acf108..0000000
--- a/client/src/components/FeatureSliderOld.tsx
+++ /dev/null
@@ -1,96 +0,0 @@
-import React, { useEffect, useRef, useState } from "react";
-import FeatureSliderItem from "./FeatureSliderItemOld";
-import { useInView } from "framer-motion";
-
-function FeatureSlider() {
- const [selectedItem, setSelectedItem] = useState
("");
- const featureSliderRef = useRef(null);
- const featureSliderItemRef = useRef(null);
- const featureSliderInView = useInView(featureSliderRef);
-
- useEffect(() => {
- if (featureSliderInView) {
- setSelectedItem("/videos/features/virtual_tour.mp4");
- } else {
- setSelectedItem("");
- }
- }, [featureSliderInView]);
-
- useEffect(() => {
- if (featureSliderItemRef.current) {
- featureSliderItemRef.current.insertAdjacentHTML(
- "beforeend",
- ``
- );
-
- if (featureSliderItemRef.current.children.length > 1) {
- setTimeout(() => {
- featureSliderItemRef.current?.firstElementChild?.remove();
- }, 1000);
- }
- }
- }, [selectedItem]);
-
- return (
-
-
- setSelectedItem("/videos/features/virtual_tour.mp4")}
- />
- setSelectedItem("/videos/features/nks_infra.mp4")}
- />
-
-
-
- setSelectedItem("/videos/features/uralsky.mp4")}
- />
- setSelectedItem("/videos/features/parametric.mp4")}
- />
-
-
- setSelectedItem("/videos/features/render.mp4")}
- />
- setSelectedItem("/videos/features/wish.mp4")}
- />
-
-
- setSelectedItem("/videos/features/integra_crm.mp4")}
- />
-
-
- setSelectedItem("/videos/features/send.mp4")}
- />
-
-
- );
-}
-
-export default FeatureSlider;
diff --git a/client/src/components/Map.tsx b/client/src/components/Map.tsx
index f5e2bd6..d953846 100644
--- a/client/src/components/Map.tsx
+++ b/client/src/components/Map.tsx
@@ -1,14242 +1,12302 @@
-import { motion, useInView } from "framer-motion";
+import { inView, motion, useInView } from "framer-motion";
import React, { useEffect, useRef } from "react";
function Map() {
- const pathRef = useRef(null);
- const isInView = useInView(pathRef);
+ const svgRef = useRef(null);
+ const isInView = useInView(svgRef);
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
);
}