Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
ac7848a462 | |||
76037fba47 | |||
36a7347a3d | |||
d748505b8a | |||
def1a8add3 | |||
1f75449985 | |||
d2380c2192 | |||
1e3fd5830d | |||
3d9c7bbec7 | |||
884186e429 | |||
dd3fc64dee | |||
45db664a3b | |||
8e79dafb5b | |||
a753df98ec | |||
22aad56954 |
@ -1,4 +1,10 @@
|
|||||||
image: hosttoday/ht-docker-node:npmts
|
# gitzone standard
|
||||||
|
image: hosttoday/ht-docker-node:npmci
|
||||||
|
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- .yarn/
|
||||||
|
key: "$CI_BUILD_STAGE"
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- test
|
- test
|
||||||
@ -10,6 +16,7 @@ testLEGACY:
|
|||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- npmci test legacy
|
- npmci test legacy
|
||||||
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
@ -18,6 +25,7 @@ testLTS:
|
|||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- npmci test lts
|
- npmci test lts
|
||||||
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
@ -25,6 +33,7 @@ testSTABLE:
|
|||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- npmci test stable
|
- npmci test stable
|
||||||
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- docker
|
||||||
|
|
||||||
@ -47,10 +56,13 @@ trigger:
|
|||||||
- docker
|
- docker
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
image: hosttoday/ht-docker-node:npmpage
|
image: hosttoday/ht-docker-node:npmci
|
||||||
stage: pages
|
stage: pages
|
||||||
script:
|
script:
|
||||||
- npmci command npmpage --host gitlab
|
- npmci command yarn global add npmpage
|
||||||
|
- npmci command npmpage --publish gitlab
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
artifacts:
|
artifacts:
|
||||||
|
4
.npmignore
Normal file
4
.npmignore
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
coverage/
|
||||||
|
pages/
|
||||||
|
public/
|
||||||
|
node_modules/
|
34
README.md
34
README.md
@ -1,14 +1,33 @@
|
|||||||
# tsclass
|
# tsclass
|
||||||
common classes for TypeScript.
|
common classes for TypeScript
|
||||||
|
|
||||||
|
## Availabililty
|
||||||
|
[](https://www.npmjs.com/package/tsclass)
|
||||||
|
[](https://GitLab.com/tsclass/tsclass)
|
||||||
|
[](https://github.com/tsclass/tsclass)
|
||||||
|
[](https://tsclass.gitlab.io/tsclass/)
|
||||||
|
|
||||||
|
## Status for master
|
||||||
|
[](https://GitLab.com/tsclass/tsclass/commits/master)
|
||||||
|
[](https://GitLab.com/tsclass/tsclass/commits/master)
|
||||||
|
[](https://www.npmjs.com/package/tsclass)
|
||||||
|
[](https://david-dm.org/tsclass/tsclass)
|
||||||
|
[](https://www.bithound.io/github/tsclass/tsclass/master/dependencies/npm)
|
||||||
|
[](https://www.bithound.io/github/tsclass/tsclass)
|
||||||
|
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||||
|
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||||
|
[](http://standardjs.com/)
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
tsclass exposes many commonly used objects as classes to inherit (-> extends keyword) from for individual implementations.
|
Use TypeScript for best in class instellisense.
|
||||||
|
|
||||||
|
tsclass exposes many commonly used objects as interface to implement (-> extends keyword) by individual implementations.
|
||||||
They come complete with best in class intellisense and are easy to require.
|
They come complete with best in class intellisense and are easy to require.
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
import { TscInvoice } from 'tsclass/dist/invoice'
|
import { IInvoice } from 'tsclass'
|
||||||
|
|
||||||
class myOwnInvoice extends TscInvoice {
|
class myOwnInvoice implements IInvoice {
|
||||||
constructor(){
|
constructor(){
|
||||||
super() // you need to call super() in the constructor
|
super() // you need to call super() in the constructor
|
||||||
}
|
}
|
||||||
@ -29,3 +48,10 @@ class myOwnInvoice extends TscInvoice {
|
|||||||
|
|
||||||
|
|
||||||
> The modules in bold letters exist as own modules and can be used seperately
|
> The modules in bold letters exist as own modules and can be used seperately
|
||||||
|
|
||||||
|
For further information read the linked docs at the top of this README.
|
||||||
|
|
||||||
|
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||||
|
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
||||||
|
|
||||||
|
[](https://push.rocks)
|
||||||
|
11
dist/tsclass.article.d.ts → dist/article.d.ts
vendored
11
dist/tsclass.article.d.ts → dist/article.d.ts
vendored
@ -1,5 +1,5 @@
|
|||||||
import { TscAuthor } from './tsclass.author';
|
import { IAuthor } from './author';
|
||||||
export declare class TscArticle {
|
export interface IArticle {
|
||||||
/**
|
/**
|
||||||
* the title of an article
|
* the title of an article
|
||||||
*/
|
*/
|
||||||
@ -7,10 +7,13 @@ export declare class TscArticle {
|
|||||||
/**
|
/**
|
||||||
* the Author of an article
|
* the Author of an article
|
||||||
*/
|
*/
|
||||||
author: TscAuthor;
|
author: IAuthor;
|
||||||
/**
|
/**
|
||||||
* the content of an article
|
* the content of an article
|
||||||
*/
|
*/
|
||||||
content: string;
|
content: string;
|
||||||
tags: any;
|
/**
|
||||||
|
* the tags of an article
|
||||||
|
*/
|
||||||
|
tags: string[];
|
||||||
}
|
}
|
3
dist/article.js
vendored
Normal file
3
dist/article.js
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2FydGljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
20
dist/author.d.ts
vendored
Normal file
20
dist/author.d.ts
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import { IDate } from './date';
|
||||||
|
import { IArticle } from './article';
|
||||||
|
export interface IAuthor {
|
||||||
|
/**
|
||||||
|
* the first name of an author
|
||||||
|
*/
|
||||||
|
firstName: string;
|
||||||
|
/**
|
||||||
|
* the surname of an author
|
||||||
|
*/
|
||||||
|
surName: string;
|
||||||
|
/**
|
||||||
|
* the birthday of an author
|
||||||
|
*/
|
||||||
|
birthday: IDate;
|
||||||
|
/**
|
||||||
|
* articles of an author
|
||||||
|
*/
|
||||||
|
articles: IArticle[];
|
||||||
|
}
|
3
dist/author.js
vendored
Normal file
3
dist/author.js
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvYXV0aG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
14
dist/company.d.ts
vendored
Normal file
14
dist/company.d.ts
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import { IDate } from './index';
|
||||||
|
/**
|
||||||
|
* describes a company's lifecycle state
|
||||||
|
*/
|
||||||
|
export declare type TCompanyStatus = 'planed' | 'founding' | 'active' | 'liquidation' | 'closed';
|
||||||
|
/**
|
||||||
|
* describes a company
|
||||||
|
*/
|
||||||
|
export interface ICompany {
|
||||||
|
name: string;
|
||||||
|
foundedDate: IDate;
|
||||||
|
closedDate: IDate;
|
||||||
|
status: TCompanyStatus;
|
||||||
|
}
|
3
dist/company.js
vendored
Normal file
3
dist/company.js
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NvbXBhbnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
3
dist/tsclass.date.d.ts → dist/date.d.ts
vendored
3
dist/tsclass.date.d.ts → dist/date.d.ts
vendored
@ -1,6 +1,5 @@
|
|||||||
export declare class Date {
|
export interface IDate {
|
||||||
day: number;
|
day: number;
|
||||||
month: number;
|
month: number;
|
||||||
year: number;
|
year: number;
|
||||||
constructor();
|
|
||||||
}
|
}
|
3
dist/date.js
vendored
Normal file
3
dist/date.js
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
8
dist/index.d.ts
vendored
8
dist/index.d.ts
vendored
@ -1,2 +1,6 @@
|
|||||||
export * from "./tsclass.date";
|
export * from './article';
|
||||||
export * from "./tsclass.time";
|
export * from './author';
|
||||||
|
export * from './company';
|
||||||
|
export * from './date';
|
||||||
|
export * from './invoice';
|
||||||
|
export * from './time';
|
||||||
|
8
dist/index.js
vendored
8
dist/index.js
vendored
@ -1,7 +1,3 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
function __export(m) {
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
||||||
}
|
|
||||||
__export(require("./tsclass.date"));
|
|
||||||
__export(require("./tsclass.time"));
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsb0NBQStCO0FBQy9CLG9DQUErQiJ9
|
|
2
dist/invoice.d.ts
vendored
Normal file
2
dist/invoice.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export interface IInvoice {
|
||||||
|
}
|
3
dist/invoice.js
vendored
Normal file
3
dist/invoice.js
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2ludm9pY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
2
dist/time.d.ts
vendored
Normal file
2
dist/time.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export interface ITime {
|
||||||
|
}
|
3
dist/time.js
vendored
Normal file
3
dist/time.js
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3RpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
5
dist/tsclass.article.js
vendored
5
dist/tsclass.article.js
vendored
@ -1,5 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
class TscArticle {
|
|
||||||
}
|
|
||||||
exports.TscArticle = TscArticle;
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNjbGFzcy5hcnRpY2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHNjbGFzcy5hcnRpY2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQTtDQWlCQztBQWpCRCxnQ0FpQkMifQ==
|
|
2
dist/tsclass.author.d.ts
vendored
2
dist/tsclass.author.d.ts
vendored
@ -1,2 +0,0 @@
|
|||||||
export declare class TscAuthor {
|
|
||||||
}
|
|
5
dist/tsclass.author.js
vendored
5
dist/tsclass.author.js
vendored
@ -1,5 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
class TscAuthor {
|
|
||||||
}
|
|
||||||
exports.TscAuthor = TscAuthor;
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNjbGFzcy5hdXRob3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90c2NsYXNzLmF1dGhvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Q0FDQztBQURELDhCQUNDIn0=
|
|
7
dist/tsclass.date.js
vendored
7
dist/tsclass.date.js
vendored
@ -1,7 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
class Date {
|
|
||||||
constructor() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.Date = Date;
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNjbGFzcy5kYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHNjbGFzcy5kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtJQUlJO0lBRUEsQ0FBQztDQUNKO0FBUEQsb0JBT0MifQ==
|
|
5
dist/tsclass.time.d.ts
vendored
5
dist/tsclass.time.d.ts
vendored
@ -1,5 +0,0 @@
|
|||||||
export declare class Time {
|
|
||||||
constructor();
|
|
||||||
readonly linuxMilliS: number;
|
|
||||||
readonly linuxS: number;
|
|
||||||
}
|
|
12
dist/tsclass.time.js
vendored
12
dist/tsclass.time.js
vendored
@ -1,12 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
class Time {
|
|
||||||
constructor() { }
|
|
||||||
get linuxMilliS() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
get linuxS() {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
exports.Time = Time;
|
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNjbGFzcy50aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdHNjbGFzcy50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtJQUNJLGdCQUFjLENBQUM7SUFDZixJQUFJLFdBQVc7UUFDWCxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQ1osQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDWixDQUFDO0NBRUo7QUFWRCxvQkFVQyJ9
|
|
7
npmextra.json
Normal file
7
npmextra.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"npmci": {
|
||||||
|
"globalNpmTools": [
|
||||||
|
"npmts"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "tsclass",
|
"name": "tsclass",
|
||||||
"version": "1.0.1",
|
"version": "1.0.7",
|
||||||
"description": "common classes for TypeScript",
|
"description": "common classes for TypeScript",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"typings": "dist/index.d.ts",
|
"typings": "dist/index.d.ts",
|
||||||
@ -20,8 +20,5 @@
|
|||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/tsclass/tsclass/issues"
|
"url": "https://github.com/tsclass/tsclass/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/tsclass/tsclass#readme",
|
"homepage": "https://github.com/tsclass/tsclass#readme"
|
||||||
"devDependencies": {
|
|
||||||
"npmts": "^5.1.5"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { TscAuthor } from './author'
|
import { IAuthor } from './author'
|
||||||
|
|
||||||
export class TscArticle {
|
export interface IArticle {
|
||||||
/**
|
/**
|
||||||
* the title of an article
|
* the title of an article
|
||||||
*/
|
*/
|
||||||
@ -9,7 +9,7 @@ export class TscArticle {
|
|||||||
/**
|
/**
|
||||||
* the Author of an article
|
* the Author of an article
|
||||||
*/
|
*/
|
||||||
author: TscAuthor
|
author: IAuthor
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the content of an article
|
* the content of an article
|
||||||
|
25
ts/author.ts
25
ts/author.ts
@ -1,2 +1,25 @@
|
|||||||
export class TscAuthor {
|
import { IDate } from './date'
|
||||||
|
import { IArticle } from './article'
|
||||||
|
|
||||||
|
export interface IAuthor {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the first name of an author
|
||||||
|
*/
|
||||||
|
firstName: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the surname of an author
|
||||||
|
*/
|
||||||
|
surName: string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the birthday of an author
|
||||||
|
*/
|
||||||
|
birthday: IDate
|
||||||
|
|
||||||
|
/**
|
||||||
|
* articles of an author
|
||||||
|
*/
|
||||||
|
articles: IArticle[]
|
||||||
}
|
}
|
16
ts/company.ts
Normal file
16
ts/company.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { IDate } from './index'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* describes a company's lifecycle state
|
||||||
|
*/
|
||||||
|
export type TCompanyStatus = 'planed' | 'founding' | 'active' | 'liquidation' | 'closed'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* describes a company
|
||||||
|
*/
|
||||||
|
export interface ICompany {
|
||||||
|
name: string
|
||||||
|
foundedDate: IDate
|
||||||
|
closedDate: IDate
|
||||||
|
status: TCompanyStatus
|
||||||
|
}
|
@ -1,8 +1,5 @@
|
|||||||
export class Date {
|
export interface IDate {
|
||||||
day: number
|
day: number
|
||||||
month: number
|
month: number
|
||||||
year: number
|
year: number
|
||||||
constructor(){
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,2 +1,6 @@
|
|||||||
export * from "./tsclass.date";
|
export * from './article'
|
||||||
export * from "./tsclass.time";
|
export * from './author'
|
||||||
|
export * from './company'
|
||||||
|
export * from './date'
|
||||||
|
export * from './invoice'
|
||||||
|
export * from './time'
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
export class TscInvoice {
|
export interface IInvoice {
|
||||||
|
|
||||||
}
|
}
|
10
ts/time.ts
10
ts/time.ts
@ -1,11 +1,3 @@
|
|||||||
export class Time {
|
export interface ITime {
|
||||||
constructor(){}
|
|
||||||
get linuxMilliS():number {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
get linuxS():number {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"version": false,
|
|
||||||
"dependencies": {},
|
|
||||||
"ambientDependencies": {
|
|
||||||
"colors": "registry:dt/colors#0.6.0-1+20160501135139",
|
|
||||||
"node": "registry:dt/node#4.0.0+20160501135006"
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user