Compare commits
	
		
			128 Commits
		
	
	
		
			89a0fb13a5
			...
			AW-4620
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					12312c0e8b | ||
| 
						 | 
					d365b1d5b5 | ||
| 
						 | 
					846eee1ae5 | ||
| 
						 | 
					2588732b91 | ||
| 
						 | 
					de0089fbe8 | ||
| 
						 | 
					d4e7756176 | ||
| 72c34310df | |||
| 0c0d0989b2 | |||
| 
						 | 
					a86ab9f3c7 | ||
| 
						 | 
					a2264a28e0 | ||
| 
						 | 
					a4c34fe21c | ||
| 
						 | 
					9196358842 | ||
| 
						 | 
					f4cbb1ff68 | ||
| 
						 | 
					f008e97e39 | ||
| 
						 | 
					61d2fc8d54 | ||
| 
						 | 
					80760a8fdd | ||
| 
						 | 
					a7f53a841b | ||
| 
						 | 
					9d64fce22c | ||
| e39c0b055d | |||
| 
						 | 
					237fd27489 | ||
| 
						 | 
					296385ab33 | ||
| 
						 | 
					402bbcea0d | ||
| 
						 | 
					161717bc7b | ||
| 
						 | 
					0b8dbf4e2e | ||
| 2acf13cbac | |||
| 
						 | 
					a408f4bffa | ||
| 
						 | 
					ac5bd7d635 | ||
| 
						 | 
					cf84f8c93d | ||
| 
						 | 
					4872dee094 | ||
| 
						 | 
					b76a933dba | ||
| 
						 | 
					41c7ab15f3 | ||
| 
						 | 
					a9185b86af | ||
| 
						 | 
					eb1b8f18eb | ||
| 
						 | 
					bce562fb8e | ||
| 
						 | 
					2825ce4ccc | ||
| 
						 | 
					5d83293540 | ||
| 
						 | 
					b652555f37 | ||
| 
						 | 
					3db09c1e2a | ||
| 
						 | 
					0d40141b2d | ||
| 
						 | 
					33e7a2310d | ||
| 
						 | 
					ddb112b989 | ||
| 
						 | 
					7502bc54d1 | ||
| 
						 | 
					15cc2c33f1 | ||
| 
						 | 
					eb0e928c6f | ||
| 
						 | 
					5631d23355 | ||
| 
						 | 
					0470cb0fa1 | ||
| 
						 | 
					1656b465ee | ||
| 
						 | 
					a558b23a98 | ||
| 
						 | 
					c569076c5d | ||
| 
						 | 
					be2516a3b8 | ||
| 
						 | 
					7f62a74877 | ||
| 
						 | 
					3b296a1fba | ||
| 
						 | 
					28c9cd353d | ||
| 
						 | 
					83a5c1a7d2 | ||
| 
						 | 
					a767502d66 | ||
| 
						 | 
					897ac3dab5 | ||
| 
						 | 
					2f165b4b48 | ||
| 
						 | 
					3994818b6a | ||
| 7b2dbc1777 | |||
| 8c59976de6 | |||
| d551a2cf7a | |||
| a3a09507a6 | |||
| 9bbde64147 | |||
| 0c4259d72e | |||
| 
						 | 
					57e0a37c78 | ||
| 
						 | 
					713af307cd | ||
| 
						 | 
					521b882798 | ||
| 
						 | 
					b850f5d621 | ||
| 
						 | 
					d8730e77ad | ||
| e62c185f35 | |||
| f81b16b966 | |||
| b9ee39399c | |||
| be9b01dbab | |||
| feacfd8bb3 | |||
| 2f0362e730 | |||
| 
						 | 
					f4ba89920c | ||
| 
						 | 
					f5b312a888 | ||
| 
						 | 
					97142bc986 | ||
| 
						 | 
					67335a0a4a | ||
| 
						 | 
					b752b377da | ||
| 
						 | 
					74c77bae5e | ||
| 
						 | 
					b22278a75f | ||
| 
						 | 
					37854d43fc | ||
| 
						 | 
					2161951cbb | ||
| 66e492d2f8 | |||
| e944064053 | |||
| a1a4fc14ab | |||
| 122563a0bd | |||
| 33f322424e | |||
| 519b81d1fd | |||
| b7c80dfdd8 | |||
| 
						 | 
					77d2433d63 | ||
| 
						 | 
					9bc78dc302 | ||
| ac0fe962a0 | |||
| d89670f669 | |||
| d025e2e3f6 | |||
| 
						 | 
					c22cede59b | ||
| 
						 | 
					48574dc0b0 | ||
| 
						 | 
					57407d83d3 | ||
| 
						 | 
					f83549b5af | ||
| 
						 | 
					132556da81 | ||
| 
						 | 
					c2350eec52 | ||
| aa1ad9f844 | |||
| 
						 | 
					c6d14e6c9c | ||
| 
						 | 
					8e4364bd08 | ||
| 
						 | 
					af3340ed70 | ||
| 
						 | 
					cc4726e85c | ||
| 
						 | 
					ff19d830a7 | ||
| 
						 | 
					29914cfb1b | ||
| 
						 | 
					7bca0a57c4 | ||
| 
						 | 
					fdba357e9c | ||
| 
						 | 
					e28564c88a | ||
| 
						 | 
					90c3fa25a4 | ||
| 
						 | 
					3b8b812c55 | ||
| 
						 | 
					025889b390 | ||
| 
						 | 
					eabaa1db19 | ||
| 
						 | 
					ba541c4e08 | ||
| 
						 | 
					b994bc51cd | ||
| 
						 | 
					960275dd38 | ||
| 
						 | 
					5b7fef689a | ||
| 
						 | 
					1c1315a580 | ||
| 
						 | 
					5d21d66589 | ||
| 
						 | 
					160eb10aba | ||
| 
						 | 
					4ef077f8d7 | ||
| 
						 | 
					df84a7c217 | ||
| 
						 | 
					b5d00f5619 | ||
| 9c19595597 | |||
| ea1b22ed41 | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -33,6 +33,7 @@ speed-measure-plugin.json
 | 
			
		||||
.history/*
 | 
			
		||||
 | 
			
		||||
# misc
 | 
			
		||||
/.angular/cache
 | 
			
		||||
/.sass-cache
 | 
			
		||||
/connect.lock
 | 
			
		||||
/coverage
 | 
			
		||||
@@ -47,3 +48,4 @@ testem.log
 | 
			
		||||
Thumbs.db
 | 
			
		||||
projects/common/node_modules/
 | 
			
		||||
projects/common-map/node_modules/
 | 
			
		||||
.angular/*
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								Jenkinsfile
									
									
									
									
										vendored
									
									
								
							@@ -8,21 +8,21 @@ pipeline {
 | 
			
		||||
    stage('npm install'){
 | 
			
		||||
      steps {
 | 
			
		||||
        sh '''rm -rf node_modules/
 | 
			
		||||
        npm install
 | 
			
		||||
        npm install --legacy-peer-deps
 | 
			
		||||
        cd projects/common
 | 
			
		||||
        npm install
 | 
			
		||||
        npm install --legacy-peer-deps
 | 
			
		||||
        cd ../common-map
 | 
			
		||||
        npm install
 | 
			
		||||
        npm install --legacy-peer-deps
 | 
			
		||||
        cd ../common-map3d
 | 
			
		||||
        npm install
 | 
			
		||||
        npm install --legacy-peer-deps
 | 
			
		||||
        '''
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    stage('build'){
 | 
			
		||||
      steps {
 | 
			
		||||
        sh '''ng build common
 | 
			
		||||
        ng build common-map
 | 
			
		||||
        ng build common-map3d'''
 | 
			
		||||
        sh '''ng build common --configuration production
 | 
			
		||||
        ng build common-map --configuration production
 | 
			
		||||
        ng build common-map3d --configuration production'''
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    stage('npm publish'){
 | 
			
		||||
 
 | 
			
		||||
@@ -8,21 +8,21 @@ pipeline {
 | 
			
		||||
    stage('npm install'){
 | 
			
		||||
      steps {
 | 
			
		||||
        sh '''rm -rf node_modules/
 | 
			
		||||
        npm install
 | 
			
		||||
        npm install --legacy-peer-deps
 | 
			
		||||
        cd projects/common
 | 
			
		||||
        npm install
 | 
			
		||||
        npm install --legacy-peer-deps
 | 
			
		||||
        cd ../common-map
 | 
			
		||||
        npm install
 | 
			
		||||
        npm install --legacy-peer-deps
 | 
			
		||||
        cd ../common-map3d
 | 
			
		||||
        npm install
 | 
			
		||||
        npm install --legacy-peer-deps
 | 
			
		||||
        '''
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    stage('build'){
 | 
			
		||||
      steps {
 | 
			
		||||
        sh '''ng build common
 | 
			
		||||
        ng build common-map
 | 
			
		||||
        ng build common-map3d'''
 | 
			
		||||
        sh '''ng build common --configuration production
 | 
			
		||||
        ng build common-map --configuration production
 | 
			
		||||
        ng build common-map3d --configuration production'''
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    stage('npm publish'){
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										94
									
								
								angular.json
									
									
									
									
									
								
							
							
						
						
									
										94
									
								
								angular.json
									
									
									
									
									
								
							@@ -48,7 +48,7 @@
 | 
			
		||||
            "styles": [
 | 
			
		||||
              "src/styles.css",
 | 
			
		||||
              "node_modules/bootstrap/dist/css/bootstrap.min.css",
 | 
			
		||||
              "fontawesome-5.15.2/css/all.min.css",
 | 
			
		||||
              "fontawesome-6.2.1/css/all.min.css",
 | 
			
		||||
              "fonts/FMIconFont/style.css",
 | 
			
		||||
              "node_modules/cesium/Build/Cesium/Widgets/widgets.css",
 | 
			
		||||
              "node_modules/ol/ol.css"
 | 
			
		||||
@@ -83,6 +83,31 @@
 | 
			
		||||
                  "maximumWarning": "6kb"
 | 
			
		||||
                }
 | 
			
		||||
              ]
 | 
			
		||||
            },
 | 
			
		||||
            "development": {
 | 
			
		||||
              "fileReplacements": [
 | 
			
		||||
                {
 | 
			
		||||
                  "replace": "src/environments/environment.ts",
 | 
			
		||||
                  "with": "src/environments/environment.prod.ts"
 | 
			
		||||
                }
 | 
			
		||||
              ],
 | 
			
		||||
              "optimization": false,
 | 
			
		||||
              "sourceMap": true,
 | 
			
		||||
              "namedChunks": true,
 | 
			
		||||
              "extractLicenses": false,
 | 
			
		||||
              "vendorChunk": false,
 | 
			
		||||
              "buildOptimizer": false,
 | 
			
		||||
              "budgets": [
 | 
			
		||||
                {
 | 
			
		||||
                  "type": "initial",
 | 
			
		||||
                  "maximumWarning": "2mb",
 | 
			
		||||
                  "maximumError": "7mb"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  "type": "anyComponentStyle",
 | 
			
		||||
                  "maximumWarning": "6kb"
 | 
			
		||||
                }
 | 
			
		||||
              ]
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
@@ -94,8 +119,12 @@
 | 
			
		||||
          "configurations": {
 | 
			
		||||
            "production": {
 | 
			
		||||
              "browserTarget": "farmmaps-lib-app:build:production"
 | 
			
		||||
            },
 | 
			
		||||
            "development": {
 | 
			
		||||
              "browserTarget": "farmmaps-lib-app:build:development"
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          },
 | 
			
		||||
          "defaultConfiguration": "development"
 | 
			
		||||
        },
 | 
			
		||||
        "extract-i18n": {
 | 
			
		||||
          "builder": "@angular-devkit/build-angular:extract-i18n",
 | 
			
		||||
@@ -119,18 +148,6 @@
 | 
			
		||||
              "src/assets"
 | 
			
		||||
            ]
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "lint": {
 | 
			
		||||
          "builder": "@angular-devkit/build-angular:tslint",
 | 
			
		||||
          "options": {
 | 
			
		||||
            "tsConfig": [
 | 
			
		||||
              "src/tsconfig.app.json",
 | 
			
		||||
              "src/tsconfig.spec.json"
 | 
			
		||||
            ],
 | 
			
		||||
            "exclude": [
 | 
			
		||||
              "**/node_modules/**"
 | 
			
		||||
            ]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
@@ -150,15 +167,6 @@
 | 
			
		||||
              "devServerTarget": "farmmaps-lib-app:serve:production"
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "lint": {
 | 
			
		||||
          "builder": "@angular-devkit/build-angular:tslint",
 | 
			
		||||
          "options": {
 | 
			
		||||
            "tsConfig": "e2e/tsconfig.e2e.json",
 | 
			
		||||
            "exclude": [
 | 
			
		||||
              "**/node_modules/**"
 | 
			
		||||
            ]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
@@ -187,18 +195,6 @@
 | 
			
		||||
            "tsConfig": "projects/common/tsconfig.spec.json",
 | 
			
		||||
            "karmaConfig": "projects/common/karma.conf.js"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "lint": {
 | 
			
		||||
          "builder": "@angular-devkit/build-angular:tslint",
 | 
			
		||||
          "options": {
 | 
			
		||||
            "tsConfig": [
 | 
			
		||||
              "projects/common/tsconfig.lib.json",
 | 
			
		||||
              "projects/common/tsconfig.spec.json"
 | 
			
		||||
            ],
 | 
			
		||||
            "exclude": [
 | 
			
		||||
              "**/node_modules/**"
 | 
			
		||||
            ]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
@@ -227,18 +223,6 @@
 | 
			
		||||
            "tsConfig": "projects/common-map/tsconfig.spec.json",
 | 
			
		||||
            "karmaConfig": "projects/common-map/karma.conf.js"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "lint": {
 | 
			
		||||
          "builder": "@angular-devkit/build-angular:tslint",
 | 
			
		||||
          "options": {
 | 
			
		||||
            "tsConfig": [
 | 
			
		||||
              "projects/common-map/tsconfig.lib.json",
 | 
			
		||||
              "projects/common-map/tsconfig.spec.json"
 | 
			
		||||
            ],
 | 
			
		||||
            "exclude": [
 | 
			
		||||
              "**/node_modules/**"
 | 
			
		||||
            ]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
@@ -267,21 +251,11 @@
 | 
			
		||||
            "tsConfig": "projects/common-map3d/tsconfig.spec.json",
 | 
			
		||||
            "karmaConfig": "projects/common-map3d/karma.conf.js"
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        "lint": {
 | 
			
		||||
          "builder": "@angular-devkit/build-angular:tslint",
 | 
			
		||||
          "options": {
 | 
			
		||||
            "tsConfig": [
 | 
			
		||||
              "projects/common-map3d/tsconfig.lib.json",
 | 
			
		||||
              "projects/common-map3d/tsconfig.spec.json"
 | 
			
		||||
            ],
 | 
			
		||||
            "exclude": [
 | 
			
		||||
              "**/node_modules/**"
 | 
			
		||||
            ]
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "defaultProject": "farmmaps-lib-app"
 | 
			
		||||
  "cli": {
 | 
			
		||||
    "analytics": false
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +1,16 @@
 | 
			
		||||
module.exports = {
 | 
			
		||||
    node: {
 | 
			
		||||
  resolve: {
 | 
			
		||||
    fallback: {
 | 
			
		||||
      // Resolve node module use of fs
 | 
			
		||||
      fs: "empty",
 | 
			
		||||
      Buffer: false,
 | 
			
		||||
      http: "empty",
 | 
			
		||||
      https: "empty",
 | 
			
		||||
      zlib: "empty"
 | 
			
		||||
      http: require.resolve("stream-http"),
 | 
			
		||||
      https: require.resolve("https-browserify"),
 | 
			
		||||
      url: require.resolve("url/"),
 | 
			
		||||
      zlib: require.resolve('browserify-zlib'),
 | 
			
		||||
      assert: require.resolve("assert/"),
 | 
			
		||||
      util: require.resolve("util/"),
 | 
			
		||||
      buffer: require.resolve("buffer/")
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5
									
								
								fontawesome-5.15.2/css/all.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								fontawesome-5.15.2/css/all.min.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -1,15 +0,0 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 */
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 5 Brands';
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
  font-weight: 400;
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-brands-400.eot");
 | 
			
		||||
  src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }
 | 
			
		||||
 | 
			
		||||
