[WIP] proto3 proposal #17
|
@ -1,20 +0,0 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package pb;
|
||||
|
||||
enum KeyType {
|
||||
UNKNOWN_PUBLIC_KEY_TYPE = 0;
|
||||
NIST256p = 1;
|
||||
NIST384p = 2;
|
||||
SECP256k1 = 3;
|
||||
}
|
||||
|
||||
message Certificate {
|
||||
enum Version {
|
||||
UNKNOWN_VERSION = 0;
|
||||
_0_0_1 = 1;
|
||||
}
|
||||
required Version version = 1;
|
||||
required KeyType keyType = 2;
|
||||
required bytes publicKey = 4;
|
||||
}
|
7
proto/channel.proto
Normal file
|
@ -0,0 +1,7 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package pb;
|
||||
|
||||
message Channel {
|
||||
bytes public_key = 1;
|
||||
}
|
||||
yes yes
|
|
@ -1,24 +1,18 @@
|
|||
Do we need this? Do we need this?
Do we need this? Do we need this?
|
||||
syntax = "proto2";
|
||||
Do we need this? Do we need this?
|
||||
syntax = "proto3";
|
||||
Do we need this? Do we need this?
|
||||
|
||||
package pb;
|
||||
|
||||
import "stream.proto";
|
||||
import "certificate.proto";
|
||||
Do we need this? Do we need this?
|
||||
import "signature.proto";
|
||||
Do we need this? Do we need this?
|
||||
import "channel.proto";
|
||||
Do we need this? Do we need this?
|
||||
|
||||
message Claim {
|
||||
enum Version {
|
||||
Do we need this? Do we need this?
|
||||
UNKNOWN_VERSION = 0;
|
||||
Do we need this? Do we need this?
|
||||
_0_0_1 = 1;
|
||||
Do we need this? Do we need this?
|
||||
enum Type {
|
||||
Do we need this? Do we need this?
|
||||
UNKNOWN = 0;
|
||||
Do we need this? Do we need this?
|
||||
STREAM = 1;
|
||||
Do we need this? Do we need this?
|
||||
CHANNEL = 2;
|
||||
Do we need this? Do we need this?
|
||||
}
|
||||
required Version version = 1;
|
||||
Do we need this? Do we need this?
|
||||
enum ClaimType {
|
||||
Do we need this? Do we need this?
|
||||
UNKNOWN_CLAIM_TYPE = 0;
|
||||
Do we need this? Do we need this?
|
||||
streamType = 1;
|
||||
Do we need this? Do we need this?
|
||||
certificateType = 2;
|
||||
Do we need this? Do we need this?
|
||||
}
|
||||
Do we need this? Do we need this?
|
||||
required ClaimType claimType = 2;
|
||||
Do we need this? Do we need this?
|
||||
optional Stream stream = 3;
|
||||
Do we need this? Do we need this?
|
||||
optional Certificate certificate = 4;
|
||||
Do we need this? Do we need this?
|
||||
optional Signature publisherSignature = 5;
|
||||
Do we need this? Do we need this?
|
||||
|
||||
Do we need this? Do we need this?
|
||||
Type type = 1; // do we need this?
|
||||
Do we need this? Do we need this?
|
||||
Stream stream = 2;
|
||||
Do we need this? Do we need this?
|
||||
Channel channel = 3;
|
||||
Do we need this? Do we need this?
|
||||
}
|
||||
|
|
|||
Do we need this? Do we need this?
Do we need this? Do we need this?
|
|
@ -1,20 +1,16 @@
|
|||
syntax = "proto2";
|
||||
syntax = "proto3";
|
||||
|
||||
package pb;
|
||||
|
||||
message Fee {
|
||||
enum Version {
|
||||
UNKNOWN_VERSION = 0;
|
||||
_0_0_1 = 1;
|
||||
}
|
||||
enum Currency {
|
||||
UNKNOWN_CURRENCY = 0;
|
||||
UNKNOWN = 0;
|
||||
LBC = 1;
|
||||
BTC = 2;
|
||||
USD = 3;
|
||||
}
|
||||
required Version version = 1;
|
||||
required Currency currency = 2;
|
||||
required bytes address = 3;
|
||||
required float amount = 4;
|
||||
|
||||
Currency currency = 1;
|
||||
bytes address = 2;
|
||||
float amount = 3;
|
||||
}
|
||||
|
|
8
proto/file.proto
Normal file
|
@ -0,0 +1,8 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package pb;
|
||||
|
||||
message File {
|
||||
string name = 1;
|
||||
uint64 size = 2;
|
||||
}
|
|
@ -1,214 +0,0 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package pb;
|
||||
|
||||
import "fee.proto";
|
||||
|
||||
message Metadata {
|
||||
enum Version {
|
||||
UNKNOWN_VERSION = 0;
|
||||
_0_0_1 = 1;
|
||||
_0_0_2 = 2;
|
||||
_0_0_3 = 3;
|
||||
_0_1_0 = 4;
|
||||
}
|
||||
enum Language {
|
||||
UNKNOWN_LANGUAGE = 0;
|
||||
en = 1;
|
||||
aa = 2;
|
||||
ab = 3;
|
||||
ae = 4;
|
||||
af = 5;
|
||||
ak = 6;
|
||||
am = 7;
|
||||
an = 8;
|
||||
ar = 9;
|
||||
as = 10;
|
||||
av = 11;
|
||||
ay = 12;
|
||||
az = 13;
|
||||
ba = 14;
|
||||
be = 15;
|
||||
bg = 16;
|
||||
bh = 17;
|
||||
bi = 18;
|
||||
bm = 19;
|
||||
bn = 20;
|
||||
bo = 21;
|
||||
br = 22;
|
||||
bs = 23;
|
||||
ca = 24;
|
||||
ce = 25;
|
||||
ch = 26;
|
||||
co = 27;
|
||||
cr = 28;
|
||||
cs = 29;
|
||||
cu = 30;
|
||||
cv = 31;
|
||||
cy = 32;
|
||||
da = 33;
|
||||
de = 34;
|
||||
dv = 35;
|
||||
dz = 36;
|
||||
ee = 37;
|
||||
el = 38;
|
||||
eo = 39;
|
||||
es = 40;
|
||||
et = 41;
|
||||
eu = 42;
|
||||
fa = 43;
|
||||
ff = 44;
|
||||
fi = 45;
|
||||
fj = 46;
|
||||
fo = 47;
|
||||
fr = 48;
|
||||
fy = 49;
|
||||
ga = 50;
|
||||
gd = 51;
|
||||
gl = 52;
|
||||
gn = 53;
|
||||
gu = 54;
|
||||
gv = 55;
|
||||
ha = 56;
|
||||
he = 57;
|
||||
hi = 58;
|
||||
ho = 59;
|
||||
hr = 60;
|
||||
ht = 61;
|
||||
hu = 62;
|
||||
hy = 63;
|
||||
hz = 64;
|
||||
ia = 65;
|
||||
id = 66;
|
||||
ie = 67;
|
||||
ig = 68;
|
||||
ii = 69;
|
||||
ik = 70;
|
||||
io = 71;
|
||||
is = 72;
|
||||
it = 73;
|
||||
iu = 74;
|
||||
ja = 75;
|
||||
jv = 76;
|
||||
ka = 77;
|
||||
kg = 78;
|
||||
ki = 79;
|
||||
kj = 80;
|
||||
kk = 81;
|
||||
kl = 82;
|
||||
km = 83;
|
||||
kn = 84;
|
||||
ko = 85;
|
||||
kr = 86;
|
||||
ks = 87;
|
||||
ku = 88;
|
||||
kv = 89;
|
||||
kw = 90;
|
||||
ky = 91;
|
||||
la = 92;
|
||||
lb = 93;
|
||||
lg = 94;
|
||||
li = 95;
|
||||
ln = 96;
|
||||
lo = 97;
|
||||
lt = 98;
|
||||
lu = 99;
|
||||
lv = 100;
|
||||
mg = 101;
|
||||
mh = 102;
|
||||
mi = 103;
|
||||
mk = 104;
|
||||
ml = 105;
|
||||
mn = 106;
|
||||
mr = 107;
|
||||
ms = 108;
|
||||
mt = 109;
|
||||
my = 110;
|
||||
na = 111;
|
||||
nb = 112;
|
||||
nd = 113;
|
||||
ne = 114;
|
||||
ng = 115;
|
||||
nl = 116;
|
||||
nn = 117;
|
||||
no = 118;
|
||||
nr = 119;
|
||||
nv = 120;
|
||||
ny = 121;
|
||||
oc = 122;
|
||||
oj = 123;
|
||||
om = 124;
|
||||
or = 125;
|
||||
os = 126;
|
||||
pa = 127;
|
||||
pi = 128;
|
||||
pl = 129;
|
||||
ps = 130;
|
||||
pt = 131;
|
||||
qu = 132;
|
||||
rm = 133;
|
||||
rn = 134;
|
||||
ro = 135;
|
||||
ru = 136;
|
||||
rw = 137;
|
||||
sa = 138;
|
||||
sc = 139;
|
||||
sd = 140;
|
||||
se = 141;
|
||||
sg = 142;
|
||||
si = 143;
|
||||
sk = 144;
|
||||
sl = 145;
|
||||
sm = 146;
|
||||
sn = 147;
|
||||
so = 148;
|
||||
sq = 149;
|
||||
sr = 150;
|
||||
ss = 151;
|
||||
st = 152;
|
||||
su = 153;
|
||||
sv = 154;
|
||||
sw = 155;
|
||||
ta = 156;
|
||||
te = 157;
|
||||
tg = 158;
|
||||
th = 159;
|
||||
ti = 160;
|
||||
tk = 161;
|
||||
tl = 162;
|
||||
tn = 163;
|
||||
to = 164;
|
||||
tr = 165;
|
||||
ts = 166;
|
||||
tt = 167;
|
||||
tw = 168;
|
||||
ty = 169;
|
||||
ug = 170;
|
||||
uk = 171;
|
||||
ur = 172;
|
||||
uz = 173;
|
||||
ve = 174;
|
||||
vi = 175;
|
||||
vo = 176;
|
||||
wa = 177;
|
||||
wo = 178;
|
||||
xh = 179;
|
||||
yi = 180;
|
||||
yo = 181;
|
||||
za = 182;
|
||||
zh = 183;
|
||||
zu = 184;
|
||||
}
|
||||
required Version version = 1;
|
||||
required Language language = 2;
|
||||
required string title = 3;
|
||||
required string description = 4;
|
||||
required string author = 5;
|
||||
required string license = 6;
|
||||
required bool nsfw = 7;
|
||||
|
||||
optional Fee fee = 8;
|
||||
optional string thumbnail = 9;
|
||||
optional string preview = 10;
|
||||
optional string licenseUrl = 11;
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package pb;
|
||||
|
||||
import "certificate.proto";
|
||||
|
||||
message Signature {
|
||||
enum Version {
|
||||
UNKNOWN_VERSION = 0;
|
||||
_0_0_1 = 1;
|
||||
}
|
||||
required Version version = 1;
|
||||
required KeyType signatureType = 2;
|
||||
required bytes signature = 3;
|
||||
required bytes certificateId = 4;
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
syntax = "proto2";
|
||||
|
||||
package pb;
|
||||
|
||||
message Source {
|
||||
enum Version {
|
||||
UNKNOWN_VERSION = 0;
|
||||
_0_0_1 = 1;
|
||||
}
|
||||
required Version version = 1;
|
||||
enum SourceTypes {
|
||||
UNKNOWN_SOURCE_TYPE = 0;
|
||||
lbry_sd_hash = 1;
|
||||
}
|
||||
required SourceTypes sourceType = 2;
|
||||
required bytes source = 3;
|
||||
required string contentType = 4;
|
||||
}
|
|
@ -1,17 +1,24 @@
|
|||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
syntax = "proto2";
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
syntax = "proto3";
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
|
||||
package pb;
|
||||
|
||||
import "metadata.proto";
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
import "source.proto";
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
import "fee.proto";
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
import "file.proto";
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
|
||||
message Stream {
|
||||
enum Version {
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
UNKNOWN_VERSION = 0;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
_0_0_1 = 1;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
}
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
required Version version = 1;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
required Metadata metadata = 2;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
required Source source = 3;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
bytes hash = 1;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
string language = 2;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
string title = 3;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
string author = 4;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
string description = 5;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
string media_type = 6;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
string license = 7;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
File file = 8;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
Fee fee = 16;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
string license_url = 17;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
string thumbnail = 18;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
string preview = 19;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
bool nsfw = 20;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
||||
uint32 duration = 21;
|
||||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
this field should die entirely this field should die entirely
should it be changed to creator? if im publishing public-domain work that i did not create, how do i note that? should it be changed to creator? if im publishing public-domain work that i did not create, how do i note that?
Fair, something like this probably needs to exist. But if we're supporting that kind of thing we'd still want that to be a first-class entity (at some point, we're obviously not too close to that). I'd recommend keeping this out of the 15 because I do not think a single plain text field will be the ultimate solution for how distinguishing authorship. Fair, something like this probably needs to exist. But if we're supporting that kind of thing we'd still want that to be a first-class entity (at some point, we're obviously not too close to that).
I'd recommend keeping this out of the 15 because I do not think a single plain text field will be the ultimate solution for how distinguishing authorship.
|
||||
}
|
||||
|
|
|||
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
This seems very safe to include in the top 15, I think. This seems very safe to include in the top 15, I think.
If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag. If this is metadata 2.0 this should be fixed/expanded, or simply moved into a tag.
What is this? What is this?
i actually don't know. we have it today i actually don't know. we have it today
|
this is different from the name used to make the claim? is this like a title?