.fab {
 | 
			
		||||
  font-family: 'Font Awesome 5 Brands';
 | 
			
		||||
  font-weight: 400; }
 | 
			
		||||
							
								
								
									
										5
									
								
								fontawesome-5.15.2/css/brands.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								fontawesome-5.15.2/css/brands.min.css
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +0,0 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 */
 | 
			
		||||
@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands";font-weight:400}
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5
									
								
								fontawesome-5.15.2/css/duotone.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								fontawesome-5.15.2/css/duotone.min.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										7138
									
								
								fontawesome-5.15.2/css/fontawesome.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7138
									
								
								fontawesome-5.15.2/css/fontawesome.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5
									
								
								fontawesome-5.15.2/css/fontawesome.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								fontawesome-5.15.2/css/fontawesome.min.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -1,15 +0,0 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 */
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 5 Pro';
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
  font-weight: 300;
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-light-300.eot");
 | 
			
		||||
  src: url("../webfonts/fa-light-300.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.woff") format("woff"), url("../webfonts/fa-light-300.ttf") format("truetype"), url("../webfonts/fa-light-300.svg#fontawesome") format("svg"); }
 | 
			
		||||
 | 
			
		||||
.fal {
 | 
			
		||||
  font-family: 'Font Awesome 5 Pro';
 | 
			
		||||
  font-weight: 300; }
 | 
			
		||||
							
								
								
									
										5
									
								
								fontawesome-5.15.2/css/light.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								fontawesome-5.15.2/css/light.min.css
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +0,0 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 */
 | 
			
		||||
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:300;font-display:block;src:url(../webfonts/fa-light-300.eot);src:url(../webfonts/fa-light-300.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.woff) format("woff"),url(../webfonts/fa-light-300.ttf) format("truetype"),url(../webfonts/fa-light-300.svg#fontawesome) format("svg")}.fal{font-family:"Font Awesome 5 Pro";font-weight:300}
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 */
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 5 Pro';
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
  font-weight: 400;
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-regular-400.eot");
 | 
			
		||||
  src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }
 | 
			
		||||
 | 
			
		||||
.far {
 | 
			
		||||
  font-family: 'Font Awesome 5 Pro';
 | 
			
		||||
  font-weight: 400; }
 | 
			
		||||
							
								
								
									
										5
									
								
								fontawesome-5.15.2/css/regular.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								fontawesome-5.15.2/css/regular.min.css
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +0,0 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 */
 | 
			
		||||
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Pro";font-weight:400}
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 */
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 5 Pro';
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
  font-weight: 900;
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-solid-900.eot");
 | 
			
		||||
  src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }
 | 
			
		||||
 | 
			
		||||
.fa,
 | 
			
		||||
.fas {
 | 
			
		||||
  font-family: 'Font Awesome 5 Pro';
 | 
			
		||||
  font-weight: 900; }
 | 
			
		||||
							
								
								
									
										5
									
								
								fontawesome-5.15.2/css/solid.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								fontawesome-5.15.2/css/solid.min.css
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +0,0 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 */
 | 
			
		||||
@font-face{font-family:"Font Awesome 5 Pro";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Pro";font-weight:900}
 | 
			
		||||
@@ -1,371 +0,0 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 5.15.2 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 */
 | 
			
		||||
svg:not(:root).svg-inline--fa {
 | 
			
		||||
  overflow: visible; }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  font-size: inherit;
 | 
			
		||||
  height: 1em;
 | 
			
		||||
  overflow: visible;
 | 
			
		||||
  vertical-align: -.125em; }
 | 
			
		||||
  .svg-inline--fa.fa-lg {
 | 
			
		||||
    vertical-align: -.225em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-1 {
 | 
			
		||||
    width: 0.0625em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-2 {
 | 
			
		||||
    width: 0.125em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-3 {
 | 
			
		||||
    width: 0.1875em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-4 {
 | 
			
		||||
    width: 0.25em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-5 {
 | 
			
		||||
    width: 0.3125em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-6 {
 | 
			
		||||
    width: 0.375em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-7 {
 | 
			
		||||
    width: 0.4375em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-8 {
 | 
			
		||||
    width: 0.5em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-9 {
 | 
			
		||||
    width: 0.5625em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-10 {
 | 
			
		||||
    width: 0.625em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-11 {
 | 
			
		||||
    width: 0.6875em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-12 {
 | 
			
		||||
    width: 0.75em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-13 {
 | 
			
		||||
    width: 0.8125em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-14 {
 | 
			
		||||
    width: 0.875em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-15 {
 | 
			
		||||
    width: 0.9375em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-16 {
 | 
			
		||||
    width: 1em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-17 {
 | 
			
		||||
    width: 1.0625em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-18 {
 | 
			
		||||
    width: 1.125em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-19 {
 | 
			
		||||
    width: 1.1875em; }
 | 
			
		||||
  .svg-inline--fa.fa-w-20 {
 | 
			
		||||
    width: 1.25em; }
 | 
			
		||||
  .svg-inline--fa.fa-pull-left {
 | 
			
		||||
    margin-right: .3em;
 | 
			
		||||
    width: auto; }
 | 
			
		||||
  .svg-inline--fa.fa-pull-right {
 | 
			
		||||
    margin-left: .3em;
 | 
			
		||||
    width: auto; }
 | 
			
		||||
  .svg-inline--fa.fa-border {
 | 
			
		||||
    height: 1.5em; }
 | 
			
		||||
  .svg-inline--fa.fa-li {
 | 
			
		||||
    width: 2em; }
 | 
			
		||||
  .svg-inline--fa.fa-fw {
 | 
			
		||||
    width: 1.25em; }
 | 
			
		||||
 | 
			
		||||
.fa-layers svg.svg-inline--fa {
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  margin: auto;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  right: 0;
 | 
			
		||||
  top: 0; }
 | 
			
		||||
 | 
			
		||||
.fa-layers {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  height: 1em;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  vertical-align: -.125em;
 | 
			
		||||
  width: 1em; }
 | 
			
		||||
  .fa-layers svg.svg-inline--fa {
 | 
			
		||||
    -webkit-transform-origin: center center;
 | 
			
		||||
            transform-origin: center center; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-text, .fa-layers-counter {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  text-align: center; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-text {
 | 
			
		||||
  left: 50%;
 | 
			
		||||
  top: 50%;
 | 
			
		||||
  -webkit-transform: translate(-50%, -50%);
 | 
			
		||||
          transform: translate(-50%, -50%);
 | 
			
		||||
  -webkit-transform-origin: center center;
 | 
			
		||||
          transform-origin: center center; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-counter {
 | 
			
		||||
  background-color: #ff253a;
 | 
			
		||||
  border-radius: 1em;
 | 
			
		||||
  -webkit-box-sizing: border-box;
 | 
			
		||||
          box-sizing: border-box;
 | 
			
		||||
  color: #fff;
 | 
			
		||||
  height: 1.5em;
 | 
			
		||||
  line-height: 1;
 | 
			
		||||
  max-width: 5em;
 | 
			
		||||
  min-width: 1.5em;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  padding: .25em;
 | 
			
		||||
  right: 0;
 | 
			
		||||
  text-overflow: ellipsis;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  -webkit-transform: scale(0.25);
 | 
			
		||||
          transform: scale(0.25);
 | 
			
		||||
  -webkit-transform-origin: top right;
 | 
			
		||||
          transform-origin: top right; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-bottom-right {
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
  right: 0;
 | 
			
		||||
  top: auto;
 | 
			
		||||
  -webkit-transform: scale(0.25);
 | 
			
		||||
          transform: scale(0.25);
 | 
			
		||||
  -webkit-transform-origin: bottom right;
 | 
			
		||||
          transform-origin: bottom right; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-bottom-left {
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  right: auto;
 | 
			
		||||
  top: auto;
 | 
			
		||||
  -webkit-transform: scale(0.25);
 | 
			
		||||
          transform: scale(0.25);
 | 
			
		||||
  -webkit-transform-origin: bottom left;
 | 
			
		||||
          transform-origin: bottom left; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-top-right {
 | 
			
		||||
  right: 0;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  -webkit-transform: scale(0.25);
 | 
			
		||||
          transform: scale(0.25);
 | 
			
		||||
  -webkit-transform-origin: top right;
 | 
			
		||||
          transform-origin: top right; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-top-left {
 | 
			
		||||
  left: 0;
 | 
			
		||||
  right: auto;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  -webkit-transform: scale(0.25);
 | 
			
		||||
          transform: scale(0.25);
 | 
			
		||||
  -webkit-transform-origin: top left;
 | 
			
		||||
          transform-origin: top left; }
 | 
			
		||||
 | 
			
		||||
.fa-lg {
 | 
			
		||||
  font-size: 1.33333em;
 | 
			
		||||
  line-height: 0.75em;
 | 
			
		||||
  vertical-align: -.0667em; }
 | 
			
		||||
 | 
			
		||||
.fa-xs {
 | 
			
		||||
  font-size: .75em; }
 | 
			
		||||
 | 
			
		||||
.fa-sm {
 | 
			
		||||
  font-size: .875em; }
 | 
			
		||||
 | 
			
		||||
.fa-1x {
 | 
			
		||||
  font-size: 1em; }
 | 
			
		||||
 | 
			
		||||
.fa-2x {
 | 
			
		||||
  font-size: 2em; }
 | 
			
		||||
 | 
			
		||||
.fa-3x {
 | 
			
		||||
  font-size: 3em; }
 | 
			
		||||
 | 
			
		||||
.fa-4x {
 | 
			
		||||
  font-size: 4em; }
 | 
			
		||||
 | 
			
		||||
.fa-5x {
 | 
			
		||||
  font-size: 5em; }
 | 
			
		||||
 | 
			
		||||
.fa-6x {
 | 
			
		||||
  font-size: 6em; }
 | 
			
		||||
 | 
			
		||||
.fa-7x {
 | 
			
		||||
  font-size: 7em; }
 | 
			
		||||
 | 
			
		||||
.fa-8x {
 | 
			
		||||
  font-size: 8em; }
 | 
			
		||||
 | 
			
		||||
.fa-9x {
 | 
			
		||||
  font-size: 9em; }
 | 
			
		||||
 | 
			
		||||
.fa-10x {
 | 
			
		||||
  font-size: 10em; }
 | 
			
		||||
 | 
			
		||||
.fa-fw {
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  width: 1.25em; }
 | 
			
		||||
 | 
			
		||||
.fa-ul {
 | 
			
		||||
  list-style-type: none;
 | 
			
		||||
  margin-left: 2.5em;
 | 
			
		||||
  padding-left: 0; }
 | 
			
		||||
  .fa-ul > li {
 | 
			
		||||
    position: relative; }
 | 
			
		||||
 | 
			
		||||
.fa-li {
 | 
			
		||||
  left: -2em;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  width: 2em;
 | 
			
		||||
  line-height: inherit; }
 | 
			
		||||
 | 
			
		||||
.fa-border {
 | 
			
		||||
  border: solid 0.08em #eee;
 | 
			
		||||
  border-radius: .1em;
 | 
			
		||||
  padding: .2em .25em .15em; }
 | 
			
		||||
 | 
			
		||||
.fa-pull-left {
 | 
			
		||||
  float: left; }
 | 
			
		||||
 | 
			
		||||
.fa-pull-right {
 | 
			
		||||
  float: right; }
 | 
			
		||||
 | 
			
		||||
.fa.fa-pull-left,
 | 
			
		||||
.fas.fa-pull-left,
 | 
			
		||||
.far.fa-pull-left,
 | 
			
		||||
.fal.fa-pull-left,
 | 
			
		||||
.fab.fa-pull-left {
 | 
			
		||||
  margin-right: .3em; }
 | 
			
		||||
 | 
			
		||||
.fa.fa-pull-right,
 | 
			
		||||
.fas.fa-pull-right,
 | 
			
		||||
.far.fa-pull-right,
 | 
			
		||||
.fal.fa-pull-right,
 | 
			
		||||
.fab.fa-pull-right {
 | 
			
		||||
  margin-left: .3em; }
 | 
			
		||||
 | 
			
		||||
.fa-spin {
 | 
			
		||||
  -webkit-animation: fa-spin 2s infinite linear;
 | 
			
		||||
          animation: fa-spin 2s infinite linear; }
 | 
			
		||||
 | 
			
		||||
.fa-pulse {
 | 
			
		||||
  -webkit-animation: fa-spin 1s infinite steps(8);
 | 
			
		||||
          animation: fa-spin 1s infinite steps(8); }
 | 
			
		||||
 | 
			
		||||
@-webkit-keyframes fa-spin {
 | 
			
		||||
  0% {
 | 
			
		||||
    -webkit-transform: rotate(0deg);
 | 
			
		||||
            transform: rotate(0deg); }
 | 
			
		||||
  100% {
 | 
			
		||||
    -webkit-transform: rotate(360deg);
 | 
			
		||||
            transform: rotate(360deg); } }
 | 
			
		||||
 | 
			
		||||
@keyframes fa-spin {
 | 
			
		||||
  0% {
 | 
			
		||||
    -webkit-transform: rotate(0deg);
 | 
			
		||||
            transform: rotate(0deg); }
 | 
			
		||||
  100% {
 | 
			
		||||
    -webkit-transform: rotate(360deg);
 | 
			
		||||
            transform: rotate(360deg); } }
 | 
			
		||||
 | 
			
		||||
.fa-rotate-90 {
 | 
			
		||||
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
 | 
			
		||||
  -webkit-transform: rotate(90deg);
 | 
			
		||||
          transform: rotate(90deg); }
 | 
			
		||||
 | 
			
		||||
.fa-rotate-180 {
 | 
			
		||||
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
 | 
			
		||||
  -webkit-transform: rotate(180deg);
 | 
			
		||||
          transform: rotate(180deg); }
 | 
			
		||||
 | 
			
		||||
.fa-rotate-270 {
 | 
			
		||||
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
 | 
			
		||||
  -webkit-transform: rotate(270deg);
 | 
			
		||||
          transform: rotate(270deg); }
 | 
			
		||||
 | 
			
		||||
.fa-flip-horizontal {
 | 
			
		||||
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
 | 
			
		||||
  -webkit-transform: scale(-1, 1);
 | 
			
		||||
          transform: scale(-1, 1); }
 | 
			
		||||
 | 
			
		||||
.fa-flip-vertical {
 | 
			
		||||
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
 | 
			
		||||
  -webkit-transform: scale(1, -1);
 | 
			
		||||
          transform: scale(1, -1); }
 | 
			
		||||
 | 
			
		||||
.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {
 | 
			
		||||
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
 | 
			
		||||
  -webkit-transform: scale(-1, -1);
 | 
			
		||||
          transform: scale(-1, -1); }
 | 
			
		||||
 | 
			
		||||
:root .fa-rotate-90,
 | 
			
		||||
:root .fa-rotate-180,
 | 
			
		||||
:root .fa-rotate-270,
 | 
			
		||||
:root .fa-flip-horizontal,
 | 
			
		||||
:root .fa-flip-vertical,
 | 
			
		||||
:root .fa-flip-both {
 | 
			
		||||
  -webkit-filter: none;
 | 
			
		||||
          filter: none; }
 | 
			
		||||
 | 
			
		||||
.fa-stack {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  height: 2em;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  width: 2.5em; }
 | 
			
		||||
 | 
			
		||||
.fa-stack-1x,
 | 
			
		||||
.fa-stack-2x {
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  margin: auto;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  right: 0;
 | 
			
		||||
  top: 0; }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa.fa-stack-1x {
 | 
			
		||||
  height: 1em;
 | 
			
		||||
  width: 1.25em; }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa.fa-stack-2x {
 | 
			
		||||
  height: 2em;
 | 
			
		||||
  width: 2.5em; }
 | 
			
		||||
 | 
			
		||||
.fa-inverse {
 | 
			
		||||
  color: #fff; }
 | 
			
		||||
 | 
			
		||||
.sr-only {
 | 
			
		||||
  border: 0;
 | 
			
		||||
  clip: rect(0, 0, 0, 0);
 | 
			
		||||
  height: 1px;
 | 
			
		||||
  margin: -1px;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  width: 1px; }
 | 
			
		||||
 | 
			
		||||
.sr-only-focusable:active, .sr-only-focusable:focus {
 | 
			
		||||
  clip: auto;
 | 
			
		||||
  height: auto;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  overflow: visible;
 | 
			
		||||
  position: static;
 | 
			
		||||
  width: auto; }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa .fa-primary {
 | 
			
		||||
  fill: var(--fa-primary-color, currentColor);
 | 
			
		||||
  opacity: 1;
 | 
			
		||||
  opacity: var(--fa-primary-opacity, 1); }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa .fa-secondary {
 | 
			
		||||
  fill: var(--fa-secondary-color, currentColor);
 | 
			
		||||
  opacity: 0.4;
 | 
			
		||||
  opacity: var(--fa-secondary-opacity, 0.4); }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa.fa-swap-opacity .fa-primary {
 | 
			
		||||
  opacity: 0.4;
 | 
			
		||||
  opacity: var(--fa-secondary-opacity, 0.4); }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa.fa-swap-opacity .fa-secondary {
 | 
			
		||||
  opacity: 1;
 | 
			
		||||
  opacity: var(--fa-primary-opacity, 1); }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa mask .fa-primary,
 | 
			
		||||
.svg-inline--fa mask .fa-secondary {
 | 
			
		||||
  fill: black; }
 | 
			
		||||
 | 
			
		||||
.fad.fa-inverse {
 | 
			
		||||
  color: #fff; }
 | 
			
		||||
							
								
								
									
										5
									
								
								fontawesome-5.15.2/css/svg-with-js.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								fontawesome-5.15.2/css/svg-with-js.min.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										5
									
								
								fontawesome-5.15.2/css/v4-shims.min.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								fontawesome-5.15.2/css/v4-shims.min.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
		 Before Width: | Height: | Size: 730 KiB  | 
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
		 Before Width: | Height: | Size: 2.5 MiB  | 
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
		 Before Width: | Height: | Size: 2.3 MiB  | 
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
		 Before Width: | Height: | Size: 2.1 MiB  | 
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
		 Before Width: | Height: | Size: 1.7 MiB  | 
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										18
									
								
								fontawesome-6.2.1/LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								fontawesome-6.2.1/LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
Font Awesome Pro License
 | 
			
		||||
------------------------
 | 
			
		||||
 | 
			
		||||
Font Awesome Pro is commercial software that requires a paid license. Full
 | 
			
		||||
Font Awesome Pro license: https://fontawesome.com/license.
 | 
			
		||||
 | 
			
		||||
# Commercial License
 | 
			
		||||
The Font Awesome Pro commercial license allows you to pay for FA Pro once, own
 | 
			
		||||
it, and use it just about everywhere you'd like.
 | 
			
		||||
 | 
			
		||||
# Attribution
 | 
			
		||||
Attribution is not required by the Font Awesome Pro commercial license.
 | 
			
		||||
 | 
			
		||||
# Brand Icons
 | 
			
		||||
All brand icons are trademarks of their respective owners. The use of these
 | 
			
		||||
trademarks does not indicate endorsement of the trademark holder by Font
 | 
			
		||||
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
 | 
			
		||||
to represent the company, product, or service to which they refer.**
 | 
			
		||||
							
								
								
									
										27013
									
								
								fontawesome-6.2.1/css/all.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27013
									
								
								fontawesome-6.2.1/css/all.css
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/all.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/all.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1522
									
								
								fontawesome-6.2.1/css/brands.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1522
									
								
								fontawesome-6.2.1/css/brands.css
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/brands.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/brands.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										12455
									
								
								fontawesome-6.2.1/css/duotone.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12455
									
								
								fontawesome-6.2.1/css/duotone.css
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/duotone.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/duotone.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										12940
									
								
								fontawesome-6.2.1/css/fontawesome.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12940
									
								
								fontawesome-6.2.1/css/fontawesome.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/fontawesome.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/fontawesome.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										19
									
								
								fontawesome-6.2.1/css/light.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								fontawesome-6.2.1/css/light.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:root, :host {
 | 
			
		||||
  --fa-style-family-classic: 'Font Awesome 6 Pro';
 | 
			
		||||
  --fa-font-light: normal 300 1em/1 'Font Awesome 6 Pro'; }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 6 Pro';
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
  font-weight: 300;
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
.fal,
 | 
			
		||||
.fa-light {
 | 
			
		||||
  font-weight: 300; }
 | 
			
		||||
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/light.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/light.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:300;font-display:block;src:url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.ttf) format("truetype")}.fa-light,.fal{font-weight:300}
 | 
			
		||||
							
								
								
									
										19
									
								
								fontawesome-6.2.1/css/regular.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								fontawesome-6.2.1/css/regular.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:root, :host {
 | 
			
		||||
  --fa-style-family-classic: 'Font Awesome 6 Pro';
 | 
			
		||||
  --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Pro'; }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 6 Pro';
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
  font-weight: 400;
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
.far,
 | 
			
		||||
.fa-regular {
 | 
			
		||||
  font-weight: 400; }
 | 
			
		||||
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/regular.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/regular.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
 | 
			
		||||
							
								
								
									
										19
									
								
								fontawesome-6.2.1/css/sharp-solid.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								fontawesome-6.2.1/css/sharp-solid.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:root, :host {
 | 
			
		||||
  --fa-style-family-sharp: 'Font Awesome 6 Sharp';
 | 
			
		||||
  --fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp'; }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 6 Sharp';
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
  font-weight: 900;
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-sharp-solid-900.woff2") format("woff2"), url("../webfonts/fa-sharp-solid-900.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
.fass,
 | 
			
		||||
.fa-sharp-solid {
 | 
			
		||||
  font-weight: 900; }
 | 
			
		||||
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/sharp-solid.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/sharp-solid.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:host,:root{--fa-style-family-sharp:"Font Awesome 6 Sharp";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 6 Sharp"}@font-face{font-family:"Font Awesome 6 Sharp";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-sharp-solid-900.woff2) format("woff2"),url(../webfonts/fa-sharp-solid-900.ttf) format("truetype")}.fa-sharp-solid,.fass{font-weight:900}
 | 
			
		||||
							
								
								
									
										19
									
								
								fontawesome-6.2.1/css/solid.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								fontawesome-6.2.1/css/solid.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:root, :host {
 | 
			
		||||
  --fa-style-family-classic: 'Font Awesome 6 Pro';
 | 
			
		||||
  --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Pro'; }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 6 Pro';
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
  font-weight: 900;
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
.fas,
 | 
			
		||||
.fa-solid {
 | 
			
		||||
  font-weight: 900; }
 | 
			
		||||
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/solid.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/solid.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
 | 
			
		||||
							
								
								
									
										635
									
								
								fontawesome-6.2.1/css/svg-with-js.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										635
									
								
								fontawesome-6.2.1/css/svg-with-js.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,635 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:root, :host {
 | 
			
		||||
  --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid';
 | 
			
		||||
  --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular';
 | 
			
		||||
  --fa-font-light: normal 300 1em/1 'Font Awesome 6 Light';
 | 
			
		||||
  --fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin';
 | 
			
		||||
  --fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone';
 | 
			
		||||
  --fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp';
 | 
			
		||||
  --fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
 | 
			
		||||
 | 
			
		||||
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
 | 
			
		||||
  overflow: visible;
 | 
			
		||||
  box-sizing: content-box; }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa {
 | 
			
		||||
  display: var(--fa-display, inline-block);
 | 
			
		||||
  height: 1em;
 | 
			
		||||
  overflow: visible;
 | 
			
		||||
  vertical-align: -.125em; }
 | 
			
		||||
  .svg-inline--fa.fa-2xs {
 | 
			
		||||
    vertical-align: 0.1em; }
 | 
			
		||||
  .svg-inline--fa.fa-xs {
 | 
			
		||||
    vertical-align: 0em; }
 | 
			
		||||
  .svg-inline--fa.fa-sm {
 | 
			
		||||
    vertical-align: -0.07143em; }
 | 
			
		||||
  .svg-inline--fa.fa-lg {
 | 
			
		||||
    vertical-align: -0.2em; }
 | 
			
		||||
  .svg-inline--fa.fa-xl {
 | 
			
		||||
    vertical-align: -0.25em; }
 | 
			
		||||
  .svg-inline--fa.fa-2xl {
 | 
			
		||||
    vertical-align: -0.3125em; }
 | 
			
		||||
  .svg-inline--fa.fa-pull-left {
 | 
			
		||||
    margin-right: var(--fa-pull-margin, 0.3em);
 | 
			
		||||
    width: auto; }
 | 
			
		||||
  .svg-inline--fa.fa-pull-right {
 | 
			
		||||
    margin-left: var(--fa-pull-margin, 0.3em);
 | 
			
		||||
    width: auto; }
 | 
			
		||||
  .svg-inline--fa.fa-li {
 | 
			
		||||
    width: var(--fa-li-width, 2em);
 | 
			
		||||
    top: 0.25em; }
 | 
			
		||||
  .svg-inline--fa.fa-fw {
 | 
			
		||||
    width: var(--fa-fw-width, 1.25em); }
 | 
			
		||||
 | 
			
		||||
.fa-layers svg.svg-inline--fa {
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  margin: auto;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  right: 0;
 | 
			
		||||
  top: 0; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-text, .fa-layers-counter {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  text-align: center; }
 | 
			
		||||
 | 
			
		||||
.fa-layers {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  height: 1em;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  vertical-align: -.125em;
 | 
			
		||||
  width: 1em; }
 | 
			
		||||
  .fa-layers svg.svg-inline--fa {
 | 
			
		||||
    -webkit-transform-origin: center center;
 | 
			
		||||
            transform-origin: center center; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-text {
 | 
			
		||||
  left: 50%;
 | 
			
		||||
  top: 50%;
 | 
			
		||||
  -webkit-transform: translate(-50%, -50%);
 | 
			
		||||
          transform: translate(-50%, -50%);
 | 
			
		||||
  -webkit-transform-origin: center center;
 | 
			
		||||
          transform-origin: center center; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-counter {
 | 
			
		||||
  background-color: var(--fa-counter-background-color, #ff253a);
 | 
			
		||||
  border-radius: var(--fa-counter-border-radius, 1em);
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  color: var(--fa-inverse, #fff);
 | 
			
		||||
  line-height: var(--fa-counter-line-height, 1);
 | 
			
		||||
  max-width: var(--fa-counter-max-width, 5em);
 | 
			
		||||
  min-width: var(--fa-counter-min-width, 1.5em);
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  padding: var(--fa-counter-padding, 0.25em 0.5em);
 | 
			
		||||
  right: var(--fa-right, 0);
 | 
			
		||||
  text-overflow: ellipsis;
 | 
			
		||||
  top: var(--fa-top, 0);
 | 
			
		||||
  -webkit-transform: scale(var(--fa-counter-scale, 0.25));
 | 
			
		||||
          transform: scale(var(--fa-counter-scale, 0.25));
 | 
			
		||||
  -webkit-transform-origin: top right;
 | 
			
		||||
          transform-origin: top right; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-bottom-right {
 | 
			
		||||
  bottom: var(--fa-bottom, 0);
 | 
			
		||||
  right: var(--fa-right, 0);
 | 
			
		||||
  top: auto;
 | 
			
		||||
  -webkit-transform: scale(var(--fa-layers-scale, 0.25));
 | 
			
		||||
          transform: scale(var(--fa-layers-scale, 0.25));
 | 
			
		||||
  -webkit-transform-origin: bottom right;
 | 
			
		||||
          transform-origin: bottom right; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-bottom-left {
 | 
			
		||||
  bottom: var(--fa-bottom, 0);
 | 
			
		||||
  left: var(--fa-left, 0);
 | 
			
		||||
  right: auto;
 | 
			
		||||
  top: auto;
 | 
			
		||||
  -webkit-transform: scale(var(--fa-layers-scale, 0.25));
 | 
			
		||||
          transform: scale(var(--fa-layers-scale, 0.25));
 | 
			
		||||
  -webkit-transform-origin: bottom left;
 | 
			
		||||
          transform-origin: bottom left; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-top-right {
 | 
			
		||||
  top: var(--fa-top, 0);
 | 
			
		||||
  right: var(--fa-right, 0);
 | 
			
		||||
  -webkit-transform: scale(var(--fa-layers-scale, 0.25));
 | 
			
		||||
          transform: scale(var(--fa-layers-scale, 0.25));
 | 
			
		||||
  -webkit-transform-origin: top right;
 | 
			
		||||
          transform-origin: top right; }
 | 
			
		||||
 | 
			
		||||
.fa-layers-top-left {
 | 
			
		||||
  left: var(--fa-left, 0);
 | 
			
		||||
  right: auto;
 | 
			
		||||
  top: var(--fa-top, 0);
 | 
			
		||||
  -webkit-transform: scale(var(--fa-layers-scale, 0.25));
 | 
			
		||||
          transform: scale(var(--fa-layers-scale, 0.25));
 | 
			
		||||
  -webkit-transform-origin: top left;
 | 
			
		||||
          transform-origin: top left; }
 | 
			
		||||
 | 
			
		||||
.fa-1x {
 | 
			
		||||
  font-size: 1em; }
 | 
			
		||||
 | 
			
		||||
.fa-2x {
 | 
			
		||||
  font-size: 2em; }
 | 
			
		||||
 | 
			
		||||
.fa-3x {
 | 
			
		||||
  font-size: 3em; }
 | 
			
		||||
 | 
			
		||||
.fa-4x {
 | 
			
		||||
  font-size: 4em; }
 | 
			
		||||
 | 
			
		||||
.fa-5x {
 | 
			
		||||
  font-size: 5em; }
 | 
			
		||||
 | 
			
		||||
.fa-6x {
 | 
			
		||||
  font-size: 6em; }
 | 
			
		||||
 | 
			
		||||
.fa-7x {
 | 
			
		||||
  font-size: 7em; }
 | 
			
		||||
 | 
			
		||||
.fa-8x {
 | 
			
		||||
  font-size: 8em; }
 | 
			
		||||
 | 
			
		||||
.fa-9x {
 | 
			
		||||
  font-size: 9em; }
 | 
			
		||||
 | 
			
		||||
.fa-10x {
 | 
			
		||||
  font-size: 10em; }
 | 
			
		||||
 | 
			
		||||
.fa-2xs {
 | 
			
		||||
  font-size: 0.625em;
 | 
			
		||||
  line-height: 0.1em;
 | 
			
		||||
  vertical-align: 0.225em; }
 | 
			
		||||
 | 
			
		||||
.fa-xs {
 | 
			
		||||
  font-size: 0.75em;
 | 
			
		||||
  line-height: 0.08333em;
 | 
			
		||||
  vertical-align: 0.125em; }
 | 
			
		||||
 | 
			
		||||
.fa-sm {
 | 
			
		||||
  font-size: 0.875em;
 | 
			
		||||
  line-height: 0.07143em;
 | 
			
		||||
  vertical-align: 0.05357em; }
 | 
			
		||||
 | 
			
		||||
.fa-lg {
 | 
			
		||||
  font-size: 1.25em;
 | 
			
		||||
  line-height: 0.05em;
 | 
			
		||||
  vertical-align: -0.075em; }
 | 
			
		||||
 | 
			
		||||
.fa-xl {
 | 
			
		||||
  font-size: 1.5em;
 | 
			
		||||
  line-height: 0.04167em;
 | 
			
		||||
  vertical-align: -0.125em; }
 | 
			
		||||
 | 
			
		||||
.fa-2xl {
 | 
			
		||||
  font-size: 2em;
 | 
			
		||||
  line-height: 0.03125em;
 | 
			
		||||
  vertical-align: -0.1875em; }
 | 
			
		||||
 | 
			
		||||
.fa-fw {
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  width: 1.25em; }
 | 
			
		||||
 | 
			
		||||
.fa-ul {
 | 
			
		||||
  list-style-type: none;
 | 
			
		||||
  margin-left: var(--fa-li-margin, 2.5em);
 | 
			
		||||
  padding-left: 0; }
 | 
			
		||||
  .fa-ul > li {
 | 
			
		||||
    position: relative; }
 | 
			
		||||
 | 
			
		||||
.fa-li {
 | 
			
		||||
  left: calc(var(--fa-li-width, 2em) * -1);
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  text-align: center;
 | 
			
		||||
  width: var(--fa-li-width, 2em);
 | 
			
		||||
  line-height: inherit; }
 | 
			
		||||
 | 
			
		||||
.fa-border {
 | 
			
		||||
  border-color: var(--fa-border-color, #eee);
 | 
			
		||||
  border-radius: var(--fa-border-radius, 0.1em);
 | 
			
		||||
  border-style: var(--fa-border-style, solid);
 | 
			
		||||
  border-width: var(--fa-border-width, 0.08em);
 | 
			
		||||
  padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
 | 
			
		||||
 | 
			
		||||
.fa-pull-left {
 | 
			
		||||
  float: left;
 | 
			
		||||
  margin-right: var(--fa-pull-margin, 0.3em); }
 | 
			
		||||
 | 
			
		||||
.fa-pull-right {
 | 
			
		||||
  float: right;
 | 
			
		||||
  margin-left: var(--fa-pull-margin, 0.3em); }
 | 
			
		||||
 | 
			
		||||
.fa-beat {
 | 
			
		||||
  -webkit-animation-name: fa-beat;
 | 
			
		||||
          animation-name: fa-beat;
 | 
			
		||||
  -webkit-animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
          animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
  -webkit-animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
          animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
  -webkit-animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
          animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
  -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
 | 
			
		||||
          animation-timing-function: var(--fa-animation-timing, ease-in-out); }
 | 
			
		||||
 | 
			
		||||
.fa-bounce {
 | 
			
		||||
  -webkit-animation-name: fa-bounce;
 | 
			
		||||
          animation-name: fa-bounce;
 | 
			
		||||
  -webkit-animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
          animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
  -webkit-animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
          animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
  -webkit-animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
          animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
 | 
			
		||||
          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
 | 
			
		||||
 | 
			
		||||
.fa-fade {
 | 
			
		||||
  -webkit-animation-name: fa-fade;
 | 
			
		||||
          animation-name: fa-fade;
 | 
			
		||||
  -webkit-animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
          animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
  -webkit-animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
          animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
  -webkit-animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
          animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
 | 
			
		||||
          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
 | 
			
		||||
 | 
			
		||||
.fa-beat-fade {
 | 
			
		||||
  -webkit-animation-name: fa-beat-fade;
 | 
			
		||||
          animation-name: fa-beat-fade;
 | 
			
		||||
  -webkit-animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
          animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
  -webkit-animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
          animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
  -webkit-animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
          animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
  -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
 | 
			
		||||
          animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
 | 
			
		||||
 | 
			
		||||
.fa-flip {
 | 
			
		||||
  -webkit-animation-name: fa-flip;
 | 
			
		||||
          animation-name: fa-flip;
 | 
			
		||||
  -webkit-animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
          animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
  -webkit-animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
          animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
  -webkit-animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
          animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
  -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
 | 
			
		||||
          animation-timing-function: var(--fa-animation-timing, ease-in-out); }
 | 
			
		||||
 | 
			
		||||
.fa-shake {
 | 
			
		||||
  -webkit-animation-name: fa-shake;
 | 
			
		||||
          animation-name: fa-shake;
 | 
			
		||||
  -webkit-animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
          animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
  -webkit-animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
          animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
  -webkit-animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
          animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
  -webkit-animation-timing-function: var(--fa-animation-timing, linear);
 | 
			
		||||
          animation-timing-function: var(--fa-animation-timing, linear); }
 | 
			
		||||
 | 
			
		||||
.fa-spin {
 | 
			
		||||
  -webkit-animation-name: fa-spin;
 | 
			
		||||
          animation-name: fa-spin;
 | 
			
		||||
  -webkit-animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
          animation-delay: var(--fa-animation-delay, 0s);
 | 
			
		||||
  -webkit-animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
          animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
  -webkit-animation-duration: var(--fa-animation-duration, 2s);
 | 
			
		||||
          animation-duration: var(--fa-animation-duration, 2s);
 | 
			
		||||
  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
  -webkit-animation-timing-function: var(--fa-animation-timing, linear);
 | 
			
		||||
          animation-timing-function: var(--fa-animation-timing, linear); }
 | 
			
		||||
 | 
			
		||||
.fa-spin-reverse {
 | 
			
		||||
  --fa-animation-direction: reverse; }
 | 
			
		||||
 | 
			
		||||
.fa-pulse,
 | 
			
		||||
.fa-spin-pulse {
 | 
			
		||||
  -webkit-animation-name: fa-spin;
 | 
			
		||||
          animation-name: fa-spin;
 | 
			
		||||
  -webkit-animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
          animation-direction: var(--fa-animation-direction, normal);
 | 
			
		||||
  -webkit-animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
          animation-duration: var(--fa-animation-duration, 1s);
 | 
			
		||||
  -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
          animation-iteration-count: var(--fa-animation-iteration-count, infinite);
 | 
			
		||||
  -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
 | 
			
		||||
          animation-timing-function: var(--fa-animation-timing, steps(8)); }
 | 
			
		||||
 | 
			
		||||
@media (prefers-reduced-motion: reduce) {
 | 
			
		||||
  .fa-beat,
 | 
			
		||||
  .fa-bounce,
 | 
			
		||||
  .fa-fade,
 | 
			
		||||
  .fa-beat-fade,
 | 
			
		||||
  .fa-flip,
 | 
			
		||||
  .fa-pulse,
 | 
			
		||||
  .fa-shake,
 | 
			
		||||
  .fa-spin,
 | 
			
		||||
  .fa-spin-pulse {
 | 
			
		||||
    -webkit-animation-delay: -1ms;
 | 
			
		||||
            animation-delay: -1ms;
 | 
			
		||||
    -webkit-animation-duration: 1ms;
 | 
			
		||||
            animation-duration: 1ms;
 | 
			
		||||
    -webkit-animation-iteration-count: 1;
 | 
			
		||||
            animation-iteration-count: 1;
 | 
			
		||||
    transition-delay: 0s;
 | 
			
		||||
    transition-duration: 0s; } }
 | 
			
		||||
 | 
			
		||||
@-webkit-keyframes fa-beat {
 | 
			
		||||
  0%, 90% {
 | 
			
		||||
    -webkit-transform: scale(1);
 | 
			
		||||
            transform: scale(1); }
 | 
			
		||||
  45% {
 | 
			
		||||
    -webkit-transform: scale(var(--fa-beat-scale, 1.25));
 | 
			
		||||
            transform: scale(var(--fa-beat-scale, 1.25)); } }
 | 
			
		||||
 | 
			
		||||
@keyframes fa-beat {
 | 
			
		||||
  0%, 90% {
 | 
			
		||||
    -webkit-transform: scale(1);
 | 
			
		||||
            transform: scale(1); }
 | 
			
		||||
  45% {
 | 
			
		||||
    -webkit-transform: scale(var(--fa-beat-scale, 1.25));
 | 
			
		||||
            transform: scale(var(--fa-beat-scale, 1.25)); } }
 | 
			
		||||
 | 
			
		||||
@-webkit-keyframes fa-bounce {
 | 
			
		||||
  0% {
 | 
			
		||||
    -webkit-transform: scale(1, 1) translateY(0);
 | 
			
		||||
            transform: scale(1, 1) translateY(0); }
 | 
			
		||||
  10% {
 | 
			
		||||
    -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
 | 
			
		||||
            transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
 | 
			
		||||
  30% {
 | 
			
		||||
    -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
 | 
			
		||||
            transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
 | 
			
		||||
  50% {
 | 
			
		||||
    -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
 | 
			
		||||
            transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
 | 
			
		||||
  57% {
 | 
			
		||||
    -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
 | 
			
		||||
            transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
 | 
			
		||||
  64% {
 | 
			
		||||
    -webkit-transform: scale(1, 1) translateY(0);
 | 
			
		||||
            transform: scale(1, 1) translateY(0); }
 | 
			
		||||
  100% {
 | 
			
		||||
    -webkit-transform: scale(1, 1) translateY(0);
 | 
			
		||||
            transform: scale(1, 1) translateY(0); } }
 | 
			
		||||
 | 
			
		||||
@keyframes fa-bounce {
 | 
			
		||||
  0% {
 | 
			
		||||
    -webkit-transform: scale(1, 1) translateY(0);
 | 
			
		||||
            transform: scale(1, 1) translateY(0); }
 | 
			
		||||
  10% {
 | 
			
		||||
    -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
 | 
			
		||||
            transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
 | 
			
		||||
  30% {
 | 
			
		||||
    -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
 | 
			
		||||
            transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
 | 
			
		||||
  50% {
 | 
			
		||||
    -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
 | 
			
		||||
            transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
 | 
			
		||||
  57% {
 | 
			
		||||
    -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
 | 
			
		||||
            transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
 | 
			
		||||
  64% {
 | 
			
		||||
    -webkit-transform: scale(1, 1) translateY(0);
 | 
			
		||||
            transform: scale(1, 1) translateY(0); }
 | 
			
		||||
  100% {
 | 
			
		||||
    -webkit-transform: scale(1, 1) translateY(0);
 | 
			
		||||
            transform: scale(1, 1) translateY(0); } }
 | 
			
		||||
 | 
			
		||||
@-webkit-keyframes fa-fade {
 | 
			
		||||
  50% {
 | 
			
		||||
    opacity: var(--fa-fade-opacity, 0.4); } }
 | 
			
		||||
 | 
			
		||||
@keyframes fa-fade {
 | 
			
		||||
  50% {
 | 
			
		||||
    opacity: var(--fa-fade-opacity, 0.4); } }
 | 
			
		||||
 | 
			
		||||
@-webkit-keyframes fa-beat-fade {
 | 
			
		||||
  0%, 100% {
 | 
			
		||||
    opacity: var(--fa-beat-fade-opacity, 0.4);
 | 
			
		||||
    -webkit-transform: scale(1);
 | 
			
		||||
            transform: scale(1); }
 | 
			
		||||
  50% {
 | 
			
		||||
    opacity: 1;
 | 
			
		||||
    -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
 | 
			
		||||
            transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
 | 
			
		||||
 | 
			
		||||
@keyframes fa-beat-fade {
 | 
			
		||||
  0%, 100% {
 | 
			
		||||
    opacity: var(--fa-beat-fade-opacity, 0.4);
 | 
			
		||||
    -webkit-transform: scale(1);
 | 
			
		||||
            transform: scale(1); }
 | 
			
		||||
  50% {
 | 
			
		||||
    opacity: 1;
 | 
			
		||||
    -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
 | 
			
		||||
            transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
 | 
			
		||||
 | 
			
		||||
@-webkit-keyframes fa-flip {
 | 
			
		||||
  50% {
 | 
			
		||||
    -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
 | 
			
		||||
            transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
 | 
			
		||||
 | 
			
		||||
@keyframes fa-flip {
 | 
			
		||||
  50% {
 | 
			
		||||
    -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
 | 
			
		||||
            transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
 | 
			
		||||
 | 
			
		||||
@-webkit-keyframes fa-shake {
 | 
			
		||||
  0% {
 | 
			
		||||
    -webkit-transform: rotate(-15deg);
 | 
			
		||||
            transform: rotate(-15deg); }
 | 
			
		||||
  4% {
 | 
			
		||||
    -webkit-transform: rotate(15deg);
 | 
			
		||||
            transform: rotate(15deg); }
 | 
			
		||||
  8%, 24% {
 | 
			
		||||
    -webkit-transform: rotate(-18deg);
 | 
			
		||||
            transform: rotate(-18deg); }
 | 
			
		||||
  12%, 28% {
 | 
			
		||||
    -webkit-transform: rotate(18deg);
 | 
			
		||||
            transform: rotate(18deg); }
 | 
			
		||||
  16% {
 | 
			
		||||
    -webkit-transform: rotate(-22deg);
 | 
			
		||||
            transform: rotate(-22deg); }
 | 
			
		||||
  20% {
 | 
			
		||||
    -webkit-transform: rotate(22deg);
 | 
			
		||||
            transform: rotate(22deg); }
 | 
			
		||||
  32% {
 | 
			
		||||
    -webkit-transform: rotate(-12deg);
 | 
			
		||||
            transform: rotate(-12deg); }
 | 
			
		||||
  36% {
 | 
			
		||||
    -webkit-transform: rotate(12deg);
 | 
			
		||||
            transform: rotate(12deg); }
 | 
			
		||||
  40%, 100% {
 | 
			
		||||
    -webkit-transform: rotate(0deg);
 | 
			
		||||
            transform: rotate(0deg); } }
 | 
			
		||||
 | 
			
		||||
@keyframes fa-shake {
 | 
			
		||||
  0% {
 | 
			
		||||
    -webkit-transform: rotate(-15deg);
 | 
			
		||||
            transform: rotate(-15deg); }
 | 
			
		||||
  4% {
 | 
			
		||||
    -webkit-transform: rotate(15deg);
 | 
			
		||||
            transform: rotate(15deg); }
 | 
			
		||||
  8%, 24% {
 | 
			
		||||
    -webkit-transform: rotate(-18deg);
 | 
			
		||||
            transform: rotate(-18deg); }
 | 
			
		||||
  12%, 28% {
 | 
			
		||||
    -webkit-transform: rotate(18deg);
 | 
			
		||||
            transform: rotate(18deg); }
 | 
			
		||||
  16% {
 | 
			
		||||
    -webkit-transform: rotate(-22deg);
 | 
			
		||||
            transform: rotate(-22deg); }
 | 
			
		||||
  20% {
 | 
			
		||||
    -webkit-transform: rotate(22deg);
 | 
			
		||||
            transform: rotate(22deg); }
 | 
			
		||||
  32% {
 | 
			
		||||
    -webkit-transform: rotate(-12deg);
 | 
			
		||||
            transform: rotate(-12deg); }
 | 
			
		||||
  36% {
 | 
			
		||||
    -webkit-transform: rotate(12deg);
 | 
			
		||||
            transform: rotate(12deg); }
 | 
			
		||||
  40%, 100% {
 | 
			
		||||
    -webkit-transform: rotate(0deg);
 | 
			
		||||
            transform: rotate(0deg); } }
 | 
			
		||||
 | 
			
		||||
@-webkit-keyframes fa-spin {
 | 
			
		||||
  0% {
 | 
			
		||||
    -webkit-transform: rotate(0deg);
 | 
			
		||||
            transform: rotate(0deg); }
 | 
			
		||||
  100% {
 | 
			
		||||
    -webkit-transform: rotate(360deg);
 | 
			
		||||
            transform: rotate(360deg); } }
 | 
			
		||||
 | 
			
		||||
@keyframes fa-spin {
 | 
			
		||||
  0% {
 | 
			
		||||
    -webkit-transform: rotate(0deg);
 | 
			
		||||
            transform: rotate(0deg); }
 | 
			
		||||
  100% {
 | 
			
		||||
    -webkit-transform: rotate(360deg);
 | 
			
		||||
            transform: rotate(360deg); } }
 | 
			
		||||
 | 
			
		||||
.fa-rotate-90 {
 | 
			
		||||
  -webkit-transform: rotate(90deg);
 | 
			
		||||
          transform: rotate(90deg); }
 | 
			
		||||
 | 
			
		||||
.fa-rotate-180 {
 | 
			
		||||
  -webkit-transform: rotate(180deg);
 | 
			
		||||
          transform: rotate(180deg); }
 | 
			
		||||
 | 
			
		||||
.fa-rotate-270 {
 | 
			
		||||
  -webkit-transform: rotate(270deg);
 | 
			
		||||
          transform: rotate(270deg); }
 | 
			
		||||
 | 
			
		||||
.fa-flip-horizontal {
 | 
			
		||||
  -webkit-transform: scale(-1, 1);
 | 
			
		||||
          transform: scale(-1, 1); }
 | 
			
		||||
 | 
			
		||||
.fa-flip-vertical {
 | 
			
		||||
  -webkit-transform: scale(1, -1);
 | 
			
		||||
          transform: scale(1, -1); }
 | 
			
		||||
 | 
			
		||||
.fa-flip-both,
 | 
			
		||||
.fa-flip-horizontal.fa-flip-vertical {
 | 
			
		||||
  -webkit-transform: scale(-1, -1);
 | 
			
		||||
          transform: scale(-1, -1); }
 | 
			
		||||
 | 
			
		||||
.fa-rotate-by {
 | 
			
		||||
  -webkit-transform: rotate(var(--fa-rotate-angle, none));
 | 
			
		||||
          transform: rotate(var(--fa-rotate-angle, none)); }
 | 
			
		||||
 | 
			
		||||
.fa-stack {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  vertical-align: middle;
 | 
			
		||||
  height: 2em;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  width: 2.5em; }
 | 
			
		||||
 | 
			
		||||
.fa-stack-1x,
 | 
			
		||||
.fa-stack-2x {
 | 
			
		||||
  bottom: 0;
 | 
			
		||||
  left: 0;
 | 
			
		||||
  margin: auto;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  right: 0;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  z-index: var(--fa-stack-z-index, auto); }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa.fa-stack-1x {
 | 
			
		||||
  height: 1em;
 | 
			
		||||
  width: 1.25em; }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa.fa-stack-2x {
 | 
			
		||||
  height: 2em;
 | 
			
		||||
  width: 2.5em; }
 | 
			
		||||
 | 
			
		||||
.fa-inverse {
 | 
			
		||||
  color: var(--fa-inverse, #fff); }
 | 
			
		||||
 | 
			
		||||
.sr-only,
 | 
			
		||||
.fa-sr-only {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  width: 1px;
 | 
			
		||||
  height: 1px;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  margin: -1px;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  clip: rect(0, 0, 0, 0);
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
  border-width: 0; }
 | 
			
		||||
 | 
			
		||||
.sr-only-focusable:not(:focus),
 | 
			
		||||
.fa-sr-only-focusable:not(:focus) {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  width: 1px;
 | 
			
		||||
  height: 1px;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  margin: -1px;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  clip: rect(0, 0, 0, 0);
 | 
			
		||||
  white-space: nowrap;
 | 
			
		||||
  border-width: 0; }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa .fa-primary {
 | 
			
		||||
  fill: var(--fa-primary-color, currentColor);
 | 
			
		||||
  opacity: var(--fa-primary-opacity, 1); }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa .fa-secondary {
 | 
			
		||||
  fill: var(--fa-secondary-color, currentColor);
 | 
			
		||||
  opacity: var(--fa-secondary-opacity, 0.4); }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa.fa-swap-opacity .fa-primary {
 | 
			
		||||
  opacity: var(--fa-secondary-opacity, 0.4); }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa.fa-swap-opacity .fa-secondary {
 | 
			
		||||
  opacity: var(--fa-primary-opacity, 1); }
 | 
			
		||||
 | 
			
		||||
.svg-inline--fa mask .fa-primary,
 | 
			
		||||
.svg-inline--fa mask .fa-secondary {
 | 
			
		||||
  fill: black; }
 | 
			
		||||
 | 
			
		||||
.fad.fa-inverse,
 | 
			
		||||
.fa-duotone.fa-inverse {
 | 
			
		||||
  color: var(--fa-inverse, #fff); }
 | 
			
		||||
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/svg-with-js.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/svg-with-js.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										19
									
								
								fontawesome-6.2.1/css/thin.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								fontawesome-6.2.1/css/thin.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:root, :host {
 | 
			
		||||
  --fa-style-family-classic: 'Font Awesome 6 Pro';
 | 
			
		||||
  --fa-font-thin: normal 100 1em/1 'Font Awesome 6 Pro'; }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 6 Pro';
 | 
			
		||||
  font-style: normal;
 | 
			
		||||
  font-weight: 100;
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-thin-100.woff2") format("woff2"), url("../webfonts/fa-thin-100.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
.fat,
 | 
			
		||||
.fa-thin {
 | 
			
		||||
  font-weight: 100; }
 | 
			
		||||
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/thin.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/thin.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:100;font-display:block;src:url(../webfonts/fa-thin-100.woff2) format("woff2"),url(../webfonts/fa-thin-100.ttf) format("truetype")}.fa-thin,.fat{font-weight:100}
 | 
			
		||||
							
								
								
									
										26
									
								
								fontawesome-6.2.1/css/v4-font-face.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								fontawesome-6.2.1/css/v4-font-face.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'FontAwesome';
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'FontAwesome';
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'FontAwesome';
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype");
 | 
			
		||||
  unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'FontAwesome';
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype");
 | 
			
		||||
  unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }
 | 
			
		||||
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/v4-font-face.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/v4-font-face.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/v4-shims.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/v4-shims.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										34
									
								
								fontawesome-6.2.1/css/v5-font-face.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								fontawesome-6.2.1/css/v5-font-face.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 5 Brands';
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  font-weight: 400;
 | 
			
		||||
  src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 5 Pro';
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  font-weight: 900;
 | 
			
		||||
  src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 5 Pro';
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  font-weight: 400;
 | 
			
		||||
  src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 5 Pro';
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  font-weight: 300;
 | 
			
		||||
  src: url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.ttf") format("truetype"); }
 | 
			
		||||
 | 
			
		||||
@font-face {
 | 
			
		||||
  font-family: 'Font Awesome 5 Duotone';
 | 
			
		||||
  font-display: block;
 | 
			
		||||
  font-weight: 900;
 | 
			
		||||
  src: url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.ttf") format("truetype"); }
 | 
			
		||||
							
								
								
									
										6
									
								
								fontawesome-6.2.1/css/v5-font-face.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fontawesome-6.2.1/css/v5-font-face.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
/*!
 | 
			
		||||
 * Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com
 | 
			
		||||
 * License - https://fontawesome.com/license (Commercial License)
 | 
			
		||||
 * Copyright 2022 Fonticons, Inc.
 | 
			
		||||
 */
 | 
			
		||||
@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Pro";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Pro";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Pro";font-display:block;font-weight:300;src:url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Duotone";font-display:block;font-weight:900;src:url(../webfonts/fa-duotone-900.woff2) format("woff2"),url(../webfonts/fa-duotone-900.ttf) format("truetype")}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-brands-400.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-brands-400.ttf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-brands-400.woff2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-brands-400.woff2
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-duotone-900.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-duotone-900.ttf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-duotone-900.woff2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-duotone-900.woff2
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-light-300.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-light-300.ttf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-light-300.woff2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-light-300.woff2
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-regular-400.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-regular-400.ttf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-regular-400.woff2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-regular-400.woff2
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-sharp-solid-900.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-sharp-solid-900.ttf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-sharp-solid-900.woff2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-sharp-solid-900.woff2
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-solid-900.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-solid-900.ttf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-solid-900.woff2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-solid-900.woff2
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-thin-100.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-thin-100.ttf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-thin-100.woff2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-thin-100.woff2
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-v4compatibility.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-v4compatibility.ttf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-v4compatibility.woff2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								fontawesome-6.2.1/webfonts/fa-v4compatibility.woff2
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										31252
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										31252
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										93
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										93
									
								
								package.json
									
									
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "farmmaps-lib-app",
 | 
			
		||||
  "version": "1.1.1",
 | 
			
		||||
  "version": "3.0.1",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "ng": "ng",
 | 
			
		||||
    "start": "ng serve",
 | 
			
		||||
@@ -11,62 +11,73 @@
 | 
			
		||||
  },
 | 
			
		||||
  "private": true,
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@angular/animations": "~11.2.14",
 | 
			
		||||
    "@angular/common": "~11.2.14",
 | 
			
		||||
    "@angular/compiler": "~11.2.14",
 | 
			
		||||
    "@angular/core": "~11.2.14",
 | 
			
		||||
    "@angular/forms": "~11.2.14",
 | 
			
		||||
    "@angular/platform-browser": "~11.2.14",
 | 
			
		||||
    "@angular/platform-browser-dynamic": "~11.2.14",
 | 
			
		||||
    "@angular/router": "~11.2.14",
 | 
			
		||||
    "@farmmaps/common": "1.1.1-prerelease.2031",
 | 
			
		||||
    "@farmmaps/common-map": "1.1.1-prerelease.2031",
 | 
			
		||||
    "@farmmaps/common-map3d": "1.1.1-prerelease.2031",
 | 
			
		||||
    "@angular/animations": "^14.1.3",
 | 
			
		||||
    "@angular/common": "^14.1.3",
 | 
			
		||||
    "@angular/compiler": "^14.1.3",
 | 
			
		||||
    "@angular/core": "^14.1.3",
 | 
			
		||||
    "@angular/forms": "^14.1.3",
 | 
			
		||||
    "@angular/platform-browser": "^14.1.3",
 | 
			
		||||
    "@angular/platform-browser-dynamic": "^14.1.3",
 | 
			
		||||
    "@angular/router": "^14.1.3",
 | 
			
		||||
    "@farmmaps/common": "file:dist/common",
 | 
			
		||||
    "@farmmaps/common-map": "file:dist/common-map",
 | 
			
		||||
    "@farmmaps/common-map3d": "file:dist/common-map3d",
 | 
			
		||||
    "@microsoft/signalr": "^3.1.16",
 | 
			
		||||
    "@ng-bootstrap/ng-bootstrap": "^9.0",
 | 
			
		||||
    "@ngrx/effects": "^11.0",
 | 
			
		||||
    "@ngrx/router-store": "^11.0",
 | 
			
		||||
    "@ngrx/store": "^11.0",
 | 
			
		||||
    "angular-oauth2-oidc": "^10.0.3",
 | 
			
		||||
    "bootstrap": "^4.6.0",
 | 
			
		||||
    "cesium": "^1.82.1",
 | 
			
		||||
    "@ng-bootstrap/ng-bootstrap": "^13.0.0",
 | 
			
		||||
    "@ngrx/effects": "^14",
 | 
			
		||||
    "@ngrx/router-store": "^14",
 | 
			
		||||
    "@ngrx/store": "^14",
 | 
			
		||||
    "@popperjs/core": "^2.11.6",
 | 
			
		||||
    "angular-oauth2-oidc": "^13",
 | 
			
		||||
    "assert": "^2.0.0",
 | 
			
		||||
    "bootstrap": "^5.2.0",
 | 
			
		||||
    "browserify-zlib": "^0.2.0",
 | 
			
		||||
    "buffer": "^6.0.3",
 | 
			
		||||
    "cesium": "^1.97.0",
 | 
			
		||||
    "core-js": "^2.6.12",
 | 
			
		||||
    "moment": "^2.29.1",
 | 
			
		||||
    "ngrx-store-localstorage": "^11.0.0",
 | 
			
		||||
    "https-browserify": "^1.0.0",
 | 
			
		||||
    "moment": "^2.29.4",
 | 
			
		||||
    "ngrx-store-localstorage": "^14",
 | 
			
		||||
    "ngx-avatar": "^4.1.0",
 | 
			
		||||
    "ngx-clipboard": "^14.0.1",
 | 
			
		||||
    "ngx-image-cropper": "^3.3.5",
 | 
			
		||||
    "ngx-openlayers": "1.0.0-next.17",
 | 
			
		||||
    "ngx-uploadx": "^3.5.1",
 | 
			
		||||
    "ol": "6.5.0",
 | 
			
		||||
    "ol-cesium": "^2.13.0",
 | 
			
		||||
    "ngx-openlayers": "1.0.0-next.19",
 | 
			
		||||
    "ngx-uploadx": "^5.2.0",
 | 
			
		||||
    "ol": "6.14.1",
 | 
			
		||||
    "olcs": "^2.13.1",
 | 
			
		||||
    "resumablejs": "^1.1.0",
 | 
			
		||||
    "rxjs": "^6.6.7",
 | 
			
		||||
    "stream": "^0.0.2",
 | 
			
		||||
    "stream-http": "^3.2.0",
 | 
			
		||||
    "tassign": "^1.0.0",
 | 
			
		||||
    "tslib": "^2.2.0",
 | 
			
		||||
    "zone.js": "~0.10.2"
 | 
			
		||||
    "tslib": "^2.4.0",
 | 
			
		||||
    "url": "^0.11.0",
 | 
			
		||||
    "util": "^0.12.4",
 | 
			
		||||
    "zone.js": "~0.11.4"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@angular-builders/custom-webpack": "^11.1.1",
 | 
			
		||||
    "@angular-devkit/build-angular": "^0.1102.14",
 | 
			
		||||
    "@angular/cli": "^11.2.14",
 | 
			
		||||
    "@angular/compiler-cli": "~11.2.14",
 | 
			
		||||
    "@angular/language-service": "~11.2.14",
 | 
			
		||||
    "@angular-builders/custom-webpack": "^14",
 | 
			
		||||
    "@angular-devkit/build-angular": "^14.1.3",
 | 
			
		||||
    "@angular/cli": "^14.1.3",
 | 
			
		||||
    "@angular/compiler-cli": "^14.1.3",
 | 
			
		||||
    "@angular/language-service": "^14.1.3",
 | 
			
		||||
    "@angular/localize": "^14.1.3",
 | 
			
		||||
    "@types/arcgis-rest-api": "^10.4.5",
 | 
			
		||||
    "@types/jasmine": "~2.8.8",
 | 
			
		||||
    "@types/jasminewd2": "^2.0.9",
 | 
			
		||||
    "@types/node": "^12.20.15",
 | 
			
		||||
    "codelyzer": "^5.1.2",
 | 
			
		||||
    "jasmine-core": "~3.5.0",
 | 
			
		||||
    "jasmine-spec-reporter": "~5.0.0",
 | 
			
		||||
    "karma": "~6.3.3",
 | 
			
		||||
    "codelyzer": "^0.0.28",
 | 
			
		||||
    "jasmine-core": "^4.3.0",
 | 
			
		||||
    "jasmine-spec-reporter": "^7.0.0",
 | 
			
		||||
    "karma": "^6.3.20",
 | 
			
		||||
    "karma-chrome-launcher": "~3.1.0",
 | 
			
		||||
    "karma-coverage-istanbul-reporter": "~3.0.2",
 | 
			
		||||
    "karma-jasmine": "~4.0.0",
 | 
			
		||||
    "karma-jasmine-html-reporter": "^1.6.0",
 | 
			
		||||
    "ng-packagr": "^11.2.4",
 | 
			
		||||
    "karma-coverage-istanbul-reporter": "^3.0.3",
 | 
			
		||||
    "karma-jasmine": "^5.1.0",
 | 
			
		||||
    "karma-jasmine-html-reporter": "^2.0.0",
 | 
			
		||||
    "ng-packagr": "^14.1.0",
 | 
			
		||||
    "protractor": "~7.0.0",
 | 
			
		||||
    "ts-node": "^8.8.1",
 | 
			
		||||
    "tslint": "~6.1.0",
 | 
			
		||||
    "typescript": "~4.1.0"
 | 
			
		||||
    "typescript": "~4.6.4"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
  "lib": {
 | 
			
		||||
    "entryFile": "src/public-api.ts"
 | 
			
		||||
  },
 | 
			
		||||
  "whitelistedNonPeerDependencies": [
 | 
			
		||||
  "allowedNonPeerDependencies": [
 | 
			
		||||
    "."
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "@farmmaps/common-map",
 | 
			
		||||
  "version": "1.0.0",
 | 
			
		||||
  "version": "2.0.0",
 | 
			
		||||
  "publishConfig": {
 | 
			
		||||
    "registry": "https://repository.akkerweb.nl/repository/npm-hosted/"
 | 
			
		||||
  },
 | 
			
		||||
@@ -8,14 +8,13 @@
 | 
			
		||||
    "tslib": "^2.0.0"
 | 
			
		||||
  },
 | 
			
		||||
  "peerDependencies": {
 | 
			
		||||
    "@angular/core": "^10.2.4",
 | 
			
		||||
    "ngrx-store-localstorage": "^10.0",
 | 
			
		||||
    "@ngrx/effects": "^10.0",
 | 
			
		||||
    "@ngrx/router-store": "^10.0",
 | 
			
		||||
    "@ngrx/store": "^10.0",
 | 
			
		||||
    "tassign": "^1.0.0",
 | 
			
		||||
    "@farmmaps/common": "~1.0",
 | 
			
		||||
    "ngx-openlayers": "1.0.0-next.17",
 | 
			
		||||
    "ol": "6.4.3"
 | 
			
		||||
    "@angular/core": ">=14.0.0",
 | 
			
		||||
    "ngrx-store-localstorage": ">=14.0.0",
 | 
			
		||||
    "@ngrx/effects": ">=14.0.0",
 | 
			
		||||
    "@ngrx/router-store":">=14.0.0",
 | 
			
		||||
    "@ngrx/store":">=14.0.0",
 | 
			
		||||
    "tassign": ">=1.0.0",
 | 
			
		||||
    "ngx-openlayers": ">=1.0.0-next.19",
 | 
			
		||||
    "ol": ">=6.8.1"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,9 @@ import { IItemLayer } from '../models/item.layer';
 | 
			
		||||
import { ILayervalue } from '../models/layer.value';
 | 
			
		||||
import { IQueryState } from '@farmmaps/common';
 | 
			
		||||
import { IItem } from '@farmmaps/common';
 | 
			
		||||
import { Feature,Style } from 'ol';
 | 
			
		||||
import { Feature } from 'ol';
 | 
			
		||||
import { Style } from 'ol/style';
 | 
			
		||||
import { Geometry } from 'ol/geom';
 | 
			
		||||
import { IPeriodState } from '../models/period.state';
 | 
			
		||||
 | 
			
		||||
export const SETSTATE = '[Map] SetState';
 | 
			
		||||
@@ -52,6 +54,9 @@ export const SETLAYERVALUESLOCATION = '[Map] SetLayerValuesLocation'
 | 
			
		||||
export const TOGGLELAYERVALUESENABLED = '[Map] ToggleLayerValuesEnabled'
 | 
			
		||||
export const GETLAYERVALUE = '[Map] GetLayerValue'
 | 
			
		||||
export const GETLAYERVALUESUCCESS = '[Map] GetLayerValueSuccess'
 | 
			
		||||
export const TOGGLESHOWDATALAYERSLIDE = '[Map] ToggleShowDataLayerSlide'
 | 
			
		||||
export const SETVIEWSTATE = '[Map] SetViewState'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export class Clear implements Action {
 | 
			
		||||
  readonly type = CLEAR;
 | 
			
		||||
@@ -103,13 +108,13 @@ export class StartSearch implements Action {
 | 
			
		||||
export class StartSearchSuccess implements Action {
 | 
			
		||||
  readonly type = STARTSEARCHSUCCESS;
 | 
			
		||||
 | 
			
		||||
  constructor(public features: Array<Feature>, public query:IQueryState) { }
 | 
			
		||||
  constructor(public features: Array<Feature<Geometry>>, public query:IQueryState) { }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class SelectFeature implements Action {
 | 
			
		||||
  readonly type = SELECTFEATURE;
 | 
			
		||||
 | 
			
		||||
  constructor(public feature:Feature) { }
 | 
			
		||||
  constructor(public feature:Feature<Geometry>) { }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class SelectItem implements Action {
 | 
			
		||||
@@ -151,13 +156,13 @@ export class SelectTemporal implements Action {
 | 
			
		||||
export class AddFeatureSuccess implements Action {
 | 
			
		||||
  readonly type = ADDFEATURESUCCESS;
 | 
			
		||||
 | 
			
		||||
  constructor(public feature: Feature) { }
 | 
			
		||||
  constructor(public feature: Feature<Geometry>) { }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class UpdateFeatureSuccess implements Action {
 | 
			
		||||
  readonly type = UPDATEFEATURESUCCESS;
 | 
			
		||||
 | 
			
		||||
  constructor(public feature: Feature) { }
 | 
			
		||||
  constructor(public feature: Feature<Geometry>) { }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class ExpandSearch implements Action {
 | 
			
		||||
@@ -271,7 +276,7 @@ export class DoQuery implements Action {
 | 
			
		||||
export class SetStyle implements Action {
 | 
			
		||||
  readonly type = SETSTYLE;
 | 
			
		||||
 | 
			
		||||
  constructor(public itemType:string,public style: Style | (Feature)) { }
 | 
			
		||||
  constructor(public itemType:string,public style: Style | ((feature:Feature<Geometry>) => Style )) { }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class ShowLayerSwitcher implements Action {
 | 
			
		||||
@@ -287,7 +292,7 @@ export class SetReplaceUrl implements Action {
 | 
			
		||||
export class SetFeatures implements Action {
 | 
			
		||||
  readonly type = SETFEATURES;
 | 
			
		||||
 | 
			
		||||
  constructor(public features: Array<Feature>) { }
 | 
			
		||||
  constructor(public features: Array<Feature<Geometry>>) { }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class SetLayerValuesLocation implements Action {
 | 
			
		||||
@@ -314,6 +319,16 @@ export class GetLayerValueSuccess implements Action {
 | 
			
		||||
  constructor(public layervalue:ILayervalue) { }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class ToggleShowDataLayerSlide implements Action {
 | 
			
		||||
  readonly type = TOGGLESHOWDATALAYERSLIDE;
 | 
			
		||||
  constructor() {}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class SetViewState implements Action {
 | 
			
		||||
  readonly type = SETVIEWSTATE;
 | 
			
		||||
  constructor(public enabled:boolean) {}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export type Actions = SetMapState
 | 
			
		||||
  | Init
 | 
			
		||||
  | Clear
 | 
			
		||||
@@ -357,5 +372,7 @@ export type Actions = SetMapState
 | 
			
		||||
  | ToggleLayerValuesEnabled
 | 
			
		||||
  | GetLayerValueSuccess
 | 
			
		||||
  | GetLayerValue
 | 
			
		||||
  | SetPeriod;
 | 
			
		||||
  | SetPeriod
 | 
			
		||||
  | ToggleShowDataLayerSlide
 | 
			
		||||
  | SetViewState;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,7 @@ import * as mapEffects from './effects/map.effects';
 | 
			
		||||
import { IMapState} from './models/map.state';
 | 
			
		||||
import { ISelectedFeatures } from './models/selected.features';
 | 
			
		||||
import { IItemLayer,ItemLayer,ITemporalItemLayer,TemporalItemLayer } from './models/item.layer';
 | 
			
		||||
import { IClickedFeature } from './models/clicked.feature';
 | 
			
		||||
import { IPeriodState } from './models/period.state';
 | 
			
		||||
 | 
			
		||||
// components
 | 
			
		||||
@@ -163,136 +164,124 @@ export {
 | 
			
		||||
  ITemporalItemLayer,
 | 
			
		||||
  TemporalItemLayer,
 | 
			
		||||
  ifZoomToShowDirective,
 | 
			
		||||
  ZoomToShowAlert
 | 
			
		||||
  ZoomToShowAlert,
 | 
			
		||||
  IClickedFeature,
 | 
			
		||||
  GeometryThumbnailComponent
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
  imports: [
 | 
			
		||||
    CommonModule,
 | 
			
		||||
    AngularOpenlayersModule,
 | 
			
		||||
    MapRoutingModule,
 | 
			
		||||
    StoreModule.forFeature(MODULE_NAME, mapReducers.reducer,{metaReducers:metaReducers}),
 | 
			
		||||
    EffectsModule.forFeature([mapEffects.MapEffects]),
 | 
			
		||||
    NgbModule,
 | 
			
		||||
    FormsModule,
 | 
			
		||||
    ReactiveFormsModule,
 | 
			
		||||
    AppCommonModule
 | 
			
		||||
  ],
 | 
			
		||||
  declarations: [
 | 
			
		||||
    ZoomToExtentComponent,
 | 
			
		||||
    ItemVectorSourceComponent,
 | 
			
		||||
    ItemLayersComponent,
 | 
			
		||||
    FileDropTargetComponent,
 | 
			
		||||
    MapComponent,
 | 
			
		||||
    MetaDataModalComponent,
 | 
			
		||||
    RotationResetComponent,
 | 
			
		||||
    MapSearchComponent,
 | 
			
		||||
    SelectPeriodModalComponent,
 | 
			
		||||
    LayerListComponent,
 | 
			
		||||
    LegendComponent,
 | 
			
		||||
    LayerVectorImageComponent,
 | 
			
		||||
    FeatureListComponent,
 | 
			
		||||
    WidgetHostDirective,
 | 
			
		||||
    FeatureListContainerComponent,
 | 
			
		||||
    FeatureListCroppingschemeComponent,
 | 
			
		||||
    FeatureListCropfieldComponent,
 | 
			
		||||
    FeatureListFeatureContainerComponent,
 | 
			
		||||
    FeatureListFeatureComponent,
 | 
			
		||||
    FeatureListFeatureCroppingschemeComponent,
 | 
			
		||||
    FeatureListFeatureCropfieldComponent,
 | 
			
		||||
    SelectedItemContainerComponent,
 | 
			
		||||
    SelectedItemComponent,
 | 
			
		||||
    SelectedItemCropfieldComponent,
 | 
			
		||||
    SelectedItemGeotiffComponent,
 | 
			
		||||
    SelectedItemTemporalComponent,
 | 
			
		||||
    SelectedItemShapeComponent,
 | 
			
		||||
    ItemListItemComponent,
 | 
			
		||||
    ItemListItemContainerComponent,
 | 
			
		||||
    ItemListComponent,
 | 
			
		||||
    ItemWidgetListComponent,
 | 
			
		||||
    WidgetStatusComponent,
 | 
			
		||||
    GpsLocation,
 | 
			
		||||
    PanToLocation,
 | 
			
		||||
    LayerSwitcher,
 | 
			
		||||
    HistogramDetailsComponent,
 | 
			
		||||
    StatisticsDetailsComponent,
 | 
			
		||||
    ifZoomToShowDirective,
 | 
			
		||||
    ZoomToShowAlert,
 | 
			
		||||
    LayerValuesComponent,
 | 
			
		||||
    GeometryThumbnailComponent
 | 
			
		||||
  ],
 | 
			
		||||
  entryComponents: [
 | 
			
		||||
    FeatureListComponent,
 | 
			
		||||
    FeatureListCroppingschemeComponent,
 | 
			
		||||
    FeatureListCropfieldComponent,
 | 
			
		||||
    FeatureListFeatureComponent,
 | 
			
		||||
    FeatureListFeatureCroppingschemeComponent,
 | 
			
		||||
    FeatureListFeatureCropfieldComponent,
 | 
			
		||||
    SelectedItemComponent,
 | 
			
		||||
    SelectedItemCropfieldComponent,
 | 
			
		||||
    SelectedItemGeotiffComponent,
 | 
			
		||||
    SelectedItemTemporalComponent,
 | 
			
		||||
    SelectedItemShapeComponent,
 | 
			
		||||
    ItemListComponent,
 | 
			
		||||
    ItemListItemComponent,
 | 
			
		||||
  ],
 | 
			
		||||
  exports: [
 | 
			
		||||
       ItemVectorSourceComponent,
 | 
			
		||||
       ItemLayersComponent,
 | 
			
		||||
       FileDropTargetComponent,
 | 
			
		||||
       MetaDataModalComponent,
 | 
			
		||||
       MapComponent,
 | 
			
		||||
       GpsLocation,
 | 
			
		||||
       PanToLocation,
 | 
			
		||||
       LayerSwitcher,
 | 
			
		||||
       FeatureListFeatureComponent,
 | 
			
		||||
       FeatureListFeatureCropfieldComponent,
 | 
			
		||||
       FeatureListFeatureCroppingschemeComponent,
 | 
			
		||||
       SelectedItemContainerComponent,
 | 
			
		||||
       SelectedItemComponent,
 | 
			
		||||
       SelectedItemCropfieldComponent,
 | 
			
		||||
       SelectedItemGeotiffComponent,
 | 
			
		||||
       SelectedItemTemporalComponent,
 | 
			
		||||
       SelectedItemShapeComponent,
 | 
			
		||||
       ItemListItemComponent,
 | 
			
		||||
       ItemListItemContainerComponent,
 | 
			
		||||
       ItemListComponent,
 | 
			
		||||
       ItemWidgetListComponent,
 | 
			
		||||
       WidgetStatusComponent,
 | 
			
		||||
       RotationResetComponent,
 | 
			
		||||
       MapSearchComponent,
 | 
			
		||||
       SelectPeriodModalComponent,
 | 
			
		||||
       LayerListComponent,
 | 
			
		||||
       LegendComponent,
 | 
			
		||||
       LayerVectorImageComponent,
 | 
			
		||||
       FeatureListComponent,
 | 
			
		||||
       WidgetHostDirective,
 | 
			
		||||
       FeatureListContainerComponent,
 | 
			
		||||
       FeatureListCroppingschemeComponent,
 | 
			
		||||
       FeatureListCropfieldComponent,
 | 
			
		||||
       FeatureListFeatureContainerComponent,
 | 
			
		||||
       ZoomToExtentComponent,
 | 
			
		||||
       ifZoomToShowDirective,
 | 
			
		||||
       ZoomToShowAlert
 | 
			
		||||
  ],
 | 
			
		||||
  providers: [
 | 
			
		||||
    FeatureIconService,
 | 
			
		||||
    GeolocationService,
 | 
			
		||||
    DeviceOrientationService,
 | 
			
		||||
    TemporalService,
 | 
			
		||||
    { provide: AbstractFeatureListComponent, useClass: FeatureListCroppingschemeComponent, multi: true },
 | 
			
		||||
    { provide: AbstractFeatureListComponent, useClass: FeatureListCropfieldComponent, multi: true },
 | 
			
		||||
    { provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureComponent, multi: true },
 | 
			
		||||
    { provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureCroppingschemeComponent, multi: true },
 | 
			
		||||
    { provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureCropfieldComponent, multi: true },
 | 
			
		||||
    { provide: AbstractSelectedItemComponent, useClass: SelectedItemComponent, multi: true },
 | 
			
		||||
    { provide: AbstractSelectedItemComponent, useClass: SelectedItemCropfieldComponent, multi: true },
 | 
			
		||||
    { provide: AbstractSelectedItemComponent, useClass: SelectedItemGeotiffComponent, multi: true },
 | 
			
		||||
    { provide: AbstractSelectedItemComponent, useClass: SelectedItemTemporalComponent, multi: true },
 | 
			
		||||
    { provide: AbstractSelectedItemComponent, useClass: SelectedItemShapeComponent, multi: true },
 | 
			
		||||
    { provide: AbstractItemListItemComponent, useClass: ItemListItemComponent, multi: true },
 | 
			
		||||
    { provide: AbstractItemListComponent, useClass: ItemListComponent, multi: true }
 | 
			
		||||
  ]
 | 
			
		||||
@NgModule({
 | 
			
		||||
    imports: [
 | 
			
		||||
        CommonModule,
 | 
			
		||||
        AngularOpenlayersModule,
 | 
			
		||||
        MapRoutingModule,
 | 
			
		||||
        StoreModule.forFeature(MODULE_NAME, mapReducers.reducer, { metaReducers: metaReducers }),
 | 
			
		||||
        EffectsModule.forFeature([mapEffects.MapEffects]),
 | 
			
		||||
        NgbModule,
 | 
			
		||||
        FormsModule,
 | 
			
		||||
        ReactiveFormsModule,
 | 
			
		||||
        AppCommonModule
 | 
			
		||||
    ],
 | 
			
		||||
    declarations: [
 | 
			
		||||
        ZoomToExtentComponent,
 | 
			
		||||
        ItemVectorSourceComponent,
 | 
			
		||||
        ItemLayersComponent,
 | 
			
		||||
        FileDropTargetComponent,
 | 
			
		||||
        MapComponent,
 | 
			
		||||
        MetaDataModalComponent,
 | 
			
		||||
        RotationResetComponent,
 | 
			
		||||
        MapSearchComponent,
 | 
			
		||||
        SelectPeriodModalComponent,
 | 
			
		||||
        LayerListComponent,
 | 
			
		||||
        LegendComponent,
 | 
			
		||||
        LayerVectorImageComponent,
 | 
			
		||||
        FeatureListComponent,
 | 
			
		||||
        WidgetHostDirective,
 | 
			
		||||
        FeatureListContainerComponent,
 | 
			
		||||
        FeatureListCroppingschemeComponent,
 | 
			
		||||
        FeatureListCropfieldComponent,
 | 
			
		||||
        FeatureListFeatureContainerComponent,
 | 
			
		||||
        FeatureListFeatureComponent,
 | 
			
		||||
        FeatureListFeatureCroppingschemeComponent,
 | 
			
		||||
        FeatureListFeatureCropfieldComponent,
 | 
			
		||||
        SelectedItemContainerComponent,
 | 
			
		||||
        SelectedItemComponent,
 | 
			
		||||
        SelectedItemCropfieldComponent,
 | 
			
		||||
        SelectedItemGeotiffComponent,
 | 
			
		||||
        SelectedItemTemporalComponent,
 | 
			
		||||
        SelectedItemShapeComponent,
 | 
			
		||||
        ItemListItemComponent,
 | 
			
		||||
        ItemListItemContainerComponent,
 | 
			
		||||
        ItemListComponent,
 | 
			
		||||
        ItemWidgetListComponent,
 | 
			
		||||
        WidgetStatusComponent,
 | 
			
		||||
        GpsLocation,
 | 
			
		||||
        PanToLocation,
 | 
			
		||||
        LayerSwitcher,
 | 
			
		||||
        HistogramDetailsComponent,
 | 
			
		||||
        StatisticsDetailsComponent,
 | 
			
		||||
        ifZoomToShowDirective,
 | 
			
		||||
        ZoomToShowAlert,
 | 
			
		||||
        LayerValuesComponent,
 | 
			
		||||
        GeometryThumbnailComponent
 | 
			
		||||
    ],
 | 
			
		||||
    exports: [
 | 
			
		||||
        ItemVectorSourceComponent,
 | 
			
		||||
        ItemLayersComponent,
 | 
			
		||||
        FileDropTargetComponent,
 | 
			
		||||
        MetaDataModalComponent,
 | 
			
		||||
        MapComponent,
 | 
			
		||||
        GpsLocation,
 | 
			
		||||
        PanToLocation,
 | 
			
		||||
        LayerSwitcher,
 | 
			
		||||
        FeatureListFeatureComponent,
 | 
			
		||||
        FeatureListFeatureCropfieldComponent,
 | 
			
		||||
        FeatureListFeatureCroppingschemeComponent,
 | 
			
		||||
        SelectedItemContainerComponent,
 | 
			
		||||
        SelectedItemComponent,
 | 
			
		||||
        SelectedItemCropfieldComponent,
 | 
			
		||||
        SelectedItemGeotiffComponent,
 | 
			
		||||
        SelectedItemTemporalComponent,
 | 
			
		||||
        SelectedItemShapeComponent,
 | 
			
		||||
        ItemListItemComponent,
 | 
			
		||||
        ItemListItemContainerComponent,
 | 
			
		||||
        ItemListComponent,
 | 
			
		||||
        ItemWidgetListComponent,
 | 
			
		||||
        WidgetStatusComponent,
 | 
			
		||||
        RotationResetComponent,
 | 
			
		||||
        MapSearchComponent,
 | 
			
		||||
        SelectPeriodModalComponent,
 | 
			
		||||
        LayerListComponent,
 | 
			
		||||
        LegendComponent,
 | 
			
		||||
        LayerVectorImageComponent,
 | 
			
		||||
        FeatureListComponent,
 | 
			
		||||
        WidgetHostDirective,
 | 
			
		||||
        FeatureListContainerComponent,
 | 
			
		||||
        FeatureListCroppingschemeComponent,
 | 
			
		||||
        FeatureListCropfieldComponent,
 | 
			
		||||
        FeatureListFeatureContainerComponent,
 | 
			
		||||
        ZoomToExtentComponent,
 | 
			
		||||
        ifZoomToShowDirective,
 | 
			
		||||
        ZoomToShowAlert,
 | 
			
		||||
        GeometryThumbnailComponent
 | 
			
		||||
    ],
 | 
			
		||||
    providers: [
 | 
			
		||||
        FeatureIconService,
 | 
			
		||||
        GeolocationService,
 | 
			
		||||
        DeviceOrientationService,
 | 
			
		||||
        TemporalService,
 | 
			
		||||
        { provide: AbstractFeatureListComponent, useClass: FeatureListCroppingschemeComponent, multi: true },
 | 
			
		||||
        { provide: AbstractFeatureListComponent, useClass: FeatureListCropfieldComponent, multi: true },
 | 
			
		||||
        { provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureComponent, multi: true },
 | 
			
		||||
        { provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureCroppingschemeComponent, multi: true },
 | 
			
		||||
        { provide: AbstractFeatureListFeatureComponent, useClass: FeatureListFeatureCropfieldComponent, multi: true },
 | 
			
		||||
        { provide: AbstractSelectedItemComponent, useClass: SelectedItemComponent, multi: true },
 | 
			
		||||
        { provide: AbstractSelectedItemComponent, useClass: SelectedItemCropfieldComponent, multi: true },
 | 
			
		||||
        { provide: AbstractSelectedItemComponent, useClass: SelectedItemGeotiffComponent, multi: true },
 | 
			
		||||
        { provide: AbstractSelectedItemComponent, useClass: SelectedItemTemporalComponent, multi: true },
 | 
			
		||||
        { provide: AbstractSelectedItemComponent, useClass: SelectedItemShapeComponent, multi: true },
 | 
			
		||||
        { provide: AbstractItemListItemComponent, useClass: ItemListItemComponent, multi: true },
 | 
			
		||||
        { provide: AbstractItemListComponent, useClass: ItemListComponent, multi: true }
 | 
			
		||||
    ]
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@ import { MapComponent } from 'ngx-openlayers';
 | 
			
		||||
import * as proj  from 'ol/proj';
 | 
			
		||||
import {Point,Geometry} from 'ol/geom';
 | 
			
		||||
import { GeoJSON } from 'ol/format';
 | 
			
		||||
import { Feature } from 'ol';
 | 
			
		||||
import { Feature} from 'ol';
 | 
			
		||||
 | 
			
		||||
export interface IDroppedFile {
 | 
			
		||||
  files: any,
 | 
			
		||||
@@ -21,7 +21,7 @@ export class FileDropTargetComponent implements OnInit, OnDestroy {
 | 
			
		||||
  element: Element;
 | 
			
		||||
  @Output() onFileDropped = new EventEmitter<IDroppedFile>();
 | 
			
		||||
  @Input() parentCode: string;
 | 
			
		||||
  @Input() features: Array<Feature>;
 | 
			
		||||
  @Input() features: Array<Feature<Geometry>>;
 | 
			
		||||
 | 
			
		||||
  constructor(private map: MapComponent) {
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
import { Component, OnInit, Input, ViewChild, ElementRef, OnChanges, SimpleChanges ,Host} from '@angular/core';
 | 
			
		||||
import { MapComponent } from 'ngx-openlayers';
 | 
			
		||||
import Overlay from 'ol/Overlay';
 | 
			
		||||
import  Overlay  from 'ol/Overlay';
 | 
			
		||||
import { fromLonLat, toLonLat } from 'ol/proj';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -52,7 +52,7 @@ export class GpsLocation  implements OnInit,OnChanges{
 | 
			
		||||
    this.rotate = "rotate(" + Math.round(this.heading) + " 500 500)";
 | 
			
		||||
    this.locTolerancePixels = this.locationTolerance;
 | 
			
		||||
    this.map.instance.addOverlay(this.instance);
 | 
			
		||||
    this.map.instance.getView().on('change:resolution', (evt) => {
 | 
			
		||||
    this.map.instance.getView().on('change:resolution', (evt:any) => {
 | 
			
		||||
      this.resolution = evt.target.get('resolution');
 | 
			
		||||
      this.recalcLocationTolerance();
 | 
			
		||||
    });
 | 
			
		||||
 
 | 
			
		||||
@@ -10,12 +10,15 @@ import * as proj from 'ol/proj';
 | 
			
		||||
import * as loadingstrategy from 'ol/loadingstrategy';
 | 
			
		||||
import * as style from 'ol/style';
 | 
			
		||||
import {Tile,Layer,Image} from 'ol/layer';
 | 
			
		||||
import {XYZ,ImageStatic,OSM,BingMaps,TileWMS,TileArcGISRest,TileJSON} from 'ol/source';
 | 
			
		||||
import {XYZ,ImageStatic,OSM,BingMaps,TileWMS,TileArcGISRest,TileJSON,Source} from 'ol/source';
 | 
			
		||||
import {Vector as VectorSource} from 'ol/source';
 | 
			
		||||
import { Vector as VectorLayer } from 'ol/layer';
 | 
			
		||||
import { VectorImage as VectorImageLayer } from 'ol/layer';
 | 
			
		||||
import VectorTileSource from 'ol/source/VectorTile';
 | 
			
		||||
import VectorTileLayer from 'ol/layer/VectorTile';
 | 
			
		||||
import {GeoJSON,MVT} from 'ol/format';
 | 
			
		||||
import { Geometry } from 'ol/geom';
 | 
			
		||||
import BaseLayer from 'ol/layer/Base';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'fm-map-item-layers',
 | 
			
		||||
@@ -30,11 +33,13 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
  @Input() itemLayer: IItemLayer;
 | 
			
		||||
  @Output() onFeatureSelected: EventEmitter<any> = new EventEmitter<any>();
 | 
			
		||||
  @Output() onFeatureHover: EventEmitter<any> = new EventEmitter<any>();
 | 
			
		||||
  @Output() onPrerender: EventEmitter<any> = new EventEmitter<any>();
 | 
			
		||||
  private _apiEndPoint: string;
 | 
			
		||||
  private initialized:boolean = false;
 | 
			
		||||
  private mapEventHandlerInstalled = false;
 | 
			
		||||
  private topLayerPrerenderEventhandlerInstalled = false;
 | 
			
		||||
  private selectedFeatures = {};
 | 
			
		||||
  private selectionLayer:Layer = null;
 | 
			
		||||
  private selectionLayer:Layer<Source> = null;
 | 
			
		||||
  
 | 
			
		||||
  constructor(private itemService: ItemService, private map: MapComponent, public appConfig: AppConfig) {
 | 
			
		||||
    super(map);
 | 
			
		||||
@@ -119,9 +124,9 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
    return this.styleCache[key];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  createGeotiffLayer(item:IItem,itemLayer:IItemLayer):Layer {
 | 
			
		||||
  createGeotiffLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
 | 
			
		||||
    var layerIndex = -1;
 | 
			
		||||
    var layer: Layer = null;  
 | 
			
		||||
    var layer: Layer<Source> = null;  
 | 
			
		||||
    layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : item.data.layers[0].index;
 | 
			
		||||
    let source = new XYZ({ maxZoom: 19, minZoom: 1, url: `${this._apiEndPoint}/api/v1/items/${item.code}/tiles/${layerIndex}/{z}/{x}/{y}.png?v=${Date.parse(item.updated)}` });
 | 
			
		||||
    layer = new Tile({ source: source });
 | 
			
		||||
@@ -134,17 +139,15 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
    }
 | 
			
		||||
    if (l && l.rendering && l.rendering.renderoutputType == "Image") {
 | 
			
		||||
      var ri = l.rendering as IRenderoutputImage;  
 | 
			
		||||
      // convert to EPSG:4326 asworkaround for cesium   
 | 
			
		||||
      var projectedExtent = proj.transformExtent( ri.extent, 'EPSG:3857','EPSG:4326');
 | 
			
		||||
      let source = new ImageStatic({ imageExtent:projectedExtent,projection:'EPSG:4326',  crossOrigin: 'use-credentials', url: `${this._apiEndPoint}/api/v1/items/${item.code}/mapimage/${layerIndex}?v=${Date.parse(item.updated)}` });
 | 
			
		||||
      let source = new ImageStatic({ imageExtent:ri.extent,projection:'EPSG:3857',  crossOrigin: 'use-credentials', url: `${this._apiEndPoint}/api/v1/items/${item.code}/mapimage/${layerIndex}?v=${Date.parse(item.updated)}` });
 | 
			
		||||
      layer = new Image({ source: source });
 | 
			
		||||
    }
 | 
			
		||||
    return layer;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  createShapeLayer(item:IItem,itemLayer:IItemLayer):Layer {
 | 
			
		||||
  createShapeLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
 | 
			
		||||
    var layerIndex = -1;
 | 
			
		||||
    var layer: Layer = null; 
 | 
			
		||||
    var layer: Layer<Source> = null; 
 | 
			
		||||
    layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : item.data.layers[0].index;
 | 
			
		||||
    var data = item.data;
 | 
			
		||||
    var l:ILayer = (data && data.layers && data.layers.length > 0) ? data.layers[layerIndex] : null;
 | 
			
		||||
@@ -177,7 +180,7 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
      let source = new VectorSource({
 | 
			
		||||
        strategy: loadingstrategy.bbox,
 | 
			
		||||
        loader: function (extent: Extent, resolution: number, projection: Projection) {
 | 
			
		||||
          var source = this as VectorSource;
 | 
			
		||||
          var source = this as VectorSource<Geometry>;
 | 
			
		||||
          __this.itemService.getItemFeatures(item.code, extent, projection.getCode(), layerIndex).subscribe(function (data) {
 | 
			
		||||
            var features = format.readFeatures(data);
 | 
			
		||||
            for (let f of features) {
 | 
			
		||||
@@ -189,7 +192,8 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
          });
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
      layer = new VectorLayer({
 | 
			
		||||
      layer = new VectorImageLayer({
 | 
			
		||||
        declutter: true,
 | 
			
		||||
        source: source,
 | 
			
		||||
        style: (feature) => {
 | 
			
		||||
          var key =feature.get("code") + "_" + feature.get("color");
 | 
			
		||||
@@ -230,16 +234,16 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
    return layer;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  createSelectionLayer(itemLayer:IItemLayer):Layer {
 | 
			
		||||
  createSelectionLayer(itemLayer:IItemLayer):Layer<Source> {
 | 
			
		||||
    var layerIndex = -1;
 | 
			
		||||
    var layer: Layer = null; 
 | 
			
		||||
    var layer: Layer<Source> = null; 
 | 
			
		||||
    layerIndex = itemLayer.layerIndex != -1 ? itemLayer.layerIndex : itemLayer.item.data.layers[0].index;
 | 
			
		||||
    var data = itemLayer.item.data;
 | 
			
		||||
    var l:ILayer = (data && data.layers && data.layers.length > 0) ? data.layers[layerIndex] : null;
 | 
			
		||||
    if (l && l.rendering && l.rendering.renderoutputType == "VectorTiles") {
 | 
			
		||||
      return new VectorTileLayer({
 | 
			
		||||
        renderMode: 'vector',
 | 
			
		||||
        source: itemLayer.layer.getSource(),
 | 
			
		||||
        source: (itemLayer.layer as VectorTileLayer).getSource(),
 | 
			
		||||
        style: (feature) => {
 | 
			
		||||
          if (feature.getId() in this.selectedFeatures) {
 | 
			
		||||
 | 
			
		||||
@@ -260,9 +264,9 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
    return null;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  createExternalLayer(item:IItem,itemLayer:IItemLayer):Layer {
 | 
			
		||||
  createExternalLayer(item:IItem,itemLayer:IItemLayer):Layer<Source> {
 | 
			
		||||
    let data = item.data as ILayerData;
 | 
			
		||||
    var layer: Layer = null; 
 | 
			
		||||
    var layer: Layer<Source> = null; 
 | 
			
		||||
    switch (data.interfaceType) {
 | 
			
		||||
      case 'OSM': {
 | 
			
		||||
        let source = new OSM();
 | 
			
		||||
@@ -312,8 +316,8 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
    return layer;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  createLayer(itemLayer: IItemLayer): Layer {
 | 
			
		||||
    var layer: Layer = null;   
 | 
			
		||||
  createLayer(itemLayer: IItemLayer): Layer<Source> {
 | 
			
		||||
    var layer: Layer<Source> = null;   
 | 
			
		||||
    var layerIndex = -1;
 | 
			
		||||
    if (itemLayer.item.itemType == 'vnd.farmmaps.itemtype.geotiff.processed') {
 | 
			
		||||
      layer = this.createGeotiffLayer(itemLayer.item,itemLayer);
 | 
			
		||||
@@ -360,7 +364,31 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  addOrUpdateOlLayer(itemLayer:IItemLayer,index:number):Layer {
 | 
			
		||||
  installTopLayerPrerenderEventhandler(olLayer : Layer<Source>) {
 | 
			
		||||
    if(!this.topLayerPrerenderEventhandlerInstalled  && this.onPrerender.observers.length > 0  && olLayer) {
 | 
			
		||||
      if(this.instance.getVisible()) {
 | 
			
		||||
        olLayer.on('prerender',this.topLayerPrerenderEventhandler);
 | 
			
		||||
        olLayer.on('postrender',this.topLayerPostrenderEventhandler);
 | 
			
		||||
        this.topLayerPrerenderEventhandlerInstalled = true;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  unInstallTopLayerPrerenderEventhandler() {
 | 
			
		||||
    if(this.topLayerPrerenderEventhandlerInstalled && this.onPrerender.observers.length > 0 )
 | 
			
		||||
    {
 | 
			
		||||
      if(this.instance.getVisible()) {
 | 
			
		||||
        var olLayers = this.instance.getLayers().getArray().forEach((l:any) => {
 | 
			
		||||
          l.un('prerender',this.topLayerPrerenderEventhandler);
 | 
			
		||||
          l.un('postrender',this.topLayerPostrenderEventhandler);
 | 
			
		||||
        });
 | 
			
		||||
        this.topLayerPrerenderEventhandlerInstalled = false;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  addOrUpdateOlLayer(itemLayer:IItemLayer,index:number):Layer<Source> {
 | 
			
		||||
    if(!itemLayer) return null;
 | 
			
		||||
    var olLayers = this.instance.getLayers();
 | 
			
		||||
    var layer = itemLayer.layer;
 | 
			
		||||
@@ -384,10 +412,19 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
    return layer;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  updateLayers(itemLayers: IItemLayer[]) {
 | 
			
		||||
    let newLayers: IItemLayer[] = [];
 | 
			
		||||
    if (itemLayers) {
 | 
			
		||||
      itemLayers.forEach((itemLayer, index) => {
 | 
			
		||||
  updateLayers(itemLayers: IItemLayer[] | IItemLayer) {
 | 
			
		||||
    this.unInstallTopLayerPrerenderEventhandler();
 | 
			
		||||
    let dataLayer = false;
 | 
			
		||||
    var ils:IItemLayer[] = [];
 | 
			
		||||
    if(Array.isArray(itemLayers)) {
 | 
			
		||||
       ils = itemLayers;
 | 
			
		||||
    } else {
 | 
			
		||||
      dataLayer=true;
 | 
			
		||||
       ils=[itemLayers];
 | 
			
		||||
    }
 | 
			
		||||
    let newLayers: Layer<Source>[] = [];
 | 
			
		||||
    if (ils) {
 | 
			
		||||
      ils.forEach((itemLayer, index) => {
 | 
			
		||||
        if(itemLayer.item.itemType ==  'vnd.farmmaps.itemtype.temporal') {
 | 
			
		||||
          let il = itemLayer as ITemporalItemLayer;
 | 
			
		||||
          let previousLayer = this.addOrUpdateOlLayer(il.previousItemLayer,newLayers.length);          
 | 
			
		||||
@@ -396,9 +433,11 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
          if(selectedLayer) newLayers.push(selectedLayer);
 | 
			
		||||
          let nextLayer = this.addOrUpdateOlLayer(il.nextItemLayer,newLayers.length);
 | 
			
		||||
          if(nextLayer) newLayers.push(nextLayer);
 | 
			
		||||
          this.installTopLayerPrerenderEventhandler(selectedLayer);
 | 
			
		||||
        } else {
 | 
			
		||||
          let layer = this.addOrUpdateOlLayer(itemLayer,newLayers.length);
 | 
			
		||||
          if(layer) newLayers.push(layer);           
 | 
			
		||||
          if(layer) newLayers.push(layer);    
 | 
			
		||||
          this.installTopLayerPrerenderEventhandler(layer);       
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
      // Remove the layers that have disapeared from childrenLayers
 | 
			
		||||
@@ -407,17 +446,27 @@ export class ItemLayersComponent extends LayerGroupComponent implements OnChange
 | 
			
		||||
        olLayers.removeAt(newLayers.length);
 | 
			
		||||
      }
 | 
			
		||||
      this.selectionLayer=null;
 | 
			
		||||
      if(this.mapEventHandlerInstalled && itemLayers.length==1 && this.getItemlayer(itemLayers[0]).item.itemType == 'vnd.farmmaps.itemtype.shape.processed') {
 | 
			
		||||
      if(this.mapEventHandlerInstalled && ils.length==1 && this.getItemlayer(itemLayers[0]).item.itemType == 'vnd.farmmaps.itemtype.shape.processed') {
 | 
			
		||||
        this.selectionLayer = this.createSelectionLayer(this.getItemlayer(itemLayers[0]));
 | 
			
		||||
        if(this.selectionLayer) olLayers.push(this.selectionLayer)
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  topLayerPrerenderEventhandler = (event) => {
 | 
			
		||||
     this.onPrerender.emit(event);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  topLayerPostrenderEventhandler = (event) => {
 | 
			
		||||
    const ctx = event.context;
 | 
			
		||||
    ctx.restore();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  mapEventHandler = (event) => {
 | 
			
		||||
    // select only when having observers
 | 
			
		||||
    if(event.type === 'click' && !this.onFeatureSelected.observers.length) return;
 | 
			
		||||
    if(event.type === 'pointermove' && !this.onFeatureHover.observers.length) return;
 | 
			
		||||
    if(event.type === 'pointermove' && !this.onFeatureHover.observers.length) return;    
 | 
			
		||||
    let itemLayer= this.getItemlayer(this.itemLayer);
 | 
			
		||||
    if(itemLayer && itemLayer.layer) {
 | 
			
		||||
       this.selectedFeatures = {};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,17 @@
 | 
			
		||||
import { Component, Host, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, forwardRef, Inject, InjectionToken } from '@angular/core';
 | 
			
		||||
import { Component,  Host, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, forwardRef, Inject, InjectionToken } from '@angular/core';
 | 
			
		||||
import { LayerVectorComponent, SourceVectorComponent, MapComponent } from 'ngx-openlayers';
 | 
			
		||||
import { ItemService,ItemTypeService,IItem, IItemType } from '@farmmaps/common';
 | 
			
		||||
 | 
			
		||||
import { Feature } from 'ol';
 | 
			
		||||
import { Point } from 'ol/geom';
 | 
			
		||||
import { Point,Geometry } from 'ol/geom';
 | 
			
		||||
import { MapBrowserEvent } from 'ol';
 | 
			
		||||
import { Types } from 'ol/MapBrowserEventType';
 | 
			
		||||
import * as style from 'ol/style';
 | 
			
		||||
import * as color from 'ol/color';
 | 
			
		||||
import * as loadingstrategy from 'ol/loadingstrategy';
 | 
			
		||||
import * as condition from 'ol/events/condition';
 | 
			
		||||
import * as extent from 'ol/extent';
 | 
			
		||||
import {Vector,Cluster} from 'ol/source';
 | 
			
		||||
import {Vector,Cluster,Source} from 'ol/source';
 | 
			
		||||
import {Layer} from 'ol/layer';
 | 
			
		||||
import {GeoJSON} from 'ol/format';
 | 
			
		||||
import {Select} from 'ol/interaction';
 | 
			
		||||
@@ -25,17 +26,17 @@ import {FeatureIconService} from '../../../services/feature-icon.service';
 | 
			
		||||
  ]
 | 
			
		||||
})
 | 
			
		||||
export class ItemVectorSourceComponent extends SourceVectorComponent implements OnInit, OnChanges {
 | 
			
		||||
  instance: Vector;
 | 
			
		||||
  instance: Vector<Geometry>;
 | 
			
		||||
  private _format: GeoJSON;
 | 
			
		||||
  private _select: Select;
 | 
			
		||||
  private _hoverSelect: Select;
 | 
			
		||||
  private _iconScale: number = 0.05;
 | 
			
		||||
  @Input() features: Array<Feature>;
 | 
			
		||||
  @Input() selectedFeature: Feature;
 | 
			
		||||
  @Input() features: Array<Feature<Geometry>>;
 | 
			
		||||
  @Input() selectedFeature: Feature<Geometry>;
 | 
			
		||||
  @Input() selectedItem: IItem;
 | 
			
		||||
  @Input() styles:IStyles;
 | 
			
		||||
  @Output() onFeatureSelected: EventEmitter<Feature> = new EventEmitter<Feature>();
 | 
			
		||||
  @Output() onFeatureHover: EventEmitter<Feature> = new EventEmitter<Feature>();
 | 
			
		||||
  @Output() onFeatureSelected: EventEmitter<Feature<Geometry>> = new EventEmitter<Feature<Geometry>>();
 | 
			
		||||
  @Output() onFeatureHover: EventEmitter<Feature<Geometry>> = new EventEmitter<Feature<Geometry>>();
 | 
			
		||||
  private stylesCache:IStyles = {};
 | 
			
		||||
 | 
			
		||||
  constructor(@Host() private layer: LayerVectorComponent, private itemService: ItemService, private map: MapComponent, private itemTypeService: ItemTypeService,private featureIconService$:FeatureIconService) {
 | 
			
		||||
@@ -43,7 +44,7 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
 | 
			
		||||
    this._format = new GeoJSON();
 | 
			
		||||
  }  
 | 
			
		||||
 | 
			
		||||
  geometry(feature: Feature) {
 | 
			
		||||
  geometry(feature: Feature<Geometry>) {
 | 
			
		||||
    let view = this.map.instance.getView();
 | 
			
		||||
    let resolution = view.getResolution();
 | 
			
		||||
    var geometry = feature.getGeometry();
 | 
			
		||||
@@ -55,9 +56,9 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
 | 
			
		||||
    return geometry;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
  getSelectedStyle(feature:Feature):style.Style {
 | 
			
		||||
  getSelectedStyle(feature:Feature<Geometry>):style.Style {
 | 
			
		||||
    let key = feature.get('itemType')+"_selected";
 | 
			
		||||
    let evaluatedStyle =null;
 | 
			
		||||
    let evaluatedStyle: style.Style =undefined;
 | 
			
		||||
    var styleEntry = this.stylesCache[key];    
 | 
			
		||||
    if(styleEntry) {
 | 
			
		||||
      if(typeof styleEntry === 'function')  {
 | 
			
		||||
@@ -66,12 +67,12 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
 | 
			
		||||
        evaluatedStyle = styleEntry;
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      evaluatedStyle = this.stylesCache["selected"];
 | 
			
		||||
      evaluatedStyle = this.stylesCache["selected"] as style.Style;
 | 
			
		||||
    }    
 | 
			
		||||
    if(evaluatedStyle ) {
 | 
			
		||||
      evaluatedStyle.setGeometry((feature) => this.geometry(feature));
 | 
			
		||||
      evaluatedStyle .setGeometry((feature:Feature<Geometry>) => this.geometry(feature));
 | 
			
		||||
    } 
 | 
			
		||||
    return evaluatedStyle
 | 
			
		||||
    return evaluatedStyle as style.Style
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ngOnInit() {
 | 
			
		||||
@@ -80,17 +81,17 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
 | 
			
		||||
    this._select = new Select({
 | 
			
		||||
      style:null,
 | 
			
		||||
      hitTolerance: 10,
 | 
			
		||||
      layers: [this.layer.instance as Layer]
 | 
			
		||||
      layers: [this.layer.instance as Layer<Source>]
 | 
			
		||||
    });
 | 
			
		||||
    this._hoverSelect = new Select({
 | 
			
		||||
      style: (feature) => {        
 | 
			
		||||
      style: (feature:Feature<Geometry>) => {        
 | 
			
		||||
        return this.getSelectedStyle(feature);
 | 
			
		||||
      },
 | 
			
		||||
      hitTolerance: 10,
 | 
			
		||||
      condition: (e: MapBrowserEvent) => {
 | 
			
		||||
      condition: (e: MapBrowserEvent<UIEvent>) => {
 | 
			
		||||
        return e.type == 'pointermove';
 | 
			
		||||
      },
 | 
			
		||||
      layers: [this.layer.instance as Layer]
 | 
			
		||||
      layers: [this.layer.instance as Layer<Source>]
 | 
			
		||||
    });
 | 
			
		||||
    this.map.instance.addInteraction(this._select);
 | 
			
		||||
    this.map.instance.addInteraction(this._hoverSelect);      
 | 
			
		||||
@@ -132,7 +133,7 @@ export class ItemVectorSourceComponent extends SourceVectorComponent implements
 | 
			
		||||
              fill: new style.Fill({
 | 
			
		||||
                color: fillColor
 | 
			
		||||
              }),
 | 
			
		||||
              geometry:(feature) => this.geometry(feature)
 | 
			
		||||
              geometry:(feature:Feature<Geometry>) => this.geometry(feature)
 | 
			
		||||
            });                   
 | 
			
		||||
        } else {
 | 
			
		||||
          key = 'file';
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user